From a245dfb938b649d4fa4c4de0fbb309fbf6533c9d Mon Sep 17 00:00:00 2001 From: Anyon Date: Mon, 22 Nov 2021 17:21:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 3 - SQL01-数据表结构.sql | 1099 - SQL02-数据初始化.sql | 7745 --- SQL03-数据库升级.sql | 69 - app/admin/controller/Auth.php | 125 - app/admin/controller/Base.php | 110 - app/admin/controller/Config.php | 109 - app/admin/controller/Index.php | 121 - app/admin/controller/Login.php | 126 - app/admin/controller/Menu.php | 150 - app/admin/controller/Module.php | 74 - app/admin/controller/Oplog.php | 93 - app/admin/controller/Queue.php | 106 - app/admin/controller/User.php | 187 - app/admin/controller/api/Plugs.php | 54 - app/admin/controller/api/Queue.php | 112 - app/admin/controller/api/Runtime.php | 121 - app/admin/controller/api/Update.php | 77 - app/admin/controller/api/Upload.php | 228 - app/admin/module/change/2020.08.03.00.md | 2 - app/admin/module/change/2020.08.03.01.md | 1 - app/admin/module/change/2020.08.28.01.md | 2 - app/admin/module/change/2020.09.04.01.md | 2 - app/admin/module/change/2021.06.17.01.md | 3 - app/admin/module/module.json | 6 - app/admin/route/demo.php | 62 - app/admin/view/api/icon.html | 1173 - app/admin/view/api/upload.js | 146 - app/admin/view/auth/apply.html | 104 - app/admin/view/auth/form.html | 25 - app/admin/view/auth/index.html | 79 - app/admin/view/auth/index_search.html | 47 - app/admin/view/base/form.html | 69 - app/admin/view/base/index.html | 85 - app/admin/view/base/index_search.html | 46 - app/admin/view/config/index.html | 149 - app/admin/view/config/storage-0.html | 46 - app/admin/view/config/storage-alioss.html | 98 - app/admin/view/config/storage-local.html | 49 - app/admin/view/config/storage-qiniu.html | 96 - app/admin/view/config/storage-txcos.html | 98 - app/admin/view/config/system.html | 79 - app/admin/view/error.tpl | 568 - app/admin/view/full.html | 31 - app/admin/view/index/index-left.html | 39 - app/admin/view/index/index-top.html | 46 - app/admin/view/index/index.html | 61 - app/admin/view/login/index.html | 58 - app/admin/view/main.html | 17 - app/admin/view/menu/form.html | 102 - app/admin/view/menu/index.html | 102 - app/admin/view/module/change.html | 33 - app/admin/view/module/index.html | 42 - app/admin/view/module/index_search.html | 60 - app/admin/view/oplog/index.html | 46 - app/admin/view/oplog/index_search.html | 74 - app/admin/view/queue/index.html | 150 - app/admin/view/queue/index_search.html | 80 - app/admin/view/table.html | 15 - app/admin/view/user/form.html | 121 - app/admin/view/user/index.html | 107 - app/admin/view/user/index_search.html | 69 - app/admin/view/user/pass.html | 49 - app/data/command/OrderClean.php | 81 - app/data/command/UserAgent.php | 79 - app/data/command/UserAmount.php | 46 - app/data/command/UserTransfer.php | 262 - app/data/command/UserUpgrade.php | 47 - app/data/controller/api/Auth.php | 95 - app/data/controller/api/Data.php | 53 - app/data/controller/api/Goods.php | 61 - app/data/controller/api/Login.php | 111 - app/data/controller/api/News.php | 69 - app/data/controller/api/Notify.php | 76 - app/data/controller/api/Wechat.php | 137 - app/data/controller/api/Wxapp.php | 194 - app/data/controller/api/auth/Address.php | 142 - app/data/controller/api/auth/Balance.php | 27 - app/data/controller/api/auth/Center.php | 152 - app/data/controller/api/auth/News.php | 215 - app/data/controller/api/auth/Order.php | 493 - app/data/controller/api/auth/Rebate.php | 58 - app/data/controller/api/auth/Transfer.php | 162 - app/data/controller/base/Config.php | 153 - app/data/controller/base/Discount.php | 107 - app/data/controller/base/Message.php | 80 - app/data/controller/base/Payment.php | 118 - app/data/controller/base/Upgrade.php | 165 - app/data/controller/base/postage/Company.php | 102 - app/data/controller/base/postage/Template.php | 117 - app/data/controller/news/Item.php | 129 - app/data/controller/news/Mark.php | 68 - app/data/controller/shop/Cate.php | 101 - app/data/controller/shop/Goods.php | 258 - app/data/controller/shop/Mark.php | 77 - app/data/controller/shop/Order.php | 188 - app/data/controller/shop/Send.php | 161 - app/data/controller/total/Portal.php | 57 - app/data/controller/user/Admin.php | 184 - app/data/controller/user/Balance.php | 135 - app/data/controller/user/Message.php | 61 - app/data/controller/user/Rebate.php | 93 - app/data/controller/user/Transfer.php | 179 - app/data/model/BasePostageCompany.php | 15 - app/data/model/BasePostageRegion.php | 14 - app/data/model/BasePostageTemplate.php | 15 - app/data/model/BaseUserDiscount.php | 15 - app/data/model/BaseUserMessage.php | 15 - app/data/model/BaseUserPayment.php | 15 - app/data/model/BaseUserUpgrade.php | 15 - app/data/model/DataNewsItem.php | 15 - app/data/model/DataNewsMark.php | 15 - app/data/model/DataNewsXCollect.php | 15 - app/data/model/DataUser.php | 15 - app/data/model/DataUserAddress.php | 15 - app/data/model/DataUserBalance.php | 15 - app/data/model/DataUserMessage.php | 15 - app/data/model/DataUserPayment.php | 15 - app/data/model/DataUserRebate.php | 15 - app/data/model/DataUserToken.php | 15 - app/data/model/DataUserTransfer.php | 15 - app/data/model/ShopGoods.php | 15 - app/data/model/ShopGoodsCate.php | 15 - app/data/model/ShopGoodsItem.php | 15 - app/data/model/ShopGoodsMark.php | 15 - app/data/model/ShopGoodsStock.php | 15 - app/data/model/ShopOrder.php | 15 - app/data/model/ShopOrderItem.php | 15 - app/data/model/ShopOrderSend.php | 15 - app/data/readme.md | 9 - app/data/service/ExpressService.php | 123 - app/data/service/GoodsService.php | 138 - app/data/service/MessageService.php | 175 - app/data/service/NewsService.php | 79 - app/data/service/OrderService.php | 150 - app/data/service/PaymentService.php | 381 - app/data/service/RebateService.php | 460 - app/data/service/UserAdminService.php | 145 - app/data/service/UserBalanceService.php | 66 - app/data/service/UserRebateService.php | 59 - app/data/service/UserTokenService.php | 96 - app/data/service/UserTransferService.php | 156 - app/data/service/UserUpgradeService.php | 151 - .../service/payment/AlipayPaymentService.php | 146 - .../service/payment/BalancePyamentService.php | 88 - .../service/payment/EmptyPaymentService.php | 63 - .../service/payment/JoinpayPaymentService.php | 171 - .../service/payment/VoucherPaymentService.php | 60 - .../service/payment/WechatPaymentService.php | 126 - app/data/sys.php | 59 - app/data/view/base/config/cropper.html | 66 - app/data/view/base/config/page_form.html | 37 - app/data/view/base/config/page_home.html | 25 - app/data/view/base/config/slider.html | 124 - app/data/view/base/config/wxapp.html | 30 - app/data/view/base/discount/form.html | 68 - app/data/view/base/discount/index.html | 74 - app/data/view/base/message/form.html | 38 - app/data/view/base/message/index.html | 71 - app/data/view/base/message/index_search.html | 39 - app/data/view/base/payment/form.html | 102 - app/data/view/base/payment/form_alipay.html | 18 - app/data/view/base/payment/form_joinpay.html | 23 - app/data/view/base/payment/form_voucher.html | 9 - app/data/view/base/payment/form_wechat.html | 32 - app/data/view/base/payment/index.html | 73 - app/data/view/base/payment/index_search.html | 60 - app/data/view/base/postage/company/form.html | 42 - app/data/view/base/postage/company/index.html | 92 - .../base/postage/company/index_search.html | 31 - app/data/view/base/postage/template/form.html | 338 - .../base/postage/template/form_region.html | 132 - .../view/base/postage/template/index.html | 70 - .../base/postage/template/index_search.html | 46 - app/data/view/base/upgrade/form.html | 175 - app/data/view/base/upgrade/index.html | 77 - app/data/view/news/item/form.html | 67 - app/data/view/news/item/index.html | 78 - app/data/view/news/item/index_search.html | 46 - app/data/view/news/item/select.html | 42 - app/data/view/news/item/select_search.html | 36 - app/data/view/news/mark/form.html | 26 - app/data/view/news/mark/index.html | 67 - app/data/view/news/mark/index_search.html | 38 - app/data/view/shop/cate/form.html | 44 - app/data/view/shop/cate/index.html | 73 - app/data/view/shop/goods/form.html | 475 - app/data/view/shop/goods/formstyle.html | 96 - app/data/view/shop/goods/index.html | 139 - app/data/view/shop/goods/index_search.html | 116 - app/data/view/shop/goods/select.html | 49 - app/data/view/shop/goods/select_search.html | 36 - app/data/view/shop/goods/stock.html | 100 - app/data/view/shop/mark/form.html | 26 - app/data/view/shop/mark/index.html | 70 - app/data/view/shop/mark/index_search.html | 37 - app/data/view/shop/mark/select.html | 40 - app/data/view/shop/order/audit.html | 47 - app/data/view/shop/order/index.html | 144 - app/data/view/shop/order/index_search.html | 158 - app/data/view/shop/send/config.html | 43 - app/data/view/shop/send/index.html | 84 - app/data/view/shop/send/index_search.html | 124 - app/data/view/shop/send/truck_form.html | 94 - app/data/view/shop/send/truck_query.html | 17 - app/data/view/total/portal/index.html | 303 - app/data/view/user/admin/index.html | 157 - app/data/view/user/admin/index_search.html | 120 - app/data/view/user/admin/parent.html | 87 - app/data/view/user/admin/parent_search.html | 75 - app/data/view/user/admin/teams.html | 51 - app/data/view/user/balance/form.html | 87 - app/data/view/user/balance/index.html | 68 - app/data/view/user/balance/index_search.html | 69 - app/data/view/user/message/config.html | 58 - app/data/view/user/message/index.html | 52 - app/data/view/user/message/index_search.html | 45 - app/data/view/user/rebate/config.html | 310 - app/data/view/user/rebate/index.html | 92 - app/data/view/user/rebate/index_search.html | 64 - app/data/view/user/transfer/audit.html | 130 - app/data/view/user/transfer/config.html | 135 - app/data/view/user/transfer/index.html | 122 - app/data/view/user/transfer/index_search.html | 63 - app/data/view/user/transfer/payment.html | 54 - app/index/controller/Index.php | 31 - app/wechat/command/Auto.php | 149 - app/wechat/command/Fans.php | 153 - app/wechat/controller/Auto.php | 136 - app/wechat/controller/Config.php | 157 - app/wechat/controller/Fans.php | 126 - app/wechat/controller/Keys.php | 179 - app/wechat/controller/Menu.php | 168 - app/wechat/controller/News.php | 155 - app/wechat/controller/api/Js.php | 103 - app/wechat/controller/api/Login.php | 108 - app/wechat/controller/api/Push.php | 336 - app/wechat/controller/api/Test.php | 255 - app/wechat/controller/api/View.php | 109 - app/wechat/model/WechatAuto.php | 28 - app/wechat/model/WechatFans.php | 28 - app/wechat/model/WechatFansTags.php | 28 - app/wechat/model/WechatKeys.php | 28 - app/wechat/model/WechatMedia.php | 28 - app/wechat/model/WechatNews.php | 28 - app/wechat/model/WechatNewsArticle.php | 28 - app/wechat/module/change/2020.08.03.00.md | 2 - app/wechat/module/change/2020.08.28.01.md | 1 - app/wechat/module/module.json | 6 - app/wechat/service/AutoService.php | 59 - app/wechat/service/FansService.php | 66 - app/wechat/service/MediaService.php | 97 - app/wechat/service/WechatService.php | 289 - app/wechat/sys.php | 30 - app/wechat/view/api/login/failed.html | 36 - app/wechat/view/api/login/success.html | 53 - app/wechat/view/api/test/jssdk.html | 64 - app/wechat/view/api/test/oauth.html | 55 - app/wechat/view/api/view/image.html | 28 - app/wechat/view/api/view/item.html | 72 - app/wechat/view/api/view/main.html | 20 - app/wechat/view/api/view/music.html | 78 - app/wechat/view/api/view/news.html | 147 - app/wechat/view/api/view/text.html | 9 - app/wechat/view/api/view/video.html | 44 - app/wechat/view/api/view/voice.html | 45 - app/wechat/view/auto/form.html | 265 - app/wechat/view/auto/index.html | 86 - app/wechat/view/auto/index_search.html | 54 - app/wechat/view/config/options.html | 39 - app/wechat/view/config/options_form_api.html | 66 - app/wechat/view/config/options_form_thr.html | 74 - app/wechat/view/config/options_test.html | 21 - app/wechat/view/config/payment.html | 102 - app/wechat/view/config/payment_test.html | 40 - app/wechat/view/fans/index.html | 82 - app/wechat/view/fans/index_search.html | 80 - app/wechat/view/keys/form.html | 265 - app/wechat/view/keys/index.html | 91 - app/wechat/view/keys/index_search.html | 49 - app/wechat/view/menu/index.html | 200 - app/wechat/view/news/form.html | 209 - app/wechat/view/news/formstyle.html | 87 - app/wechat/view/news/index.html | 158 - app/wechat/view/news/select.html | 146 - build.cmd | 1 - composer.json | 49 - config/app.php | 44 - config/cache.php | 37 - config/cookie.php | 32 - config/database.php | 65 - config/filesystem.php | 37 - config/lang.php | 38 - config/log.php | 57 - config/route.php | 58 - config/session.php | 28 - config/view.php | 48 - index.html | 27 + license | 21 - outer/framework.html | 329 + public/.htaccess | 8 - public/favicon.ico | Bin 16958 -> 0 bytes public/index.php | 25 - public/robots.txt | 4 - public/router.php | 22 - public/static/admin.js | 1033 - public/static/login.js | 55 - public/static/plugs/angular/angular.min.js | 351 - public/static/plugs/ckeditor/ckeditor.js | 1430 - public/static/plugs/ckeditor/config.js | 78 - public/static/plugs/ckeditor/contents.css | 181 - public/static/plugs/ckeditor/lang/en.js | 5 - public/static/plugs/ckeditor/lang/zh-cn.js | 5 - public/static/plugs/ckeditor/lang/zh.js | 5 - .../plugins/a11yhelp/dialogs/a11yhelp.js | 10 - .../plugins/a11yhelp/dialogs/lang/en.js | 11 - .../plugins/a11yhelp/dialogs/lang/zh-cn.js | 9 - .../plugins/a11yhelp/dialogs/lang/zh.js | 9 - .../ckeditor/plugins/about/dialogs/about.js | 8 - .../about/dialogs/hidpi/logo_ckeditor.png | Bin 12236 -> 0 bytes .../plugins/about/dialogs/logo_ckeditor.png | Bin 5650 -> 0 bytes .../plugins/clipboard/dialogs/paste.js | 11 - .../colordialog/dialogs/colordialog.css | 20 - .../colordialog/dialogs/colordialog.js | 14 - .../cursors/cursor-disabled.svg | 25 - .../plugins/copyformatting/cursors/cursor.svg | 14 - .../copyformatting/styles/copyformatting.css | 45 - .../plugins/dialog/dialogDefinition.js | 4 - .../ckeditor/plugins/dialog/styles/dialog.css | 18 - .../plugs/ckeditor/plugins/div/dialogs/div.js | 10 - .../ckeditor/plugins/find/dialogs/find.js | 25 - .../ckeditor/plugins/flash/dialogs/flash.js | 24 - .../plugins/flash/images/placeholder.png | Bin 256 -> 0 bytes .../ckeditor/plugins/forms/dialogs/button.js | 8 - .../plugins/forms/dialogs/checkbox.js | 9 - .../ckeditor/plugins/forms/dialogs/form.js | 8 - .../plugins/forms/dialogs/hiddenfield.js | 7 - .../ckeditor/plugins/forms/dialogs/radio.js | 9 - .../ckeditor/plugins/forms/dialogs/select.js | 21 - .../plugins/forms/dialogs/textarea.js | 9 - .../plugins/forms/dialogs/textfield.js | 11 - .../plugins/forms/images/hiddenfield.gif | Bin 178 -> 0 bytes .../static/plugs/ckeditor/plugins/icons.png | Bin 12533 -> 0 bytes .../plugs/ckeditor/plugins/icons_hidpi.png | Bin 39180 -> 0 bytes .../ckeditor/plugins/iframe/dialogs/iframe.js | 11 - .../plugins/iframe/images/placeholder.png | Bin 265 -> 0 bytes .../ckeditor/plugins/image/dialogs/image.js | 44 - .../ckeditor/plugins/image/images/noimage.png | Bin 1610 -> 0 bytes .../ckeditor/plugins/link/dialogs/anchor.js | 8 - .../ckeditor/plugins/link/dialogs/link.js | 30 - .../ckeditor/plugins/link/images/anchor.png | Bin 752 -> 0 bytes .../plugins/link/images/hidpi/anchor.png | Bin 1109 -> 0 bytes .../plugins/liststyle/dialogs/liststyle.js | 10 - .../magicline/images/hidpi/icon-rtl.png | Bin 176 -> 0 bytes .../plugins/magicline/images/hidpi/icon.png | Bin 199 -> 0 bytes .../plugins/magicline/images/icon-rtl.png | Bin 138 -> 0 bytes .../plugins/magicline/images/icon.png | Bin 133 -> 0 bytes .../plugins/pagebreak/images/pagebreak.gif | Bin 99 -> 0 bytes .../plugins/pastefromgdocs/filter/default.js | 8 - .../pastefromlibreoffice/filter/default.js | 11 - .../plugins/pastefromword/filter/default.js | 42 - .../plugins/pastetools/filter/common.js | 24 - .../plugins/pastetools/filter/image.js | 12 - .../plugins/preview/images/pagebreak.gif | Bin 99 -> 0 bytes .../ckeditor/plugins/preview/preview.html | 13 - .../plugins/preview/styles/screen.css | 10 - .../ckeditor/plugins/scayt/dialogs/dialog.css | 23 - .../ckeditor/plugins/scayt/dialogs/options.js | 32 - .../plugins/scayt/dialogs/toolbar.css | 71 - .../plugins/scayt/skins/moono-lisa/scayt.css | 25 - .../showblocks/images/block_address.png | Bin 152 -> 0 bytes .../showblocks/images/block_blockquote.png | Bin 154 -> 0 bytes .../plugins/showblocks/images/block_div.png | Bin 127 -> 0 bytes .../plugins/showblocks/images/block_h1.png | Bin 120 -> 0 bytes .../plugins/showblocks/images/block_h2.png | Bin 127 -> 0 bytes .../plugins/showblocks/images/block_h3.png | Bin 123 -> 0 bytes .../plugins/showblocks/images/block_h4.png | Bin 123 -> 0 bytes .../plugins/showblocks/images/block_h5.png | Bin 126 -> 0 bytes .../plugins/showblocks/images/block_h6.png | Bin 123 -> 0 bytes .../plugins/showblocks/images/block_p.png | Bin 115 -> 0 bytes .../plugins/showblocks/images/block_pre.png | Bin 128 -> 0 bytes .../ckeditor/plugins/smiley/dialogs/smiley.js | 11 - .../plugins/smiley/images/angel_smile.gif | Bin 1245 -> 0 bytes .../plugins/smiley/images/angel_smile.png | Bin 1172 -> 0 bytes .../plugins/smiley/images/angry_smile.gif | Bin 1219 -> 0 bytes .../plugins/smiley/images/angry_smile.png | Bin 1220 -> 0 bytes .../plugins/smiley/images/broken_heart.gif | Bin 732 -> 0 bytes .../plugins/smiley/images/broken_heart.png | Bin 1139 -> 0 bytes .../plugins/smiley/images/confused_smile.gif | Bin 1202 -> 0 bytes .../plugins/smiley/images/confused_smile.png | Bin 1101 -> 0 bytes .../plugins/smiley/images/cry_smile.gif | Bin 795 -> 0 bytes .../plugins/smiley/images/cry_smile.png | Bin 1214 -> 0 bytes .../plugins/smiley/images/devil_smile.gif | Bin 1239 -> 0 bytes .../plugins/smiley/images/devil_smile.png | Bin 1220 -> 0 bytes .../smiley/images/embaressed_smile.gif | Bin 786 -> 0 bytes .../smiley/images/embarrassed_smile.gif | Bin 786 -> 0 bytes .../smiley/images/embarrassed_smile.png | Bin 1145 -> 0 bytes .../plugins/smiley/images/envelope.gif | Bin 506 -> 0 bytes .../plugins/smiley/images/envelope.png | Bin 760 -> 0 bytes .../ckeditor/plugins/smiley/images/heart.gif | Bin 692 -> 0 bytes .../ckeditor/plugins/smiley/images/heart.png | Bin 999 -> 0 bytes .../ckeditor/plugins/smiley/images/kiss.gif | Bin 683 -> 0 bytes .../ckeditor/plugins/smiley/images/kiss.png | Bin 1003 -> 0 bytes .../plugins/smiley/images/lightbulb.gif | Bin 660 -> 0 bytes .../plugins/smiley/images/lightbulb.png | Bin 919 -> 0 bytes .../plugins/smiley/images/omg_smile.gif | Bin 820 -> 0 bytes .../plugins/smiley/images/omg_smile.png | Bin 1122 -> 0 bytes .../plugins/smiley/images/regular_smile.gif | Bin 1209 -> 0 bytes .../plugins/smiley/images/regular_smile.png | Bin 1084 -> 0 bytes .../plugins/smiley/images/sad_smile.gif | Bin 782 -> 0 bytes .../plugins/smiley/images/sad_smile.png | Bin 1115 -> 0 bytes .../plugins/smiley/images/shades_smile.gif | Bin 1231 -> 0 bytes .../plugins/smiley/images/shades_smile.png | Bin 1204 -> 0 bytes .../plugins/smiley/images/teeth_smile.gif | Bin 1201 -> 0 bytes .../plugins/smiley/images/teeth_smile.png | Bin 1183 -> 0 bytes .../plugins/smiley/images/thumbs_down.gif | Bin 715 -> 0 bytes .../plugins/smiley/images/thumbs_down.png | Bin 985 -> 0 bytes .../plugins/smiley/images/thumbs_up.gif | Bin 714 -> 0 bytes .../plugins/smiley/images/thumbs_up.png | Bin 959 -> 0 bytes .../plugins/smiley/images/tongue_smile.gif | Bin 1210 -> 0 bytes .../plugins/smiley/images/tongue_smile.png | Bin 1132 -> 0 bytes .../plugins/smiley/images/tounge_smile.gif | Bin 1210 -> 0 bytes .../images/whatchutalkingabout_smile.gif | Bin 775 -> 0 bytes .../images/whatchutalkingabout_smile.png | Bin 1039 -> 0 bytes .../plugins/smiley/images/wink_smile.gif | Bin 1202 -> 0 bytes .../plugins/smiley/images/wink_smile.png | Bin 1114 -> 0 bytes .../plugins/specialchar/dialogs/lang/en.js | 13 - .../plugins/specialchar/dialogs/lang/zh-cn.js | 9 - .../plugins/specialchar/dialogs/lang/zh.js | 9 - .../specialchar/dialogs/specialchar.js | 14 - .../ckeditor/plugins/table/dialogs/table.js | 22 - .../tableselection/styles/tableselection.css | 36 - .../plugins/tabletools/dialogs/tableCell.js | 18 - .../plugins/templates/dialogs/templates.css | 75 - .../plugins/templates/dialogs/templates.js | 10 - .../plugins/templates/templates/default.js | 7 - .../templates/templates/images/template1.gif | Bin 539 -> 0 bytes .../templates/templates/images/template2.gif | Bin 497 -> 0 bytes .../templates/templates/images/template3.gif | Bin 557 -> 0 bytes .../ckeditor/plugins/widget/images/handle.png | Bin 220 -> 0 bytes .../ckeditor/plugins/wsc/dialogs/ciframe.html | 66 - .../plugins/wsc/dialogs/tmpFrameset.html | 52 - .../ckeditor/plugins/wsc/dialogs/wsc.css | 82 - .../plugs/ckeditor/plugins/wsc/dialogs/wsc.js | 90 - .../ckeditor/plugins/wsc/dialogs/wsc_ie.js | 11 - .../plugins/wsc/icons/hidpi/spellchecker.png | Bin 2816 -> 0 bytes .../plugins/wsc/icons/spellchecker.png | Bin 836 -> 0 bytes .../plugs/ckeditor/plugins/wsc/lang/en.js | 2 - .../plugs/ckeditor/plugins/wsc/lang/zh-cn.js | 1 - .../plugs/ckeditor/plugins/wsc/lang/zh.js | 1 - .../plugs/ckeditor/plugins/wsc/plugin.js | 5 - .../plugins/wsc/skins/moono-lisa/wsc.css | 43 - .../ckeditor/skins/moono-lisa/dialog.css | 5 - .../ckeditor/skins/moono-lisa/dialog_ie.css | 5 - .../ckeditor/skins/moono-lisa/dialog_ie8.css | 5 - .../skins/moono-lisa/dialog_iequirks.css | 5 - .../ckeditor/skins/moono-lisa/editor.css | 5 - .../skins/moono-lisa/editor_gecko.css | 5 - .../ckeditor/skins/moono-lisa/editor_ie.css | 5 - .../ckeditor/skins/moono-lisa/editor_ie8.css | 5 - .../skins/moono-lisa/editor_iequirks.css | 5 - .../plugs/ckeditor/skins/moono-lisa/icons.png | Bin 12533 -> 0 bytes .../ckeditor/skins/moono-lisa/icons_hidpi.png | Bin 39180 -> 0 bytes .../skins/moono-lisa/images/arrow.png | Bin 191 -> 0 bytes .../skins/moono-lisa/images/close.png | Bin 615 -> 0 bytes .../skins/moono-lisa/images/hidpi/close.png | Bin 1238 -> 0 bytes .../moono-lisa/images/hidpi/lock-open.png | Bin 1071 -> 0 bytes .../skins/moono-lisa/images/hidpi/lock.png | Bin 1062 -> 0 bytes .../skins/moono-lisa/images/hidpi/refresh.png | Bin 1623 -> 0 bytes .../skins/moono-lisa/images/lock-open.png | Bin 511 -> 0 bytes .../ckeditor/skins/moono-lisa/images/lock.png | Bin 506 -> 0 bytes .../skins/moono-lisa/images/refresh.png | Bin 757 -> 0 bytes .../skins/moono-lisa/images/spinner.gif | Bin 2984 -> 0 bytes .../plugs/ckeditor/skins/moono-lisa/readme.md | 46 - public/static/plugs/ckeditor/styles.js | 137 - public/static/plugs/cropper/cropper.min.css | 9 - public/static/plugs/cropper/cropper.min.js | 10 - public/static/plugs/echarts/echarts.min.js | 45 - public/static/plugs/jquery/area/area.js | 30 - public/static/plugs/jquery/area/area.json | 6198 --- public/static/plugs/jquery/area/area.php | 18 - public/static/plugs/jquery/autocompleter.css | 79 - .../static/plugs/jquery/autocompleter.min.js | 8 - public/static/plugs/jquery/base64.min.js | 1 - public/static/plugs/jquery/excel.xlsx.js | 134 - public/static/plugs/jquery/jquery.min.js | 5 - public/static/plugs/jquery/json.min.js | 1 - public/static/plugs/jquery/less.min.js | 18 - public/static/plugs/jquery/masonry.min.js | 9 - public/static/plugs/jquery/md5.min.js | 1 - public/static/plugs/jquery/pace.min.js | 2 - public/static/plugs/jquery/pcasunzips.js | 30 - public/static/plugs/jquery/xlsx.min.js | 17 - public/static/plugs/layui/css/layui.css | 1 - .../static/plugs/layui/css/modules/code.css | 1 - .../css/modules/laydate/default/laydate.css | 1 - .../css/modules/layer/default/icon-ext.png | Bin 5911 -> 0 bytes .../layui/css/modules/layer/default/icon.png | Bin 11493 -> 0 bytes .../layui/css/modules/layer/default/layer.css | 1 - .../css/modules/layer/default/loading-0.gif | Bin 5793 -> 0 bytes .../css/modules/layer/default/loading-1.gif | Bin 701 -> 0 bytes .../css/modules/layer/default/loading-2.gif | Bin 1787 -> 0 bytes public/static/plugs/layui/font/iconfont.eot | Bin 46684 -> 0 bytes public/static/plugs/layui/font/iconfont.svg | 554 - public/static/plugs/layui/font/iconfont.ttf | Bin 46508 -> 0 bytes public/static/plugs/layui/font/iconfont.woff | Bin 30628 -> 0 bytes public/static/plugs/layui/font/iconfont.woff2 | Bin 25964 -> 0 bytes public/static/plugs/layui/layui.js | 5 - public/static/plugs/layui_exts/excel.js | 10 - public/static/plugs/layui_exts/tableSelect.js | 255 - public/static/plugs/require/css.js | 1 - public/static/plugs/require/require.js | 1 - public/static/plugs/socket/swfobject.js | 4 - public/static/plugs/socket/websocket.js | 6 - public/static/plugs/socket/websocket.swf | Bin 177238 -> 0 bytes public/static/plugs/sortable/sortable.min.js | 3 - .../plugs/sortable/vue.draggable.min.js | 1 - public/static/plugs/supersized/progress.gif | Bin 5481 -> 0 bytes .../plugs/supersized/supersized.3.2.7.min.js | 677 - public/static/plugs/supersized/supersized.css | 1 - public/static/plugs/vue/vue.min.js | 6 - .../ztree/zTreeStyle/img/diy/1_close.png | Bin 601 -> 0 bytes .../plugs/ztree/zTreeStyle/img/diy/1_open.png | Bin 580 -> 0 bytes .../plugs/ztree/zTreeStyle/img/diy/2.png | Bin 570 -> 0 bytes .../plugs/ztree/zTreeStyle/img/diy/3.png | Bin 762 -> 0 bytes .../plugs/ztree/zTreeStyle/img/diy/4.png | Bin 399 -> 0 bytes .../plugs/ztree/zTreeStyle/img/diy/5.png | Bin 710 -> 0 bytes .../plugs/ztree/zTreeStyle/img/diy/6.png | Bin 432 -> 0 bytes .../plugs/ztree/zTreeStyle/img/diy/7.png | Bin 534 -> 0 bytes .../plugs/ztree/zTreeStyle/img/diy/8.png | Bin 529 -> 0 bytes .../plugs/ztree/zTreeStyle/img/diy/9.png | Bin 467 -> 0 bytes .../plugs/ztree/zTreeStyle/img/line_conn.gif | Bin 45 -> 0 bytes .../plugs/ztree/zTreeStyle/img/loading.gif | Bin 381 -> 0 bytes .../ztree/zTreeStyle/img/zTreeStandard.gif | Bin 5564 -> 0 bytes .../ztree/zTreeStyle/img/zTreeStandard.png | Bin 11173 -> 0 bytes .../plugs/ztree/zTreeStyle/zTreeStyle.css | 97 - public/static/plugs/ztree/ztree.all.min.js | 166 - public/static/theme/css/_config.css | 2 - public/static/theme/css/_config.css.map | 1 - public/static/theme/css/_config.less | 67 - public/static/theme/css/_custom.css | 1372 - public/static/theme/css/_custom.less | 1709 - public/static/theme/css/_display.css | 290 - public/static/theme/css/_display.less | 377 - public/static/theme/css/_layout.css | 315 - public/static/theme/css/_layout.less | 406 - public/static/theme/css/console.css | 1 - public/static/theme/css/console.css.map | 1 - public/static/theme/css/console.less | 68 - public/static/theme/css/icon/iconfont.ttf | Bin 36192 -> 0 bytes public/static/theme/css/icon/iconfont.woff | Bin 21164 -> 0 bytes public/static/theme/css/icon/iconfont.woff2 | Bin 18364 -> 0 bytes public/static/theme/css/iconfont.css | 1 - public/static/theme/css/iconfont.css.map | 1 - public/static/theme/css/iconfont.less | 416 - public/static/theme/css/login.css | 1 - public/static/theme/css/login.css.map | 1 - public/static/theme/css/login.less | 270 - public/static/theme/css/mobile.css | 1 - public/static/theme/css/mobile.css.map | 1 - public/static/theme/css/mobile.less | 328 - public/static/theme/css/package.json | 9 - public/static/theme/img/404_icon.png | Bin 47146 -> 0 bytes public/static/theme/img/505_icon.png | Bin 40901 -> 0 bytes public/static/theme/img/headimg.png | Bin 4869 -> 0 bytes public/static/theme/img/image.png | Bin 1672 -> 0 bytes public/static/theme/img/login/bg1.jpg | Bin 55719 -> 0 bytes public/static/theme/img/login/bg2.jpg | Bin 67855 -> 0 bytes public/static/theme/img/upimg.png | Bin 6792 -> 0 bytes public/static/theme/img/wechat/index.png | Bin 231 -> 0 bytes .../static/theme/img/wechat/m-icon-error.png | Bin 36806 -> 0 bytes .../theme/img/wechat/m-icon-success.png | Bin 34420 -> 0 bytes .../static/theme/img/wechat/mobile_foot.png | Bin 1348 -> 0 bytes .../static/theme/img/wechat/mobile_head.png | Bin 12673 -> 0 bytes .../static/theme/img/wechat/qrc_pay_error.jpg | Bin 34402 -> 0 bytes public/static/theme/img/wechat/qrc_payed.jpg | Bin 28055 -> 0 bytes readme.md | 153 - security.md | 16 - static/app.js | 52 + static/plugs/core/vue.element.plus.css | 1 + static/plugs/core/vue.element.plus.js | 46224 ++++++++++++++++ static/plugs/core/vue.min.js | 7 + static/plugs/core/vue.router.js | 3699 ++ static/plugs/core/vue.sfc.loader.js | 2005 + static/template/index.vue | 19 + static/template/layout.vue | 19 + think | 25 - 587 files changed, 52382 insertions(+), 55024 deletions(-) delete mode 100644 .gitattributes delete mode 100644 SQL01-数据表结构.sql delete mode 100644 SQL02-数据初始化.sql delete mode 100644 SQL03-数据库升级.sql delete mode 100644 app/admin/controller/Auth.php delete mode 100644 app/admin/controller/Base.php delete mode 100644 app/admin/controller/Config.php delete mode 100644 app/admin/controller/Index.php delete mode 100644 app/admin/controller/Login.php delete mode 100644 app/admin/controller/Menu.php delete mode 100644 app/admin/controller/Module.php delete mode 100644 app/admin/controller/Oplog.php delete mode 100644 app/admin/controller/Queue.php delete mode 100644 app/admin/controller/User.php delete mode 100644 app/admin/controller/api/Plugs.php delete mode 100644 app/admin/controller/api/Queue.php delete mode 100644 app/admin/controller/api/Runtime.php delete mode 100644 app/admin/controller/api/Update.php delete mode 100644 app/admin/controller/api/Upload.php delete mode 100644 app/admin/module/change/2020.08.03.00.md delete mode 100644 app/admin/module/change/2020.08.03.01.md delete mode 100644 app/admin/module/change/2020.08.28.01.md delete mode 100644 app/admin/module/change/2020.09.04.01.md delete mode 100644 app/admin/module/change/2021.06.17.01.md delete mode 100644 app/admin/module/module.json delete mode 100644 app/admin/route/demo.php delete mode 100644 app/admin/view/api/icon.html delete mode 100644 app/admin/view/api/upload.js delete mode 100644 app/admin/view/auth/apply.html delete mode 100644 app/admin/view/auth/form.html delete mode 100644 app/admin/view/auth/index.html delete mode 100644 app/admin/view/auth/index_search.html delete mode 100644 app/admin/view/base/form.html delete mode 100644 app/admin/view/base/index.html delete mode 100644 app/admin/view/base/index_search.html delete mode 100644 app/admin/view/config/index.html delete mode 100644 app/admin/view/config/storage-0.html delete mode 100644 app/admin/view/config/storage-alioss.html delete mode 100644 app/admin/view/config/storage-local.html delete mode 100644 app/admin/view/config/storage-qiniu.html delete mode 100644 app/admin/view/config/storage-txcos.html delete mode 100644 app/admin/view/config/system.html delete mode 100644 app/admin/view/error.tpl delete mode 100644 app/admin/view/full.html delete mode 100644 app/admin/view/index/index-left.html delete mode 100644 app/admin/view/index/index-top.html delete mode 100644 app/admin/view/index/index.html delete mode 100644 app/admin/view/login/index.html delete mode 100644 app/admin/view/main.html delete mode 100644 app/admin/view/menu/form.html delete mode 100644 app/admin/view/menu/index.html delete mode 100644 app/admin/view/module/change.html delete mode 100644 app/admin/view/module/index.html delete mode 100644 app/admin/view/module/index_search.html delete mode 100644 app/admin/view/oplog/index.html delete mode 100644 app/admin/view/oplog/index_search.html delete mode 100644 app/admin/view/queue/index.html delete mode 100644 app/admin/view/queue/index_search.html delete mode 100644 app/admin/view/table.html delete mode 100644 app/admin/view/user/form.html delete mode 100644 app/admin/view/user/index.html delete mode 100644 app/admin/view/user/index_search.html delete mode 100644 app/admin/view/user/pass.html delete mode 100644 app/data/command/OrderClean.php delete mode 100644 app/data/command/UserAgent.php delete mode 100644 app/data/command/UserAmount.php delete mode 100644 app/data/command/UserTransfer.php delete mode 100644 app/data/command/UserUpgrade.php delete mode 100644 app/data/controller/api/Auth.php delete mode 100644 app/data/controller/api/Data.php delete mode 100644 app/data/controller/api/Goods.php delete mode 100644 app/data/controller/api/Login.php delete mode 100644 app/data/controller/api/News.php delete mode 100644 app/data/controller/api/Notify.php delete mode 100644 app/data/controller/api/Wechat.php delete mode 100644 app/data/controller/api/Wxapp.php delete mode 100644 app/data/controller/api/auth/Address.php delete mode 100644 app/data/controller/api/auth/Balance.php delete mode 100644 app/data/controller/api/auth/Center.php delete mode 100644 app/data/controller/api/auth/News.php delete mode 100644 app/data/controller/api/auth/Order.php delete mode 100644 app/data/controller/api/auth/Rebate.php delete mode 100644 app/data/controller/api/auth/Transfer.php delete mode 100644 app/data/controller/base/Config.php delete mode 100644 app/data/controller/base/Discount.php delete mode 100644 app/data/controller/base/Message.php delete mode 100644 app/data/controller/base/Payment.php delete mode 100644 app/data/controller/base/Upgrade.php delete mode 100644 app/data/controller/base/postage/Company.php delete mode 100644 app/data/controller/base/postage/Template.php delete mode 100644 app/data/controller/news/Item.php delete mode 100644 app/data/controller/news/Mark.php delete mode 100644 app/data/controller/shop/Cate.php delete mode 100644 app/data/controller/shop/Goods.php delete mode 100644 app/data/controller/shop/Mark.php delete mode 100644 app/data/controller/shop/Order.php delete mode 100644 app/data/controller/shop/Send.php delete mode 100644 app/data/controller/total/Portal.php delete mode 100644 app/data/controller/user/Admin.php delete mode 100644 app/data/controller/user/Balance.php delete mode 100644 app/data/controller/user/Message.php delete mode 100644 app/data/controller/user/Rebate.php delete mode 100644 app/data/controller/user/Transfer.php delete mode 100644 app/data/model/BasePostageCompany.php delete mode 100644 app/data/model/BasePostageRegion.php delete mode 100644 app/data/model/BasePostageTemplate.php delete mode 100644 app/data/model/BaseUserDiscount.php delete mode 100644 app/data/model/BaseUserMessage.php delete mode 100644 app/data/model/BaseUserPayment.php delete mode 100644 app/data/model/BaseUserUpgrade.php delete mode 100644 app/data/model/DataNewsItem.php delete mode 100644 app/data/model/DataNewsMark.php delete mode 100644 app/data/model/DataNewsXCollect.php delete mode 100644 app/data/model/DataUser.php delete mode 100644 app/data/model/DataUserAddress.php delete mode 100644 app/data/model/DataUserBalance.php delete mode 100644 app/data/model/DataUserMessage.php delete mode 100644 app/data/model/DataUserPayment.php delete mode 100644 app/data/model/DataUserRebate.php delete mode 100644 app/data/model/DataUserToken.php delete mode 100644 app/data/model/DataUserTransfer.php delete mode 100644 app/data/model/ShopGoods.php delete mode 100644 app/data/model/ShopGoodsCate.php delete mode 100644 app/data/model/ShopGoodsItem.php delete mode 100644 app/data/model/ShopGoodsMark.php delete mode 100644 app/data/model/ShopGoodsStock.php delete mode 100644 app/data/model/ShopOrder.php delete mode 100644 app/data/model/ShopOrderItem.php delete mode 100644 app/data/model/ShopOrderSend.php delete mode 100644 app/data/readme.md delete mode 100644 app/data/service/ExpressService.php delete mode 100644 app/data/service/GoodsService.php delete mode 100644 app/data/service/MessageService.php delete mode 100644 app/data/service/NewsService.php delete mode 100644 app/data/service/OrderService.php delete mode 100644 app/data/service/PaymentService.php delete mode 100644 app/data/service/RebateService.php delete mode 100644 app/data/service/UserAdminService.php delete mode 100644 app/data/service/UserBalanceService.php delete mode 100644 app/data/service/UserRebateService.php delete mode 100644 app/data/service/UserTokenService.php delete mode 100644 app/data/service/UserTransferService.php delete mode 100644 app/data/service/UserUpgradeService.php delete mode 100644 app/data/service/payment/AlipayPaymentService.php delete mode 100644 app/data/service/payment/BalancePyamentService.php delete mode 100644 app/data/service/payment/EmptyPaymentService.php delete mode 100644 app/data/service/payment/JoinpayPaymentService.php delete mode 100644 app/data/service/payment/VoucherPaymentService.php delete mode 100644 app/data/service/payment/WechatPaymentService.php delete mode 100644 app/data/sys.php delete mode 100644 app/data/view/base/config/cropper.html delete mode 100644 app/data/view/base/config/page_form.html delete mode 100644 app/data/view/base/config/page_home.html delete mode 100644 app/data/view/base/config/slider.html delete mode 100644 app/data/view/base/config/wxapp.html delete mode 100644 app/data/view/base/discount/form.html delete mode 100644 app/data/view/base/discount/index.html delete mode 100644 app/data/view/base/message/form.html delete mode 100644 app/data/view/base/message/index.html delete mode 100644 app/data/view/base/message/index_search.html delete mode 100644 app/data/view/base/payment/form.html delete mode 100644 app/data/view/base/payment/form_alipay.html delete mode 100644 app/data/view/base/payment/form_joinpay.html delete mode 100644 app/data/view/base/payment/form_voucher.html delete mode 100644 app/data/view/base/payment/form_wechat.html delete mode 100644 app/data/view/base/payment/index.html delete mode 100644 app/data/view/base/payment/index_search.html delete mode 100644 app/data/view/base/postage/company/form.html delete mode 100644 app/data/view/base/postage/company/index.html delete mode 100644 app/data/view/base/postage/company/index_search.html delete mode 100644 app/data/view/base/postage/template/form.html delete mode 100644 app/data/view/base/postage/template/form_region.html delete mode 100644 app/data/view/base/postage/template/index.html delete mode 100644 app/data/view/base/postage/template/index_search.html delete mode 100644 app/data/view/base/upgrade/form.html delete mode 100644 app/data/view/base/upgrade/index.html delete mode 100644 app/data/view/news/item/form.html delete mode 100644 app/data/view/news/item/index.html delete mode 100644 app/data/view/news/item/index_search.html delete mode 100644 app/data/view/news/item/select.html delete mode 100644 app/data/view/news/item/select_search.html delete mode 100644 app/data/view/news/mark/form.html delete mode 100644 app/data/view/news/mark/index.html delete mode 100644 app/data/view/news/mark/index_search.html delete mode 100644 app/data/view/shop/cate/form.html delete mode 100644 app/data/view/shop/cate/index.html delete mode 100644 app/data/view/shop/goods/form.html delete mode 100644 app/data/view/shop/goods/formstyle.html delete mode 100644 app/data/view/shop/goods/index.html delete mode 100644 app/data/view/shop/goods/index_search.html delete mode 100644 app/data/view/shop/goods/select.html delete mode 100644 app/data/view/shop/goods/select_search.html delete mode 100644 app/data/view/shop/goods/stock.html delete mode 100644 app/data/view/shop/mark/form.html delete mode 100644 app/data/view/shop/mark/index.html delete mode 100644 app/data/view/shop/mark/index_search.html delete mode 100644 app/data/view/shop/mark/select.html delete mode 100644 app/data/view/shop/order/audit.html delete mode 100644 app/data/view/shop/order/index.html delete mode 100644 app/data/view/shop/order/index_search.html delete mode 100644 app/data/view/shop/send/config.html delete mode 100644 app/data/view/shop/send/index.html delete mode 100644 app/data/view/shop/send/index_search.html delete mode 100644 app/data/view/shop/send/truck_form.html delete mode 100644 app/data/view/shop/send/truck_query.html delete mode 100644 app/data/view/total/portal/index.html delete mode 100644 app/data/view/user/admin/index.html delete mode 100644 app/data/view/user/admin/index_search.html delete mode 100644 app/data/view/user/admin/parent.html delete mode 100644 app/data/view/user/admin/parent_search.html delete mode 100644 app/data/view/user/admin/teams.html delete mode 100644 app/data/view/user/balance/form.html delete mode 100644 app/data/view/user/balance/index.html delete mode 100644 app/data/view/user/balance/index_search.html delete mode 100644 app/data/view/user/message/config.html delete mode 100644 app/data/view/user/message/index.html delete mode 100644 app/data/view/user/message/index_search.html delete mode 100644 app/data/view/user/rebate/config.html delete mode 100644 app/data/view/user/rebate/index.html delete mode 100644 app/data/view/user/rebate/index_search.html delete mode 100644 app/data/view/user/transfer/audit.html delete mode 100644 app/data/view/user/transfer/config.html delete mode 100644 app/data/view/user/transfer/index.html delete mode 100644 app/data/view/user/transfer/index_search.html delete mode 100644 app/data/view/user/transfer/payment.html delete mode 100644 app/index/controller/Index.php delete mode 100644 app/wechat/command/Auto.php delete mode 100644 app/wechat/command/Fans.php delete mode 100644 app/wechat/controller/Auto.php delete mode 100644 app/wechat/controller/Config.php delete mode 100644 app/wechat/controller/Fans.php delete mode 100644 app/wechat/controller/Keys.php delete mode 100644 app/wechat/controller/Menu.php delete mode 100644 app/wechat/controller/News.php delete mode 100644 app/wechat/controller/api/Js.php delete mode 100644 app/wechat/controller/api/Login.php delete mode 100644 app/wechat/controller/api/Push.php delete mode 100644 app/wechat/controller/api/Test.php delete mode 100644 app/wechat/controller/api/View.php delete mode 100644 app/wechat/model/WechatAuto.php delete mode 100644 app/wechat/model/WechatFans.php delete mode 100644 app/wechat/model/WechatFansTags.php delete mode 100644 app/wechat/model/WechatKeys.php delete mode 100644 app/wechat/model/WechatMedia.php delete mode 100644 app/wechat/model/WechatNews.php delete mode 100644 app/wechat/model/WechatNewsArticle.php delete mode 100644 app/wechat/module/change/2020.08.03.00.md delete mode 100644 app/wechat/module/change/2020.08.28.01.md delete mode 100644 app/wechat/module/module.json delete mode 100644 app/wechat/service/AutoService.php delete mode 100644 app/wechat/service/FansService.php delete mode 100644 app/wechat/service/MediaService.php delete mode 100644 app/wechat/service/WechatService.php delete mode 100644 app/wechat/sys.php delete mode 100644 app/wechat/view/api/login/failed.html delete mode 100644 app/wechat/view/api/login/success.html delete mode 100644 app/wechat/view/api/test/jssdk.html delete mode 100644 app/wechat/view/api/test/oauth.html delete mode 100644 app/wechat/view/api/view/image.html delete mode 100644 app/wechat/view/api/view/item.html delete mode 100644 app/wechat/view/api/view/main.html delete mode 100644 app/wechat/view/api/view/music.html delete mode 100644 app/wechat/view/api/view/news.html delete mode 100644 app/wechat/view/api/view/text.html delete mode 100644 app/wechat/view/api/view/video.html delete mode 100644 app/wechat/view/api/view/voice.html delete mode 100644 app/wechat/view/auto/form.html delete mode 100644 app/wechat/view/auto/index.html delete mode 100644 app/wechat/view/auto/index_search.html delete mode 100644 app/wechat/view/config/options.html delete mode 100644 app/wechat/view/config/options_form_api.html delete mode 100644 app/wechat/view/config/options_form_thr.html delete mode 100644 app/wechat/view/config/options_test.html delete mode 100644 app/wechat/view/config/payment.html delete mode 100644 app/wechat/view/config/payment_test.html delete mode 100644 app/wechat/view/fans/index.html delete mode 100644 app/wechat/view/fans/index_search.html delete mode 100644 app/wechat/view/keys/form.html delete mode 100644 app/wechat/view/keys/index.html delete mode 100644 app/wechat/view/keys/index_search.html delete mode 100644 app/wechat/view/menu/index.html delete mode 100644 app/wechat/view/news/form.html delete mode 100644 app/wechat/view/news/formstyle.html delete mode 100644 app/wechat/view/news/index.html delete mode 100644 app/wechat/view/news/select.html delete mode 100644 build.cmd delete mode 100644 composer.json delete mode 100644 config/app.php delete mode 100644 config/cache.php delete mode 100644 config/cookie.php delete mode 100644 config/database.php delete mode 100644 config/filesystem.php delete mode 100644 config/lang.php delete mode 100644 config/log.php delete mode 100644 config/route.php delete mode 100644 config/session.php delete mode 100644 config/view.php create mode 100644 index.html delete mode 100644 license create mode 100644 outer/framework.html delete mode 100644 public/.htaccess delete mode 100644 public/favicon.ico delete mode 100644 public/index.php delete mode 100644 public/robots.txt delete mode 100644 public/router.php delete mode 100644 public/static/admin.js delete mode 100644 public/static/login.js delete mode 100644 public/static/plugs/angular/angular.min.js delete mode 100644 public/static/plugs/ckeditor/ckeditor.js delete mode 100644 public/static/plugs/ckeditor/config.js delete mode 100644 public/static/plugs/ckeditor/contents.css delete mode 100644 public/static/plugs/ckeditor/lang/en.js delete mode 100644 public/static/plugs/ckeditor/lang/zh-cn.js delete mode 100644 public/static/plugs/ckeditor/lang/zh.js delete mode 100644 public/static/plugs/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js delete mode 100644 public/static/plugs/ckeditor/plugins/a11yhelp/dialogs/lang/en.js delete mode 100644 public/static/plugs/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js delete mode 100644 public/static/plugs/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js delete mode 100644 public/static/plugs/ckeditor/plugins/about/dialogs/about.js delete mode 100644 public/static/plugs/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png delete mode 100644 public/static/plugs/ckeditor/plugins/about/dialogs/logo_ckeditor.png delete mode 100644 public/static/plugs/ckeditor/plugins/clipboard/dialogs/paste.js delete mode 100644 public/static/plugs/ckeditor/plugins/colordialog/dialogs/colordialog.css delete mode 100644 public/static/plugs/ckeditor/plugins/colordialog/dialogs/colordialog.js delete mode 100644 public/static/plugs/ckeditor/plugins/copyformatting/cursors/cursor-disabled.svg delete mode 100644 public/static/plugs/ckeditor/plugins/copyformatting/cursors/cursor.svg delete mode 100644 public/static/plugs/ckeditor/plugins/copyformatting/styles/copyformatting.css delete mode 100644 public/static/plugs/ckeditor/plugins/dialog/dialogDefinition.js delete mode 100644 public/static/plugs/ckeditor/plugins/dialog/styles/dialog.css delete mode 100644 public/static/plugs/ckeditor/plugins/div/dialogs/div.js delete mode 100644 public/static/plugs/ckeditor/plugins/find/dialogs/find.js delete mode 100644 public/static/plugs/ckeditor/plugins/flash/dialogs/flash.js delete mode 100644 public/static/plugs/ckeditor/plugins/flash/images/placeholder.png delete mode 100644 public/static/plugs/ckeditor/plugins/forms/dialogs/button.js delete mode 100644 public/static/plugs/ckeditor/plugins/forms/dialogs/checkbox.js delete mode 100644 public/static/plugs/ckeditor/plugins/forms/dialogs/form.js delete mode 100644 public/static/plugs/ckeditor/plugins/forms/dialogs/hiddenfield.js delete mode 100644 public/static/plugs/ckeditor/plugins/forms/dialogs/radio.js delete mode 100644 public/static/plugs/ckeditor/plugins/forms/dialogs/select.js delete mode 100644 public/static/plugs/ckeditor/plugins/forms/dialogs/textarea.js delete mode 100644 public/static/plugs/ckeditor/plugins/forms/dialogs/textfield.js delete mode 100644 public/static/plugs/ckeditor/plugins/forms/images/hiddenfield.gif delete mode 100644 public/static/plugs/ckeditor/plugins/icons.png delete mode 100644 public/static/plugs/ckeditor/plugins/icons_hidpi.png delete mode 100644 public/static/plugs/ckeditor/plugins/iframe/dialogs/iframe.js delete mode 100644 public/static/plugs/ckeditor/plugins/iframe/images/placeholder.png delete mode 100644 public/static/plugs/ckeditor/plugins/image/dialogs/image.js delete mode 100644 public/static/plugs/ckeditor/plugins/image/images/noimage.png delete mode 100644 public/static/plugs/ckeditor/plugins/link/dialogs/anchor.js delete mode 100644 public/static/plugs/ckeditor/plugins/link/dialogs/link.js delete mode 100644 public/static/plugs/ckeditor/plugins/link/images/anchor.png delete mode 100644 public/static/plugs/ckeditor/plugins/link/images/hidpi/anchor.png delete mode 100644 public/static/plugs/ckeditor/plugins/liststyle/dialogs/liststyle.js delete mode 100644 public/static/plugs/ckeditor/plugins/magicline/images/hidpi/icon-rtl.png delete mode 100644 public/static/plugs/ckeditor/plugins/magicline/images/hidpi/icon.png delete mode 100644 public/static/plugs/ckeditor/plugins/magicline/images/icon-rtl.png delete mode 100644 public/static/plugs/ckeditor/plugins/magicline/images/icon.png delete mode 100644 public/static/plugs/ckeditor/plugins/pagebreak/images/pagebreak.gif delete mode 100644 public/static/plugs/ckeditor/plugins/pastefromgdocs/filter/default.js delete mode 100644 public/static/plugs/ckeditor/plugins/pastefromlibreoffice/filter/default.js delete mode 100644 public/static/plugs/ckeditor/plugins/pastefromword/filter/default.js delete mode 100644 public/static/plugs/ckeditor/plugins/pastetools/filter/common.js delete mode 100644 public/static/plugs/ckeditor/plugins/pastetools/filter/image.js delete mode 100644 public/static/plugs/ckeditor/plugins/preview/images/pagebreak.gif delete mode 100644 public/static/plugs/ckeditor/plugins/preview/preview.html delete mode 100644 public/static/plugs/ckeditor/plugins/preview/styles/screen.css delete mode 100644 public/static/plugs/ckeditor/plugins/scayt/dialogs/dialog.css delete mode 100644 public/static/plugs/ckeditor/plugins/scayt/dialogs/options.js delete mode 100644 public/static/plugs/ckeditor/plugins/scayt/dialogs/toolbar.css delete mode 100644 public/static/plugs/ckeditor/plugins/scayt/skins/moono-lisa/scayt.css delete mode 100644 public/static/plugs/ckeditor/plugins/showblocks/images/block_address.png delete mode 100644 public/static/plugs/ckeditor/plugins/showblocks/images/block_blockquote.png delete mode 100644 public/static/plugs/ckeditor/plugins/showblocks/images/block_div.png delete mode 100644 public/static/plugs/ckeditor/plugins/showblocks/images/block_h1.png delete mode 100644 public/static/plugs/ckeditor/plugins/showblocks/images/block_h2.png delete mode 100644 public/static/plugs/ckeditor/plugins/showblocks/images/block_h3.png delete mode 100644 public/static/plugs/ckeditor/plugins/showblocks/images/block_h4.png delete mode 100644 public/static/plugs/ckeditor/plugins/showblocks/images/block_h5.png delete mode 100644 public/static/plugs/ckeditor/plugins/showblocks/images/block_h6.png delete mode 100644 public/static/plugs/ckeditor/plugins/showblocks/images/block_p.png delete mode 100644 public/static/plugs/ckeditor/plugins/showblocks/images/block_pre.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/dialogs/smiley.js delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/angel_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/angel_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/angry_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/angry_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/broken_heart.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/broken_heart.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/confused_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/confused_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/cry_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/cry_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/devil_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/devil_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/embaressed_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/embarrassed_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/embarrassed_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/envelope.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/envelope.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/heart.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/heart.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/kiss.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/kiss.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/lightbulb.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/lightbulb.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/omg_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/omg_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/regular_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/regular_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/sad_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/sad_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/shades_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/shades_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/teeth_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/teeth_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/thumbs_down.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/thumbs_down.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/thumbs_up.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/thumbs_up.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/tongue_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/tongue_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/tounge_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/wink_smile.gif delete mode 100644 public/static/plugs/ckeditor/plugins/smiley/images/wink_smile.png delete mode 100644 public/static/plugs/ckeditor/plugins/specialchar/dialogs/lang/en.js delete mode 100644 public/static/plugs/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js delete mode 100644 public/static/plugs/ckeditor/plugins/specialchar/dialogs/lang/zh.js delete mode 100644 public/static/plugs/ckeditor/plugins/specialchar/dialogs/specialchar.js delete mode 100644 public/static/plugs/ckeditor/plugins/table/dialogs/table.js delete mode 100644 public/static/plugs/ckeditor/plugins/tableselection/styles/tableselection.css delete mode 100644 public/static/plugs/ckeditor/plugins/tabletools/dialogs/tableCell.js delete mode 100644 public/static/plugs/ckeditor/plugins/templates/dialogs/templates.css delete mode 100644 public/static/plugs/ckeditor/plugins/templates/dialogs/templates.js delete mode 100644 public/static/plugs/ckeditor/plugins/templates/templates/default.js delete mode 100644 public/static/plugs/ckeditor/plugins/templates/templates/images/template1.gif delete mode 100644 public/static/plugs/ckeditor/plugins/templates/templates/images/template2.gif delete mode 100644 public/static/plugs/ckeditor/plugins/templates/templates/images/template3.gif delete mode 100644 public/static/plugs/ckeditor/plugins/widget/images/handle.png delete mode 100644 public/static/plugs/ckeditor/plugins/wsc/dialogs/ciframe.html delete mode 100644 public/static/plugs/ckeditor/plugins/wsc/dialogs/tmpFrameset.html delete mode 100644 public/static/plugs/ckeditor/plugins/wsc/dialogs/wsc.css delete mode 100644 public/static/plugs/ckeditor/plugins/wsc/dialogs/wsc.js delete mode 100644 public/static/plugs/ckeditor/plugins/wsc/dialogs/wsc_ie.js delete mode 100644 public/static/plugs/ckeditor/plugins/wsc/icons/hidpi/spellchecker.png delete mode 100644 public/static/plugs/ckeditor/plugins/wsc/icons/spellchecker.png delete mode 100644 public/static/plugs/ckeditor/plugins/wsc/lang/en.js delete mode 100644 public/static/plugs/ckeditor/plugins/wsc/lang/zh-cn.js delete mode 100644 public/static/plugs/ckeditor/plugins/wsc/lang/zh.js delete mode 100644 public/static/plugs/ckeditor/plugins/wsc/plugin.js delete mode 100644 public/static/plugs/ckeditor/plugins/wsc/skins/moono-lisa/wsc.css delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/dialog.css delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/dialog_ie.css delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/dialog_ie8.css delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/dialog_iequirks.css delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/editor.css delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/editor_gecko.css delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/editor_ie.css delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/editor_ie8.css delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/editor_iequirks.css delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/icons.png delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/icons_hidpi.png delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/images/arrow.png delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/images/close.png delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/images/hidpi/close.png delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/images/hidpi/lock-open.png delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/images/hidpi/lock.png delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/images/hidpi/refresh.png delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/images/lock-open.png delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/images/lock.png delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/images/refresh.png delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/images/spinner.gif delete mode 100644 public/static/plugs/ckeditor/skins/moono-lisa/readme.md delete mode 100644 public/static/plugs/ckeditor/styles.js delete mode 100644 public/static/plugs/cropper/cropper.min.css delete mode 100644 public/static/plugs/cropper/cropper.min.js delete mode 100644 public/static/plugs/echarts/echarts.min.js delete mode 100644 public/static/plugs/jquery/area/area.js delete mode 100644 public/static/plugs/jquery/area/area.json delete mode 100644 public/static/plugs/jquery/area/area.php delete mode 100644 public/static/plugs/jquery/autocompleter.css delete mode 100644 public/static/plugs/jquery/autocompleter.min.js delete mode 100644 public/static/plugs/jquery/base64.min.js delete mode 100644 public/static/plugs/jquery/excel.xlsx.js delete mode 100644 public/static/plugs/jquery/jquery.min.js delete mode 100644 public/static/plugs/jquery/json.min.js delete mode 100644 public/static/plugs/jquery/less.min.js delete mode 100644 public/static/plugs/jquery/masonry.min.js delete mode 100644 public/static/plugs/jquery/md5.min.js delete mode 100644 public/static/plugs/jquery/pace.min.js delete mode 100644 public/static/plugs/jquery/pcasunzips.js delete mode 100644 public/static/plugs/jquery/xlsx.min.js delete mode 100644 public/static/plugs/layui/css/layui.css delete mode 100644 public/static/plugs/layui/css/modules/code.css delete mode 100644 public/static/plugs/layui/css/modules/laydate/default/laydate.css delete mode 100644 public/static/plugs/layui/css/modules/layer/default/icon-ext.png delete mode 100644 public/static/plugs/layui/css/modules/layer/default/icon.png delete mode 100644 public/static/plugs/layui/css/modules/layer/default/layer.css delete mode 100644 public/static/plugs/layui/css/modules/layer/default/loading-0.gif delete mode 100644 public/static/plugs/layui/css/modules/layer/default/loading-1.gif delete mode 100644 public/static/plugs/layui/css/modules/layer/default/loading-2.gif delete mode 100644 public/static/plugs/layui/font/iconfont.eot delete mode 100644 public/static/plugs/layui/font/iconfont.svg delete mode 100644 public/static/plugs/layui/font/iconfont.ttf delete mode 100644 public/static/plugs/layui/font/iconfont.woff delete mode 100644 public/static/plugs/layui/font/iconfont.woff2 delete mode 100644 public/static/plugs/layui/layui.js delete mode 100644 public/static/plugs/layui_exts/excel.js delete mode 100644 public/static/plugs/layui_exts/tableSelect.js delete mode 100644 public/static/plugs/require/css.js delete mode 100644 public/static/plugs/require/require.js delete mode 100644 public/static/plugs/socket/swfobject.js delete mode 100644 public/static/plugs/socket/websocket.js delete mode 100644 public/static/plugs/socket/websocket.swf delete mode 100644 public/static/plugs/sortable/sortable.min.js delete mode 100644 public/static/plugs/sortable/vue.draggable.min.js delete mode 100644 public/static/plugs/supersized/progress.gif delete mode 100644 public/static/plugs/supersized/supersized.3.2.7.min.js delete mode 100644 public/static/plugs/supersized/supersized.css delete mode 100644 public/static/plugs/vue/vue.min.js delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/diy/1_close.png delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/diy/1_open.png delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/diy/2.png delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/diy/3.png delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/diy/4.png delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/diy/5.png delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/diy/6.png delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/diy/7.png delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/diy/8.png delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/diy/9.png delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/line_conn.gif delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/loading.gif delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/zTreeStandard.gif delete mode 100644 public/static/plugs/ztree/zTreeStyle/img/zTreeStandard.png delete mode 100644 public/static/plugs/ztree/zTreeStyle/zTreeStyle.css delete mode 100644 public/static/plugs/ztree/ztree.all.min.js delete mode 100644 public/static/theme/css/_config.css delete mode 100644 public/static/theme/css/_config.css.map delete mode 100644 public/static/theme/css/_config.less delete mode 100644 public/static/theme/css/_custom.css delete mode 100644 public/static/theme/css/_custom.less delete mode 100644 public/static/theme/css/_display.css delete mode 100644 public/static/theme/css/_display.less delete mode 100644 public/static/theme/css/_layout.css delete mode 100644 public/static/theme/css/_layout.less delete mode 100644 public/static/theme/css/console.css delete mode 100644 public/static/theme/css/console.css.map delete mode 100644 public/static/theme/css/console.less delete mode 100644 public/static/theme/css/icon/iconfont.ttf delete mode 100644 public/static/theme/css/icon/iconfont.woff delete mode 100644 public/static/theme/css/icon/iconfont.woff2 delete mode 100644 public/static/theme/css/iconfont.css delete mode 100644 public/static/theme/css/iconfont.css.map delete mode 100644 public/static/theme/css/iconfont.less delete mode 100644 public/static/theme/css/login.css delete mode 100644 public/static/theme/css/login.css.map delete mode 100644 public/static/theme/css/login.less delete mode 100644 public/static/theme/css/mobile.css delete mode 100644 public/static/theme/css/mobile.css.map delete mode 100644 public/static/theme/css/mobile.less delete mode 100644 public/static/theme/css/package.json delete mode 100644 public/static/theme/img/404_icon.png delete mode 100644 public/static/theme/img/505_icon.png delete mode 100644 public/static/theme/img/headimg.png delete mode 100644 public/static/theme/img/image.png delete mode 100644 public/static/theme/img/login/bg1.jpg delete mode 100644 public/static/theme/img/login/bg2.jpg delete mode 100644 public/static/theme/img/upimg.png delete mode 100644 public/static/theme/img/wechat/index.png delete mode 100644 public/static/theme/img/wechat/m-icon-error.png delete mode 100644 public/static/theme/img/wechat/m-icon-success.png delete mode 100644 public/static/theme/img/wechat/mobile_foot.png delete mode 100644 public/static/theme/img/wechat/mobile_head.png delete mode 100644 public/static/theme/img/wechat/qrc_pay_error.jpg delete mode 100644 public/static/theme/img/wechat/qrc_payed.jpg delete mode 100644 readme.md delete mode 100644 security.md create mode 100644 static/app.js create mode 100644 static/plugs/core/vue.element.plus.css create mode 100644 static/plugs/core/vue.element.plus.js create mode 100644 static/plugs/core/vue.min.js create mode 100644 static/plugs/core/vue.router.js create mode 100644 static/plugs/core/vue.sfc.loader.js create mode 100644 static/template/index.vue create mode 100644 static/template/layout.vue delete mode 100755 think diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index fc8b10121..000000000 --- a/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -*.js linguist-language=php -*.css linguist-language=php -*.html linguist-language=php \ No newline at end of file diff --git a/SQL01-数据表结构.sql b/SQL01-数据表结构.sql deleted file mode 100644 index bd25332c1..000000000 --- a/SQL01-数据表结构.sql +++ /dev/null @@ -1,1099 +0,0 @@ -SET NAMES utf8mb4; -SET -FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for base_postage_company --- ---------------------------- -DROP TABLE IF EXISTS `base_postage_company`; -CREATE TABLE `base_postage_company` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '快递公司名称', - `code_1` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '快递公司代码', - `code_2` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '百度快递100代码', - `code_3` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '官方快递100代码', - `remark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '快递公司描述', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '状态(0.无效,1.有效)', - `deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态(1已删除,0未删除)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_base_postage_company_code1`(`code_1`) USING BTREE, - INDEX `idx_base_postage_company_code2`(`code_2`) USING BTREE, - INDEX `idx_base_postage_company_code3`(`code_3`) USING BTREE, - INDEX `idx_base_postage_company_status`(`status`) USING BTREE, - INDEX `idx_base_postage_company_deleted`(`deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-快递-公司' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for base_postage_region --- ---------------------------- -DROP TABLE IF EXISTS `base_postage_region`; -CREATE TABLE `base_postage_region` -( - `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `pid` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '上级PID', - `first` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '首字母', - `short` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '区域简称', - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '区域名称', - `level` tinyint(4) NULL DEFAULT 0 COMMENT '区域层级', - `pinyin` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '区域拼音', - `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '区域邮编', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '使用状态', - `lng` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '所在经度', - `lat` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '所在纬度', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_base_postage_region_pid`(`pid`) USING BTREE, - INDEX `idx_base_postage_region_name`(`name`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-快递-区域' ROW_FORMAT = COMPACT; - --- ---------------------------- --- Table structure for base_postage_template --- ---------------------------- -DROP TABLE IF EXISTS `base_postage_template`; -CREATE TABLE `base_postage_template` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '模板编号', - `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '模板名称', - `normal` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '默认规则', - `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '模板规则', - `sort` bigint(20) NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '模板状态', - `deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_base_postage_template_code`(`code`) USING BTREE, - INDEX `idx_base_postage_template_status`(`status`) USING BTREE, - INDEX `idx_base_postage_template_deleted`(`deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-快递-模板' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for base_user_discount --- ---------------------------- -DROP TABLE IF EXISTS `base_user_discount`; -CREATE TABLE `base_user_discount` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '方案名称', - `items` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '方案规则', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '方案描述', - `sort` bigint(20) NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '方案状态(1使用,0禁用)', - `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '删除状态', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_base_user_discount_status`(`status`) USING BTREE, - INDEX `idx_base_user_discount_deleted`(`deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-基础-折扣' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for base_user_message --- ---------------------------- -DROP TABLE IF EXISTS `base_user_message`; -CREATE TABLE `base_user_message` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '消息类型', - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '消息名称', - `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '消息内容', - `num_read` bigint(20) NULL DEFAULT 0 COMMENT '阅读次数', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '消息状态(1使用,0禁用)', - `deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_base_user_message_type`(`type`) USING BTREE, - INDEX `idx_base_user_message_status`(`status`) USING BTREE, - INDEX `idx_base_user_message_deleted`(`deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-基础-通知' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for base_user_payment --- ---------------------------- -DROP TABLE IF EXISTS `base_user_payment`; -CREATE TABLE `base_user_payment` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付类型', - `code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '通道编号', - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付名称', - `cover` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付图标', - `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '支付参数', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付说明', - `sort` bigint(20) NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '支付状态(1使用,0禁用)', - `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '删除状态', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_base_user_payment_type`(`type`) USING BTREE, - INDEX `idx_base_user_payment_code`(`code`) USING BTREE, - INDEX `idx_base_user_payment_status`(`status`) USING BTREE, - INDEX `idx_base_user_payment_deleted`(`deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-基础-支付' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for base_user_upgrade --- ---------------------------- -DROP TABLE IF EXISTS `base_user_upgrade`; -CREATE TABLE `base_user_upgrade` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户级别名称', - `number` tinyint(2) NULL DEFAULT 0 COMMENT '用户级别序号', - `rebate_rule` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户奖利规则', - `upgrade_type` tinyint(1) NULL DEFAULT 0 COMMENT '会员升级规则(0单个,1同时)', - `upgrade_team` tinyint(1) NULL DEFAULT 1 COMMENT '团队人数统计(0不计,1累计)', - `goods_vip_status` tinyint(1) NULL DEFAULT 0 COMMENT '入会礼包状态', - `order_amount_status` tinyint(1) NULL DEFAULT 0 COMMENT '订单金额状态', - `order_amount_number` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '订单金额累计', - `teams_users_status` tinyint(1) NULL DEFAULT 0 COMMENT '团队人数状态', - `teams_users_number` bigint(20) NULL DEFAULT 0 COMMENT '团队人数累计', - `teams_direct_status` tinyint(1) NULL DEFAULT 0 COMMENT '直推人数状态', - `teams_direct_number` bigint(20) NULL DEFAULT 0 COMMENT '直推人数累计', - `teams_indirect_status` tinyint(1) NULL DEFAULT 0 COMMENT '间推人数状态', - `teams_indirect_number` bigint(20) NULL DEFAULT 0 COMMENT '间推人数累计', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户级别描述', - `utime` bigint(20) NULL DEFAULT 0 COMMENT '等级更新时间', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '用户等级状态(1使用,0禁用)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '等级创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_base_user_upgrade_status`(`status`) USING BTREE, - INDEX `idx_base_user_upgrade_number`(`number`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-用户-等级' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for data_news_item --- ---------------------------- -DROP TABLE IF EXISTS `data_news_item`; -CREATE TABLE `data_news_item` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '文章编号', - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '文章标题', - `mark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '文章标签', - `cover` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '文章封面', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '备注说明', - `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '文章内容', - `num_like` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '文章点赞数', - `num_read` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '文章阅读数', - `num_collect` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '文章收藏数', - `num_comment` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '文章评论数', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '文章状态(1使用,0禁用)', - `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '删除状态(0未删,1已删)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_data_news_item_status`(`status`) USING BTREE, - INDEX `idx_data_news_item_deleted`(`deleted`) USING BTREE, - INDEX `idx_data_news_item_code`(`code`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-文章-内容' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for data_news_mark --- ---------------------------- -DROP TABLE IF EXISTS `data_news_mark`; -CREATE TABLE `data_news_mark` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '标签名称', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '标签说明', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '标签状态(1使用,0禁用)', - `deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_data_news_mark_status`(`status`) USING BTREE, - INDEX `idx_data_news_mark_deleted`(`deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-文章-标签' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for data_news_x_collect --- ---------------------------- -DROP TABLE IF EXISTS `data_news_x_collect`; -CREATE TABLE `data_news_x_collect` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `uuid` bigint(20) NULL DEFAULT 0 COMMENT '用户UID', - `type` tinyint(1) NULL DEFAULT 1 COMMENT '记录类型(1收藏,2点赞,3历史,4评论)', - `code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '文章编号', - `reply` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '评论内容', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '记录状态(0无效,1待审核,2已审核)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_data_news_x_collect_type`(`type`) USING BTREE, - INDEX `idx_data_news_x_collect_code`(`code`) USING BTREE, - INDEX `idx_data_news_x_collect_status`(`status`) USING BTREE, - INDEX `idx_data_news_x_collect_uuid`(`uuid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-文章-标记' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for data_user --- ---------------------------- -DROP TABLE IF EXISTS `data_user`; -CREATE TABLE `data_user` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `pid0` bigint(20) NULL DEFAULT 0 COMMENT '临时推荐人UID', - `pid1` bigint(20) NULL DEFAULT 0 COMMENT '推荐人一级UID', - `pid2` bigint(20) NULL DEFAULT 0 COMMENT '推荐人二级UID', - `pids` tinyint(1) NULL DEFAULT 0 COMMENT '推荐人绑定状态', - `path` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '-' COMMENT '推荐关系路径', - `layer` bigint(20) NULL DEFAULT 1 COMMENT '推荐关系层级', - `openid1` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '小程序OPENID', - `openid2` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '服务号OPENID', - `unionid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '公众号UnionID', - `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户手机', - `headimg` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户头像', - `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户姓名', - `nickname` varchar(99) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户昵称', - `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '登录密码', - `region_province` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '所在省份', - `region_city` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '所在城市', - `region_area` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '所在区域', - `base_age` bigint(20) NULL DEFAULT 0 COMMENT '用户年龄', - `base_sex` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户性别', - `base_height` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户身高', - `base_weight` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户体重', - `base_birthday` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户生日', - `vip_code` bigint(20) NULL DEFAULT 0 COMMENT 'VIP等级编号', - `vip_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '普通用户' COMMENT 'VIP等级名称', - `vip_order` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT 'VIP升级订单', - `vip_datetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT 'VIP等级时间', - `buy_vip_entry` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '是否入会礼包', - `buy_last_date` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '最后支付时间', - `rebate_total` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '返利金额统计', - `rebate_used` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '返利提现统计', - `rebate_lock` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '返利锁定统计', - `balance_total` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '累计充值统计', - `balance_used` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '已经使用统计', - `teams_users_total` bigint(20) NULL DEFAULT 0 COMMENT '团队人数统计', - `teams_users_direct` bigint(20) NULL DEFAULT 0 COMMENT '直属人数团队', - `teams_users_indirect` bigint(20) NULL DEFAULT 0 COMMENT '间接人数团队', - `order_amount_total` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '订单交易统计', - `teams_amount_total` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '二级团队业绩', - `teams_amount_direct` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '直属团队业绩', - `teams_amount_indirect` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '间接团队业绩', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户备注描述', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '用户状态(1正常,0已黑)', - `deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态(0未删,1已删)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_data_user_status`(`status`) USING BTREE, - INDEX `idx_data_user_deleted`(`deleted`) USING BTREE, - INDEX `idx_data_user_openid1`(`openid1`) USING BTREE, - INDEX `idx_data_user_openid2`(`openid2`) USING BTREE, - INDEX `idx_data_user_unionid`(`unionid`) USING BTREE, - INDEX `idx_data_user_pid1`(`pid1`) USING BTREE, - INDEX `idx_data_user_pid2`(`pid2`) USING BTREE, - INDEX `idx_data_user_pid0`(`pid0`) USING BTREE, - INDEX `idx_data_user_pids`(`pids`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-用户-会员' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for data_user_address --- ---------------------------- -DROP TABLE IF EXISTS `data_user_address`; -CREATE TABLE `data_user_address` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `uuid` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '用户UID', - `type` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '地址类型(0普通,1默认)', - `code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '地址编号', - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '收货姓名', - `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '收货手机', - `idcode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '身体证号', - `idimg1` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '身份证正面', - `idimg2` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '身份证反面', - `province` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '地址-省份', - `city` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '地址-城市', - `area` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '地址-区域', - `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '地址-详情', - `deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_data_user_address_type`(`type`) USING BTREE, - INDEX `idx_data_user_address_code`(`code`) USING BTREE, - INDEX `idx_data_user_address_deleted`(`deleted`) USING BTREE, - INDEX `idx_data_user_address_uuid`(`uuid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-用户-地址' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for data_user_balance --- ---------------------------- -DROP TABLE IF EXISTS `data_user_balance`; -CREATE TABLE `data_user_balance` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `uuid` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '用户UID', - `code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '充值编号', - `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '充值名称', - `remark` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '充值备注', - `amount` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '充值金额', - `upgrade` tinyint(20) NULL DEFAULT 0 COMMENT '强制升级', - `deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态', - `create_by` bigint(20) NULL DEFAULT 0 COMMENT '系统用户', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_data_user_balance_code`(`code`) USING BTREE, - INDEX `idx_data_user_balance_deleted`(`deleted`) USING BTREE, - INDEX `idx_data_user_balance_uuid`(`uuid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-用户-余额' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for data_user_message --- ---------------------------- -DROP TABLE IF EXISTS `data_user_message`; -CREATE TABLE `data_user_message` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `type` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '短信类型', - `msgid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '消息编号', - `phone` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '目标手机', - `region` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '国家编号', - `result` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '返回结果', - `content` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '短信内容', - `status` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '短信状态(0失败,1成功)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_data_user_message_type`(`type`) USING BTREE, - INDEX `idx_data_user_message_status`(`status`) USING BTREE, - INDEX `idx_data_user_message_phone`(`phone`) USING BTREE, - INDEX `idx_data_user_message_msgid`(`msgid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-用户-短信' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for data_user_payment --- ---------------------------- -DROP TABLE IF EXISTS `data_user_payment`; -CREATE TABLE `data_user_payment` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `order_no` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '订单单号', - `order_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '订单描述', - `order_amount` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '订单金额', - `payment_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付编号', - `payment_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付通道', - `payment_trade` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付单号', - `payment_status` tinyint(1) NULL DEFAULT 0 COMMENT '支付状态', - `payment_amount` decimal(20, 2) NULL DEFAULT NULL COMMENT '支付金额', - `payment_datatime` datetime NULL DEFAULT NULL COMMENT '支付时间', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_data_user_payment_order_no`(`order_no`) USING BTREE, - INDEX `idx_data_user_payment_payment_code`(`payment_code`) USING BTREE, - INDEX `idx_data_user_payment_payment_type`(`payment_type`) USING BTREE, - INDEX `idx_data_user_payment_payment_trade`(`payment_trade`) USING BTREE, - INDEX `idx_data_user_payment_payment_status`(`payment_status`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-用户-支付' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for data_user_rebate --- ---------------------------- -DROP TABLE IF EXISTS `data_user_rebate`; -CREATE TABLE `data_user_rebate` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `uuid` bigint(20) NULL DEFAULT 0 COMMENT '用户UID', - `date` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '奖励日期', - `code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '奖励编号', - `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '奖励类型', - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '奖励名称', - `amount` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '奖励数量', - `order_no` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '订单单号', - `order_uuid` bigint(20) NULL DEFAULT 0 COMMENT '订单用户', - `order_amount` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '订单金额', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '生效状态(0未生效,1已生效)', - `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '删除状态(0未删除,1已删除)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_data_user_rebate_type`(`type`) USING BTREE, - INDEX `idx_data_user_rebate_date`(`date`) USING BTREE, - INDEX `idx_data_user_rebate_code`(`code`) USING BTREE, - INDEX `idx_data_user_rebate_name`(`name`) USING BTREE, - INDEX `idx_data_user_rebate_status`(`status`) USING BTREE, - INDEX `idx_data_user_rebate_uuid`(`uuid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-用户-返利' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for data_user_token --- ---------------------------- -DROP TABLE IF EXISTS `data_user_token`; -CREATE TABLE `data_user_token` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `uuid` bigint(20) NULL DEFAULT 0 COMMENT '用户UID', - `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '授权类型', - `time` bigint(20) NULL DEFAULT 0 COMMENT '有效时间', - `token` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '授权令牌', - `tokenv` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '授权验证', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_data_user_token_uuid`(`uuid`) USING BTREE, - INDEX `idx_data_user_token_type`(`type`) USING BTREE, - INDEX `idx_data_user_token_time`(`time`) USING BTREE, - INDEX `idx_data_user_token_token`(`token`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-用户-认证' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for data_user_transfer --- ---------------------------- -DROP TABLE IF EXISTS `data_user_transfer`; -CREATE TABLE `data_user_transfer` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `uuid` bigint(20) NULL DEFAULT 0 COMMENT '用户UID', - `type` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '提现方式', - `date` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '提现日期', - `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '提现单号', - `appid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '公众号APPID', - `openid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '公众号OPENID', - `charge_rate` decimal(20, 4) NULL DEFAULT 0.0000 COMMENT '提现手续费比例', - `charge_amount` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '提现手续费金额', - `amount` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '提现转账金额', - `qrcode` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '收款码图片地址', - `bank_wseq` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '微信银行编号', - `bank_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '开户银行名称', - `bank_bran` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '开户分行名称', - `bank_user` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '开户账号姓名', - `bank_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '开户银行卡号', - `alipay_user` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付宝姓名', - `alipay_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付宝账号', - `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '提现描述', - `trade_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '交易单号', - `trade_time` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '打款时间', - `change_time` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '处理时间', - `change_desc` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '处理描述', - `audit_status` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '审核状态', - `audit_remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '审核描述', - `audit_datetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '审核时间', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '提现状态(0失败,1待审核,2已审核,3打款中,4已打款,5已收款)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_data_user_transfer_code`(`code`) USING BTREE, - INDEX `idx_data_user_transfer_status`(`status`) USING BTREE, - INDEX `idx_data_user_transfer_date`(`date`) USING BTREE, - INDEX `idx_data_user_transfer_type`(`type`) USING BTREE, - INDEX `idx_data_user_transfer_audit_status`(`audit_status`) USING BTREE, - INDEX `idx_data_user_transfer_appid`(`appid`) USING BTREE, - INDEX `idx_data_user_transfer_openid`(`openid`) USING BTREE, - INDEX `idx_data_user_transfer_uuid`(`uuid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-用户-提现' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for shop_goods --- ---------------------------- -DROP TABLE IF EXISTS `shop_goods`; -CREATE TABLE `shop_goods` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商品编号', - `name` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商品名称', - `marks` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商品标签', - `cateids` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '分类编号', - `cover` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商品封面', - `slider` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '轮播图片', - `remark` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商品描述', - `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '商品详情', - `payment` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付方式', - `data_specs` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '商品规格(JSON)', - `data_items` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '商品规格(JSON)', - `stock_total` bigint(20) NULL DEFAULT 0 COMMENT '商品库存统计', - `stock_sales` bigint(20) NULL DEFAULT 0 COMMENT '商品销售统计', - `stock_virtual` bigint(20) NULL DEFAULT 0 COMMENT '商品虚拟销量', - `price_selling` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '最低销售价格', - `price_market` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '最低市场价格', - `discount_id` bigint(20) NULL DEFAULT 0 COMMENT '折扣方案编号', - `truck_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '物流运费模板', - `truck_type` tinyint(1) NULL DEFAULT 0 COMMENT '物流配送(0无需配送,1需要配送)', - `rebate_type` tinyint(1) NULL DEFAULT 1 COMMENT '参与返利(0无需返利,1需要返利)', - `vip_entry` tinyint(1) NULL DEFAULT 0 COMMENT '入会礼包(0非入会礼包,1是入会礼包)', - `vip_upgrade` bigint(20) NULL DEFAULT 0 COMMENT '购买升级等级(0不升级,其他升级)', - `limit_low_vip` bigint(20) NULL DEFAULT 0 COMMENT '限制最低等级(0不限制,其他限制)', - `limit_max_num` bigint(20) NULL DEFAULT 0 COMMENT '最大购买数量(0不限制,其他限制)', - `num_read` bigint(20) NULL DEFAULT 0 COMMENT '访问阅读统计', - `state_hot` tinyint(1) NULL DEFAULT 0 COMMENT '设置热度标签', - `state_home` tinyint(1) NULL DEFAULT 0 COMMENT '设置首页推荐', - `sort` bigint(20) NULL DEFAULT 0 COMMENT '列表排序权重', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '商品状态(1使用,0禁用)', - `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '删除状态(0未删,1已删)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_shop_goods_code`(`code`) USING BTREE, - INDEX `idx_shop_goods_status`(`status`) USING BTREE, - INDEX `idx_shop_goods_deleted`(`deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '商城-商品-内容' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for shop_goods_cate --- ---------------------------- -DROP TABLE IF EXISTS `shop_goods_cate`; -CREATE TABLE `shop_goods_cate` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `pid` bigint(20) NULL DEFAULT 0 COMMENT '上级分类', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '分类名称', - `cover` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '分类图标', - `remark` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '分类描述', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '使用状态', - `deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_shop_goods_cate_sort`(`sort`) USING BTREE, - INDEX `idx_shop_goods_cate_status`(`status`) USING BTREE, - INDEX `idx_shop_goods_cate_deleted`(`deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '商城-商品-分类' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for shop_goods_item --- ---------------------------- -DROP TABLE IF EXISTS `shop_goods_item`; -CREATE TABLE `shop_goods_item` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `goods_sku` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商品SKU', - `goods_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商品编号', - `goods_spec` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商品规格', - `stock_sales` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '销售数量', - `stock_total` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '商品库存', - `price_selling` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '销售价格', - `price_market` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '市场价格', - `number_virtual` bigint(20) NULL DEFAULT 0 COMMENT '虚拟销量', - `number_express` bigint(20) NULL DEFAULT 1 COMMENT '配送计件', - `reward_balance` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '奖励余额', - `reward_integral` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '奖励积分', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '商品状态', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_store_goods_item_code`(`goods_code`) USING BTREE, - INDEX `index_store_goods_item_spec`(`goods_spec`) USING BTREE, - INDEX `index_store_goods_item_status`(`status`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '商城-商品-规格' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for shop_goods_mark --- ---------------------------- -DROP TABLE IF EXISTS `shop_goods_mark`; -CREATE TABLE `shop_goods_mark` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '标签名称', - `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '标签描述', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '标签状态(1使用,0禁用)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_shop_goods_mark_sort`(`sort`) USING BTREE, - INDEX `idx_shop_goods_mark_status`(`status`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '商城-商品-标签' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for shop_goods_stock --- ---------------------------- -DROP TABLE IF EXISTS `shop_goods_stock`; -CREATE TABLE `shop_goods_stock` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `batch_no` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '操作批量', - `goods_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商品编号', - `goods_spec` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商品规格', - `goods_stock` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '入库数量', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '数据状态(1使用,0禁用)', - `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '删除状态(0未删,1已删)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_shop_goods_stock_status`(`status`) USING BTREE, - INDEX `idx_shop_goods_stock_deleted`(`deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '商城-商品-库存' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for shop_order --- ---------------------------- -DROP TABLE IF EXISTS `shop_order`; -CREATE TABLE `shop_order` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `uuid` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '下单用户编号', - `puid1` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '推荐一层用户', - `puid2` bigint(20) NULL DEFAULT 0 COMMENT '推荐二层用户', - `order_no` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商品订单单号', - `amount_real` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '订单实际金额', - `amount_total` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '订单统计金额', - `amount_goods` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '商品统计金额', - `amount_reduct` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '随机减免金额', - `amount_express` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '快递费用金额', - `amount_discount` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '折扣后的金额', - `payment_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '实际支付平台', - `payment_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '实际通道编号', - `payment_allow` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '允许支付通道', - `payment_trade` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '实际支付单号', - `payment_status` tinyint(1) NULL DEFAULT 0 COMMENT '实际支付状态', - `payment_image` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付凭证图片', - `payment_amount` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '实际支付金额', - `payment_balance` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '余额抵扣金额', - `payment_remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付结果描述', - `payment_datetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '支付到账时间', - `number_goods` bigint(20) NULL DEFAULT 0 COMMENT '订单商品数量', - `number_express` bigint(20) NULL DEFAULT 0 COMMENT '订单快递计数', - `truck_type` tinyint(1) NULL DEFAULT 0 COMMENT '物流配送类型(0无需配送,1需要配送)', - `rebate_amount` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '参与返利金额', - `reward_balance` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '奖励账户余额', - `order_remark` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '订单用户备注', - `cancel_status` tinyint(1) NULL DEFAULT 0 COMMENT '订单取消状态', - `cancel_remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '订单取消描述', - `cancel_datetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '订单取消时间', - `deleted_status` tinyint(1) NULL DEFAULT 0 COMMENT '订单删除状态(0未删,1已删)', - `deleted_remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '订单删除描述', - `deleted_datetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '订单删除时间', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '订单流程状态(0已取消,1预订单,2待支付,3支付中,4已支付,5已发货,6已完成)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '订单创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_shop_order_status`(`status`) USING BTREE, - INDEX `idx_shop_order_orderno`(`order_no`) USING BTREE, - INDEX `idx_shop_order_cancel_status`(`cancel_status`) USING BTREE, - INDEX `idx_shop_order_payment_status`(`payment_status`) USING BTREE, - INDEX `idx_shop_order_from`(`puid1`) USING BTREE, - INDEX `idx_shop_order_deleted`(`deleted_status`) USING BTREE, - INDEX `idx_shop_order_mid`(`uuid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '商城-订单-内容' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for shop_order_item --- ---------------------------- -DROP TABLE IF EXISTS `shop_order_item`; -CREATE TABLE `shop_order_item` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `uuid` bigint(20) NULL DEFAULT 0 COMMENT '商城用户编号', - `order_no` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商城订单单号', - `goods_sku` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商城商品SKU', - `goods_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商城商品编号', - `goods_spec` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商城商品规格', - `goods_name` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商城商品名称', - `goods_cover` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商品封面图片', - `goods_payment` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '指定支付通道', - `price_market` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '商品市场单价', - `price_selling` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '商品销售单价', - `total_market` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '商品市场总价', - `total_selling` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '商品销售总价', - `reward_balance` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '商品奖励余额', - `reward_integral` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '商品奖励积分', - `stock_sales` bigint(20) NULL DEFAULT 1 COMMENT '包含商品数量', - `vip_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户等级名称', - `vip_code` bigint(20) NULL DEFAULT 0 COMMENT '用户等级序号', - `vip_entry` tinyint(1) NULL DEFAULT 0 COMMENT '是否入会礼包(0非礼包,1是礼包)', - `vip_upgrade` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '升级用户等级', - `truck_type` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '物流配送类型(0虚物,1实物)', - `truck_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '快递邮费模板', - `truck_number` bigint(20) NULL DEFAULT 0 COMMENT '快递计费基数', - `rebate_type` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '参与返利状态(0不返,1返利)', - `rebate_amount` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '参与返利金额', - `discount_id` bigint(20) NULL DEFAULT 0 COMMENT '优惠方案编号', - `discount_rate` decimal(20, 6) NULL DEFAULT 100.000000 COMMENT '销售价格折扣', - `discount_amount` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '商品优惠金额', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '商品状态(1使用,0禁用)', - `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '删除状态(0未删,1已删)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '订单创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_shop_order_item_status`(`status`) USING BTREE, - INDEX `idx_shop_order_item_deleted`(`deleted`) USING BTREE, - INDEX `idx_shop_order_item_order_no`(`order_no`) USING BTREE, - INDEX `idx_shop_order_item_goods_sku`(`goods_sku`) USING BTREE, - INDEX `idx_shop_order_item_goods_code`(`goods_code`) USING BTREE, - INDEX `idx_shop_order_item_goods_spec`(`goods_spec`) USING BTREE, - INDEX `idx_shop_order_item_rebate_type`(`rebate_type`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '商城-订单-商品' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for shop_order_send --- ---------------------------- -DROP TABLE IF EXISTS `shop_order_send`; -CREATE TABLE `shop_order_send` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `uuid` bigint(20) NULL DEFAULT 0 COMMENT '商城用户编号', - `order_no` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '商城订单单号', - `address_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配送地址编号', - `address_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配送收货人姓名', - `address_phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配送收货人手机', - `address_idcode` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配送收货人证件号码', - `address_idimg1` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配送收货人证件正面', - `address_idimg2` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配送收货人证件反面', - `address_province` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配送地址的省份', - `address_city` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配送地址的城市', - `address_area` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配送地址的区域', - `address_content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配送的详细地址', - `address_datetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '地址确认时间', - `template_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配送模板编号', - `template_count` bigint(20) NULL DEFAULT 0 COMMENT '快递计费基数', - `template_remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配送计算描述', - `template_amount` decimal(20, 2) NULL DEFAULT 0.00 COMMENT '配送计算金额', - `company_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '快递公司编码', - `company_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '快递公司名称', - `send_number` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '快递运送单号', - `send_remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '快递发送备注', - `send_datetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '快递发送时间', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '发货商品状态(1使用,0禁用)', - `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '发货删除状态(0未删,1已删)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_shop_order_send_status`(`status`) USING BTREE, - INDEX `idx_shop_order_send_deleted`(`deleted`) USING BTREE, - INDEX `idx_shop_order_send_order_no`(`order_no`) USING BTREE, - INDEX `idx_shop_order_send_mid`(`uuid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '商城-订单-配送' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for system_auth --- ---------------------------- -DROP TABLE IF EXISTS `system_auth`; -CREATE TABLE `system_auth` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '权限名称', - `utype` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '身份权限', - `desc` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '备注说明', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '权限状态(1使用,0禁用)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_system_auth_status`(`status`) USING BTREE, - INDEX `idx_system_auth_title`(`title`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统-权限' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for system_auth_node --- ---------------------------- -DROP TABLE IF EXISTS `system_auth_node`; -CREATE TABLE `system_auth_node` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `auth` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '角色', - `node` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '节点', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_system_auth_auth`(`auth`) USING BTREE, - INDEX `idx_system_auth_node`(`node`(191)) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统-授权' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for system_base --- ---------------------------- -DROP TABLE IF EXISTS `system_base`; -CREATE TABLE `system_base` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '数据类型', - `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '数据代码', - `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '数据名称', - `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '数据内容', - `sort` bigint(20) NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '数据状态(0禁用,1启动)', - `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '删除状态(0正常,1已删)', - `deleted_at` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '删除时间', - `deleted_by` bigint(20) NULL DEFAULT 0 COMMENT '删除用户', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_system_base_type`(`type`) USING BTREE, - INDEX `idx_system_base_code`(`code`) USING BTREE, - INDEX `idx_system_base_name`(`name`(191)) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统-字典' ROW_FORMAT = COMPACT; - --- ---------------------------- --- Table structure for system_config --- ---------------------------- -DROP TABLE IF EXISTS `system_config`; -CREATE TABLE `system_config` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配置分类', - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配置名称', - `value` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配置内容', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_system_config_type`(`type`) USING BTREE, - INDEX `idx_system_config_name`(`name`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统-配置' ROW_FORMAT = COMPACT; - --- ---------------------------- --- Table structure for system_data --- ---------------------------- -DROP TABLE IF EXISTS `system_data`; -CREATE TABLE `system_data` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配置名', - `value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '配置值', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_system_data_name`(`name`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统-数据' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for system_menu --- ---------------------------- -DROP TABLE IF EXISTS `system_menu`; -CREATE TABLE `system_menu` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `pid` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '上级ID', - `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '菜单名称', - `icon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '菜单图标', - `node` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '节点代码', - `url` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '链接节点', - `params` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '链接参数', - `target` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '_self' COMMENT '打开方式', - `sort` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '状态(0:禁用,1:启用)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_system_menu_status`(`status`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统-菜单' ROW_FORMAT = COMPACT; - --- ---------------------------- --- Table structure for system_oplog --- ---------------------------- -DROP TABLE IF EXISTS `system_oplog`; -CREATE TABLE `system_oplog` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `node` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '当前操作节点', - `geoip` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '操作者IP地址', - `action` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '操作行为名称', - `content` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '操作内容描述', - `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '操作人用户名', - `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统-日志' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for system_queue --- ---------------------------- -DROP TABLE IF EXISTS `system_queue`; -CREATE TABLE `system_queue` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '任务编号', - `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '任务名称', - `command` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '执行指令', - `exec_pid` bigint(20) NULL DEFAULT 0 COMMENT '执行进程', - `exec_data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '执行参数', - `exec_time` bigint(20) NULL DEFAULT 0 COMMENT '执行时间', - `exec_desc` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '执行描述', - `enter_time` decimal(20, 4) NULL DEFAULT 0.0000 COMMENT '开始时间', - `outer_time` decimal(20, 4) NULL DEFAULT 0.0000 COMMENT '结束时间', - `loops_time` bigint(20) NULL DEFAULT 0 COMMENT '循环时间', - `attempts` bigint(20) NULL DEFAULT 0 COMMENT '执行次数', - `rscript` tinyint(1) NULL DEFAULT 1 COMMENT '任务类型(0单例,1多例)', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '任务状态(1新任务,2处理中,3成功,4失败)', - `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_system_queue_code`(`code`) USING BTREE, - INDEX `idx_system_queue_title`(`title`) USING BTREE, - INDEX `idx_system_queue_status`(`status`) USING BTREE, - INDEX `idx_system_queue_rscript`(`rscript`) USING BTREE, - INDEX `idx_system_queue_create_at`(`create_at`) USING BTREE, - INDEX `idx_system_queue_exec_time`(`exec_time`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统-任务' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for system_user --- ---------------------------- -DROP TABLE IF EXISTS `system_user`; -CREATE TABLE `system_user` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `usertype` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户类型', - `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户账号', - `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户密码', - `nickname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户昵称', - `headimg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '头像地址', - `authorize` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '权限授权', - `contact_qq` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '联系QQ', - `contact_mail` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '联系邮箱', - `contact_phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '联系手机', - `login_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '登录地址', - `login_at` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '登录时间', - `login_num` bigint(20) NULL DEFAULT 0 COMMENT '登录次数', - `describe` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '备注说明', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '状态(0禁用,1启用)', - `sort` bigint(20) NULL DEFAULT 0 COMMENT '排序权重', - `is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '删除(1删除,0未删)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_system_user_status`(`status`) USING BTREE, - INDEX `idx_system_user_username`(`username`) USING BTREE, - INDEX `idx_system_user_deleted`(`is_deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统-用户' ROW_FORMAT = COMPACT; - --- ---------------------------- --- Table structure for wechat_auto --- ---------------------------- -DROP TABLE IF EXISTS `wechat_auto`; -CREATE TABLE `wechat_auto` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '类型(text,image,news)', - `time` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '延迟时间', - `code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '消息编号', - `appid` char(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '公众号APPID', - `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '文本内容', - `image_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '图片链接', - `voice_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '语音链接', - `music_title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '音乐标题', - `music_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '音乐链接', - `music_image` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '缩略图片', - `music_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '音乐描述', - `video_title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '视频标题', - `video_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '视频URL', - `video_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '视频描述', - `news_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '图文ID', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '状态(0禁用,1启用)', - `create_by` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '创建人', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_wechat_auto_type`(`type`) USING BTREE, - INDEX `idx_wechat_auto_keys`(`time`) USING BTREE, - INDEX `idx_wechat_auto_code`(`code`) USING BTREE, - INDEX `idx_wechat_auto_appid`(`appid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信-回复' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for wechat_fans --- ---------------------------- -DROP TABLE IF EXISTS `wechat_fans`; -CREATE TABLE `wechat_fans` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `appid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '公众号APPID', - `unionid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '粉丝unionid', - `openid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '粉丝openid', - `tagid_list` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '粉丝标签id', - `is_black` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '是否为黑名单状态', - `subscribe` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '关注状态(0未关注,1已关注)', - `nickname` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户昵称', - `sex` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '用户性别(1男性,2女性,0未知)', - `country` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户所在国家', - `province` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户所在省份', - `city` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户所在城市', - `language` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户的语言(zh_CN)', - `headimgurl` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户头像', - `subscribe_time` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '关注时间', - `subscribe_at` datetime NULL DEFAULT NULL COMMENT '关注时间', - `remark` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '备注', - `subscribe_scene` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '扫码关注场景', - `qr_scene` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '二维码场景值', - `qr_scene_str` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '二维码场景内容', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_wechat_fans_openid`(`openid`) USING BTREE, - INDEX `index_wechat_fans_unionid`(`unionid`) USING BTREE, - INDEX `index_wechat_fans_isblack`(`is_black`) USING BTREE, - INDEX `index_wechat_fans_subscribe`(`subscribe`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信-粉丝' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for wechat_fans_tags --- ---------------------------- -DROP TABLE IF EXISTS `wechat_fans_tags`; -CREATE TABLE `wechat_fans_tags` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '标签ID', - `appid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '公众号APPID', - `name` varchar(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '标签名称', - `count` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '总数', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', - INDEX `index_wechat_fans_tags_id`(`id`) USING BTREE, - INDEX `index_wechat_fans_tags_appid`(`appid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信-标签' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for wechat_keys --- ---------------------------- -DROP TABLE IF EXISTS `wechat_keys`; -CREATE TABLE `wechat_keys` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `appid` char(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '公众号APPID', - `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '类型(text,image,news)', - `keys` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '关键字', - `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '文本内容', - `image_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '图片链接', - `voice_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '语音链接', - `music_title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '音乐标题', - `music_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '音乐链接', - `music_image` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '缩略图片', - `music_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '音乐描述', - `video_title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '视频标题', - `video_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '视频URL', - `video_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '视频描述', - `news_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '图文ID', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '排序字段', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '状态(0禁用,1启用)', - `create_by` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '创建人', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_wechat_keys_appid`(`appid`) USING BTREE, - INDEX `index_wechat_keys_type`(`type`) USING BTREE, - INDEX `index_wechat_keys_keys`(`keys`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信-规则' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for wechat_media --- ---------------------------- -DROP TABLE IF EXISTS `wechat_media`; -CREATE TABLE `wechat_media` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `md5` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '文件md5', - `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '媒体类型', - `appid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '公众号ID', - `media_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '永久素材MediaID', - `local_url` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '本地文件链接', - `media_url` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '远程图片链接', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_wechat_media_appid`(`appid`) USING BTREE, - INDEX `index_wechat_media_md5`(`md5`) USING BTREE, - INDEX `index_wechat_media_type`(`type`) USING BTREE, - INDEX `index_wechat_media_media_id`(`media_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信-素材' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for wechat_news --- ---------------------------- -DROP TABLE IF EXISTS `wechat_news`; -CREATE TABLE `wechat_news` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `media_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '永久素材MediaID', - `local_url` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '永久素材外网URL', - `article_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '关联图文ID(用英文逗号做分割)', - `is_deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态(0未删除,1已删除)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `create_by` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_wechat_news_artcle_id`(`article_id`) USING BTREE, - INDEX `index_wechat_news_media_id`(`media_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信-图文' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Table structure for wechat_news_article --- ---------------------------- -DROP TABLE IF EXISTS `wechat_news_article`; -CREATE TABLE `wechat_news_article` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '素材标题', - `local_url` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '永久素材显示URL', - `show_cover_pic` tinyint(4) UNSIGNED NULL DEFAULT 0 COMMENT '显示封面(0不显示,1显示)', - `author` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '文章作者', - `digest` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '摘要内容', - `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '图文内容', - `content_source_url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '原文地址', - `read_num` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '阅读数量', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信-文章' ROW_FORMAT = DYNAMIC; - -SET -FOREIGN_KEY_CHECKS = 1; diff --git a/SQL02-数据初始化.sql b/SQL02-数据初始化.sql deleted file mode 100644 index 386183900..000000000 --- a/SQL02-数据初始化.sql +++ /dev/null @@ -1,7745 +0,0 @@ -/* - Navicat MySQL Data Transfer - - Source Server : anyon.localhost - Source Server Type : MySQL - Source Server Version : 80018 - Source Host : localhost:3306 - Source Schema : admin_v6 - - Target Server Type : MySQL - Target Server Version : 80018 - File Encoding : 65001 - - Date: 10/04/2021 17:27:54 -*/ - -SET NAMES utf8mb4; -SET -FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for base_postage_region --- ---------------------------- -DROP TABLE IF EXISTS `base_postage_region`; -CREATE TABLE `base_postage_region` -( - `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `pid` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '上级PID', - `first` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '首字母', - `short` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '区域简称', - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '区域名称', - `level` tinyint(4) NULL DEFAULT 0 COMMENT '区域层级', - `pinyin` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '区域拼音', - `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '区域邮编', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '使用状态', - `lng` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '所在经度', - `lat` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '所在纬度', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_base_postage_region_pid`(`pid`) USING BTREE, - INDEX `idx_base_postage_region_name`(`name`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4019 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据-快递-区域' ROW_FORMAT = COMPACT; - --- ---------------------------- --- Records of base_postage_region --- ---------------------------- -INSERT INTO `base_postage_region` -VALUES (1, 0, 'B', '北京', '北京市', 1, 'beijing', '', 1, '116.405285', '39.904989'); -INSERT INTO `base_postage_region` -VALUES (2, 1, 'B', '北京', '北京市', 2, 'beijing', '100000', 1, '116.405285', '39.904989'); -INSERT INTO `base_postage_region` -VALUES (3, 2, 'D', '东城', '东城区', 3, 'dongcheng', '100010', 1, '116.41005', '39.93157'); -INSERT INTO `base_postage_region` -VALUES (4, 2, 'X', '西城', '西城区', 3, 'xicheng', '100032', 1, '116.36003', '39.9305'); -INSERT INTO `base_postage_region` -VALUES (5, 2, 'C', '朝阳', '朝阳区', 3, 'chaoyang', '100020', 1, '116.48548', '39.9484'); -INSERT INTO `base_postage_region` -VALUES (6, 2, 'F', '丰台', '丰台区', 3, 'fengtai', '100071', 1, '116.28625', '39.8585'); -INSERT INTO `base_postage_region` -VALUES (7, 2, 'S', '石景山', '石景山区', 3, 'shijingshan', '100043', 1, '116.2229', '39.90564'); -INSERT INTO `base_postage_region` -VALUES (8, 2, 'H', '海淀', '海淀区', 3, 'haidian', '100089', 1, '116.29812', '39.95931'); -INSERT INTO `base_postage_region` -VALUES (9, 2, 'M', '门头沟', '门头沟区', 3, 'mentougou', '102300', 1, '116.10137', '39.94043'); -INSERT INTO `base_postage_region` -VALUES (10, 2, 'F', '房山', '房山区', 3, 'fangshan', '102488', 1, '116.14257', '39.74786'); -INSERT INTO `base_postage_region` -VALUES (11, 2, 'T', '通州', '通州区', 3, 'tongzhou', '101149', 1, '116.65716', '39.90966'); -INSERT INTO `base_postage_region` -VALUES (12, 2, 'S', '顺义', '顺义区', 3, 'shunyi', '101300', 1, '116.65417', '40.1302'); -INSERT INTO `base_postage_region` -VALUES (13, 2, 'C', '昌平', '昌平区', 3, 'changping', '102200', 1, '116.2312', '40.22072'); -INSERT INTO `base_postage_region` -VALUES (14, 2, 'D', '大兴', '大兴区', 3, 'daxing', '102600', 1, '116.34149', '39.72668'); -INSERT INTO `base_postage_region` -VALUES (15, 2, 'H', '怀柔', '怀柔区', 3, 'huairou', '101400', 1, '116.63168', '40.31602'); -INSERT INTO `base_postage_region` -VALUES (16, 2, 'P', '平谷', '平谷区', 3, 'pinggu', '101200', 1, '117.12133', '40.14056'); -INSERT INTO `base_postage_region` -VALUES (17, 2, 'M', '密云', '密云县', 3, 'miyun', '101500', 1, '116.84295', '40.37618'); -INSERT INTO `base_postage_region` -VALUES (18, 2, 'Y', '延庆', '延庆县', 3, 'yanqing', '102100', 1, '115.97494', '40.45672'); -INSERT INTO `base_postage_region` -VALUES (19, 0, 'T', '天津', '天津市', 1, 'tianjin', '', 1, '117.190182', '39.125596'); -INSERT INTO `base_postage_region` -VALUES (20, 19, 'T', '天津', '天津市', 2, 'tianjin', '300000', 1, '117.190182', '39.125596'); -INSERT INTO `base_postage_region` -VALUES (21, 20, 'H', '和平', '和平区', 3, 'heping', '300041', 1, '117.21456', '39.11718'); -INSERT INTO `base_postage_region` -VALUES (22, 20, 'H', '河东', '河东区', 3, 'hedong', '300171', 1, '117.22562', '39.12318'); -INSERT INTO `base_postage_region` -VALUES (23, 20, 'H', '河西', '河西区', 3, 'hexi', '300202', 1, '117.22327', '39.10959'); -INSERT INTO `base_postage_region` -VALUES (24, 20, 'N', '南开', '南开区', 3, 'nankai', '300110', 1, '117.15074', '39.13821'); -INSERT INTO `base_postage_region` -VALUES (25, 20, 'H', '河北', '河北区', 3, 'hebei', '300143', 1, '117.19697', '39.14816'); -INSERT INTO `base_postage_region` -VALUES (26, 20, 'H', '红桥', '红桥区', 3, 'hongqiao', '300131', 1, '117.15145', '39.16715'); -INSERT INTO `base_postage_region` -VALUES (27, 20, 'D', '东丽', '东丽区', 3, 'dongli', '300300', 1, '117.31436', '39.0863'); -INSERT INTO `base_postage_region` -VALUES (28, 20, 'X', '西青', '西青区', 3, 'xiqing', '300380', 1, '117.00927', '39.14123'); -INSERT INTO `base_postage_region` -VALUES (29, 20, 'J', '津南', '津南区', 3, 'jinnan', '300350', 1, '117.38537', '38.99139'); -INSERT INTO `base_postage_region` -VALUES (30, 20, 'B', '北辰', '北辰区', 3, 'beichen', '300400', 1, '117.13217', '39.22131'); -INSERT INTO `base_postage_region` -VALUES (31, 20, 'W', '武清', '武清区', 3, 'wuqing', '301700', 1, '117.04443', '39.38415'); -INSERT INTO `base_postage_region` -VALUES (32, 20, 'B', '宝坻', '宝坻区', 3, 'baodi', '301800', 1, '117.3103', '39.71761'); -INSERT INTO `base_postage_region` -VALUES (33, 20, 'B', '滨海新区', '滨海新区', 3, 'binhaixinqu', '300451', 1, '117.70162', '39.02668'); -INSERT INTO `base_postage_region` -VALUES (34, 20, 'N', '宁河', '宁河县', 3, 'ninghe', '301500', 1, '117.8255', '39.33048'); -INSERT INTO `base_postage_region` -VALUES (35, 20, 'J', '静海', '静海县', 3, 'jinghai', '301600', 1, '116.97436', '38.94582'); -INSERT INTO `base_postage_region` -VALUES (36, 20, 'J', '蓟县', '蓟县', 3, 'jixian', '301900', 1, '117.40799', '40.04567'); -INSERT INTO `base_postage_region` -VALUES (37, 0, 'H', '河北', '河北省', 1, 'hebei', '', 1, '114.502461', '38.045474'); -INSERT INTO `base_postage_region` -VALUES (38, 37, 'S', '石家庄', '石家庄市', 2, 'shijiazhuang', '050011', 1, '114.502461', '38.045474'); -INSERT INTO `base_postage_region` -VALUES (39, 38, 'C', '长安', '长安区', 3, 'changan', '050011', 1, '114.53906', '38.03665'); -INSERT INTO `base_postage_region` -VALUES (40, 38, 'Q', '桥西', '桥西区', 3, 'qiaoxi', '050091', 1, '114.46977', '38.03221'); -INSERT INTO `base_postage_region` -VALUES (41, 38, 'X', '新华', '新华区', 3, 'xinhua', '050051', 1, '114.46326', '38.05088'); -INSERT INTO `base_postage_region` -VALUES (42, 38, 'J', '井陉矿区', '井陉矿区', 3, 'jingxingkuangqu', '050100', 1, '114.06518', '38.06705'); -INSERT INTO `base_postage_region` -VALUES (43, 38, 'Y', '裕华', '裕华区', 3, 'yuhua', '050031', 1, '114.53115', '38.00604'); -INSERT INTO `base_postage_region` -VALUES (44, 38, 'G', '藁城', '藁城区', 3, 'gaocheng', '052160', 1, '114.84671', '38.02162'); -INSERT INTO `base_postage_region` -VALUES (45, 38, 'L', '鹿泉', '鹿泉区', 3, 'luquan', '050200', 1, '114.31347', '38.08782'); -INSERT INTO `base_postage_region` -VALUES (46, 38, 'L', '栾城', '栾城区', 3, 'luancheng', '051430', 1, '114.64834', '37.90022'); -INSERT INTO `base_postage_region` -VALUES (47, 38, 'J', '井陉', '井陉县', 3, 'jingxing', '050300', 1, '114.14257', '38.03688'); -INSERT INTO `base_postage_region` -VALUES (48, 38, 'Z', '正定', '正定县', 3, 'zhengding', '050800', 1, '114.57296', '38.14445'); -INSERT INTO `base_postage_region` -VALUES (49, 38, 'X', '行唐', '行唐县', 3, 'xingtang', '050600', 1, '114.55316', '38.43654'); -INSERT INTO `base_postage_region` -VALUES (50, 38, 'L', '灵寿', '灵寿县', 3, 'lingshou', '050500', 1, '114.38259', '38.30845'); -INSERT INTO `base_postage_region` -VALUES (51, 38, 'G', '高邑', '高邑县', 3, 'gaoyi', '051330', 1, '114.61142', '37.61556'); -INSERT INTO `base_postage_region` -VALUES (52, 38, 'S', '深泽', '深泽县', 3, 'shenze', '052560', 1, '115.20358', '38.18353'); -INSERT INTO `base_postage_region` -VALUES (53, 38, 'Z', '赞皇', '赞皇县', 3, 'zanhuang', '051230', 1, '114.38775', '37.66135'); -INSERT INTO `base_postage_region` -VALUES (54, 38, 'W', '无极', '无极县', 3, 'wuji', '052460', 1, '114.97509', '38.17653'); -INSERT INTO `base_postage_region` -VALUES (55, 38, 'P', '平山', '平山县', 3, 'pingshan', '050400', 1, '114.186', '38.25994'); -INSERT INTO `base_postage_region` -VALUES (56, 38, 'Y', '元氏', '元氏县', 3, 'yuanshi', '051130', 1, '114.52539', '37.76668'); -INSERT INTO `base_postage_region` -VALUES (57, 38, 'Z', '赵县', '赵县', 3, 'zhaoxian', '051530', 1, '114.77612', '37.75628'); -INSERT INTO `base_postage_region` -VALUES (58, 38, 'X', '辛集', '辛集市', 3, 'xinji', '052360', 1, '115.20626', '37.94079'); -INSERT INTO `base_postage_region` -VALUES (59, 38, 'J', '晋州', '晋州市', 3, 'jinzhou', '052260', 1, '115.04348', '38.03135'); -INSERT INTO `base_postage_region` -VALUES (60, 38, 'X', '新乐', '新乐市', 3, 'xinle', '050700', 1, '114.68985', '38.34417'); -INSERT INTO `base_postage_region` -VALUES (61, 37, 'T', '唐山', '唐山市', 2, 'tangshan', '063000', 1, '118.175393', '39.635113'); -INSERT INTO `base_postage_region` -VALUES (62, 61, 'L', '路南', '路南区', 3, 'lunan', '063000', 1, '118.15431', '39.62505'); -INSERT INTO `base_postage_region` -VALUES (63, 61, 'L', '路北', '路北区', 3, 'lubei', '063000', 1, '118.20079', '39.62436'); -INSERT INTO `base_postage_region` -VALUES (64, 61, 'G', '古冶', '古冶区', 3, 'guye', '063100', 1, '118.45803', '39.71993'); -INSERT INTO `base_postage_region` -VALUES (65, 61, 'K', '开平', '开平区', 3, 'kaiping', '063021', 1, '118.26171', '39.67128'); -INSERT INTO `base_postage_region` -VALUES (66, 61, 'F', '丰南', '丰南区', 3, 'fengnan', '063300', 1, '118.11282', '39.56483'); -INSERT INTO `base_postage_region` -VALUES (67, 61, 'F', '丰润', '丰润区', 3, 'fengrun', '064000', 1, '118.12976', '39.8244'); -INSERT INTO `base_postage_region` -VALUES (68, 61, 'C', '曹妃甸', '曹妃甸区', 3, 'caofeidian', '063200', 1, '118.460379', '39.273070'); -INSERT INTO `base_postage_region` -VALUES (69, 61, 'L', '滦县', '滦县', 3, 'luanxian', '063700', 1, '118.70346', '39.74056'); -INSERT INTO `base_postage_region` -VALUES (70, 61, 'L', '滦南', '滦南县', 3, 'luannan', '063500', 1, '118.6741', '39.5039'); -INSERT INTO `base_postage_region` -VALUES (71, 61, 'L', '乐亭', '乐亭县', 3, 'laoting', '063600', 1, '118.9125', '39.42561'); -INSERT INTO `base_postage_region` -VALUES (72, 61, 'Q', '迁西', '迁西县', 3, 'qianxi', '064300', 1, '118.31616', '40.14587'); -INSERT INTO `base_postage_region` -VALUES (73, 61, 'Y', '玉田', '玉田县', 3, 'yutian', '064100', 1, '117.7388', '39.90049'); -INSERT INTO `base_postage_region` -VALUES (74, 61, 'Z', '遵化', '遵化市', 3, 'zunhua', '064200', 1, '117.96444', '40.18741'); -INSERT INTO `base_postage_region` -VALUES (75, 61, 'Q', '迁安', '迁安市', 3, 'qianan', '064400', 1, '118.70068', '39.99833'); -INSERT INTO `base_postage_region` -VALUES (76, 37, 'Q', '秦皇岛', '秦皇岛市', 2, 'qinhuangdao', '066000', 1, '119.586579', '39.942531'); -INSERT INTO `base_postage_region` -VALUES (77, 76, 'H', '海港', '海港区', 3, 'haigang', '066000', 1, '119.61046', '39.9345'); -INSERT INTO `base_postage_region` -VALUES (78, 76, 'S', '山海关', '山海关区', 3, 'shanhaiguan', '066200', 1, '119.77563', '39.97869'); -INSERT INTO `base_postage_region` -VALUES (79, 76, 'B', '北戴河', '北戴河区', 3, 'beidaihe', '066100', 1, '119.48388', '39.83408'); -INSERT INTO `base_postage_region` -VALUES (80, 76, 'Q', '青龙', '青龙满族自治县', 3, 'qinglong', '066500', 1, '118.95242', '40.40743'); -INSERT INTO `base_postage_region` -VALUES (81, 76, 'C', '昌黎', '昌黎县', 3, 'changli', '066600', 1, '119.16595', '39.70884'); -INSERT INTO `base_postage_region` -VALUES (82, 76, 'F', '抚宁', '抚宁县', 3, 'funing', '066300', 1, '119.24487', '39.87538'); -INSERT INTO `base_postage_region` -VALUES (83, 76, 'L', '卢龙', '卢龙县', 3, 'lulong', '066400', 1, '118.89288', '39.89176'); -INSERT INTO `base_postage_region` -VALUES (84, 37, 'H', '邯郸', '邯郸市', 2, 'handan', '056002', 1, '114.490686', '36.612273'); -INSERT INTO `base_postage_region` -VALUES (85, 84, 'H', '邯山', '邯山区', 3, 'hanshan', '056001', 1, '114.48375', '36.60006'); -INSERT INTO `base_postage_region` -VALUES (86, 84, 'C', '丛台', '丛台区', 3, 'congtai', '056002', 1, '114.49343', '36.61847'); -INSERT INTO `base_postage_region` -VALUES (87, 84, 'F', '复兴', '复兴区', 3, 'fuxing', '056003', 1, '114.45928', '36.61134'); -INSERT INTO `base_postage_region` -VALUES (88, 84, 'F', '峰峰矿区', '峰峰矿区', 3, 'fengfengkuangqu', '056200', 1, '114.21148', '36.41937'); -INSERT INTO `base_postage_region` -VALUES (89, 84, 'H', '邯郸', '邯郸县', 3, 'handan', '056101', 1, '114.53103', '36.59385'); -INSERT INTO `base_postage_region` -VALUES (90, 84, 'L', '临漳', '临漳县', 3, 'linzhang', '056600', 1, '114.6195', '36.33461'); -INSERT INTO `base_postage_region` -VALUES (91, 84, 'C', '成安', '成安县', 3, 'chengan', '056700', 1, '114.66995', '36.44411'); -INSERT INTO `base_postage_region` -VALUES (92, 84, 'D', '大名', '大名县', 3, 'daming', '056900', 1, '115.15362', '36.27994'); -INSERT INTO `base_postage_region` -VALUES (93, 84, 'S', '涉县', '涉县', 3, 'shexian', '056400', 1, '113.69183', '36.58072'); -INSERT INTO `base_postage_region` -VALUES (94, 84, 'C', '磁县', '磁县', 3, 'cixian', '056500', 1, '114.37387', '36.37392'); -INSERT INTO `base_postage_region` -VALUES (95, 84, 'F', '肥乡', '肥乡县', 3, 'feixiang', '057550', 1, '114.79998', '36.54807'); -INSERT INTO `base_postage_region` -VALUES (96, 84, 'Y', '永年', '永年县', 3, 'yongnian', '057150', 1, '114.48925', '36.78356'); -INSERT INTO `base_postage_region` -VALUES (97, 84, 'Q', '邱县', '邱县', 3, 'qiuxian', '057450', 1, '115.17407', '36.82082'); -INSERT INTO `base_postage_region` -VALUES (98, 84, 'J', '鸡泽', '鸡泽县', 3, 'jize', '057350', 1, '114.8742', '36.92374'); -INSERT INTO `base_postage_region` -VALUES (99, 84, 'G', '广平', '广平县', 3, 'guangping', '057650', 1, '114.94653', '36.48046'); -INSERT INTO `base_postage_region` -VALUES (100, 84, 'G', '馆陶', '馆陶县', 3, 'guantao', '057750', 1, '115.29913', '36.53719'); -INSERT INTO `base_postage_region` -VALUES (101, 84, 'W', '魏县', '魏县', 3, 'weixian', '056800', 1, '114.93518', '36.36171'); -INSERT INTO `base_postage_region` -VALUES (102, 84, 'Q', '曲周', '曲周县', 3, 'quzhou', '057250', 1, '114.95196', '36.77671'); -INSERT INTO `base_postage_region` -VALUES (103, 84, 'W', '武安', '武安市', 3, 'wuan', '056300', 1, '114.20153', '36.69281'); -INSERT INTO `base_postage_region` -VALUES (104, 37, 'X', '邢台', '邢台市', 2, 'xingtai', '054001', 1, '114.508851', '37.0682'); -INSERT INTO `base_postage_region` -VALUES (105, 104, 'Q', '桥东', '桥东区', 3, 'qiaodong', '054001', 1, '114.50725', '37.06801'); -INSERT INTO `base_postage_region` -VALUES (106, 104, 'Q', '桥西', '桥西区', 3, 'qiaoxi', '054000', 1, '114.46803', '37.05984'); -INSERT INTO `base_postage_region` -VALUES (107, 104, 'X', '邢台', '邢台县', 3, 'xingtai', '054001', 1, '114.56575', '37.0456'); -INSERT INTO `base_postage_region` -VALUES (108, 104, 'L', '临城', '临城县', 3, 'lincheng', '054300', 1, '114.50387', '37.43977'); -INSERT INTO `base_postage_region` -VALUES (109, 104, 'N', '内丘', '内丘县', 3, 'neiqiu', '054200', 1, '114.51212', '37.28671'); -INSERT INTO `base_postage_region` -VALUES (110, 104, 'B', '柏乡', '柏乡县', 3, 'baixiang', '055450', 1, '114.69332', '37.48242'); -INSERT INTO `base_postage_region` -VALUES (111, 104, 'L', '隆尧', '隆尧县', 3, 'longyao', '055350', 1, '114.77615', '37.35351'); -INSERT INTO `base_postage_region` -VALUES (112, 104, 'R', '任县', '任县', 3, 'renxian', '055150', 1, '114.6842', '37.12575'); -INSERT INTO `base_postage_region` -VALUES (113, 104, 'N', '南和', '南和县', 3, 'nanhe', '054400', 1, '114.68371', '37.00488'); -INSERT INTO `base_postage_region` -VALUES (114, 104, 'N', '宁晋', '宁晋县', 3, 'ningjin', '055550', 1, '114.92117', '37.61696'); -INSERT INTO `base_postage_region` -VALUES (115, 104, 'J', '巨鹿', '巨鹿县', 3, 'julu', '055250', 1, '115.03524', '37.21801'); -INSERT INTO `base_postage_region` -VALUES (116, 104, 'X', '新河', '新河县', 3, 'xinhe', '055650', 1, '115.24987', '37.52718'); -INSERT INTO `base_postage_region` -VALUES (117, 104, 'G', '广宗', '广宗县', 3, 'guangzong', '054600', 1, '115.14254', '37.0746'); -INSERT INTO `base_postage_region` -VALUES (118, 104, 'P', '平乡', '平乡县', 3, 'pingxiang', '054500', 1, '115.03002', '37.06317'); -INSERT INTO `base_postage_region` -VALUES (119, 104, 'W', '威县', '威县', 3, 'weixian', '054700', 1, '115.2637', '36.9768'); -INSERT INTO `base_postage_region` -VALUES (120, 104, 'Q', '清河', '清河县', 3, 'qinghe', '054800', 1, '115.66479', '37.07122'); -INSERT INTO `base_postage_region` -VALUES (121, 104, 'L', '临西', '临西县', 3, 'linxi', '054900', 1, '115.50097', '36.87078'); -INSERT INTO `base_postage_region` -VALUES (122, 104, 'N', '南宫', '南宫市', 3, 'nangong', '055750', 1, '115.39068', '37.35799'); -INSERT INTO `base_postage_region` -VALUES (123, 104, 'S', '沙河', '沙河市', 3, 'shahe', '054100', 1, '114.4981', '36.8577'); -INSERT INTO `base_postage_region` -VALUES (124, 37, 'B', '保定', '保定市', 2, 'baoding', '071052', 1, '115.482331', '38.867657'); -INSERT INTO `base_postage_region` -VALUES (125, 124, 'X', '新市', '新市区', 3, 'xinshi', '071051', 1, '115.4587', '38.87751'); -INSERT INTO `base_postage_region` -VALUES (126, 124, 'B', '北市', '北市区', 3, 'beishi', '071000', 1, '115.49715', '38.88322'); -INSERT INTO `base_postage_region` -VALUES (127, 124, 'N', '南市', '南市区', 3, 'nanshi', '071001', 1, '115.52859', '38.85455'); -INSERT INTO `base_postage_region` -VALUES (128, 124, 'M', '满城', '满城县', 3, 'mancheng', '072150', 1, '115.32296', '38.94972'); -INSERT INTO `base_postage_region` -VALUES (129, 124, 'Q', '清苑', '清苑县', 3, 'qingyuan', '071100', 1, '115.49267', '38.76709'); -INSERT INTO `base_postage_region` -VALUES (130, 124, 'L', '涞水', '涞水县', 3, 'laishui', '074100', 1, '115.71517', '39.39404'); -INSERT INTO `base_postage_region` -VALUES (131, 124, 'F', '阜平', '阜平县', 3, 'fuping', '073200', 1, '114.19683', '38.84763'); -INSERT INTO `base_postage_region` -VALUES (132, 124, 'X', '徐水', '徐水县', 3, 'xushui', '072550', 1, '115.65829', '39.02099'); -INSERT INTO `base_postage_region` -VALUES (133, 124, 'D', '定兴', '定兴县', 3, 'dingxing', '072650', 1, '115.80786', '39.26312'); -INSERT INTO `base_postage_region` -VALUES (134, 124, 'T', '唐县', '唐县', 3, 'tangxian', '072350', 1, '114.98516', '38.74513'); -INSERT INTO `base_postage_region` -VALUES (135, 124, 'G', '高阳', '高阳县', 3, 'gaoyang', '071500', 1, '115.7788', '38.70003'); -INSERT INTO `base_postage_region` -VALUES (136, 124, 'R', '容城', '容城县', 3, 'rongcheng', '071700', 1, '115.87158', '39.0535'); -INSERT INTO `base_postage_region` -VALUES (137, 124, 'L', '涞源', '涞源县', 3, 'laiyuan', '074300', 1, '114.69128', '39.35388'); -INSERT INTO `base_postage_region` -VALUES (138, 124, 'W', '望都', '望都县', 3, 'wangdu', '072450', 1, '115.1567', '38.70996'); -INSERT INTO `base_postage_region` -VALUES (139, 124, 'A', '安新', '安新县', 3, 'anxin', '071600', 1, '115.93557', '38.93532'); -INSERT INTO `base_postage_region` -VALUES (140, 124, 'Y', '易县', '易县', 3, 'yixian', '074200', 1, '115.4981', '39.34885'); -INSERT INTO `base_postage_region` -VALUES (141, 124, 'Q', '曲阳', '曲阳县', 3, 'quyang', '073100', 1, '114.70123', '38.62154'); -INSERT INTO `base_postage_region` -VALUES (142, 124, 'L', '蠡县', '蠡县', 3, 'lixian', '071400', 1, '115.57717', '38.48974'); -INSERT INTO `base_postage_region` -VALUES (143, 124, 'S', '顺平', '顺平县', 3, 'shunping', '072250', 1, '115.1347', '38.83854'); -INSERT INTO `base_postage_region` -VALUES (144, 124, 'B', '博野', '博野县', 3, 'boye', '071300', 1, '115.47033', '38.4564'); -INSERT INTO `base_postage_region` -VALUES (145, 124, 'X', '雄县', '雄县', 3, 'xiongxian', '071800', 1, '116.10873', '38.99442'); -INSERT INTO `base_postage_region` -VALUES (146, 124, 'Z', '涿州', '涿州市', 3, 'zhuozhou', '072750', 1, '115.98062', '39.48622'); -INSERT INTO `base_postage_region` -VALUES (147, 124, 'D', '定州', '定州市', 3, 'dingzhou', '073000', 1, '114.9902', '38.51623'); -INSERT INTO `base_postage_region` -VALUES (148, 124, 'A', '安国', '安国市', 3, 'anguo', '071200', 1, '115.32321', '38.41391'); -INSERT INTO `base_postage_region` -VALUES (149, 124, 'G', '高碑店', '高碑店市', 3, 'gaobeidian', '074000', 1, '115.87368', '39.32655'); -INSERT INTO `base_postage_region` -VALUES (150, 37, 'Z', '张家口', '张家口市', 2, 'zhangjiakou', '075000', 1, '114.884091', '40.811901'); -INSERT INTO `base_postage_region` -VALUES (151, 150, 'Q', '桥东', '桥东区', 3, 'qiaodong', '075000', 1, '114.8943', '40.78844'); -INSERT INTO `base_postage_region` -VALUES (152, 150, 'Q', '桥西', '桥西区', 3, 'qiaoxi', '075061', 1, '114.86962', '40.81945'); -INSERT INTO `base_postage_region` -VALUES (153, 150, 'X', '宣化', '宣化区', 3, 'xuanhua', '075100', 1, '115.06543', '40.60957'); -INSERT INTO `base_postage_region` -VALUES (154, 150, 'X', '下花园', '下花园区', 3, 'xiahuayuan', '075300', 1, '115.28744', '40.50236'); -INSERT INTO `base_postage_region` -VALUES (155, 150, 'X', '宣化', '宣化县', 3, 'xuanhua', '075100', 1, '115.15497', '40.56618'); -INSERT INTO `base_postage_region` -VALUES (156, 150, 'Z', '张北', '张北县', 3, 'zhangbei', '076450', 1, '114.71432', '41.15977'); -INSERT INTO `base_postage_region` -VALUES (157, 150, 'K', '康保', '康保县', 3, 'kangbao', '076650', 1, '114.60031', '41.85225'); -INSERT INTO `base_postage_region` -VALUES (158, 150, 'G', '沽源', '沽源县', 3, 'guyuan', '076550', 1, '115.68859', '41.66959'); -INSERT INTO `base_postage_region` -VALUES (159, 150, 'S', '尚义', '尚义县', 3, 'shangyi', '076750', 1, '113.97134', '41.07782'); -INSERT INTO `base_postage_region` -VALUES (160, 150, 'W', '蔚县', '蔚县', 3, 'yuxian', '075700', 1, '114.58892', '39.84067'); -INSERT INTO `base_postage_region` -VALUES (161, 150, 'Y', '阳原', '阳原县', 3, 'yangyuan', '075800', 1, '114.15051', '40.10361'); -INSERT INTO `base_postage_region` -VALUES (162, 150, 'H', '怀安', '怀安县', 3, 'huaian', '076150', 1, '114.38559', '40.67425'); -INSERT INTO `base_postage_region` -VALUES (163, 150, 'W', '万全', '万全县', 3, 'wanquan', '076250', 1, '114.7405', '40.76694'); -INSERT INTO `base_postage_region` -VALUES (164, 150, 'H', '怀来', '怀来县', 3, 'huailai', '075400', 1, '115.51773', '40.41536'); -INSERT INTO `base_postage_region` -VALUES (165, 150, 'Z', '涿鹿', '涿鹿县', 3, 'zhuolu', '075600', 1, '115.22403', '40.37636'); -INSERT INTO `base_postage_region` -VALUES (166, 150, 'C', '赤城', '赤城县', 3, 'chicheng', '075500', 1, '115.83187', '40.91438'); -INSERT INTO `base_postage_region` -VALUES (167, 150, 'C', '崇礼', '崇礼县', 3, 'chongli', '076350', 1, '115.27993', '40.97519'); -INSERT INTO `base_postage_region` -VALUES (168, 37, 'C', '承德', '承德市', 2, 'chengde', '067000', 1, '117.939152', '40.976204'); -INSERT INTO `base_postage_region` -VALUES (169, 168, 'S', '双桥', '双桥区', 3, 'shuangqiao', '067000', 1, '117.9432', '40.97466'); -INSERT INTO `base_postage_region` -VALUES (170, 168, 'S', '双滦', '双滦区', 3, 'shuangluan', '067001', 1, '117.74487', '40.95375'); -INSERT INTO `base_postage_region` -VALUES (171, 168, 'Y', '鹰手营子矿区', '鹰手营子矿区', 3, 'yingshouyingzikuangqu', '067200', 1, '117.65985', '40.54744'); -INSERT INTO `base_postage_region` -VALUES (172, 168, 'C', '承德', '承德县', 3, 'chengde', '067400', 1, '118.17639', '40.76985'); -INSERT INTO `base_postage_region` -VALUES (173, 168, 'X', '兴隆', '兴隆县', 3, 'xinglong', '067300', 1, '117.50073', '40.41709'); -INSERT INTO `base_postage_region` -VALUES (174, 168, 'P', '平泉', '平泉县', 3, 'pingquan', '067500', 1, '118.70196', '41.01839'); -INSERT INTO `base_postage_region` -VALUES (175, 168, 'L', '滦平', '滦平县', 3, 'luanping', '068250', 1, '117.33276', '40.94148'); -INSERT INTO `base_postage_region` -VALUES (176, 168, 'L', '隆化', '隆化县', 3, 'longhua', '068150', 1, '117.7297', '41.31412'); -INSERT INTO `base_postage_region` -VALUES (177, 168, 'F', '丰宁', '丰宁满族自治县', 3, 'fengning', '068350', 1, '116.6492', '41.20481'); -INSERT INTO `base_postage_region` -VALUES (178, 168, 'K', '宽城', '宽城满族自治县', 3, 'kuancheng', '067600', 1, '118.49176', '40.60829'); -INSERT INTO `base_postage_region` -VALUES (179, 168, 'W', '围场', '围场满族蒙古族自治县', 3, 'weichang', '068450', 1, '117.7601', '41.94368'); -INSERT INTO `base_postage_region` -VALUES (180, 37, 'C', '沧州', '沧州市', 2, 'cangzhou', '061001', 1, '116.857461', '38.310582'); -INSERT INTO `base_postage_region` -VALUES (181, 180, 'X', '新华', '新华区', 3, 'xinhua', '061000', 1, '116.86643', '38.31438'); -INSERT INTO `base_postage_region` -VALUES (182, 180, 'Y', '运河', '运河区', 3, 'yunhe', '061001', 1, '116.85706', '38.31352'); -INSERT INTO `base_postage_region` -VALUES (183, 180, 'C', '沧县', '沧县', 3, 'cangxian', '061000', 1, '116.87817', '38.29361'); -INSERT INTO `base_postage_region` -VALUES (184, 180, 'Q', '青县', '青县', 3, 'qingxian', '062650', 1, '116.80316', '38.58345'); -INSERT INTO `base_postage_region` -VALUES (185, 180, 'D', '东光', '东光县', 3, 'dongguang', '061600', 1, '116.53668', '37.8857'); -INSERT INTO `base_postage_region` -VALUES (186, 180, 'H', '海兴', '海兴县', 3, 'haixing', '061200', 1, '117.49758', '38.13958'); -INSERT INTO `base_postage_region` -VALUES (187, 180, 'Y', '盐山', '盐山县', 3, 'yanshan', '061300', 1, '117.23092', '38.05647'); -INSERT INTO `base_postage_region` -VALUES (188, 180, 'S', '肃宁', '肃宁县', 3, 'suning', '062350', 1, '115.82971', '38.42272'); -INSERT INTO `base_postage_region` -VALUES (189, 180, 'N', '南皮', '南皮县', 3, 'nanpi', '061500', 1, '116.70224', '38.04109'); -INSERT INTO `base_postage_region` -VALUES (190, 180, 'W', '吴桥', '吴桥县', 3, 'wuqiao', '061800', 1, '116.3847', '37.62546'); -INSERT INTO `base_postage_region` -VALUES (191, 180, 'X', '献县', '献县', 3, 'xianxian', '062250', 1, '116.12695', '38.19228'); -INSERT INTO `base_postage_region` -VALUES (192, 180, 'M', '孟村', '孟村回族自治县', 3, 'mengcun', '061400', 1, '117.10412', '38.05338'); -INSERT INTO `base_postage_region` -VALUES (193, 180, 'B', '泊头', '泊头市', 3, 'botou', '062150', 1, '116.57824', '38.08359'); -INSERT INTO `base_postage_region` -VALUES (194, 180, 'R', '任丘', '任丘市', 3, 'renqiu', '062550', 1, '116.1033', '38.71124'); -INSERT INTO `base_postage_region` -VALUES (195, 180, 'H', '黄骅', '黄骅市', 3, 'huanghua', '061100', 1, '117.33883', '38.3706'); -INSERT INTO `base_postage_region` -VALUES (196, 180, 'H', '河间', '河间市', 3, 'hejian', '062450', 1, '116.0993', '38.44549'); -INSERT INTO `base_postage_region` -VALUES (197, 37, 'L', '廊坊', '廊坊市', 2, 'langfang', '065000', 1, '116.713873', '39.529244'); -INSERT INTO `base_postage_region` -VALUES (198, 197, 'A', '安次', '安次区', 3, 'anci', '065000', 1, '116.70308', '39.52057'); -INSERT INTO `base_postage_region` -VALUES (199, 197, 'G', '广阳', '广阳区', 3, 'guangyang', '065000', 1, '116.71069', '39.52278'); -INSERT INTO `base_postage_region` -VALUES (200, 197, 'G', '固安', '固安县', 3, 'guan', '065500', 1, '116.29916', '39.43833'); -INSERT INTO `base_postage_region` -VALUES (201, 197, 'Y', '永清', '永清县', 3, 'yongqing', '065600', 1, '116.50091', '39.32069'); -INSERT INTO `base_postage_region` -VALUES (202, 197, 'X', '香河', '香河县', 3, 'xianghe', '065400', 1, '117.00634', '39.76133'); -INSERT INTO `base_postage_region` -VALUES (203, 197, 'D', '大城', '大城县', 3, 'daicheng', '065900', 1, '116.65353', '38.70534'); -INSERT INTO `base_postage_region` -VALUES (204, 197, 'W', '文安', '文安县', 3, 'wenan', '065800', 1, '116.45846', '38.87325'); -INSERT INTO `base_postage_region` -VALUES (205, 197, 'D', '大厂', '大厂回族自治县', 3, 'dachang', '065300', 1, '116.98916', '39.88649'); -INSERT INTO `base_postage_region` -VALUES (206, 197, 'B', '霸州', '霸州市', 3, 'bazhou', '065700', 1, '116.39154', '39.12569'); -INSERT INTO `base_postage_region` -VALUES (207, 197, 'S', '三河', '三河市', 3, 'sanhe', '065200', 1, '117.07229', '39.98358'); -INSERT INTO `base_postage_region` -VALUES (208, 37, 'H', '衡水', '衡水市', 2, 'hengshui', '053000', 1, '115.665993', '37.735097'); -INSERT INTO `base_postage_region` -VALUES (209, 208, 'T', '桃城', '桃城区', 3, 'taocheng', '053000', 1, '115.67529', '37.73499'); -INSERT INTO `base_postage_region` -VALUES (210, 208, 'Z', '枣强', '枣强县', 3, 'zaoqiang', '053100', 1, '115.72576', '37.51027'); -INSERT INTO `base_postage_region` -VALUES (211, 208, 'W', '武邑', '武邑县', 3, 'wuyi', '053400', 1, '115.88748', '37.80181'); -INSERT INTO `base_postage_region` -VALUES (212, 208, 'W', '武强', '武强县', 3, 'wuqiang', '053300', 1, '115.98226', '38.04138'); -INSERT INTO `base_postage_region` -VALUES (213, 208, 'R', '饶阳', '饶阳县', 3, 'raoyang', '053900', 1, '115.72558', '38.23529'); -INSERT INTO `base_postage_region` -VALUES (214, 208, 'A', '安平', '安平县', 3, 'anping', '053600', 1, '115.51876', '38.23388'); -INSERT INTO `base_postage_region` -VALUES (215, 208, 'G', '故城', '故城县', 3, 'gucheng', '053800', 1, '115.97076', '37.34773'); -INSERT INTO `base_postage_region` -VALUES (216, 208, 'J', '景县', '景县', 3, 'jingxian', '053500', 1, '116.26904', '37.6926'); -INSERT INTO `base_postage_region` -VALUES (217, 208, 'F', '阜城', '阜城县', 3, 'fucheng', '053700', 1, '116.14431', '37.86881'); -INSERT INTO `base_postage_region` -VALUES (218, 208, 'J', '冀州', '冀州市', 3, 'jizhou', '053200', 1, '115.57934', '37.55082'); -INSERT INTO `base_postage_region` -VALUES (219, 208, 'S', '深州', '深州市', 3, 'shenzhou', '053800', 1, '115.55993', '38.00109'); -INSERT INTO `base_postage_region` -VALUES (220, 0, 'S', '山西', '山西省', 1, 'shanxi', '', 1, '112.549248', '37.857014'); -INSERT INTO `base_postage_region` -VALUES (221, 220, 'T', '太原', '太原市', 2, 'taiyuan', '030082', 1, '112.549248', '37.857014'); -INSERT INTO `base_postage_region` -VALUES (222, 221, 'X', '小店', '小店区', 3, 'xiaodian', '030032', 1, '112.56878', '37.73565'); -INSERT INTO `base_postage_region` -VALUES (223, 221, 'Y', '迎泽', '迎泽区', 3, 'yingze', '030002', 1, '112.56338', '37.86326'); -INSERT INTO `base_postage_region` -VALUES (224, 221, 'X', '杏花岭', '杏花岭区', 3, 'xinghualing', '030009', 1, '112.56237', '37.88429'); -INSERT INTO `base_postage_region` -VALUES (225, 221, 'J', '尖草坪', '尖草坪区', 3, 'jiancaoping', '030023', 1, '112.48709', '37.94193'); -INSERT INTO `base_postage_region` -VALUES (226, 221, 'W', '万柏林', '万柏林区', 3, 'wanbailin', '030024', 1, '112.51553', '37.85923'); -INSERT INTO `base_postage_region` -VALUES (227, 221, 'J', '晋源', '晋源区', 3, 'jinyuan', '030025', 1, '112.47985', '37.72479'); -INSERT INTO `base_postage_region` -VALUES (228, 221, 'Q', '清徐', '清徐县', 3, 'qingxu', '030400', 1, '112.35888', '37.60758'); -INSERT INTO `base_postage_region` -VALUES (229, 221, 'Y', '阳曲', '阳曲县', 3, 'yangqu', '030100', 1, '112.67861', '38.05989'); -INSERT INTO `base_postage_region` -VALUES (230, 221, 'L', '娄烦', '娄烦县', 3, 'loufan', '030300', 1, '111.79473', '38.06689'); -INSERT INTO `base_postage_region` -VALUES (231, 221, 'G', '古交', '古交市', 3, 'gujiao', '030200', 1, '112.16918', '37.90983'); -INSERT INTO `base_postage_region` -VALUES (232, 220, 'D', '大同', '大同市', 2, 'datong', '037008', 1, '113.295259', '40.09031'); -INSERT INTO `base_postage_region` -VALUES (233, 232, 'C', '城区', '城区', 3, 'chengqu', '037008', 1, '113.298', '40.07566'); -INSERT INTO `base_postage_region` -VALUES (234, 232, 'K', '矿区', '矿区', 3, 'kuangqu', '037003', 1, '113.1772', '40.03685'); -INSERT INTO `base_postage_region` -VALUES (235, 232, 'N', '南郊', '南郊区', 3, 'nanjiao', '037001', 1, '113.14947', '40.00539'); -INSERT INTO `base_postage_region` -VALUES (236, 232, 'X', '新荣', '新荣区', 3, 'xinrong', '037002', 1, '113.13504', '40.25618'); -INSERT INTO `base_postage_region` -VALUES (237, 232, 'Y', '阳高', '阳高县', 3, 'yanggao', '038100', 1, '113.75012', '40.36256'); -INSERT INTO `base_postage_region` -VALUES (238, 232, 'T', '天镇', '天镇县', 3, 'tianzhen', '038200', 1, '114.0931', '40.42299'); -INSERT INTO `base_postage_region` -VALUES (239, 232, 'G', '广灵', '广灵县', 3, 'guangling', '037500', 1, '114.28204', '39.76082'); -INSERT INTO `base_postage_region` -VALUES (240, 232, 'L', '灵丘', '灵丘县', 3, 'lingqiu', '034400', 1, '114.23672', '39.44043'); -INSERT INTO `base_postage_region` -VALUES (241, 232, 'H', '浑源', '浑源县', 3, 'hunyuan', '037400', 1, '113.69552', '39.69962'); -INSERT INTO `base_postage_region` -VALUES (242, 232, 'Z', '左云', '左云县', 3, 'zuoyun', '037100', 1, '112.70266', '40.01336'); -INSERT INTO `base_postage_region` -VALUES (243, 232, 'D', '大同', '大同县', 3, 'datong', '037300', 1, '113.61212', '40.04012'); -INSERT INTO `base_postage_region` -VALUES (244, 220, 'Y', '阳泉', '阳泉市', 2, 'yangquan', '045000', 1, '113.583285', '37.861188'); -INSERT INTO `base_postage_region` -VALUES (245, 244, 'C', '城区', '城区', 3, 'chengqu', '045000', 1, '113.60069', '37.8474'); -INSERT INTO `base_postage_region` -VALUES (246, 244, 'K', '矿区', '矿区', 3, 'kuangqu', '045000', 1, '113.55677', '37.86895'); -INSERT INTO `base_postage_region` -VALUES (247, 244, 'J', '郊区', '郊区', 3, 'jiaoqu', '045011', 1, '113.58539', '37.94139'); -INSERT INTO `base_postage_region` -VALUES (248, 244, 'P', '平定', '平定县', 3, 'pingding', '045200', 1, '113.65789', '37.78601'); -INSERT INTO `base_postage_region` -VALUES (249, 244, 'Y', '盂县', '盂县', 3, 'yuxian', '045100', 1, '113.41235', '38.08579'); -INSERT INTO `base_postage_region` -VALUES (250, 220, 'C', '长治', '长治市', 2, 'changzhi', '046000', 1, '113.113556', '36.191112'); -INSERT INTO `base_postage_region` -VALUES (251, 250, 'C', '城区', '城区', 3, 'chengqu', '046011', 1, '113.12308', '36.20351'); -INSERT INTO `base_postage_region` -VALUES (252, 250, 'J', '郊区', '郊区', 3, 'jiaoqu', '046011', 1, '113.12653', '36.19918'); -INSERT INTO `base_postage_region` -VALUES (253, 250, 'C', '长治', '长治县', 3, 'changzhi', '047100', 1, '113.04791', '36.04722'); -INSERT INTO `base_postage_region` -VALUES (254, 250, 'X', '襄垣', '襄垣县', 3, 'xiangyuan', '046200', 1, '113.05157', '36.53527'); -INSERT INTO `base_postage_region` -VALUES (255, 250, 'T', '屯留', '屯留县', 3, 'tunliu', '046100', 1, '112.89196', '36.31579'); -INSERT INTO `base_postage_region` -VALUES (256, 250, 'P', '平顺', '平顺县', 3, 'pingshun', '047400', 1, '113.43603', '36.20005'); -INSERT INTO `base_postage_region` -VALUES (257, 250, 'L', '黎城', '黎城县', 3, 'licheng', '047600', 1, '113.38766', '36.50301'); -INSERT INTO `base_postage_region` -VALUES (258, 250, 'H', '壶关', '壶关县', 3, 'huguan', '047300', 1, '113.207', '36.11301'); -INSERT INTO `base_postage_region` -VALUES (259, 250, 'C', '长子', '长子县', 3, 'zhangzi', '046600', 1, '112.87731', '36.12125'); -INSERT INTO `base_postage_region` -VALUES (260, 250, 'W', '武乡', '武乡县', 3, 'wuxiang', '046300', 1, '112.86343', '36.83687'); -INSERT INTO `base_postage_region` -VALUES (261, 250, 'Q', '沁县', '沁县', 3, 'qinxian', '046400', 1, '112.69863', '36.75628'); -INSERT INTO `base_postage_region` -VALUES (262, 250, 'Q', '沁源', '沁源县', 3, 'qinyuan', '046500', 1, '112.33758', '36.50008'); -INSERT INTO `base_postage_region` -VALUES (263, 250, 'L', '潞城', '潞城市', 3, 'lucheng', '047500', 1, '113.22888', '36.33414'); -INSERT INTO `base_postage_region` -VALUES (264, 220, 'J', '晋城', '晋城市', 2, 'jincheng', '048000', 1, '112.851274', '35.497553'); -INSERT INTO `base_postage_region` -VALUES (265, 264, 'C', '城区', '城区', 3, 'chengqu', '048000', 1, '112.85319', '35.50175'); -INSERT INTO `base_postage_region` -VALUES (266, 264, 'Q', '沁水', '沁水县', 3, 'qinshui', '048200', 1, '112.1871', '35.69102'); -INSERT INTO `base_postage_region` -VALUES (267, 264, 'Y', '阳城', '阳城县', 3, 'yangcheng', '048100', 1, '112.41485', '35.48614'); -INSERT INTO `base_postage_region` -VALUES (268, 264, 'L', '陵川', '陵川县', 3, 'lingchuan', '048300', 1, '113.2806', '35.77532'); -INSERT INTO `base_postage_region` -VALUES (269, 264, 'Z', '泽州', '泽州县', 3, 'zezhou', '048012', 1, '112.83947', '35.50789'); -INSERT INTO `base_postage_region` -VALUES (270, 264, 'G', '高平', '高平市', 3, 'gaoping', '048400', 1, '112.92288', '35.79705'); -INSERT INTO `base_postage_region` -VALUES (271, 220, 'S', '朔州', '朔州市', 2, 'shuozhou', '038500', 1, '112.433387', '39.331261'); -INSERT INTO `base_postage_region` -VALUES (272, 271, 'S', '朔城', '朔城区', 3, 'shuocheng', '036000', 1, '112.43189', '39.31982'); -INSERT INTO `base_postage_region` -VALUES (273, 271, 'P', '平鲁', '平鲁区', 3, 'pinglu', '038600', 1, '112.28833', '39.51155'); -INSERT INTO `base_postage_region` -VALUES (274, 271, 'S', '山阴', '山阴县', 3, 'shanyin', '036900', 1, '112.81662', '39.52697'); -INSERT INTO `base_postage_region` -VALUES (275, 271, 'Y', '应县', '应县', 3, 'yingxian', '037600', 1, '113.19052', '39.55279'); -INSERT INTO `base_postage_region` -VALUES (276, 271, 'Y', '右玉', '右玉县', 3, 'youyu', '037200', 1, '112.46902', '39.99011'); -INSERT INTO `base_postage_region` -VALUES (277, 271, 'H', '怀仁', '怀仁县', 3, 'huairen', '038300', 1, '113.10009', '39.82806'); -INSERT INTO `base_postage_region` -VALUES (278, 220, 'J', '晋中', '晋中市', 2, 'jinzhong', '030600', 1, '112.736465', '37.696495'); -INSERT INTO `base_postage_region` -VALUES (279, 278, 'Y', '榆次', '榆次区', 3, 'yuci', '030600', 1, '112.70788', '37.6978'); -INSERT INTO `base_postage_region` -VALUES (280, 278, 'Y', '榆社', '榆社县', 3, 'yushe', '031800', 1, '112.97558', '37.0721'); -INSERT INTO `base_postage_region` -VALUES (281, 278, 'Z', '左权', '左权县', 3, 'zuoquan', '032600', 1, '113.37918', '37.08235'); -INSERT INTO `base_postage_region` -VALUES (282, 278, 'H', '和顺', '和顺县', 3, 'heshun', '032700', 1, '113.56988', '37.32963'); -INSERT INTO `base_postage_region` -VALUES (283, 278, 'X', '昔阳', '昔阳县', 3, 'xiyang', '045300', 1, '113.70517', '37.61863'); -INSERT INTO `base_postage_region` -VALUES (284, 278, 'S', '寿阳', '寿阳县', 3, 'shouyang', '045400', 1, '113.17495', '37.88899'); -INSERT INTO `base_postage_region` -VALUES (285, 278, 'T', '太谷', '太谷县', 3, 'taigu', '030800', 1, '112.55246', '37.42161'); -INSERT INTO `base_postage_region` -VALUES (286, 278, 'Q', '祁县', '祁县', 3, 'qixian', '030900', 1, '112.33358', '37.3579'); -INSERT INTO `base_postage_region` -VALUES (287, 278, 'P', '平遥', '平遥县', 3, 'pingyao', '031100', 1, '112.17553', '37.1892'); -INSERT INTO `base_postage_region` -VALUES (288, 278, 'L', '灵石', '灵石县', 3, 'lingshi', '031300', 1, '111.7774', '36.84814'); -INSERT INTO `base_postage_region` -VALUES (289, 278, 'J', '介休', '介休市', 3, 'jiexiu', '032000', 1, '111.91824', '37.02771'); -INSERT INTO `base_postage_region` -VALUES (290, 220, 'Y', '运城', '运城市', 2, 'yuncheng', '044000', 1, '111.003957', '35.022778'); -INSERT INTO `base_postage_region` -VALUES (291, 290, 'Y', '盐湖', '盐湖区', 3, 'yanhu', '044000', 1, '110.99827', '35.0151'); -INSERT INTO `base_postage_region` -VALUES (292, 290, 'L', '临猗', '临猗县', 3, 'linyi', '044100', 1, '110.77432', '35.14455'); -INSERT INTO `base_postage_region` -VALUES (293, 290, 'W', '万荣', '万荣县', 3, 'wanrong', '044200', 1, '110.83657', '35.41556'); -INSERT INTO `base_postage_region` -VALUES (294, 290, 'W', '闻喜', '闻喜县', 3, 'wenxi', '043800', 1, '111.22265', '35.35553'); -INSERT INTO `base_postage_region` -VALUES (295, 290, 'J', '稷山', '稷山县', 3, 'jishan', '043200', 1, '110.97924', '35.59993'); -INSERT INTO `base_postage_region` -VALUES (296, 290, 'X', '新绛', '新绛县', 3, 'xinjiang', '043100', 1, '111.22509', '35.61566'); -INSERT INTO `base_postage_region` -VALUES (297, 290, 'J', '绛县', '绛县', 3, 'jiangxian', '043600', 1, '111.56668', '35.49096'); -INSERT INTO `base_postage_region` -VALUES (298, 290, 'Y', '垣曲', '垣曲县', 3, 'yuanqu', '043700', 1, '111.67166', '35.29923'); -INSERT INTO `base_postage_region` -VALUES (299, 290, 'X', '夏县', '夏县', 3, 'xiaxian', '044400', 1, '111.21966', '35.14121'); -INSERT INTO `base_postage_region` -VALUES (300, 290, 'P', '平陆', '平陆县', 3, 'pinglu', '044300', 1, '111.21704', '34.83772'); -INSERT INTO `base_postage_region` -VALUES (301, 290, 'R', '芮城', '芮城县', 3, 'ruicheng', '044600', 1, '110.69455', '34.69384'); -INSERT INTO `base_postage_region` -VALUES (302, 290, 'Y', '永济', '永济市', 3, 'yongji', '044500', 1, '110.44537', '34.86556'); -INSERT INTO `base_postage_region` -VALUES (303, 290, 'H', '河津', '河津市', 3, 'hejin', '043300', 1, '110.7116', '35.59478'); -INSERT INTO `base_postage_region` -VALUES (304, 220, 'X', '忻州', '忻州市', 2, 'xinzhou', '034000', 1, '112.733538', '38.41769'); -INSERT INTO `base_postage_region` -VALUES (305, 304, 'X', '忻府', '忻府区', 3, 'xinfu', '034000', 1, '112.74603', '38.40414'); -INSERT INTO `base_postage_region` -VALUES (306, 304, 'D', '定襄', '定襄县', 3, 'dingxiang', '035400', 1, '112.95733', '38.47387'); -INSERT INTO `base_postage_region` -VALUES (307, 304, 'W', '五台', '五台县', 3, 'wutai', '035500', 1, '113.25256', '38.72774'); -INSERT INTO `base_postage_region` -VALUES (308, 304, 'D', '代县', '代县', 3, 'daixian', '034200', 1, '112.95913', '39.06717'); -INSERT INTO `base_postage_region` -VALUES (309, 304, 'F', '繁峙', '繁峙县', 3, 'fanshi', '034300', 1, '113.26303', '39.18886'); -INSERT INTO `base_postage_region` -VALUES (310, 304, 'N', '宁武', '宁武县', 3, 'ningwu', '036700', 1, '112.30423', '39.00211'); -INSERT INTO `base_postage_region` -VALUES (311, 304, 'J', '静乐', '静乐县', 3, 'jingle', '035100', 1, '111.94158', '38.3602'); -INSERT INTO `base_postage_region` -VALUES (312, 304, 'S', '神池', '神池县', 3, 'shenchi', '036100', 1, '112.20541', '39.09'); -INSERT INTO `base_postage_region` -VALUES (313, 304, 'W', '五寨', '五寨县', 3, 'wuzhai', '036200', 1, '111.8489', '38.90757'); -INSERT INTO `base_postage_region` -VALUES (314, 304, 'K', '岢岚', '岢岚县', 3, 'kelan', '036300', 1, '111.57388', '38.70452'); -INSERT INTO `base_postage_region` -VALUES (315, 304, 'H', '河曲', '河曲县', 3, 'hequ', '036500', 1, '111.13821', '39.38439'); -INSERT INTO `base_postage_region` -VALUES (316, 304, 'B', '保德', '保德县', 3, 'baode', '036600', 1, '111.08656', '39.02248'); -INSERT INTO `base_postage_region` -VALUES (317, 304, 'P', '偏关', '偏关县', 3, 'pianguan', '036400', 1, '111.50863', '39.43609'); -INSERT INTO `base_postage_region` -VALUES (318, 304, 'Y', '原平', '原平市', 3, 'yuanping', '034100', 1, '112.70584', '38.73181'); -INSERT INTO `base_postage_region` -VALUES (319, 220, 'L', '临汾', '临汾市', 2, 'linfen', '041000', 1, '111.517973', '36.08415'); -INSERT INTO `base_postage_region` -VALUES (320, 319, 'Y', '尧都', '尧都区', 3, 'yaodu', '041000', 1, '111.5787', '36.08298'); -INSERT INTO `base_postage_region` -VALUES (321, 319, 'Q', '曲沃', '曲沃县', 3, 'quwo', '043400', 1, '111.47525', '35.64119'); -INSERT INTO `base_postage_region` -VALUES (322, 319, 'Y', '翼城', '翼城县', 3, 'yicheng', '043500', 1, '111.7181', '35.73881'); -INSERT INTO `base_postage_region` -VALUES (323, 319, 'X', '襄汾', '襄汾县', 3, 'xiangfen', '041500', 1, '111.44204', '35.87711'); -INSERT INTO `base_postage_region` -VALUES (324, 319, 'H', '洪洞', '洪洞县', 3, 'hongtong', '041600', 1, '111.67501', '36.25425'); -INSERT INTO `base_postage_region` -VALUES (325, 319, 'G', '古县', '古县', 3, 'guxian', '042400', 1, '111.92041', '36.26688'); -INSERT INTO `base_postage_region` -VALUES (326, 319, 'A', '安泽', '安泽县', 3, 'anze', '042500', 1, '112.24981', '36.14803'); -INSERT INTO `base_postage_region` -VALUES (327, 319, 'F', '浮山', '浮山县', 3, 'fushan', '042600', 1, '111.84744', '35.96854'); -INSERT INTO `base_postage_region` -VALUES (328, 319, 'J', '吉县', '吉县', 3, 'jixian', '042200', 1, '110.68148', '36.09873'); -INSERT INTO `base_postage_region` -VALUES (329, 319, 'X', '乡宁', '乡宁县', 3, 'xiangning', '042100', 1, '110.84652', '35.97072'); -INSERT INTO `base_postage_region` -VALUES (330, 319, 'D', '大宁', '大宁县', 3, 'daning', '042300', 1, '110.75216', '36.46624'); -INSERT INTO `base_postage_region` -VALUES (331, 319, 'X', '隰县', '隰县', 3, 'xixian', '041300', 1, '110.93881', '36.69258'); -INSERT INTO `base_postage_region` -VALUES (332, 319, 'Y', '永和', '永和县', 3, 'yonghe', '041400', 1, '110.63168', '36.7584'); -INSERT INTO `base_postage_region` -VALUES (333, 319, 'P', '蒲县', '蒲县', 3, 'puxian', '041200', 1, '111.09674', '36.41243'); -INSERT INTO `base_postage_region` -VALUES (334, 319, 'F', '汾西', '汾西县', 3, 'fenxi', '031500', 1, '111.56811', '36.65063'); -INSERT INTO `base_postage_region` -VALUES (335, 319, 'H', '侯马', '侯马市', 3, 'houma', '043000', 1, '111.37207', '35.61903'); -INSERT INTO `base_postage_region` -VALUES (336, 319, 'H', '霍州', '霍州市', 3, 'huozhou', '031400', 1, '111.755', '36.5638'); -INSERT INTO `base_postage_region` -VALUES (337, 220, 'L', '吕梁', '吕梁市', 2, 'lvliang', '033000', 1, '111.134335', '37.524366'); -INSERT INTO `base_postage_region` -VALUES (338, 337, 'L', '离石', '离石区', 3, 'lishi', '033000', 1, '111.15059', '37.5177'); -INSERT INTO `base_postage_region` -VALUES (339, 337, 'W', '文水', '文水县', 3, 'wenshui', '032100', 1, '112.02829', '37.43841'); -INSERT INTO `base_postage_region` -VALUES (340, 337, 'J', '交城', '交城县', 3, 'jiaocheng', '030500', 1, '112.1585', '37.5512'); -INSERT INTO `base_postage_region` -VALUES (341, 337, 'X', '兴县', '兴县', 3, 'xingxian', '033600', 1, '111.12692', '38.46321'); -INSERT INTO `base_postage_region` -VALUES (342, 337, 'L', '临县', '临县', 3, 'linxian', '033200', 1, '110.99282', '37.95271'); -INSERT INTO `base_postage_region` -VALUES (343, 337, 'L', '柳林', '柳林县', 3, 'liulin', '033300', 1, '110.88922', '37.42932'); -INSERT INTO `base_postage_region` -VALUES (344, 337, 'S', '石楼', '石楼县', 3, 'shilou', '032500', 1, '110.8352', '36.99731'); -INSERT INTO `base_postage_region` -VALUES (345, 337, 'L', '岚县', '岚县', 3, 'lanxian', '033500', 1, '111.67627', '38.27874'); -INSERT INTO `base_postage_region` -VALUES (346, 337, 'F', '方山', '方山县', 3, 'fangshan', '033100', 1, '111.24011', '37.88979'); -INSERT INTO `base_postage_region` -VALUES (347, 337, 'Z', '中阳', '中阳县', 3, 'zhongyang', '033400', 1, '111.1795', '37.35715'); -INSERT INTO `base_postage_region` -VALUES (348, 337, 'J', '交口', '交口县', 3, 'jiaokou', '032400', 1, '111.18103', '36.98213'); -INSERT INTO `base_postage_region` -VALUES (349, 337, 'X', '孝义', '孝义市', 3, 'xiaoyi', '032300', 1, '111.77362', '37.14414'); -INSERT INTO `base_postage_region` -VALUES (350, 337, 'F', '汾阳', '汾阳市', 3, 'fenyang', '032200', 1, '111.7882', '37.26605'); -INSERT INTO `base_postage_region` -VALUES (351, 0, 'N', '内蒙古', '内蒙古自治区', 1, 'innermongolia', '', 1, '111.670801', '40.818311'); -INSERT INTO `base_postage_region` -VALUES (352, 351, 'H', '呼和浩特', '呼和浩特市', 2, 'hohhot', '010000', 1, '111.670801', '40.818311'); -INSERT INTO `base_postage_region` -VALUES (353, 352, 'X', '新城', '新城区', 3, 'xincheng', '010050', 1, '111.66554', '40.85828'); -INSERT INTO `base_postage_region` -VALUES (354, 352, 'H', '回民', '回民区', 3, 'huimin', '010030', 1, '111.62402', '40.80827'); -INSERT INTO `base_postage_region` -VALUES (355, 352, 'Y', '玉泉', '玉泉区', 3, 'yuquan', '010020', 1, '111.67456', '40.75227'); -INSERT INTO `base_postage_region` -VALUES (356, 352, 'S', '赛罕', '赛罕区', 3, 'saihan', '010020', 1, '111.70224', '40.79207'); -INSERT INTO `base_postage_region` -VALUES (357, 352, 'T', '土默特左旗', '土默特左旗', 3, 'tumotezuoqi', '010100', 1, '111.14898', '40.72229'); -INSERT INTO `base_postage_region` -VALUES (358, 352, 'T', '托克托', '托克托县', 3, 'tuoketuo', '010200', 1, '111.19101', '40.27492'); -INSERT INTO `base_postage_region` -VALUES (359, 352, 'H', '和林格尔', '和林格尔县', 3, 'helingeer', '011500', 1, '111.82205', '40.37892'); -INSERT INTO `base_postage_region` -VALUES (360, 352, 'Q', '清水河', '清水河县', 3, 'qingshuihe', '011600', 1, '111.68316', '39.9097'); -INSERT INTO `base_postage_region` -VALUES (361, 352, 'W', '武川', '武川县', 3, 'wuchuan', '011700', 1, '111.45785', '41.09289'); -INSERT INTO `base_postage_region` -VALUES (362, 351, 'B', '包头', '包头市', 2, 'baotou', '014025', 1, '109.840405', '40.658168'); -INSERT INTO `base_postage_region` -VALUES (363, 362, 'D', '东河', '东河区', 3, 'donghe', '014040', 1, '110.0462', '40.58237'); -INSERT INTO `base_postage_region` -VALUES (364, 362, 'K', '昆都仑', '昆都仑区', 3, 'kundulun', '014010', 1, '109.83862', '40.64175'); -INSERT INTO `base_postage_region` -VALUES (365, 362, 'Q', '青山', '青山区', 3, 'qingshan', '014030', 1, '109.90131', '40.64329'); -INSERT INTO `base_postage_region` -VALUES (366, 362, 'S', '石拐', '石拐区', 3, 'shiguai', '014070', 1, '110.27322', '40.67297'); -INSERT INTO `base_postage_region` -VALUES (367, 362, 'B', '白云鄂博矿区', '白云鄂博矿区', 3, 'baiyunebokuangqu', '014080', 1, '109.97367', '41.76968'); -INSERT INTO `base_postage_region` -VALUES (368, 362, 'J', '九原', '九原区', 3, 'jiuyuan', '014060', 1, '109.96496', '40.60554'); -INSERT INTO `base_postage_region` -VALUES (369, 362, 'T', '土默特右旗', '土默特右旗', 3, 'tumoteyouqi', '014100', 1, '110.52417', '40.5688'); -INSERT INTO `base_postage_region` -VALUES (370, 362, 'G', '固阳', '固阳县', 3, 'guyang', '014200', 1, '110.06372', '41.01851'); -INSERT INTO `base_postage_region` -VALUES (371, 362, 'D', '达茂旗', '达尔罕茂明安联合旗', 3, 'damaoqi', '014500', 1, '110.43258', '41.69875'); -INSERT INTO `base_postage_region` -VALUES (372, 351, 'W', '乌海', '乌海市', 2, 'wuhai', '016000', 1, '106.825563', '39.673734'); -INSERT INTO `base_postage_region` -VALUES (373, 372, 'H', '海勃湾', '海勃湾区', 3, 'haibowan', '016000', 1, '106.8222', '39.66955'); -INSERT INTO `base_postage_region` -VALUES (374, 372, 'H', '海南', '海南区', 3, 'hainan', '016030', 1, '106.88656', '39.44128'); -INSERT INTO `base_postage_region` -VALUES (375, 372, 'W', '乌达', '乌达区', 3, 'wuda', '016040', 1, '106.72723', '39.505'); -INSERT INTO `base_postage_region` -VALUES (376, 351, 'C', '赤峰', '赤峰市', 2, 'chifeng', '024000', 1, '118.956806', '42.275317'); -INSERT INTO `base_postage_region` -VALUES (377, 376, 'H', '红山', '红山区', 3, 'hongshan', '024020', 1, '118.95755', '42.24312'); -INSERT INTO `base_postage_region` -VALUES (378, 376, 'Y', '元宝山', '元宝山区', 3, 'yuanbaoshan', '024076', 1, '119.28921', '42.04005'); -INSERT INTO `base_postage_region` -VALUES (379, 376, 'S', '松山', '松山区', 3, 'songshan', '024005', 1, '118.9328', '42.28613'); -INSERT INTO `base_postage_region` -VALUES (380, 376, 'A', '阿鲁科尔沁旗', '阿鲁科尔沁旗', 3, 'alukeerqinqi', '025550', 1, '120.06527', '43.87988'); -INSERT INTO `base_postage_region` -VALUES (381, 376, 'B', '巴林左旗', '巴林左旗', 3, 'balinzuoqi', '025450', 1, '119.38012', '43.97031'); -INSERT INTO `base_postage_region` -VALUES (382, 376, 'B', '巴林右旗', '巴林右旗', 3, 'balinyouqi', '025150', 1, '118.66461', '43.53387'); -INSERT INTO `base_postage_region` -VALUES (383, 376, 'L', '林西', '林西县', 3, 'linxi', '025250', 1, '118.04733', '43.61165'); -INSERT INTO `base_postage_region` -VALUES (384, 376, 'K', '克什克腾旗', '克什克腾旗', 3, 'keshiketengqi', '025350', 1, '117.54562', '43.26501'); -INSERT INTO `base_postage_region` -VALUES (385, 376, 'W', '翁牛特旗', '翁牛特旗', 3, 'wengniuteqi', '024500', 1, '119.03042', '42.93147'); -INSERT INTO `base_postage_region` -VALUES (386, 376, 'K', '喀喇沁旗', '喀喇沁旗', 3, 'kalaqinqi', '024400', 1, '118.70144', '41.92917'); -INSERT INTO `base_postage_region` -VALUES (387, 376, 'N', '宁城', '宁城县', 3, 'ningcheng', '024200', 1, '119.34375', '41.59661'); -INSERT INTO `base_postage_region` -VALUES (388, 376, 'A', '敖汉旗', '敖汉旗', 3, 'aohanqi', '024300', 1, '119.92163', '42.29071'); -INSERT INTO `base_postage_region` -VALUES (389, 351, 'T', '通辽', '通辽市', 2, 'tongliao', '028000', 1, '122.263119', '43.617429'); -INSERT INTO `base_postage_region` -VALUES (390, 389, 'K', '科尔沁', '科尔沁区', 3, 'keerqin', '028000', 1, '122.25573', '43.62257'); -INSERT INTO `base_postage_region` -VALUES (391, 389, 'K', '科尔沁左翼中旗', '科尔沁左翼中旗', 3, 'keerqinzuoyizhongqi', '029300', 1, '123.31912', '44.13014'); -INSERT INTO `base_postage_region` -VALUES (392, 389, 'K', '科尔沁左翼后旗', '科尔沁左翼后旗', 3, 'keerqinzuoyihouqi', '028100', 1, '122.35745', '42.94897'); -INSERT INTO `base_postage_region` -VALUES (393, 389, 'K', '开鲁', '开鲁县', 3, 'kailu', '028400', 1, '121.31884', '43.60003'); -INSERT INTO `base_postage_region` -VALUES (394, 389, 'K', '库伦旗', '库伦旗', 3, 'kulunqi', '028200', 1, '121.776', '42.72998'); -INSERT INTO `base_postage_region` -VALUES (395, 389, 'N', '奈曼旗', '奈曼旗', 3, 'naimanqi', '028300', 1, '120.66348', '42.84527'); -INSERT INTO `base_postage_region` -VALUES (396, 389, 'Z', '扎鲁特旗', '扎鲁特旗', 3, 'zhaluteqi', '029100', 1, '120.91507', '44.55592'); -INSERT INTO `base_postage_region` -VALUES (397, 389, 'H', '霍林郭勒', '霍林郭勒市', 3, 'huolinguole', '029200', 1, '119.65429', '45.53454'); -INSERT INTO `base_postage_region` -VALUES (398, 351, 'E', '鄂尔多斯', '鄂尔多斯市', 2, 'ordos', '017004', 1, '109.99029', '39.817179'); -INSERT INTO `base_postage_region` -VALUES (399, 398, 'D', '东胜', '东胜区', 3, 'dongsheng', '017000', 1, '109.96289', '39.82236'); -INSERT INTO `base_postage_region` -VALUES (400, 398, 'D', '达拉特旗', '达拉特旗', 3, 'dalateqi', '014300', 1, '110.03317', '40.4001'); -INSERT INTO `base_postage_region` -VALUES (401, 398, 'Z', '准格尔旗', '准格尔旗', 3, 'zhungeerqi', '017100', 1, '111.23645', '39.86783'); -INSERT INTO `base_postage_region` -VALUES (402, 398, 'E', '鄂托克前旗', '鄂托克前旗', 3, 'etuokeqianqi', '016200', 1, '107.48403', '38.18396'); -INSERT INTO `base_postage_region` -VALUES (403, 398, 'E', '鄂托克旗', '鄂托克旗', 3, 'etuokeqi', '016100', 1, '107.98226', '39.09456'); -INSERT INTO `base_postage_region` -VALUES (404, 398, 'H', '杭锦旗', '杭锦旗', 3, 'hangjinqi', '017400', 1, '108.72934', '39.84023'); -INSERT INTO `base_postage_region` -VALUES (405, 398, 'W', '乌审旗', '乌审旗', 3, 'wushenqi', '017300', 1, '108.8461', '38.59092'); -INSERT INTO `base_postage_region` -VALUES (406, 398, 'Y', '伊金霍洛旗', '伊金霍洛旗', 3, 'yijinhuoluoqi', '017200', 1, '109.74908', '39.57393'); -INSERT INTO `base_postage_region` -VALUES (407, 351, 'H', '呼伦贝尔', '呼伦贝尔市', 2, 'hulunber', '021008', 1, '119.758168', '49.215333'); -INSERT INTO `base_postage_region` -VALUES (408, 407, 'H', '海拉尔', '海拉尔区', 3, 'hailaer', '021000', 1, '119.7364', '49.2122'); -INSERT INTO `base_postage_region` -VALUES (409, 407, 'Z', '扎赉诺尔', '扎赉诺尔区', 3, 'zhalainuoer', '021410', 1, '117.792702', '49.486943'); -INSERT INTO `base_postage_region` -VALUES (410, 407, 'A', '阿荣旗', '阿荣旗', 3, 'arongqi', '162750', 1, '123.45941', '48.12581'); -INSERT INTO `base_postage_region` -VALUES (411, 407, 'M', '莫旗', '莫力达瓦达斡尔族自治旗', 3, 'moqi', '162850', 1, '124.51498', '48.48055'); -INSERT INTO `base_postage_region` -VALUES (412, 407, 'E', '鄂伦春', '鄂伦春自治旗', 3, 'elunchun', '165450', 1, '123.72604', '50.59777'); -INSERT INTO `base_postage_region` -VALUES (413, 407, 'E', '鄂温', '鄂温克族自治旗', 3, 'ewen', '021100', 1, '119.7565', '49.14284'); -INSERT INTO `base_postage_region` -VALUES (414, 407, 'C', '陈巴尔虎旗', '陈巴尔虎旗', 3, 'chenbaerhuqi', '021500', 1, '119.42434', '49.32684'); -INSERT INTO `base_postage_region` -VALUES (415, 407, 'X', '新巴尔虎左旗', '新巴尔虎左旗', 3, 'xinbaerhuzuoqi', '021200', 1, '118.26989', '48.21842'); -INSERT INTO `base_postage_region` -VALUES (416, 407, 'X', '新巴尔虎右旗', '新巴尔虎右旗', 3, 'xinbaerhuyouqi', '021300', 1, '116.82366', '48.66473'); -INSERT INTO `base_postage_region` -VALUES (417, 407, 'M', '满洲里', '满洲里市', 3, 'manzhouli', '021400', 1, '117.47946', '49.58272'); -INSERT INTO `base_postage_region` -VALUES (418, 407, 'Y', '牙克石', '牙克石市', 3, 'yakeshi', '022150', 1, '120.7117', '49.2856'); -INSERT INTO `base_postage_region` -VALUES (419, 407, 'Z', '扎兰屯', '扎兰屯市', 3, 'zhalantun', '162650', 1, '122.73757', '48.01363'); -INSERT INTO `base_postage_region` -VALUES (420, 407, 'E', '额尔古纳', '额尔古纳市', 3, 'eerguna', '022250', 1, '120.19094', '50.24249'); -INSERT INTO `base_postage_region` -VALUES (421, 407, 'G', '根河', '根河市', 3, 'genhe', '022350', 1, '121.52197', '50.77996'); -INSERT INTO `base_postage_region` -VALUES (422, 351, 'B', '巴彦淖尔', '巴彦淖尔市', 2, 'bayannur', '015001', 1, '107.416959', '40.757402'); -INSERT INTO `base_postage_region` -VALUES (423, 422, 'L', '临河', '临河区', 3, 'linhe', '015001', 1, '107.42668', '40.75827'); -INSERT INTO `base_postage_region` -VALUES (424, 422, 'W', '五原', '五原县', 3, 'wuyuan', '015100', 1, '108.26916', '41.09631'); -INSERT INTO `base_postage_region` -VALUES (425, 422, 'D', '磴口', '磴口县', 3, 'dengkou', '015200', 1, '107.00936', '40.33062'); -INSERT INTO `base_postage_region` -VALUES (426, 422, 'W', '乌拉特前旗', '乌拉特前旗', 3, 'wulateqianqi', '014400', 1, '108.65219', '40.73649'); -INSERT INTO `base_postage_region` -VALUES (427, 422, 'W', '乌拉特中旗', '乌拉特中旗', 3, 'wulatezhongqi', '015300', 1, '108.52587', '41.56789'); -INSERT INTO `base_postage_region` -VALUES (428, 422, 'W', '乌拉特后旗', '乌拉特后旗', 3, 'wulatehouqi', '015500', 1, '106.98971', '41.43151'); -INSERT INTO `base_postage_region` -VALUES (429, 422, 'H', '杭锦后旗', '杭锦后旗', 3, 'hangjinhouqi', '015400', 1, '107.15133', '40.88627'); -INSERT INTO `base_postage_region` -VALUES (430, 351, 'W', '乌兰察布', '乌兰察布市', 2, 'ulanqab', '012000', 1, '113.114543', '41.034126'); -INSERT INTO `base_postage_region` -VALUES (431, 430, 'J', '集宁', '集宁区', 3, 'jining', '012000', 1, '113.11452', '41.0353'); -INSERT INTO `base_postage_region` -VALUES (432, 430, 'Z', '卓资', '卓资县', 3, 'zhuozi', '012300', 1, '112.57757', '40.89414'); -INSERT INTO `base_postage_region` -VALUES (433, 430, 'H', '化德', '化德县', 3, 'huade', '013350', 1, '114.01071', '41.90433'); -INSERT INTO `base_postage_region` -VALUES (434, 430, 'S', '商都', '商都县', 3, 'shangdu', '013450', 1, '113.57772', '41.56213'); -INSERT INTO `base_postage_region` -VALUES (435, 430, 'X', '兴和', '兴和县', 3, 'xinghe', '013650', 1, '113.83395', '40.87186'); -INSERT INTO `base_postage_region` -VALUES (436, 430, 'L', '凉城', '凉城县', 3, 'liangcheng', '013750', 1, '112.49569', '40.53346'); -INSERT INTO `base_postage_region` -VALUES (437, 430, 'C', '察右前旗', '察哈尔右翼前旗', 3, 'chayouqianqi', '012200', 1, '113.22131', '40.7788'); -INSERT INTO `base_postage_region` -VALUES (438, 430, 'C', '察右中旗', '察哈尔右翼中旗', 3, 'chayouzhongqi', '013550', 1, '112.63537', '41.27742'); -INSERT INTO `base_postage_region` -VALUES (439, 430, 'C', '察右后旗', '察哈尔右翼后旗', 3, 'chayouhouqi', '012400', 1, '113.19216', '41.43554'); -INSERT INTO `base_postage_region` -VALUES (440, 430, 'S', '四子王旗', '四子王旗', 3, 'siziwangqi', '011800', 1, '111.70654', '41.53312'); -INSERT INTO `base_postage_region` -VALUES (441, 430, 'F', '丰镇', '丰镇市', 3, 'fengzhen', '012100', 1, '113.10983', '40.4369'); -INSERT INTO `base_postage_region` -VALUES (442, 351, 'X', '兴安盟', '兴安盟', 2, 'hinggan', '137401', 1, '122.070317', '46.076268'); -INSERT INTO `base_postage_region` -VALUES (443, 442, 'W', '乌兰浩特', '乌兰浩特市', 3, 'wulanhaote', '137401', 1, '122.06378', '46.06235'); -INSERT INTO `base_postage_region` -VALUES (444, 442, 'A', '阿尔山', '阿尔山市', 3, 'aershan', '137800', 1, '119.94317', '47.17716'); -INSERT INTO `base_postage_region` -VALUES (445, 442, 'K', '科右前旗', '科尔沁右翼前旗', 3, 'keyouqianqi', '137423', 1, '121.95269', '46.0795'); -INSERT INTO `base_postage_region` -VALUES (446, 442, 'K', '科右中旗', '科尔沁右翼中旗', 3, 'keyouzhongqi', '029400', 1, '121.46807', '45.05605'); -INSERT INTO `base_postage_region` -VALUES (447, 442, 'Z', '扎赉特旗', '扎赉特旗', 3, 'zhalaiteqi', '137600', 1, '122.91229', '46.7267'); -INSERT INTO `base_postage_region` -VALUES (448, 442, 'T', '突泉', '突泉县', 3, 'tuquan', '137500', 1, '121.59396', '45.38187'); -INSERT INTO `base_postage_region` -VALUES (449, 351, 'X', '锡林郭勒盟', '锡林郭勒盟', 2, 'xilingol', '026000', 1, '116.090996', '43.944018'); -INSERT INTO `base_postage_region` -VALUES (450, 449, 'E', '二连浩特', '二连浩特市', 3, 'erlianhaote', '011100', 1, '111.98297', '43.65303'); -INSERT INTO `base_postage_region` -VALUES (451, 449, 'X', '锡林浩特', '锡林浩特市', 3, 'xilinhaote', '026021', 1, '116.08603', '43.93341'); -INSERT INTO `base_postage_region` -VALUES (452, 449, 'A', '阿巴嘎旗', '阿巴嘎旗', 3, 'abagaqi', '011400', 1, '114.96826', '44.02174'); -INSERT INTO `base_postage_region` -VALUES (453, 449, 'S', '苏尼特左旗', '苏尼特左旗', 3, 'sunitezuoqi', '011300', 1, '113.6506', '43.85687'); -INSERT INTO `base_postage_region` -VALUES (454, 449, 'S', '苏尼特右旗', '苏尼特右旗', 3, 'suniteyouqi', '011200', 1, '112.65741', '42.7469'); -INSERT INTO `base_postage_region` -VALUES (455, 449, 'D', '东乌旗', '东乌珠穆沁旗', 3, 'dongwuqi', '026300', 1, '116.97293', '45.51108'); -INSERT INTO `base_postage_region` -VALUES (456, 449, 'X', '西乌旗', '西乌珠穆沁旗', 3, 'xiwuqi', '026200', 1, '117.60983', '44.59623'); -INSERT INTO `base_postage_region` -VALUES (457, 449, 'T', '太仆寺旗', '太仆寺旗', 3, 'taipusiqi', '027000', 1, '115.28302', '41.87727'); -INSERT INTO `base_postage_region` -VALUES (458, 449, 'X', '镶黄旗', '镶黄旗', 3, 'xianghuangqi', '013250', 1, '113.84472', '42.23927'); -INSERT INTO `base_postage_region` -VALUES (459, 449, 'Z', '正镶白旗', '正镶白旗', 3, 'zhengxiangbaiqi', '013800', 1, '115.00067', '42.30712'); -INSERT INTO `base_postage_region` -VALUES (460, 449, 'Z', '正蓝旗', '正蓝旗', 3, 'zhenglanqi', '027200', 1, '116.00363', '42.25229'); -INSERT INTO `base_postage_region` -VALUES (461, 449, 'D', '多伦', '多伦县', 3, 'duolun', '027300', 1, '116.48565', '42.203'); -INSERT INTO `base_postage_region` -VALUES (462, 351, 'A', '阿拉善盟', '阿拉善盟', 2, 'alxa', '750306', 1, '105.706422', '38.844814'); -INSERT INTO `base_postage_region` -VALUES (463, 462, 'A', '阿拉善左旗', '阿拉善左旗', 3, 'alashanzuoqi', '750306', 1, '105.67532', '38.8293'); -INSERT INTO `base_postage_region` -VALUES (464, 462, 'A', '阿拉善右旗', '阿拉善右旗', 3, 'alashanyouqi', '737300', 1, '101.66705', '39.21533'); -INSERT INTO `base_postage_region` -VALUES (465, 462, 'E', '额济纳旗', '额济纳旗', 3, 'ejinaqi', '735400', 1, '101.06887', '41.96755'); -INSERT INTO `base_postage_region` -VALUES (466, 0, 'L', '辽宁', '辽宁省', 1, 'liaoning', '', 1, '123.429096', '41.796767'); -INSERT INTO `base_postage_region` -VALUES (467, 466, 'S', '沈阳', '沈阳市', 2, 'shenyang', '110013', 1, '123.429096', '41.796767'); -INSERT INTO `base_postage_region` -VALUES (468, 467, 'H', '和平', '和平区', 3, 'heping', '110001', 1, '123.4204', '41.78997'); -INSERT INTO `base_postage_region` -VALUES (469, 467, 'S', '沈河', '沈河区', 3, 'shenhe', '110011', 1, '123.45871', '41.79625'); -INSERT INTO `base_postage_region` -VALUES (470, 467, 'D', '大东', '大东区', 3, 'dadong', '110041', 1, '123.46997', '41.80539'); -INSERT INTO `base_postage_region` -VALUES (471, 467, 'H', '皇姑', '皇姑区', 3, 'huanggu', '110031', 1, '123.42527', '41.82035'); -INSERT INTO `base_postage_region` -VALUES (472, 467, 'T', '铁西', '铁西区', 3, 'tiexi', '110021', 1, '123.37675', '41.80269'); -INSERT INTO `base_postage_region` -VALUES (473, 467, 'S', '苏家屯', '苏家屯区', 3, 'sujiatun', '110101', 1, '123.34405', '41.66475'); -INSERT INTO `base_postage_region` -VALUES (474, 467, 'H', '浑南', '浑南区', 3, 'hunnan', '110015', 1, '123.457707', '41.719450'); -INSERT INTO `base_postage_region` -VALUES (475, 467, 'S', '沈北新区', '沈北新区', 3, 'shenbeixinqu', '110121', 1, '123.52658', '42.05297'); -INSERT INTO `base_postage_region` -VALUES (476, 467, 'Y', '于洪', '于洪区', 3, 'yuhong', '110141', 1, '123.30807', '41.794'); -INSERT INTO `base_postage_region` -VALUES (477, 467, 'L', '辽中', '辽中县', 3, 'liaozhong', '110200', 1, '122.72659', '41.51302'); -INSERT INTO `base_postage_region` -VALUES (478, 467, 'K', '康平', '康平县', 3, 'kangping', '110500', 1, '123.35446', '42.75081'); -INSERT INTO `base_postage_region` -VALUES (479, 467, 'F', '法库', '法库县', 3, 'faku', '110400', 1, '123.41214', '42.50608'); -INSERT INTO `base_postage_region` -VALUES (480, 467, 'X', '新民', '新民市', 3, 'xinmin', '110300', 1, '122.82867', '41.99847'); -INSERT INTO `base_postage_region` -VALUES (481, 466, 'D', '大连', '大连市', 2, 'dalian', '116011', 1, '121.618622', '38.91459'); -INSERT INTO `base_postage_region` -VALUES (482, 481, 'Z', '中山', '中山区', 3, 'zhongshan', '116001', 1, '121.64465', '38.91859'); -INSERT INTO `base_postage_region` -VALUES (483, 481, 'X', '西岗', '西岗区', 3, 'xigang', '116011', 1, '121.61238', '38.91469'); -INSERT INTO `base_postage_region` -VALUES (484, 481, 'S', '沙河口', '沙河口区', 3, 'shahekou', '116021', 1, '121.58017', '38.90536'); -INSERT INTO `base_postage_region` -VALUES (485, 481, 'G', '甘井子', '甘井子区', 3, 'ganjingzi', '116033', 1, '121.56567', '38.95017'); -INSERT INTO `base_postage_region` -VALUES (486, 481, 'L', '旅顺口', '旅顺口区', 3, 'lvshunkou', '116041', 1, '121.26202', '38.85125'); -INSERT INTO `base_postage_region` -VALUES (487, 481, 'J', '金州', '金州区', 3, 'jinzhou', '116100', 1, '121.71893', '39.1004'); -INSERT INTO `base_postage_region` -VALUES (488, 481, 'C', '长海', '长海县', 3, 'changhai', '116500', 1, '122.58859', '39.27274'); -INSERT INTO `base_postage_region` -VALUES (489, 481, 'W', '瓦房店', '瓦房店市', 3, 'wafangdian', '116300', 1, '121.98104', '39.62843'); -INSERT INTO `base_postage_region` -VALUES (490, 481, 'P', '普兰店', '普兰店市', 3, 'pulandian', '116200', 1, '121.96316', '39.39465'); -INSERT INTO `base_postage_region` -VALUES (491, 481, 'Z', '庄河', '庄河市', 3, 'zhuanghe', '116400', 1, '122.96725', '39.68815'); -INSERT INTO `base_postage_region` -VALUES (492, 466, 'A', '鞍山', '鞍山市', 2, 'anshan', '114001', 1, '122.995632', '41.110626'); -INSERT INTO `base_postage_region` -VALUES (493, 492, 'T', '铁东', '铁东区', 3, 'tiedong', '114001', 1, '122.99085', '41.08975'); -INSERT INTO `base_postage_region` -VALUES (494, 492, 'T', '铁西', '铁西区', 3, 'tiexi', '114013', 1, '122.96967', '41.11977'); -INSERT INTO `base_postage_region` -VALUES (495, 492, 'L', '立山', '立山区', 3, 'lishan', '114031', 1, '123.02948', '41.15008'); -INSERT INTO `base_postage_region` -VALUES (496, 492, 'Q', '千山', '千山区', 3, 'qianshan', '114041', 1, '122.96048', '41.07507'); -INSERT INTO `base_postage_region` -VALUES (497, 492, 'T', '台安', '台安县', 3, 'taian', '114100', 1, '122.43585', '41.41265'); -INSERT INTO `base_postage_region` -VALUES (498, 492, 'X', '岫岩', '岫岩满族自治县', 3, 'xiuyan', '114300', 1, '123.28875', '40.27996'); -INSERT INTO `base_postage_region` -VALUES (499, 492, 'H', '海城', '海城市', 3, 'haicheng', '114200', 1, '122.68457', '40.88142'); -INSERT INTO `base_postage_region` -VALUES (500, 466, 'F', '抚顺', '抚顺市', 2, 'fushun', '113008', 1, '123.921109', '41.875956'); -INSERT INTO `base_postage_region` -VALUES (501, 500, 'X', '新抚', '新抚区', 3, 'xinfu', '113008', 1, '123.91264', '41.86205'); -INSERT INTO `base_postage_region` -VALUES (502, 500, 'D', '东洲', '东洲区', 3, 'dongzhou', '113003', 1, '124.03759', '41.8519'); -INSERT INTO `base_postage_region` -VALUES (503, 500, 'W', '望花', '望花区', 3, 'wanghua', '113001', 1, '123.78283', '41.85532'); -INSERT INTO `base_postage_region` -VALUES (504, 500, 'S', '顺城', '顺城区', 3, 'shuncheng', '113006', 1, '123.94506', '41.88321'); -INSERT INTO `base_postage_region` -VALUES (505, 500, 'F', '抚顺', '抚顺县', 3, 'fushun', '113006', 1, '124.17755', '41.71217'); -INSERT INTO `base_postage_region` -VALUES (506, 500, 'X', '新宾', '新宾满族自治县', 3, 'xinbin', '113200', 1, '125.04049', '41.73409'); -INSERT INTO `base_postage_region` -VALUES (507, 500, 'Q', '清原', '清原满族自治县', 3, 'qingyuan', '113300', 1, '124.92807', '42.10221'); -INSERT INTO `base_postage_region` -VALUES (508, 466, 'B', '本溪', '本溪市', 2, 'benxi', '117000', 1, '123.770519', '41.297909'); -INSERT INTO `base_postage_region` -VALUES (509, 508, 'P', '平山', '平山区', 3, 'pingshan', '117000', 1, '123.76892', '41.2997'); -INSERT INTO `base_postage_region` -VALUES (510, 508, 'X', '溪湖', '溪湖区', 3, 'xihu', '117002', 1, '123.76764', '41.32921'); -INSERT INTO `base_postage_region` -VALUES (511, 508, 'M', '明山', '明山区', 3, 'mingshan', '117021', 1, '123.81746', '41.30827'); -INSERT INTO `base_postage_region` -VALUES (512, 508, 'N', '南芬', '南芬区', 3, 'nanfen', '117014', 1, '123.74523', '41.1006'); -INSERT INTO `base_postage_region` -VALUES (513, 508, 'B', '本溪', '本溪满族自治县', 3, 'benxi', '117100', 1, '124.12741', '41.30059'); -INSERT INTO `base_postage_region` -VALUES (514, 508, 'H', '桓仁', '桓仁满族自治县', 3, 'huanren', '117200', 1, '125.36062', '41.26798'); -INSERT INTO `base_postage_region` -VALUES (515, 466, 'D', '丹东', '丹东市', 2, 'dandong', '118000', 1, '124.383044', '40.124296'); -INSERT INTO `base_postage_region` -VALUES (516, 515, 'Y', '元宝', '元宝区', 3, 'yuanbao', '118000', 1, '124.39575', '40.13651'); -INSERT INTO `base_postage_region` -VALUES (517, 515, 'Z', '振兴', '振兴区', 3, 'zhenxing', '118002', 1, '124.36035', '40.10489'); -INSERT INTO `base_postage_region` -VALUES (518, 515, 'Z', '振安', '振安区', 3, 'zhenan', '118001', 1, '124.42816', '40.15826'); -INSERT INTO `base_postage_region` -VALUES (519, 515, 'K', '宽甸', '宽甸满族自治县', 3, 'kuandian', '118200', 1, '124.78247', '40.73187'); -INSERT INTO `base_postage_region` -VALUES (520, 515, 'D', '东港', '东港市', 3, 'donggang', '118300', 1, '124.16287', '39.86256'); -INSERT INTO `base_postage_region` -VALUES (521, 515, 'F', '凤城', '凤城市', 3, 'fengcheng', '118100', 1, '124.06671', '40.45302'); -INSERT INTO `base_postage_region` -VALUES (522, 466, 'J', '锦州', '锦州市', 2, 'jinzhou', '121000', 1, '121.135742', '41.119269'); -INSERT INTO `base_postage_region` -VALUES (523, 522, 'G', '古塔', '古塔区', 3, 'guta', '121001', 1, '121.12832', '41.11725'); -INSERT INTO `base_postage_region` -VALUES (524, 522, 'L', '凌河', '凌河区', 3, 'linghe', '121000', 1, '121.15089', '41.11496'); -INSERT INTO `base_postage_region` -VALUES (525, 522, 'T', '太和', '太和区', 3, 'taihe', '121011', 1, '121.10354', '41.10929'); -INSERT INTO `base_postage_region` -VALUES (526, 522, 'H', '黑山', '黑山县', 3, 'heishan', '121400', 1, '122.12081', '41.69417'); -INSERT INTO `base_postage_region` -VALUES (527, 522, 'Y', '义县', '义县', 3, 'yixian', '121100', 1, '121.24035', '41.53458'); -INSERT INTO `base_postage_region` -VALUES (528, 522, 'L', '凌海', '凌海市', 3, 'linghai', '121200', 1, '121.35705', '41.1737'); -INSERT INTO `base_postage_region` -VALUES (529, 522, 'B', '北镇', '北镇市', 3, 'beizhen', '121300', 1, '121.79858', '41.59537'); -INSERT INTO `base_postage_region` -VALUES (530, 466, 'Y', '营口', '营口市', 2, 'yingkou', '115003', 1, '122.235151', '40.667432'); -INSERT INTO `base_postage_region` -VALUES (531, 530, 'Z', '站前', '站前区', 3, 'zhanqian', '115002', 1, '122.25896', '40.67266'); -INSERT INTO `base_postage_region` -VALUES (532, 530, 'X', '西市', '西市区', 3, 'xishi', '115004', 1, '122.20641', '40.6664'); -INSERT INTO `base_postage_region` -VALUES (533, 530, 'B', '鲅鱼圈', '鲅鱼圈区', 3, 'bayuquan', '115007', 1, '122.13266', '40.26865'); -INSERT INTO `base_postage_region` -VALUES (534, 530, 'L', '老边', '老边区', 3, 'laobian', '115005', 1, '122.37996', '40.6803'); -INSERT INTO `base_postage_region` -VALUES (535, 530, 'G', '盖州', '盖州市', 3, 'gaizhou', '115200', 1, '122.35464', '40.40446'); -INSERT INTO `base_postage_region` -VALUES (536, 530, 'D', '大石桥', '大石桥市', 3, 'dashiqiao', '115100', 1, '122.50927', '40.64567'); -INSERT INTO `base_postage_region` -VALUES (537, 466, 'F', '阜新', '阜新市', 2, 'fuxin', '123000', 1, '121.648962', '42.011796'); -INSERT INTO `base_postage_region` -VALUES (538, 537, 'H', '海州', '海州区', 3, 'haizhou', '123000', 1, '121.65626', '42.01336'); -INSERT INTO `base_postage_region` -VALUES (539, 537, 'X', '新邱', '新邱区', 3, 'xinqiu', '123005', 1, '121.79251', '42.09181'); -INSERT INTO `base_postage_region` -VALUES (540, 537, 'T', '太平', '太平区', 3, 'taiping', '123003', 1, '121.67865', '42.01065'); -INSERT INTO `base_postage_region` -VALUES (541, 537, 'Q', '清河门', '清河门区', 3, 'qinghemen', '123006', 1, '121.4161', '41.78309'); -INSERT INTO `base_postage_region` -VALUES (542, 537, 'X', '细河', '细河区', 3, 'xihe', '123000', 1, '121.68013', '42.02533'); -INSERT INTO `base_postage_region` -VALUES (543, 537, 'F', '阜新', '阜新蒙古族自治县', 3, 'fuxin', '123100', 1, '121.75787', '42.0651'); -INSERT INTO `base_postage_region` -VALUES (544, 537, 'Z', '彰武', '彰武县', 3, 'zhangwu', '123200', 1, '122.54022', '42.38625'); -INSERT INTO `base_postage_region` -VALUES (545, 466, 'L', '辽阳', '辽阳市', 2, 'liaoyang', '111000', 1, '123.18152', '41.269402'); -INSERT INTO `base_postage_region` -VALUES (546, 545, 'B', '白塔', '白塔区', 3, 'baita', '111000', 1, '123.1747', '41.27025'); -INSERT INTO `base_postage_region` -VALUES (547, 545, 'W', '文圣', '文圣区', 3, 'wensheng', '111000', 1, '123.18521', '41.26267'); -INSERT INTO `base_postage_region` -VALUES (548, 545, 'H', '宏伟', '宏伟区', 3, 'hongwei', '111003', 1, '123.1929', '41.21852'); -INSERT INTO `base_postage_region` -VALUES (549, 545, 'G', '弓长岭', '弓长岭区', 3, 'gongchangling', '111008', 1, '123.41963', '41.15181'); -INSERT INTO `base_postage_region` -VALUES (550, 545, 'T', '太子河', '太子河区', 3, 'taizihe', '111000', 1, '123.18182', '41.25337'); -INSERT INTO `base_postage_region` -VALUES (551, 545, 'L', '辽阳', '辽阳县', 3, 'liaoyang', '111200', 1, '123.10574', '41.20542'); -INSERT INTO `base_postage_region` -VALUES (552, 545, 'D', '灯塔', '灯塔市', 3, 'dengta', '111300', 1, '123.33926', '41.42612'); -INSERT INTO `base_postage_region` -VALUES (553, 466, 'P', '盘锦', '盘锦市', 2, 'panjin', '124010', 1, '122.06957', '41.124484'); -INSERT INTO `base_postage_region` -VALUES (554, 553, 'S', '双台子', '双台子区', 3, 'shuangtaizi', '124000', 1, '122.06011', '41.1906'); -INSERT INTO `base_postage_region` -VALUES (555, 553, 'X', '兴隆台', '兴隆台区', 3, 'xinglongtai', '124010', 1, '122.07529', '41.12402'); -INSERT INTO `base_postage_region` -VALUES (556, 553, 'D', '大洼', '大洼县', 3, 'dawa', '124200', 1, '122.08239', '41.00244'); -INSERT INTO `base_postage_region` -VALUES (557, 553, 'P', '盘山', '盘山县', 3, 'panshan', '124000', 1, '121.99777', '41.23805'); -INSERT INTO `base_postage_region` -VALUES (558, 466, 'T', '铁岭', '铁岭市', 2, 'tieling', '112000', 1, '123.844279', '42.290585'); -INSERT INTO `base_postage_region` -VALUES (559, 558, 'Y', '银州', '银州区', 3, 'yinzhou', '112000', 1, '123.8573', '42.29507'); -INSERT INTO `base_postage_region` -VALUES (560, 558, 'Q', '清河', '清河区', 3, 'qinghe', '112003', 1, '124.15911', '42.54679'); -INSERT INTO `base_postage_region` -VALUES (561, 558, 'T', '铁岭', '铁岭县', 3, 'tieling', '112000', 1, '123.77325', '42.22498'); -INSERT INTO `base_postage_region` -VALUES (562, 558, 'X', '西丰', '西丰县', 3, 'xifeng', '112400', 1, '124.7304', '42.73756'); -INSERT INTO `base_postage_region` -VALUES (563, 558, 'C', '昌图', '昌图县', 3, 'changtu', '112500', 1, '124.11206', '42.78428'); -INSERT INTO `base_postage_region` -VALUES (564, 558, 'D', '调兵山', '调兵山市', 3, 'diaobingshan', '112700', 1, '123.56689', '42.4675'); -INSERT INTO `base_postage_region` -VALUES (565, 558, 'K', '开原', '开原市', 3, 'kaiyuan', '112300', 1, '124.03945', '42.54585'); -INSERT INTO `base_postage_region` -VALUES (566, 466, 'C', '朝阳', '朝阳市', 2, 'chaoyang', '122000', 1, '120.451176', '41.576758'); -INSERT INTO `base_postage_region` -VALUES (567, 566, 'S', '双塔', '双塔区', 3, 'shuangta', '122000', 1, '120.45385', '41.566'); -INSERT INTO `base_postage_region` -VALUES (568, 566, 'L', '龙城', '龙城区', 3, 'longcheng', '122000', 1, '120.43719', '41.59264'); -INSERT INTO `base_postage_region` -VALUES (569, 566, 'C', '朝阳', '朝阳县', 3, 'chaoyang', '122000', 1, '120.17401', '41.4324'); -INSERT INTO `base_postage_region` -VALUES (570, 566, 'J', '建平', '建平县', 3, 'jianping', '122400', 1, '119.64392', '41.40315'); -INSERT INTO `base_postage_region` -VALUES (571, 566, 'K', '喀喇沁左翼', '喀喇沁左翼蒙古族自治县', 3, 'kalaqinzuoyi', '122300', 1, '119.74185', '41.12801'); -INSERT INTO `base_postage_region` -VALUES (572, 566, 'B', '北票', '北票市', 3, 'beipiao', '122100', 1, '120.76977', '41.80196'); -INSERT INTO `base_postage_region` -VALUES (573, 566, 'L', '凌源', '凌源市', 3, 'lingyuan', '122500', 1, '119.40148', '41.24558'); -INSERT INTO `base_postage_region` -VALUES (574, 466, 'H', '葫芦岛', '葫芦岛市', 2, 'huludao', '125000', 1, '120.856394', '40.755572'); -INSERT INTO `base_postage_region` -VALUES (575, 574, 'L', '连山', '连山区', 3, 'lianshan', '125001', 1, '120.86393', '40.75554'); -INSERT INTO `base_postage_region` -VALUES (576, 574, 'L', '龙港', '龙港区', 3, 'longgang', '125003', 1, '120.94866', '40.71919'); -INSERT INTO `base_postage_region` -VALUES (577, 574, 'N', '南票', '南票区', 3, 'nanpiao', '125027', 1, '120.74978', '41.10707'); -INSERT INTO `base_postage_region` -VALUES (578, 574, 'S', '绥中', '绥中县', 3, 'suizhong', '125200', 1, '120.34451', '40.32552'); -INSERT INTO `base_postage_region` -VALUES (579, 574, 'J', '建昌', '建昌县', 3, 'jianchang', '125300', 1, '119.8377', '40.82448'); -INSERT INTO `base_postage_region` -VALUES (580, 574, 'X', '兴城', '兴城市', 3, 'xingcheng', '125100', 1, '120.72537', '40.61492'); -INSERT INTO `base_postage_region` -VALUES (581, 466, 'J', '金普新区', '金普新区', 2, 'jinpuxinqu', '116100', 1, '121.789627', '39.055451'); -INSERT INTO `base_postage_region` -VALUES (582, 581, 'J', '金州新区', '金州新区', 3, 'jinzhouxinqu', '116100', 1, '121.784821', '39.052252'); -INSERT INTO `base_postage_region` -VALUES (583, 581, 'P', '普湾新区', '普湾新区', 3, 'puwanxinqu', '116200', 1, '121.812812', '39.330093'); -INSERT INTO `base_postage_region` -VALUES (584, 581, 'B', '保税区', '保税区', 3, 'baoshuiqu', '116100', 1, '121.94289', '39.224614'); -INSERT INTO `base_postage_region` -VALUES (585, 0, 'J', '吉林', '吉林省', 1, 'jilin', '', 1, '125.3245', '43.886841'); -INSERT INTO `base_postage_region` -VALUES (586, 585, 'C', '长春', '长春市', 2, 'changchun', '130022', 1, '125.3245', '43.886841'); -INSERT INTO `base_postage_region` -VALUES (587, 586, 'N', '南关', '南关区', 3, 'nanguan', '130022', 1, '125.35035', '43.86401'); -INSERT INTO `base_postage_region` -VALUES (588, 586, 'K', '宽城', '宽城区', 3, 'kuancheng', '130051', 1, '125.32635', '43.90182'); -INSERT INTO `base_postage_region` -VALUES (589, 586, 'C', '朝阳', '朝阳区', 3, 'chaoyang', '130012', 1, '125.2883', '43.83339'); -INSERT INTO `base_postage_region` -VALUES (590, 586, 'E', '二道', '二道区', 3, 'erdao', '130031', 1, '125.37429', '43.86501'); -INSERT INTO `base_postage_region` -VALUES (591, 586, 'L', '绿园', '绿园区', 3, 'lvyuan', '130062', 1, '125.25582', '43.88045'); -INSERT INTO `base_postage_region` -VALUES (592, 586, 'S', '双阳', '双阳区', 3, 'shuangyang', '130600', 1, '125.65631', '43.52803'); -INSERT INTO `base_postage_region` -VALUES (593, 586, 'J', '九台', '九台区', 3, 'jiutai', '130500', 1, '125.8395', '44.15163'); -INSERT INTO `base_postage_region` -VALUES (594, 586, 'N', '农安', '农安县', 3, 'nongan', '130200', 1, '125.18481', '44.43265'); -INSERT INTO `base_postage_region` -VALUES (595, 586, 'Y', '榆树', '榆树市', 3, 'yushu', '130400', 1, '126.55688', '44.82523'); -INSERT INTO `base_postage_region` -VALUES (596, 586, 'D', '德惠', '德惠市', 3, 'dehui', '130300', 1, '125.70538', '44.53719'); -INSERT INTO `base_postage_region` -VALUES (597, 585, 'J', '吉林', '吉林市', 2, 'jilin', '132011', 1, '126.55302', '43.843577'); -INSERT INTO `base_postage_region` -VALUES (598, 597, 'C', '昌邑', '昌邑区', 3, 'changyi', '132002', 1, '126.57424', '43.88183'); -INSERT INTO `base_postage_region` -VALUES (599, 597, 'L', '龙潭', '龙潭区', 3, 'longtan', '132021', 1, '126.56213', '43.91054'); -INSERT INTO `base_postage_region` -VALUES (600, 597, 'C', '船营', '船营区', 3, 'chuanying', '132011', 1, '126.54096', '43.83344'); -INSERT INTO `base_postage_region` -VALUES (601, 597, 'F', '丰满', '丰满区', 3, 'fengman', '132013', 1, '126.56237', '43.82236'); -INSERT INTO `base_postage_region` -VALUES (602, 597, 'Y', '永吉', '永吉县', 3, 'yongji', '132200', 1, '126.4963', '43.67197'); -INSERT INTO `base_postage_region` -VALUES (603, 597, NULL, '蛟河', '蛟河市', 3, 'jiaohe', '132500', 1, '127.34426', '43.72696'); -INSERT INTO `base_postage_region` -VALUES (604, 597, NULL, '桦甸', '桦甸市', 3, 'huadian', '132400', 1, '126.74624', '42.97206'); -INSERT INTO `base_postage_region` -VALUES (605, 597, 'S', '舒兰', '舒兰市', 3, 'shulan', '132600', 1, '126.9653', '44.40582'); -INSERT INTO `base_postage_region` -VALUES (606, 597, 'P', '磐石', '磐石市', 3, 'panshi', '132300', 1, '126.0625', '42.94628'); -INSERT INTO `base_postage_region` -VALUES (607, 585, 'S', '四平', '四平市', 2, 'siping', '136000', 1, '124.370785', '43.170344'); -INSERT INTO `base_postage_region` -VALUES (608, 607, 'T', '铁西', '铁西区', 3, 'tiexi', '136000', 1, '124.37369', '43.17456'); -INSERT INTO `base_postage_region` -VALUES (609, 607, 'T', '铁东', '铁东区', 3, 'tiedong', '136001', 1, '124.40976', '43.16241'); -INSERT INTO `base_postage_region` -VALUES (610, 607, 'L', '梨树', '梨树县', 3, 'lishu', '136500', 1, '124.33563', '43.30717'); -INSERT INTO `base_postage_region` -VALUES (611, 607, 'Y', '伊通', '伊通满族自治县', 3, 'yitong', '130700', 1, '125.30596', '43.34434'); -INSERT INTO `base_postage_region` -VALUES (612, 607, 'G', '公主岭', '公主岭市', 3, 'gongzhuling', '136100', 1, '124.82266', '43.50453'); -INSERT INTO `base_postage_region` -VALUES (613, 607, 'S', '双辽', '双辽市', 3, 'shuangliao', '136400', 1, '123.50106', '43.52099'); -INSERT INTO `base_postage_region` -VALUES (614, 585, 'L', '辽源', '辽源市', 2, 'liaoyuan', '136200', 1, '125.145349', '42.902692'); -INSERT INTO `base_postage_region` -VALUES (615, 614, 'L', '龙山', '龙山区', 3, 'longshan', '136200', 1, '125.13641', '42.89714'); -INSERT INTO `base_postage_region` -VALUES (616, 614, 'X', '西安', '西安区', 3, 'xian', '136201', 1, '125.14904', '42.927'); -INSERT INTO `base_postage_region` -VALUES (617, 614, 'D', '东丰', '东丰县', 3, 'dongfeng', '136300', 1, '125.53244', '42.6783'); -INSERT INTO `base_postage_region` -VALUES (618, 614, 'D', '东辽', '东辽县', 3, 'dongliao', '136600', 1, '124.98596', '42.92492'); -INSERT INTO `base_postage_region` -VALUES (619, 585, 'T', '通化', '通化市', 2, 'tonghua', '134001', 1, '125.936501', '41.721177'); -INSERT INTO `base_postage_region` -VALUES (620, 619, 'D', '东昌', '东昌区', 3, 'dongchang', '134001', 1, '125.9551', '41.72849'); -INSERT INTO `base_postage_region` -VALUES (621, 619, 'E', '二道江', '二道江区', 3, 'erdaojiang', '134003', 1, '126.04257', '41.7741'); -INSERT INTO `base_postage_region` -VALUES (622, 619, 'T', '通化', '通化县', 3, 'tonghua', '134100', 1, '125.75936', '41.67928'); -INSERT INTO `base_postage_region` -VALUES (623, 619, 'H', '辉南', '辉南县', 3, 'huinan', '135100', 1, '126.04684', '42.68497'); -INSERT INTO `base_postage_region` -VALUES (624, 619, 'L', '柳河', '柳河县', 3, 'liuhe', '135300', 1, '125.74475', '42.28468'); -INSERT INTO `base_postage_region` -VALUES (625, 619, 'M', '梅河口', '梅河口市', 3, 'meihekou', '135000', 1, '125.71041', '42.53828'); -INSERT INTO `base_postage_region` -VALUES (626, 619, 'J', '集安', '集安市', 3, 'jian', '134200', 1, '126.18829', '41.12268'); -INSERT INTO `base_postage_region` -VALUES (627, 585, 'B', '白山', '白山市', 2, 'baishan', '134300', 1, '126.427839', '41.942505'); -INSERT INTO `base_postage_region` -VALUES (628, 627, 'H', '浑江', '浑江区', 3, 'hunjiang', '134300', 1, '126.422342', '41.945656'); -INSERT INTO `base_postage_region` -VALUES (629, 627, 'J', '江源', '江源区', 3, 'jiangyuan', '134700', 1, '126.59079', '42.05664'); -INSERT INTO `base_postage_region` -VALUES (630, 627, 'F', '抚松', '抚松县', 3, 'fusong', '134500', 1, '127.2803', '42.34198'); -INSERT INTO `base_postage_region` -VALUES (631, 627, 'J', '靖宇', '靖宇县', 3, 'jingyu', '135200', 1, '126.81308', '42.38863'); -INSERT INTO `base_postage_region` -VALUES (632, 627, 'C', '长白', '长白朝鲜族自治县', 3, 'changbai', '134400', 1, '128.20047', '41.41996'); -INSERT INTO `base_postage_region` -VALUES (633, 627, 'L', '临江', '临江市', 3, 'linjiang', '134600', 1, '126.91751', '41.81142'); -INSERT INTO `base_postage_region` -VALUES (634, 585, 'S', '松原', '松原市', 2, 'songyuan', '138000', 1, '124.823608', '45.118243'); -INSERT INTO `base_postage_region` -VALUES (635, 634, 'N', '宁江', '宁江区', 3, 'ningjiang', '138000', 1, '124.81689', '45.17175'); -INSERT INTO `base_postage_region` -VALUES (636, 634, 'Q', '前郭尔罗斯', '前郭尔罗斯蒙古族自治县', 3, 'qianguoerluosi', '138000', 1, '124.82351', '45.11726'); -INSERT INTO `base_postage_region` -VALUES (637, 634, 'C', '长岭', '长岭县', 3, 'changling', '131500', 1, '123.96725', '44.27581'); -INSERT INTO `base_postage_region` -VALUES (638, 634, 'Q', '乾安', '乾安县', 3, 'qianan', '131400', 1, '124.02737', '45.01068'); -INSERT INTO `base_postage_region` -VALUES (639, 634, 'F', '扶余', '扶余市', 3, 'fuyu', '131200', 1, '126.042758', '44.986199'); -INSERT INTO `base_postage_region` -VALUES (640, 585, 'B', '白城', '白城市', 2, 'baicheng', '137000', 1, '122.841114', '45.619026'); -INSERT INTO `base_postage_region` -VALUES (641, 640, NULL, '洮北', '洮北区', 3, 'taobei', '137000', 1, '122.85104', '45.62167'); -INSERT INTO `base_postage_region` -VALUES (642, 640, 'Z', '镇赉', '镇赉县', 3, 'zhenlai', '137300', 1, '123.19924', '45.84779'); -INSERT INTO `base_postage_region` -VALUES (643, 640, 'T', '通榆', '通榆县', 3, 'tongyu', '137200', 1, '123.08761', '44.81388'); -INSERT INTO `base_postage_region` -VALUES (644, 640, NULL, '洮南', '洮南市', 3, 'taonan', '137100', 1, '122.78772', '45.33502'); -INSERT INTO `base_postage_region` -VALUES (645, 640, 'D', '大安', '大安市', 3, 'daan', '131300', 1, '124.29519', '45.50846'); -INSERT INTO `base_postage_region` -VALUES (646, 585, 'Y', '延边', '延边朝鲜族自治州', 2, 'yanbian', '133000', 1, '129.513228', '42.904823'); -INSERT INTO `base_postage_region` -VALUES (647, 646, 'Y', '延吉', '延吉市', 3, 'yanji', '133000', 1, '129.51357', '42.90682'); -INSERT INTO `base_postage_region` -VALUES (648, 646, 'T', '图们', '图们市', 3, 'tumen', '133100', 1, '129.84381', '42.96801'); -INSERT INTO `base_postage_region` -VALUES (649, 646, 'D', '敦化', '敦化市', 3, 'dunhua', '133700', 1, '128.23242', '43.37304'); -INSERT INTO `base_postage_region` -VALUES (650, 646, NULL, '珲春', '珲春市', 3, 'hunchun', '133300', 1, '130.36572', '42.86242'); -INSERT INTO `base_postage_region` -VALUES (651, 646, 'L', '龙井', '龙井市', 3, 'longjing', '133400', 1, '129.42584', '42.76804'); -INSERT INTO `base_postage_region` -VALUES (652, 646, 'H', '和龙', '和龙市', 3, 'helong', '133500', 1, '129.01077', '42.5464'); -INSERT INTO `base_postage_region` -VALUES (653, 646, 'W', '汪清', '汪清县', 3, 'wangqing', '133200', 1, '129.77121', '43.31278'); -INSERT INTO `base_postage_region` -VALUES (654, 646, 'A', '安图', '安图县', 3, 'antu', '133600', 1, '128.90625', '43.11533'); -INSERT INTO `base_postage_region` -VALUES (655, 0, 'H', '黑龙江', '黑龙江省', 1, 'heilongjiang', '', 1, '126.642464', '45.756967'); -INSERT INTO `base_postage_region` -VALUES (656, 655, 'H', '哈尔滨', '哈尔滨市', 2, 'harbin', '150010', 1, '126.642464', '45.756967'); -INSERT INTO `base_postage_region` -VALUES (657, 656, 'D', '道里', '道里区', 3, 'daoli', '150010', 1, '126.61705', '45.75586'); -INSERT INTO `base_postage_region` -VALUES (658, 656, 'N', '南岗', '南岗区', 3, 'nangang', '150006', 1, '126.66854', '45.75996'); -INSERT INTO `base_postage_region` -VALUES (659, 656, 'D', '道外', '道外区', 3, 'daowai', '150020', 1, '126.64938', '45.79187'); -INSERT INTO `base_postage_region` -VALUES (660, 656, 'P', '平房', '平房区', 3, 'pingfang', '150060', 1, '126.63729', '45.59777'); -INSERT INTO `base_postage_region` -VALUES (661, 656, 'S', '松北', '松北区', 3, 'songbei', '150028', 1, '126.56276', '45.80831'); -INSERT INTO `base_postage_region` -VALUES (662, 656, 'X', '香坊', '香坊区', 3, 'xiangfang', '150036', 1, '126.67968', '45.72383'); -INSERT INTO `base_postage_region` -VALUES (663, 656, 'H', '呼兰', '呼兰区', 3, 'hulan', '150500', 1, '126.58792', '45.88895'); -INSERT INTO `base_postage_region` -VALUES (664, 656, 'A', '阿城', '阿城区', 3, 'acheng', '150300', 1, '126.97525', '45.54144'); -INSERT INTO `base_postage_region` -VALUES (665, 656, 'S', '双城', '双城区', 3, 'shuangcheng', '150100', 1, '126.308784', '45.377942'); -INSERT INTO `base_postage_region` -VALUES (666, 656, 'Y', '依兰', '依兰县', 3, 'yilan', '154800', 1, '129.56817', '46.3247'); -INSERT INTO `base_postage_region` -VALUES (667, 656, 'F', '方正', '方正县', 3, 'fangzheng', '150800', 1, '128.82952', '45.85162'); -INSERT INTO `base_postage_region` -VALUES (668, 656, 'B', '宾县', '宾县', 3, 'binxian', '150400', 1, '127.48675', '45.75504'); -INSERT INTO `base_postage_region` -VALUES (669, 656, 'B', '巴彦', '巴彦县', 3, 'bayan', '151800', 1, '127.40799', '46.08148'); -INSERT INTO `base_postage_region` -VALUES (670, 656, 'M', '木兰', '木兰县', 3, 'mulan', '151900', 1, '128.0448', '45.94944'); -INSERT INTO `base_postage_region` -VALUES (671, 656, 'T', '通河', '通河县', 3, 'tonghe', '150900', 1, '128.74603', '45.99007'); -INSERT INTO `base_postage_region` -VALUES (672, 656, 'Y', '延寿', '延寿县', 3, 'yanshou', '150700', 1, '128.33419', '45.4554'); -INSERT INTO `base_postage_region` -VALUES (673, 656, 'S', '尚志', '尚志市', 3, 'shangzhi', '150600', 1, '127.96191', '45.21736'); -INSERT INTO `base_postage_region` -VALUES (674, 656, 'W', '五常', '五常市', 3, 'wuchang', '150200', 1, '127.16751', '44.93184'); -INSERT INTO `base_postage_region` -VALUES (675, 655, 'Q', '齐齐哈尔', '齐齐哈尔市', 2, 'qiqihar', '161005', 1, '123.953486', '47.348079'); -INSERT INTO `base_postage_region` -VALUES (676, 675, 'L', '龙沙', '龙沙区', 3, 'longsha', '161000', 1, '123.95752', '47.31776'); -INSERT INTO `base_postage_region` -VALUES (677, 675, 'J', '建华', '建华区', 3, 'jianhua', '161006', 1, '124.0133', '47.36718'); -INSERT INTO `base_postage_region` -VALUES (678, 675, 'T', '铁锋', '铁锋区', 3, 'tiefeng', '161000', 1, '123.97821', '47.34075'); -INSERT INTO `base_postage_region` -VALUES (679, 675, 'A', '昂昂溪', '昂昂溪区', 3, 'angangxi', '161031', 1, '123.82229', '47.15513'); -INSERT INTO `base_postage_region` -VALUES (680, 675, 'F', '富拉尔基', '富拉尔基区', 3, 'fulaerji', '161041', 1, '123.62918', '47.20884'); -INSERT INTO `base_postage_region` -VALUES (681, 675, 'N', '碾子山', '碾子山区', 3, 'nianzishan', '161046', 1, '122.88183', '47.51662'); -INSERT INTO `base_postage_region` -VALUES (682, 675, 'M', '梅里斯', '梅里斯达斡尔族区', 3, 'meilisi', '161021', 1, '123.75274', '47.30946'); -INSERT INTO `base_postage_region` -VALUES (683, 675, 'L', '龙江', '龙江县', 3, 'longjiang', '161100', 1, '123.20532', '47.33868'); -INSERT INTO `base_postage_region` -VALUES (684, 675, 'Y', '依安', '依安县', 3, 'yian', '161500', 1, '125.30896', '47.8931'); -INSERT INTO `base_postage_region` -VALUES (685, 675, 'T', '泰来', '泰来县', 3, 'tailai', '162400', 1, '123.42285', '46.39386'); -INSERT INTO `base_postage_region` -VALUES (686, 675, 'G', '甘南', '甘南县', 3, 'gannan', '162100', 1, '123.50317', '47.92437'); -INSERT INTO `base_postage_region` -VALUES (687, 675, 'F', '富裕', '富裕县', 3, 'fuyu', '161200', 1, '124.47457', '47.77431'); -INSERT INTO `base_postage_region` -VALUES (688, 675, 'K', '克山', '克山县', 3, 'keshan', '161600', 1, '125.87396', '48.03265'); -INSERT INTO `base_postage_region` -VALUES (689, 675, 'K', '克东', '克东县', 3, 'kedong', '164800', 1, '126.24917', '48.03828'); -INSERT INTO `base_postage_region` -VALUES (690, 675, 'B', '拜泉', '拜泉县', 3, 'baiquan', '164700', 1, '126.09167', '47.60817'); -INSERT INTO `base_postage_region` -VALUES (691, 675, NULL, '讷河', '讷河市', 3, 'nehe', '161300', 1, '124.87713', '48.48388'); -INSERT INTO `base_postage_region` -VALUES (692, 655, 'J', '鸡西', '鸡西市', 2, 'jixi', '158100', 1, '130.975966', '45.300046'); -INSERT INTO `base_postage_region` -VALUES (693, 692, 'J', '鸡冠', '鸡冠区', 3, 'jiguan', '158100', 1, '130.98139', '45.30396'); -INSERT INTO `base_postage_region` -VALUES (694, 692, 'H', '恒山', '恒山区', 3, 'hengshan', '158130', 1, '130.90493', '45.21071'); -INSERT INTO `base_postage_region` -VALUES (695, 692, 'D', '滴道', '滴道区', 3, 'didao', '158150', 1, '130.84841', '45.35109'); -INSERT INTO `base_postage_region` -VALUES (696, 692, 'L', '梨树', '梨树区', 3, 'lishu', '158160', 1, '130.69848', '45.09037'); -INSERT INTO `base_postage_region` -VALUES (697, 692, 'C', '城子河', '城子河区', 3, 'chengzihe', '158170', 1, '131.01132', '45.33689'); -INSERT INTO `base_postage_region` -VALUES (698, 692, 'M', '麻山', '麻山区', 3, 'mashan', '158180', 1, '130.47811', '45.21209'); -INSERT INTO `base_postage_region` -VALUES (699, 692, 'J', '鸡东', '鸡东县', 3, 'jidong', '158200', 1, '131.12423', '45.26025'); -INSERT INTO `base_postage_region` -VALUES (700, 692, 'H', '虎林', '虎林市', 3, 'hulin', '158400', 1, '132.93679', '45.76291'); -INSERT INTO `base_postage_region` -VALUES (701, 692, 'M', '密山', '密山市', 3, 'mishan', '158300', 1, '131.84625', '45.5297'); -INSERT INTO `base_postage_region` -VALUES (702, 655, 'H', '鹤岗', '鹤岗市', 2, 'hegang', '154100', 1, '130.277487', '47.332085'); -INSERT INTO `base_postage_region` -VALUES (703, 702, 'X', '向阳', '向阳区', 3, 'xiangyang', '154100', 1, '130.2943', '47.34247'); -INSERT INTO `base_postage_region` -VALUES (704, 702, 'G', '工农', '工农区', 3, 'gongnong', '154101', 1, '130.27468', '47.31869'); -INSERT INTO `base_postage_region` -VALUES (705, 702, 'N', '南山', '南山区', 3, 'nanshan', '154104', 1, '130.27676', '47.31404'); -INSERT INTO `base_postage_region` -VALUES (706, 702, 'X', '兴安', '兴安区', 3, 'xingan', '154102', 1, '130.23965', '47.2526'); -INSERT INTO `base_postage_region` -VALUES (707, 702, 'D', '东山', '东山区', 3, 'dongshan', '154106', 1, '130.31706', '47.33853'); -INSERT INTO `base_postage_region` -VALUES (708, 702, 'X', '兴山', '兴山区', 3, 'xingshan', '154105', 1, '130.29271', '47.35776'); -INSERT INTO `base_postage_region` -VALUES (709, 702, 'L', '萝北', '萝北县', 3, 'luobei', '154200', 1, '130.83346', '47.57959'); -INSERT INTO `base_postage_region` -VALUES (710, 702, 'S', '绥滨', '绥滨县', 3, 'suibin', '156200', 1, '131.86029', '47.2903'); -INSERT INTO `base_postage_region` -VALUES (711, 655, 'S', '双鸭山', '双鸭山市', 2, 'shuangyashan', '155100', 1, '131.157304', '46.643442'); -INSERT INTO `base_postage_region` -VALUES (712, 711, 'J', '尖山', '尖山区', 3, 'jianshan', '155100', 1, '131.15841', '46.64635'); -INSERT INTO `base_postage_region` -VALUES (713, 711, 'L', '岭东', '岭东区', 3, 'lingdong', '155120', 1, '131.16473', '46.59043'); -INSERT INTO `base_postage_region` -VALUES (714, 711, 'S', '四方台', '四方台区', 3, 'sifangtai', '155130', 1, '131.33593', '46.59499'); -INSERT INTO `base_postage_region` -VALUES (715, 711, 'B', '宝山', '宝山区', 3, 'baoshan', '155131', 1, '131.4016', '46.57718'); -INSERT INTO `base_postage_region` -VALUES (716, 711, 'J', '集贤', '集贤县', 3, 'jixian', '155900', 1, '131.14053', '46.72678'); -INSERT INTO `base_postage_region` -VALUES (717, 711, 'Y', '友谊', '友谊县', 3, 'youyi', '155800', 1, '131.80789', '46.76739'); -INSERT INTO `base_postage_region` -VALUES (718, 711, 'B', '宝清', '宝清县', 3, 'baoqing', '155600', 1, '132.19695', '46.32716'); -INSERT INTO `base_postage_region` -VALUES (719, 711, 'R', '饶河', '饶河县', 3, 'raohe', '155700', 1, '134.01986', '46.79899'); -INSERT INTO `base_postage_region` -VALUES (720, 655, 'D', '大庆', '大庆市', 2, 'daqing', '163000', 1, '125.11272', '46.590734'); -INSERT INTO `base_postage_region` -VALUES (721, 720, 'S', '萨尔图', '萨尔图区', 3, 'saertu', '163001', 1, '125.08792', '46.59359'); -INSERT INTO `base_postage_region` -VALUES (722, 720, 'L', '龙凤', '龙凤区', 3, 'longfeng', '163711', 1, '125.11657', '46.53273'); -INSERT INTO `base_postage_region` -VALUES (723, 720, 'R', '让胡路', '让胡路区', 3, 'ranghulu', '163712', 1, '124.87075', '46.6522'); -INSERT INTO `base_postage_region` -VALUES (724, 720, 'H', '红岗', '红岗区', 3, 'honggang', '163511', 1, '124.89248', '46.40128'); -INSERT INTO `base_postage_region` -VALUES (725, 720, 'D', '大同', '大同区', 3, 'datong', '163515', 1, '124.81591', '46.03295'); -INSERT INTO `base_postage_region` -VALUES (726, 720, 'Z', '肇州', '肇州县', 3, 'zhaozhou', '166400', 1, '125.27059', '45.70414'); -INSERT INTO `base_postage_region` -VALUES (727, 720, 'Z', '肇源', '肇源县', 3, 'zhaoyuan', '166500', 1, '125.08456', '45.52032'); -INSERT INTO `base_postage_region` -VALUES (728, 720, 'L', '林甸', '林甸县', 3, 'lindian', '166300', 1, '124.87564', '47.18601'); -INSERT INTO `base_postage_region` -VALUES (729, 720, 'D', '杜尔伯特', '杜尔伯特蒙古族自治县', 3, 'duerbote', '166200', 1, '124.44937', '46.86507'); -INSERT INTO `base_postage_region` -VALUES (730, 655, 'Y', '伊春', '伊春市', 2, 'yichun', '153000', 1, '128.899396', '47.724775'); -INSERT INTO `base_postage_region` -VALUES (731, 730, 'Y', '伊春', '伊春区', 3, 'yichun', '153000', 1, '128.90752', '47.728'); -INSERT INTO `base_postage_region` -VALUES (732, 730, 'N', '南岔', '南岔区', 3, 'nancha', '153100', 1, '129.28362', '47.13897'); -INSERT INTO `base_postage_region` -VALUES (733, 730, 'Y', '友好', '友好区', 3, 'youhao', '153031', 1, '128.84039', '47.85371'); -INSERT INTO `base_postage_region` -VALUES (734, 730, 'X', '西林', '西林区', 3, 'xilin', '153025', 1, '129.31201', '47.48103'); -INSERT INTO `base_postage_region` -VALUES (735, 730, 'C', '翠峦', '翠峦区', 3, 'cuiluan', '153013', 1, '128.66729', '47.72503'); -INSERT INTO `base_postage_region` -VALUES (736, 730, 'X', '新青', '新青区', 3, 'xinqing', '153036', 1, '129.53653', '48.29067'); -INSERT INTO `base_postage_region` -VALUES (737, 730, 'M', '美溪', '美溪区', 3, 'meixi', '153021', 1, '129.13708', '47.63513'); -INSERT INTO `base_postage_region` -VALUES (738, 730, 'J', '金山屯', '金山屯区', 3, 'jinshantun', '153026', 1, '129.43768', '47.41349'); -INSERT INTO `base_postage_region` -VALUES (739, 730, 'W', '五营', '五营区', 3, 'wuying', '153033', 1, '129.24545', '48.10791'); -INSERT INTO `base_postage_region` -VALUES (740, 730, 'W', '乌马河', '乌马河区', 3, 'wumahe', '153011', 1, '128.79672', '47.728'); -INSERT INTO `base_postage_region` -VALUES (741, 730, 'T', '汤旺河', '汤旺河区', 3, 'tangwanghe', '153037', 1, '129.57226', '48.45182'); -INSERT INTO `base_postage_region` -VALUES (742, 730, 'D', '带岭', '带岭区', 3, 'dailing', '153106', 1, '129.02352', '47.02553'); -INSERT INTO `base_postage_region` -VALUES (743, 730, 'W', '乌伊岭', '乌伊岭区', 3, 'wuyiling', '153038', 1, '129.43981', '48.59602'); -INSERT INTO `base_postage_region` -VALUES (744, 730, 'H', '红星', '红星区', 3, 'hongxing', '153035', 1, '129.3887', '48.23944'); -INSERT INTO `base_postage_region` -VALUES (745, 730, 'S', '上甘岭', '上甘岭区', 3, 'shangganling', '153032', 1, '129.02447', '47.97522'); -INSERT INTO `base_postage_region` -VALUES (746, 730, 'J', '嘉荫', '嘉荫县', 3, 'jiayin', '153200', 1, '130.39825', '48.8917'); -INSERT INTO `base_postage_region` -VALUES (747, 730, 'T', '铁力', '铁力市', 3, 'tieli', '152500', 1, '128.0317', '46.98571'); -INSERT INTO `base_postage_region` -VALUES (748, 655, 'J', '佳木斯', '佳木斯市', 2, 'jiamusi', '154002', 1, '130.361634', '46.809606'); -INSERT INTO `base_postage_region` -VALUES (749, 748, 'X', '向阳', '向阳区', 3, 'xiangyang', '154002', 1, '130.36519', '46.80778'); -INSERT INTO `base_postage_region` -VALUES (750, 748, 'Q', '前进', '前进区', 3, 'qianjin', '154002', 1, '130.37497', '46.81401'); -INSERT INTO `base_postage_region` -VALUES (751, 748, 'D', '东风', '东风区', 3, 'dongfeng', '154005', 1, '130.40366', '46.82257'); -INSERT INTO `base_postage_region` -VALUES (752, 748, 'J', '郊区', '郊区', 3, 'jiaoqu', '154004', 1, '130.32731', '46.80958'); -INSERT INTO `base_postage_region` -VALUES (753, 748, NULL, '桦南', '桦南县', 3, 'huanan', '154400', 1, '130.55361', '46.23921'); -INSERT INTO `base_postage_region` -VALUES (754, 748, NULL, '桦川', '桦川县', 3, 'huachuan', '154300', 1, '130.71893', '47.02297'); -INSERT INTO `base_postage_region` -VALUES (755, 748, 'T', '汤原', '汤原县', 3, 'tangyuan', '154700', 1, '129.90966', '46.72755'); -INSERT INTO `base_postage_region` -VALUES (756, 748, 'F', '抚远', '抚远县', 3, 'fuyuan', '156500', 1, '134.29595', '48.36794'); -INSERT INTO `base_postage_region` -VALUES (757, 748, 'T', '同江', '同江市', 3, 'tongjiang', '156400', 1, '132.51095', '47.64211'); -INSERT INTO `base_postage_region` -VALUES (758, 748, 'F', '富锦', '富锦市', 3, 'fujin', '156100', 1, '132.03707', '47.25132'); -INSERT INTO `base_postage_region` -VALUES (759, 655, 'Q', '七台河', '七台河市', 2, 'qitaihe', '154600', 1, '131.015584', '45.771266'); -INSERT INTO `base_postage_region` -VALUES (760, 759, 'X', '新兴', '新兴区', 3, 'xinxing', '154604', 1, '130.93212', '45.81624'); -INSERT INTO `base_postage_region` -VALUES (761, 759, 'T', '桃山', '桃山区', 3, 'taoshan', '154600', 1, '131.01786', '45.76782'); -INSERT INTO `base_postage_region` -VALUES (762, 759, 'Q', '茄子河', '茄子河区', 3, 'qiezihe', '154622', 1, '131.06807', '45.78519'); -INSERT INTO `base_postage_region` -VALUES (763, 759, 'B', '勃利', '勃利县', 3, 'boli', '154500', 1, '130.59179', '45.755'); -INSERT INTO `base_postage_region` -VALUES (764, 655, 'M', '牡丹江', '牡丹江市', 2, 'mudanjiang', '157000', 1, '129.618602', '44.582962'); -INSERT INTO `base_postage_region` -VALUES (765, 764, 'D', '东安', '东安区', 3, 'dongan', '157000', 1, '129.62665', '44.58133'); -INSERT INTO `base_postage_region` -VALUES (766, 764, 'Y', '阳明', '阳明区', 3, 'yangming', '157013', 1, '129.63547', '44.59603'); -INSERT INTO `base_postage_region` -VALUES (767, 764, 'A', '爱民', '爱民区', 3, 'aimin', '157009', 1, '129.59077', '44.59648'); -INSERT INTO `base_postage_region` -VALUES (768, 764, 'X', '西安', '西安区', 3, 'xian', '157000', 1, '129.61616', '44.57766'); -INSERT INTO `base_postage_region` -VALUES (769, 764, 'D', '东宁', '东宁县', 3, 'dongning', '157200', 1, '131.12793', '44.0661'); -INSERT INTO `base_postage_region` -VALUES (770, 764, 'L', '林口', '林口县', 3, 'linkou', '157600', 1, '130.28393', '45.27809'); -INSERT INTO `base_postage_region` -VALUES (771, 764, 'S', '绥芬河', '绥芬河市', 3, 'suifenhe', '157300', 1, '131.15139', '44.41249'); -INSERT INTO `base_postage_region` -VALUES (772, 764, 'H', '海林', '海林市', 3, 'hailin', '157100', 1, '129.38156', '44.59'); -INSERT INTO `base_postage_region` -VALUES (773, 764, 'N', '宁安', '宁安市', 3, 'ningan', '157400', 1, '129.48303', '44.34016'); -INSERT INTO `base_postage_region` -VALUES (774, 764, 'M', '穆棱', '穆棱市', 3, 'muling', '157500', 1, '130.52465', '44.919'); -INSERT INTO `base_postage_region` -VALUES (775, 655, 'H', '黑河', '黑河市', 2, 'heihe', '164300', 1, '127.499023', '50.249585'); -INSERT INTO `base_postage_region` -VALUES (776, 775, 'A', '爱辉', '爱辉区', 3, 'aihui', '164300', 1, '127.50074', '50.25202'); -INSERT INTO `base_postage_region` -VALUES (777, 775, 'N', '嫩江', '嫩江县', 3, 'nenjiang', '161400', 1, '125.22607', '49.17844'); -INSERT INTO `base_postage_region` -VALUES (778, 775, 'X', '逊克', '逊克县', 3, 'xunke', '164400', 1, '128.47882', '49.57983'); -INSERT INTO `base_postage_region` -VALUES (779, 775, 'S', '孙吴', '孙吴县', 3, 'sunwu', '164200', 1, '127.33599', '49.42539'); -INSERT INTO `base_postage_region` -VALUES (780, 775, 'B', '北安', '北安市', 3, 'beian', '164000', 1, '126.48193', '48.23872'); -INSERT INTO `base_postage_region` -VALUES (781, 775, 'W', '五大连池', '五大连池市', 3, 'wudalianchi', '164100', 1, '126.20294', '48.51507'); -INSERT INTO `base_postage_region` -VALUES (782, 655, 'S', '绥化', '绥化市', 2, 'suihua', '152000', 1, '126.99293', '46.637393'); -INSERT INTO `base_postage_region` -VALUES (783, 782, 'B', '北林', '北林区', 3, 'beilin', '152000', 1, '126.98564', '46.63735'); -INSERT INTO `base_postage_region` -VALUES (784, 782, 'W', '望奎', '望奎县', 3, 'wangkui', '152100', 1, '126.48187', '46.83079'); -INSERT INTO `base_postage_region` -VALUES (785, 782, 'L', '兰西', '兰西县', 3, 'lanxi', '151500', 1, '126.28994', '46.2525'); -INSERT INTO `base_postage_region` -VALUES (786, 782, 'Q', '青冈', '青冈县', 3, 'qinggang', '151600', 1, '126.11325', '46.68534'); -INSERT INTO `base_postage_region` -VALUES (787, 782, 'Q', '庆安', '庆安县', 3, 'qingan', '152400', 1, '127.50753', '46.88016'); -INSERT INTO `base_postage_region` -VALUES (788, 782, 'M', '明水', '明水县', 3, 'mingshui', '151700', 1, '125.90594', '47.17327'); -INSERT INTO `base_postage_region` -VALUES (789, 782, 'S', '绥棱', '绥棱县', 3, 'suileng', '152200', 1, '127.11584', '47.24267'); -INSERT INTO `base_postage_region` -VALUES (790, 782, 'A', '安达', '安达市', 3, 'anda', '151400', 1, '125.34375', '46.4177'); -INSERT INTO `base_postage_region` -VALUES (791, 782, 'Z', '肇东', '肇东市', 3, 'zhaodong', '151100', 1, '125.96243', '46.05131'); -INSERT INTO `base_postage_region` -VALUES (792, 782, 'H', '海伦', '海伦市', 3, 'hailun', '152300', 1, '126.9682', '47.46093'); -INSERT INTO `base_postage_region` -VALUES (793, 655, 'D', '大兴安岭', '大兴安岭地区', 2, 'daxinganling', '165000', 1, '124.711526', '52.335262'); -INSERT INTO `base_postage_region` -VALUES (794, 793, 'J', '加格达奇', '加格达奇区', 3, 'jiagedaqi', '165000', 1, '124.30954', '51.98144'); -INSERT INTO `base_postage_region` -VALUES (795, 793, 'X', '新林', '新林区', 3, 'xinlin', '165000', 1, '124.397983', '51.67341'); -INSERT INTO `base_postage_region` -VALUES (796, 793, 'S', '松岭', '松岭区', 3, 'songling', '165000', 1, '124.189713', '51.985453'); -INSERT INTO `base_postage_region` -VALUES (797, 793, 'H', '呼中', '呼中区', 3, 'huzhong', '165000', 1, '123.60009', '52.03346'); -INSERT INTO `base_postage_region` -VALUES (798, 793, 'H', '呼玛', '呼玛县', 3, 'huma', '165100', 1, '126.66174', '51.73112'); -INSERT INTO `base_postage_region` -VALUES (799, 793, 'T', '塔河', '塔河县', 3, 'tahe', '165200', 1, '124.70999', '52.33431'); -INSERT INTO `base_postage_region` -VALUES (800, 793, 'M', '漠河', '漠河县', 3, 'mohe', '165300', 1, '122.53759', '52.97003'); -INSERT INTO `base_postage_region` -VALUES (801, 0, 'S', '上海', '上海市', 1, 'shanghai', '', 1, '121.472644', '31.231706'); -INSERT INTO `base_postage_region` -VALUES (802, 801, 'S', '上海', '上海市', 2, 'shanghai', '200000', 1, '121.472644', '31.231706'); -INSERT INTO `base_postage_region` -VALUES (803, 802, 'H', '黄浦', '黄浦区', 3, 'huangpu', '200001', 1, '121.49295', '31.22337'); -INSERT INTO `base_postage_region` -VALUES (804, 802, 'X', '徐汇', '徐汇区', 3, 'xuhui', '200030', 1, '121.43676', '31.18831'); -INSERT INTO `base_postage_region` -VALUES (805, 802, 'C', '长宁', '长宁区', 3, 'changning', '200050', 1, '121.42462', '31.22036'); -INSERT INTO `base_postage_region` -VALUES (806, 802, 'J', '静安', '静安区', 3, 'jingan', '200040', 1, '121.4444', '31.22884'); -INSERT INTO `base_postage_region` -VALUES (807, 802, 'P', '普陀', '普陀区', 3, 'putuo', '200333', 1, '121.39703', '31.24951'); -INSERT INTO `base_postage_region` -VALUES (808, 802, 'Z', '闸北', '闸北区', 3, 'zhabei', '200070', 1, '121.44636', '31.28075'); -INSERT INTO `base_postage_region` -VALUES (809, 802, 'H', '虹口', '虹口区', 3, 'hongkou', '200086', 1, '121.48162', '31.27788'); -INSERT INTO `base_postage_region` -VALUES (810, 802, 'Y', '杨浦', '杨浦区', 3, 'yangpu', '200082', 1, '121.526', '31.2595'); -INSERT INTO `base_postage_region` -VALUES (811, 802, NULL, '闵行', '闵行区', 3, 'minhang', '201100', 1, '121.38162', '31.11246'); -INSERT INTO `base_postage_region` -VALUES (812, 802, 'B', '宝山', '宝山区', 3, 'baoshan', '201900', 1, '121.4891', '31.4045'); -INSERT INTO `base_postage_region` -VALUES (813, 802, 'J', '嘉定', '嘉定区', 3, 'jiading', '201800', 1, '121.2655', '31.37473'); -INSERT INTO `base_postage_region` -VALUES (814, 802, 'P', '浦东', '浦东新区', 3, 'pudong', '200135', 1, '121.5447', '31.22249'); -INSERT INTO `base_postage_region` -VALUES (815, 802, 'J', '金山', '金山区', 3, 'jinshan', '200540', 1, '121.34164', '30.74163'); -INSERT INTO `base_postage_region` -VALUES (816, 802, 'S', '松江', '松江区', 3, 'songjiang', '201600', 1, '121.22879', '31.03222'); -INSERT INTO `base_postage_region` -VALUES (817, 802, 'Q', '青浦', '青浦区', 3, 'qingpu', '201700', 1, '121.12417', '31.14974'); -INSERT INTO `base_postage_region` -VALUES (818, 802, 'F', '奉贤', '奉贤区', 3, 'fengxian', '201400', 1, '121.47412', '30.9179'); -INSERT INTO `base_postage_region` -VALUES (819, 802, 'C', '崇明', '崇明县', 3, 'chongming', '202150', 1, '121.39758', '31.62278'); -INSERT INTO `base_postage_region` -VALUES (820, 0, 'J', '江苏', '江苏省', 1, 'jiangsu', '', 1, '118.767413', '32.041544'); -INSERT INTO `base_postage_region` -VALUES (821, 820, 'N', '南京', '南京市', 2, 'nanjing', '210008', 1, '118.767413', '32.041544'); -INSERT INTO `base_postage_region` -VALUES (822, 821, 'X', '玄武', '玄武区', 3, 'xuanwu', '210018', 1, '118.79772', '32.04856'); -INSERT INTO `base_postage_region` -VALUES (823, 821, 'Q', '秦淮', '秦淮区', 3, 'qinhuai', '210001', 1, '118.79815', '32.01112'); -INSERT INTO `base_postage_region` -VALUES (824, 821, 'J', '建邺', '建邺区', 3, 'jianye', '210004', 1, '118.76641', '32.03096'); -INSERT INTO `base_postage_region` -VALUES (825, 821, 'G', '鼓楼', '鼓楼区', 3, 'gulou', '210009', 1, '118.76974', '32.06632'); -INSERT INTO `base_postage_region` -VALUES (826, 821, 'P', '浦口', '浦口区', 3, 'pukou', '211800', 1, '118.62802', '32.05881'); -INSERT INTO `base_postage_region` -VALUES (827, 821, 'Q', '栖霞', '栖霞区', 3, 'qixia', '210046', 1, '118.88064', '32.11352'); -INSERT INTO `base_postage_region` -VALUES (828, 821, 'Y', '雨花台', '雨花台区', 3, 'yuhuatai', '210012', 1, '118.7799', '31.99202'); -INSERT INTO `base_postage_region` -VALUES (829, 821, 'J', '江宁', '江宁区', 3, 'jiangning', '211100', 1, '118.8399', '31.95263'); -INSERT INTO `base_postage_region` -VALUES (830, 821, 'L', '六合', '六合区', 3, 'luhe', '211500', 1, '118.8413', '32.34222'); -INSERT INTO `base_postage_region` -VALUES (831, 821, NULL, '溧水', '溧水区', 3, 'lishui', '211200', 1, '119.028732', '31.653061'); -INSERT INTO `base_postage_region` -VALUES (832, 821, 'G', '高淳', '高淳区', 3, 'gaochun', '211300', 1, '118.87589', '31.327132'); -INSERT INTO `base_postage_region` -VALUES (833, 820, 'W', '无锡', '无锡市', 2, 'wuxi', '214000', 1, '120.301663', '31.574729'); -INSERT INTO `base_postage_region` -VALUES (834, 833, 'C', '崇安', '崇安区', 3, 'chongan', '214001', 1, '120.29975', '31.58002'); -INSERT INTO `base_postage_region` -VALUES (835, 833, 'N', '南长', '南长区', 3, 'nanchang', '214021', 1, '120.30873', '31.56359'); -INSERT INTO `base_postage_region` -VALUES (836, 833, 'B', '北塘', '北塘区', 3, 'beitang', '214044', 1, '120.29405', '31.60592'); -INSERT INTO `base_postage_region` -VALUES (837, 833, 'X', '锡山', '锡山区', 3, 'xishan', '214101', 1, '120.35699', '31.5886'); -INSERT INTO `base_postage_region` -VALUES (838, 833, 'H', '惠山', '惠山区', 3, 'huishan', '214174', 1, '120.29849', '31.68088'); -INSERT INTO `base_postage_region` -VALUES (839, 833, 'B', '滨湖', '滨湖区', 3, 'binhu', '214123', 1, '120.29461', '31.52162'); -INSERT INTO `base_postage_region` -VALUES (840, 833, 'J', '江阴', '江阴市', 3, 'jiangyin', '214431', 1, '120.2853', '31.91996'); -INSERT INTO `base_postage_region` -VALUES (841, 833, 'Y', '宜兴', '宜兴市', 3, 'yixing', '214200', 1, '119.82357', '31.33978'); -INSERT INTO `base_postage_region` -VALUES (842, 820, 'X', '徐州', '徐州市', 2, 'xuzhou', '221003', 1, '117.184811', '34.261792'); -INSERT INTO `base_postage_region` -VALUES (843, 842, 'G', '鼓楼', '鼓楼区', 3, 'gulou', '221005', 1, '117.18559', '34.28851'); -INSERT INTO `base_postage_region` -VALUES (844, 842, 'Y', '云龙', '云龙区', 3, 'yunlong', '221007', 1, '117.23053', '34.24895'); -INSERT INTO `base_postage_region` -VALUES (845, 842, 'J', '贾汪', '贾汪区', 3, 'jiawang', '221003', 1, '117.45346', '34.44264'); -INSERT INTO `base_postage_region` -VALUES (846, 842, 'Q', '泉山', '泉山区', 3, 'quanshan', '221006', 1, '117.19378', '34.24418'); -INSERT INTO `base_postage_region` -VALUES (847, 842, 'T', '铜山', '铜山区', 3, 'tongshan', '221106', 1, '117.183894', '34.19288'); -INSERT INTO `base_postage_region` -VALUES (848, 842, 'F', '丰县', '丰县', 3, 'fengxian', '221700', 1, '116.59957', '34.69972'); -INSERT INTO `base_postage_region` -VALUES (849, 842, 'P', '沛县', '沛县', 3, 'peixian', '221600', 1, '116.93743', '34.72163'); -INSERT INTO `base_postage_region` -VALUES (850, 842, NULL, '睢宁', '睢宁县', 3, 'suining', '221200', 1, '117.94104', '33.91269'); -INSERT INTO `base_postage_region` -VALUES (851, 842, 'X', '新沂', '新沂市', 3, 'xinyi', '221400', 1, '118.35452', '34.36942'); -INSERT INTO `base_postage_region` -VALUES (852, 842, NULL, '邳州', '邳州市', 3, 'pizhou', '221300', 1, '117.95858', '34.33329'); -INSERT INTO `base_postage_region` -VALUES (853, 820, 'C', '常州', '常州市', 2, 'changzhou', '213000', 1, '119.946973', '31.772752'); -INSERT INTO `base_postage_region` -VALUES (854, 853, 'T', '天宁', '天宁区', 3, 'tianning', '213000', 1, '119.95132', '31.75211'); -INSERT INTO `base_postage_region` -VALUES (855, 853, 'Z', '钟楼', '钟楼区', 3, 'zhonglou', '213023', 1, '119.90178', '31.80221'); -INSERT INTO `base_postage_region` -VALUES (856, 853, 'Q', '戚墅堰', '戚墅堰区', 3, 'qishuyan', '213025', 1, '120.06106', '31.71956'); -INSERT INTO `base_postage_region` -VALUES (857, 853, 'X', '新北', '新北区', 3, 'xinbei', '213022', 1, '119.97131', '31.83046'); -INSERT INTO `base_postage_region` -VALUES (858, 853, 'W', '武进', '武进区', 3, 'wujin', '213100', 1, '119.94244', '31.70086'); -INSERT INTO `base_postage_region` -VALUES (859, 853, NULL, '溧阳', '溧阳市', 3, 'liyang', '213300', 1, '119.4837', '31.41538'); -INSERT INTO `base_postage_region` -VALUES (860, 853, 'J', '金坛', '金坛市', 3, 'jintan', '213200', 1, '119.57757', '31.74043'); -INSERT INTO `base_postage_region` -VALUES (861, 820, 'S', '苏州', '苏州市', 2, 'suzhou', '215002', 1, '120.619585', '31.299379'); -INSERT INTO `base_postage_region` -VALUES (862, 861, 'H', '虎丘', '虎丘区', 3, 'huqiu', '215004', 1, '120.57345', '31.2953'); -INSERT INTO `base_postage_region` -VALUES (863, 861, 'W', '吴中', '吴中区', 3, 'wuzhong', '215128', 1, '120.63211', '31.26226'); -INSERT INTO `base_postage_region` -VALUES (864, 861, 'X', '相城', '相城区', 3, 'xiangcheng', '215131', 1, '120.64239', '31.36889'); -INSERT INTO `base_postage_region` -VALUES (865, 861, 'G', '姑苏', '姑苏区', 3, 'gusu', '215031', 1, '120.619585', '31.299379'); -INSERT INTO `base_postage_region` -VALUES (866, 861, 'W', '吴江', '吴江区', 3, 'wujiang', '215200', 1, '120.638317', '31.159815'); -INSERT INTO `base_postage_region` -VALUES (867, 861, 'C', '常熟', '常熟市', 3, 'changshu', '215500', 1, '120.75225', '31.65374'); -INSERT INTO `base_postage_region` -VALUES (868, 861, 'Z', '张家港', '张家港市', 3, 'zhangjiagang', '215600', 1, '120.55538', '31.87532'); -INSERT INTO `base_postage_region` -VALUES (869, 861, 'K', '昆山', '昆山市', 3, 'kunshan', '215300', 1, '120.98074', '31.38464'); -INSERT INTO `base_postage_region` -VALUES (870, 861, 'T', '太仓', '太仓市', 3, 'taicang', '215400', 1, '121.10891', '31.4497'); -INSERT INTO `base_postage_region` -VALUES (871, 820, 'N', '南通', '南通市', 2, 'nantong', '226001', 1, '120.864608', '32.016212'); -INSERT INTO `base_postage_region` -VALUES (872, 871, 'C', '崇川', '崇川区', 3, 'chongchuan', '226001', 1, '120.8573', '32.0098'); -INSERT INTO `base_postage_region` -VALUES (873, 871, 'G', '港闸', '港闸区', 3, 'gangzha', '226001', 1, '120.81778', '32.03163'); -INSERT INTO `base_postage_region` -VALUES (874, 871, 'T', '通州', '通州区', 3, 'tongzhou', '226300', 1, '121.07293', '32.0676'); -INSERT INTO `base_postage_region` -VALUES (875, 871, 'H', '海安', '海安县', 3, 'haian', '226600', 1, '120.45852', '32.54514'); -INSERT INTO `base_postage_region` -VALUES (876, 871, 'R', '如东', '如东县', 3, 'rudong', '226400', 1, '121.18942', '32.31439'); -INSERT INTO `base_postage_region` -VALUES (877, 871, 'Q', '启东', '启东市', 3, 'qidong', '226200', 1, '121.65985', '31.81083'); -INSERT INTO `base_postage_region` -VALUES (878, 871, 'R', '如皋', '如皋市', 3, 'rugao', '226500', 1, '120.55969', '32.37597'); -INSERT INTO `base_postage_region` -VALUES (879, 871, 'H', '海门', '海门市', 3, 'haimen', '226100', 1, '121.16995', '31.89422'); -INSERT INTO `base_postage_region` -VALUES (880, 820, 'L', '连云港', '连云港市', 2, 'lianyungang', '222002', 1, '119.178821', '34.600018'); -INSERT INTO `base_postage_region` -VALUES (881, 880, 'L', '连云', '连云区', 3, 'lianyun', '222042', 1, '119.37304', '34.75293'); -INSERT INTO `base_postage_region` -VALUES (882, 880, 'H', '海州', '海州区', 3, 'haizhou', '222003', 1, '119.13128', '34.56986'); -INSERT INTO `base_postage_region` -VALUES (883, 880, 'G', '赣榆', '赣榆区', 3, 'ganyu', '222100', 1, '119.128774', '34.839154'); -INSERT INTO `base_postage_region` -VALUES (884, 880, 'D', '东海', '东海县', 3, 'donghai', '222300', 1, '118.77145', '34.54215'); -INSERT INTO `base_postage_region` -VALUES (885, 880, 'G', '灌云', '灌云县', 3, 'guanyun', '222200', 1, '119.23925', '34.28391'); -INSERT INTO `base_postage_region` -VALUES (886, 880, 'G', '灌南', '灌南县', 3, 'guannan', '222500', 1, '119.35632', '34.09'); -INSERT INTO `base_postage_region` -VALUES (887, 820, 'H', '淮安', '淮安市', 2, 'huaian', '223001', 1, '119.021265', '33.597506'); -INSERT INTO `base_postage_region` -VALUES (888, 887, 'Q', '清河', '清河区', 3, 'qinghe', '223001', 1, '119.00778', '33.59949'); -INSERT INTO `base_postage_region` -VALUES (889, 887, 'H', '淮安', '淮安区', 3, 'huaian', '223200', 1, '119.021265', '33.597506'); -INSERT INTO `base_postage_region` -VALUES (890, 887, 'H', '淮阴', '淮阴区', 3, 'huaiyin', '223300', 1, '119.03485', '33.63171'); -INSERT INTO `base_postage_region` -VALUES (891, 887, 'Q', '清浦', '清浦区', 3, 'qingpu', '223002', 1, '119.02648', '33.55232'); -INSERT INTO `base_postage_region` -VALUES (892, 887, 'L', '涟水', '涟水县', 3, 'lianshui', '223400', 1, '119.26083', '33.78094'); -INSERT INTO `base_postage_region` -VALUES (893, 887, 'H', '洪泽', '洪泽县', 3, 'hongze', '223100', 1, '118.87344', '33.29429'); -INSERT INTO `base_postage_region` -VALUES (894, 887, 'X', '盱眙', '盱眙县', 3, 'xuyi', '211700', 1, '118.54495', '33.01086'); -INSERT INTO `base_postage_region` -VALUES (895, 887, 'J', '金湖', '金湖县', 3, 'jinhu', '211600', 1, '119.02307', '33.02219'); -INSERT INTO `base_postage_region` -VALUES (896, 820, 'Y', '盐城', '盐城市', 2, 'yancheng', '224005', 1, '120.139998', '33.377631'); -INSERT INTO `base_postage_region` -VALUES (897, 896, 'T', '亭湖', '亭湖区', 3, 'tinghu', '224005', 1, '120.16583', '33.37825'); -INSERT INTO `base_postage_region` -VALUES (898, 896, 'Y', '盐都', '盐都区', 3, 'yandu', '224055', 1, '120.15441', '33.3373'); -INSERT INTO `base_postage_region` -VALUES (899, 896, 'X', '响水', '响水县', 3, 'xiangshui', '224600', 1, '119.56985', '34.20513'); -INSERT INTO `base_postage_region` -VALUES (900, 896, 'B', '滨海', '滨海县', 3, 'binhai', '224500', 1, '119.82058', '33.98972'); -INSERT INTO `base_postage_region` -VALUES (901, 896, 'F', '阜宁', '阜宁县', 3, 'funing', '224400', 1, '119.80175', '33.78228'); -INSERT INTO `base_postage_region` -VALUES (902, 896, 'S', '射阳', '射阳县', 3, 'sheyang', '224300', 1, '120.26043', '33.77636'); -INSERT INTO `base_postage_region` -VALUES (903, 896, 'J', '建湖', '建湖县', 3, 'jianhu', '224700', 1, '119.79852', '33.47241'); -INSERT INTO `base_postage_region` -VALUES (904, 896, 'D', '东台', '东台市', 3, 'dongtai', '224200', 1, '120.32376', '32.85078'); -INSERT INTO `base_postage_region` -VALUES (905, 896, 'D', '大丰', '大丰市', 3, 'dafeng', '224100', 1, '120.46594', '33.19893'); -INSERT INTO `base_postage_region` -VALUES (906, 820, 'Y', '扬州', '扬州市', 2, 'yangzhou', '225002', 1, '119.421003', '32.393159'); -INSERT INTO `base_postage_region` -VALUES (907, 906, 'G', '广陵', '广陵区', 3, 'guangling', '225002', 1, '119.43186', '32.39472'); -INSERT INTO `base_postage_region` -VALUES (908, 906, 'H', '邗江', '邗江区', 3, 'hanjiang', '225002', 1, '119.39816', '32.3765'); -INSERT INTO `base_postage_region` -VALUES (909, 906, 'J', '江都', '江都区', 3, 'jiangdu', '225200', 1, '119.567481', '32.426564'); -INSERT INTO `base_postage_region` -VALUES (910, 906, 'B', '宝应', '宝应县', 3, 'baoying', '225800', 1, '119.31213', '33.23549'); -INSERT INTO `base_postage_region` -VALUES (911, 906, 'Y', '仪征', '仪征市', 3, 'yizheng', '211400', 1, '119.18432', '32.27197'); -INSERT INTO `base_postage_region` -VALUES (912, 906, 'G', '高邮', '高邮市', 3, 'gaoyou', '225600', 1, '119.45965', '32.78135'); -INSERT INTO `base_postage_region` -VALUES (913, 820, 'Z', '镇江', '镇江市', 2, 'zhenjiang', '212004', 1, '119.452753', '32.204402'); -INSERT INTO `base_postage_region` -VALUES (914, 913, 'J', '京口', '京口区', 3, 'jingkou', '212003', 1, '119.46947', '32.19809'); -INSERT INTO `base_postage_region` -VALUES (915, 913, 'R', '润州', '润州区', 3, 'runzhou', '212005', 1, '119.41134', '32.19523'); -INSERT INTO `base_postage_region` -VALUES (916, 913, 'D', '丹徒', '丹徒区', 3, 'dantu', '212028', 1, '119.43383', '32.13183'); -INSERT INTO `base_postage_region` -VALUES (917, 913, 'D', '丹阳', '丹阳市', 3, 'danyang', '212300', 1, '119.57525', '31.99121'); -INSERT INTO `base_postage_region` -VALUES (918, 913, 'Y', '扬中', '扬中市', 3, 'yangzhong', '212200', 1, '119.79718', '32.2363'); -INSERT INTO `base_postage_region` -VALUES (919, 913, 'J', '句容', '句容市', 3, 'jurong', '212400', 1, '119.16482', '31.95591'); -INSERT INTO `base_postage_region` -VALUES (920, 820, 'T', '泰州', '泰州市', 2, 'taizhou', '225300', 1, '119.915176', '32.484882'); -INSERT INTO `base_postage_region` -VALUES (921, 920, 'H', '海陵', '海陵区', 3, 'hailing', '225300', 1, '119.91942', '32.49101'); -INSERT INTO `base_postage_region` -VALUES (922, 920, 'G', '高港', '高港区', 3, 'gaogang', '225321', 1, '119.88089', '32.31833'); -INSERT INTO `base_postage_region` -VALUES (923, 920, 'J', '姜堰', '姜堰区', 3, 'jiangyan', '225500', 1, '120.148208', '32.508483'); -INSERT INTO `base_postage_region` -VALUES (924, 920, 'X', '兴化', '兴化市', 3, 'xinghua', '225700', 1, '119.85238', '32.90944'); -INSERT INTO `base_postage_region` -VALUES (925, 920, 'J', '靖江', '靖江市', 3, 'jingjiang', '214500', 1, '120.27291', '32.01595'); -INSERT INTO `base_postage_region` -VALUES (926, 920, 'T', '泰兴', '泰兴市', 3, 'taixing', '225400', 1, '120.05194', '32.17187'); -INSERT INTO `base_postage_region` -VALUES (927, 820, 'S', '宿迁', '宿迁市', 2, 'suqian', '223800', 1, '118.293328', '33.945154'); -INSERT INTO `base_postage_region` -VALUES (928, 927, 'S', '宿城', '宿城区', 3, 'sucheng', '223800', 1, '118.29141', '33.94219'); -INSERT INTO `base_postage_region` -VALUES (929, 927, 'S', '宿豫', '宿豫区', 3, 'suyu', '223800', 1, '118.32922', '33.94673'); -INSERT INTO `base_postage_region` -VALUES (930, 927, 'S', '沭阳', '沭阳县', 3, 'shuyang', '223600', 1, '118.76873', '34.11446'); -INSERT INTO `base_postage_region` -VALUES (931, 927, 'S', '泗阳', '泗阳县', 3, 'siyang', '223700', 1, '118.7033', '33.72096'); -INSERT INTO `base_postage_region` -VALUES (932, 927, 'S', '泗洪', '泗洪县', 3, 'sihong', '223900', 1, '118.21716', '33.45996'); -INSERT INTO `base_postage_region` -VALUES (933, 0, 'Z', '浙江', '浙江省', 1, 'zhejiang', '', 1, '120.153576', '30.287459'); -INSERT INTO `base_postage_region` -VALUES (934, 933, 'H', '杭州', '杭州市', 2, 'hangzhou', '310026', 1, '120.153576', '30.287459'); -INSERT INTO `base_postage_region` -VALUES (935, 934, 'S', '上城', '上城区', 3, 'shangcheng', '310002', 1, '120.16922', '30.24255'); -INSERT INTO `base_postage_region` -VALUES (936, 934, 'X', '下城', '下城区', 3, 'xiacheng', '310006', 1, '120.18096', '30.28153'); -INSERT INTO `base_postage_region` -VALUES (937, 934, 'J', '江干', '江干区', 3, 'jianggan', '310016', 1, '120.20517', '30.2572'); -INSERT INTO `base_postage_region` -VALUES (938, 934, 'G', '拱墅', '拱墅区', 3, 'gongshu', '310011', 1, '120.14209', '30.31968'); -INSERT INTO `base_postage_region` -VALUES (939, 934, 'X', '西湖', '西湖区', 3, 'xihu', '310013', 1, '120.12979', '30.25949'); -INSERT INTO `base_postage_region` -VALUES (940, 934, 'B', '滨江', '滨江区', 3, 'binjiang', '310051', 1, '120.21194', '30.20835'); -INSERT INTO `base_postage_region` -VALUES (941, 934, 'X', '萧山', '萧山区', 3, 'xiaoshan', '311200', 1, '120.26452', '30.18505'); -INSERT INTO `base_postage_region` -VALUES (942, 934, 'Y', '余杭', '余杭区', 3, 'yuhang', '311100', 1, '120.29986', '30.41829'); -INSERT INTO `base_postage_region` -VALUES (943, 934, 'T', '桐庐', '桐庐县', 3, 'tonglu', '311500', 1, '119.68853', '29.79779'); -INSERT INTO `base_postage_region` -VALUES (944, 934, 'C', '淳安', '淳安县', 3, 'chunan', '311700', 1, '119.04257', '29.60988'); -INSERT INTO `base_postage_region` -VALUES (945, 934, 'J', '建德', '建德市', 3, 'jiande', '311600', 1, '119.28158', '29.47603'); -INSERT INTO `base_postage_region` -VALUES (946, 934, 'F', '富阳', '富阳区', 3, 'fuyang', '311400', 1, '119.96041', '30.04878'); -INSERT INTO `base_postage_region` -VALUES (947, 934, 'L', '临安', '临安市', 3, 'linan', '311300', 1, '119.72473', '30.23447'); -INSERT INTO `base_postage_region` -VALUES (948, 933, 'N', '宁波', '宁波市', 2, 'ningbo', '315000', 1, '121.549792', '29.868388'); -INSERT INTO `base_postage_region` -VALUES (949, 948, 'H', '海曙', '海曙区', 3, 'haishu', '315000', 1, '121.55106', '29.85977'); -INSERT INTO `base_postage_region` -VALUES (950, 948, 'J', '江东', '江东区', 3, 'jiangdong', '315040', 1, '121.57028', '29.86701'); -INSERT INTO `base_postage_region` -VALUES (951, 948, 'J', '江北', '江北区', 3, 'jiangbei', '315020', 1, '121.55681', '29.88776'); -INSERT INTO `base_postage_region` -VALUES (952, 948, 'B', '北仑', '北仑区', 3, 'beilun', '315800', 1, '121.84408', '29.90069'); -INSERT INTO `base_postage_region` -VALUES (953, 948, 'Z', '镇海', '镇海区', 3, 'zhenhai', '315200', 1, '121.71615', '29.94893'); -INSERT INTO `base_postage_region` -VALUES (954, 948, 'Y', '鄞州', '鄞州区', 3, 'yinzhou', '315100', 1, '121.54754', '29.81614'); -INSERT INTO `base_postage_region` -VALUES (955, 948, 'X', '象山', '象山县', 3, 'xiangshan', '315700', 1, '121.86917', '29.47758'); -INSERT INTO `base_postage_region` -VALUES (956, 948, 'N', '宁海', '宁海县', 3, 'ninghai', '315600', 1, '121.43072', '29.2889'); -INSERT INTO `base_postage_region` -VALUES (957, 948, 'Y', '余姚', '余姚市', 3, 'yuyao', '315400', 1, '121.15341', '30.03867'); -INSERT INTO `base_postage_region` -VALUES (958, 948, 'C', '慈溪', '慈溪市', 3, 'cixi', '315300', 1, '121.26641', '30.16959'); -INSERT INTO `base_postage_region` -VALUES (959, 948, 'F', '奉化', '奉化市', 3, 'fenghua', '315500', 1, '121.41003', '29.65537'); -INSERT INTO `base_postage_region` -VALUES (960, 933, 'W', '温州', '温州市', 2, 'wenzhou', '325000', 1, '120.672111', '28.000575'); -INSERT INTO `base_postage_region` -VALUES (961, 960, 'L', '鹿城', '鹿城区', 3, 'lucheng', '325000', 1, '120.65505', '28.01489'); -INSERT INTO `base_postage_region` -VALUES (962, 960, 'L', '龙湾', '龙湾区', 3, 'longwan', '325013', 1, '120.83053', '27.91284'); -INSERT INTO `base_postage_region` -VALUES (963, 960, 'O', '瓯海', '瓯海区', 3, 'ouhai', '325005', 1, '120.63751', '28.00714'); -INSERT INTO `base_postage_region` -VALUES (964, 960, 'D', '洞头', '洞头县', 3, 'dongtou', '325700', 1, '121.15606', '27.83634'); -INSERT INTO `base_postage_region` -VALUES (965, 960, 'Y', '永嘉', '永嘉县', 3, 'yongjia', '325100', 1, '120.69317', '28.15456'); -INSERT INTO `base_postage_region` -VALUES (966, 960, 'P', '平阳', '平阳县', 3, 'pingyang', '325400', 1, '120.56506', '27.66245'); -INSERT INTO `base_postage_region` -VALUES (967, 960, 'C', '苍南', '苍南县', 3, 'cangnan', '325800', 1, '120.42608', '27.51739'); -INSERT INTO `base_postage_region` -VALUES (968, 960, 'W', '文成', '文成县', 3, 'wencheng', '325300', 1, '120.09063', '27.78678'); -INSERT INTO `base_postage_region` -VALUES (969, 960, 'T', '泰顺', '泰顺县', 3, 'taishun', '325500', 1, '119.7182', '27.55694'); -INSERT INTO `base_postage_region` -VALUES (970, 960, 'R', '瑞安', '瑞安市', 3, 'ruian', '325200', 1, '120.65466', '27.78041'); -INSERT INTO `base_postage_region` -VALUES (971, 960, 'L', '乐清', '乐清市', 3, 'yueqing', '325600', 1, '120.9617', '28.12404'); -INSERT INTO `base_postage_region` -VALUES (972, 933, 'J', '嘉兴', '嘉兴市', 2, 'jiaxing', '314000', 1, '120.750865', '30.762653'); -INSERT INTO `base_postage_region` -VALUES (973, 972, 'N', '南湖', '南湖区', 3, 'nanhu', '314051', 1, '120.78524', '30.74865'); -INSERT INTO `base_postage_region` -VALUES (974, 972, 'X', '秀洲', '秀洲区', 3, 'xiuzhou', '314031', 1, '120.70867', '30.76454'); -INSERT INTO `base_postage_region` -VALUES (975, 972, 'J', '嘉善', '嘉善县', 3, 'jiashan', '314100', 1, '120.92559', '30.82993'); -INSERT INTO `base_postage_region` -VALUES (976, 972, 'H', '海盐', '海盐县', 3, 'haiyan', '314300', 1, '120.9457', '30.52547'); -INSERT INTO `base_postage_region` -VALUES (977, 972, 'H', '海宁', '海宁市', 3, 'haining', '314400', 1, '120.6813', '30.5097'); -INSERT INTO `base_postage_region` -VALUES (978, 972, 'P', '平湖', '平湖市', 3, 'pinghu', '314200', 1, '121.02166', '30.69618'); -INSERT INTO `base_postage_region` -VALUES (979, 972, 'T', '桐乡', '桐乡市', 3, 'tongxiang', '314500', 1, '120.56485', '30.6302'); -INSERT INTO `base_postage_region` -VALUES (980, 933, 'H', '湖州', '湖州市', 2, 'huzhou', '313000', 1, '120.102398', '30.867198'); -INSERT INTO `base_postage_region` -VALUES (981, 980, 'W', '吴兴', '吴兴区', 3, 'wuxing', '313000', 1, '120.12548', '30.85752'); -INSERT INTO `base_postage_region` -VALUES (982, 980, 'N', '南浔', '南浔区', 3, 'nanxun', '313009', 1, '120.42038', '30.86686'); -INSERT INTO `base_postage_region` -VALUES (983, 980, 'D', '德清', '德清县', 3, 'deqing', '313200', 1, '119.97836', '30.53369'); -INSERT INTO `base_postage_region` -VALUES (984, 980, 'C', '长兴', '长兴县', 3, 'changxing', '313100', 1, '119.90783', '31.00606'); -INSERT INTO `base_postage_region` -VALUES (985, 980, 'A', '安吉', '安吉县', 3, 'anji', '313300', 1, '119.68158', '30.63798'); -INSERT INTO `base_postage_region` -VALUES (986, 933, 'S', '绍兴', '绍兴市', 2, 'shaoxing', '312000', 1, '120.582112', '29.997117'); -INSERT INTO `base_postage_region` -VALUES (987, 986, 'Y', '越城', '越城区', 3, 'yuecheng', '312000', 1, '120.5819', '29.98895'); -INSERT INTO `base_postage_region` -VALUES (988, 986, 'K', '柯桥', '柯桥区', 3, 'keqiao', '312030', 1, '120.492736', '30.08763'); -INSERT INTO `base_postage_region` -VALUES (989, 986, 'S', '上虞', '上虞区', 3, 'shangyu', '312300', 1, '120.476075', '30.078038'); -INSERT INTO `base_postage_region` -VALUES (990, 986, 'X', '新昌', '新昌县', 3, 'xinchang', '312500', 1, '120.90435', '29.49991'); -INSERT INTO `base_postage_region` -VALUES (991, 986, 'Z', '诸暨', '诸暨市', 3, 'zhuji', '311800', 1, '120.23629', '29.71358'); -INSERT INTO `base_postage_region` -VALUES (992, 986, 'S', '嵊州', '嵊州市', 3, 'shengzhou', '312400', 1, '120.82174', '29.58854'); -INSERT INTO `base_postage_region` -VALUES (993, 933, 'J', '金华', '金华市', 2, 'jinhua', '321000', 1, '119.649506', '29.089524'); -INSERT INTO `base_postage_region` -VALUES (994, 993, 'W', '婺城', '婺城区', 3, 'wucheng', '321000', 1, '119.57135', '29.09521'); -INSERT INTO `base_postage_region` -VALUES (995, 993, 'J', '金东', '金东区', 3, 'jindong', '321000', 1, '119.69302', '29.0991'); -INSERT INTO `base_postage_region` -VALUES (996, 993, 'W', '武义', '武义县', 3, 'wuyi', '321200', 1, '119.8164', '28.89331'); -INSERT INTO `base_postage_region` -VALUES (997, 993, 'P', '浦江', '浦江县', 3, 'pujiang', '322200', 1, '119.89181', '29.45353'); -INSERT INTO `base_postage_region` -VALUES (998, 993, 'P', '磐安', '磐安县', 3, 'panan', '322300', 1, '120.45022', '29.05733'); -INSERT INTO `base_postage_region` -VALUES (999, 993, 'L', '兰溪', '兰溪市', 3, 'lanxi', '321100', 1, '119.45965', '29.20841'); -INSERT INTO `base_postage_region` -VALUES (1000, 993, 'Y', '义乌', '义乌市', 3, 'yiwu', '322000', 1, '120.0744', '29.30558'); -INSERT INTO `base_postage_region` -VALUES (1001, 993, 'D', '东阳', '东阳市', 3, 'dongyang', '322100', 1, '120.24185', '29.28942'); -INSERT INTO `base_postage_region` -VALUES (1002, 993, 'Y', '永康', '永康市', 3, 'yongkang', '321300', 1, '120.04727', '28.88844'); -INSERT INTO `base_postage_region` -VALUES (1003, 933, NULL, '衢州', '衢州市', 2, 'quzhou', '324002', 1, '118.87263', '28.941708'); -INSERT INTO `base_postage_region` -VALUES (1004, 1003, 'K', '柯城', '柯城区', 3, 'kecheng', '324100', 1, '118.87109', '28.96858'); -INSERT INTO `base_postage_region` -VALUES (1005, 1003, NULL, '衢江', '衢江区', 3, 'qujiang', '324022', 1, '118.9598', '28.97977'); -INSERT INTO `base_postage_region` -VALUES (1006, 1003, 'C', '常山', '常山县', 3, 'changshan', '324200', 1, '118.51025', '28.90191'); -INSERT INTO `base_postage_region` -VALUES (1007, 1003, 'K', '开化', '开化县', 3, 'kaihua', '324300', 1, '118.41616', '29.13785'); -INSERT INTO `base_postage_region` -VALUES (1008, 1003, 'L', '龙游', '龙游县', 3, 'longyou', '324400', 1, '119.17221', '29.02823'); -INSERT INTO `base_postage_region` -VALUES (1009, 1003, 'J', '江山', '江山市', 3, 'jiangshan', '324100', 1, '118.62674', '28.7386'); -INSERT INTO `base_postage_region` -VALUES (1010, 933, 'Z', '舟山', '舟山市', 2, 'zhoushan', '316000', 1, '122.106863', '30.016028'); -INSERT INTO `base_postage_region` -VALUES (1011, 1010, 'D', '定海', '定海区', 3, 'dinghai', '316000', 1, '122.10677', '30.01985'); -INSERT INTO `base_postage_region` -VALUES (1012, 1010, 'P', '普陀', '普陀区', 3, 'putuo', '316100', 1, '122.30278', '29.94908'); -INSERT INTO `base_postage_region` -VALUES (1013, 1010, NULL, '岱山', '岱山县', 3, 'daishan', '316200', 1, '122.20486', '30.24385'); -INSERT INTO `base_postage_region` -VALUES (1014, 1010, NULL, '嵊泗', '嵊泗县', 3, 'shengsi', '202450', 1, '122.45129', '30.72678'); -INSERT INTO `base_postage_region` -VALUES (1015, 933, 'T', '台州', '台州市', 2, 'taizhou', '318000', 1, '121.428599', '28.661378'); -INSERT INTO `base_postage_region` -VALUES (1016, 1015, 'J', '椒江', '椒江区', 3, 'jiaojiang', '318000', 1, '121.44287', '28.67301'); -INSERT INTO `base_postage_region` -VALUES (1017, 1015, 'H', '黄岩', '黄岩区', 3, 'huangyan', '318020', 1, '121.25891', '28.65077'); -INSERT INTO `base_postage_region` -VALUES (1018, 1015, 'L', '路桥', '路桥区', 3, 'luqiao', '318050', 1, '121.37381', '28.58016'); -INSERT INTO `base_postage_region` -VALUES (1019, 1015, 'Y', '玉环', '玉环县', 3, 'yuhuan', '317600', 1, '121.23242', '28.13637'); -INSERT INTO `base_postage_region` -VALUES (1020, 1015, 'S', '三门', '三门县', 3, 'sanmen', '317100', 1, '121.3937', '29.1051'); -INSERT INTO `base_postage_region` -VALUES (1021, 1015, 'T', '天台', '天台县', 3, 'tiantai', '317200', 1, '121.00848', '29.1429'); -INSERT INTO `base_postage_region` -VALUES (1022, 1015, 'X', '仙居', '仙居县', 3, 'xianju', '317300', 1, '120.72872', '28.84672'); -INSERT INTO `base_postage_region` -VALUES (1023, 1015, 'W', '温岭', '温岭市', 3, 'wenling', '317500', 1, '121.38595', '28.37176'); -INSERT INTO `base_postage_region` -VALUES (1024, 1015, 'L', '临海', '临海市', 3, 'linhai', '317000', 1, '121.13885', '28.85603'); -INSERT INTO `base_postage_region` -VALUES (1025, 933, 'L', '丽水', '丽水市', 2, 'lishui', '323000', 1, '119.921786', '28.451993'); -INSERT INTO `base_postage_region` -VALUES (1026, 1025, 'L', '莲都', '莲都区', 3, 'liandu', '323000', 1, '119.9127', '28.44583'); -INSERT INTO `base_postage_region` -VALUES (1027, 1025, 'Q', '青田', '青田县', 3, 'qingtian', '323900', 1, '120.29028', '28.13897'); -INSERT INTO `base_postage_region` -VALUES (1028, 1025, NULL, '缙云', '缙云县', 3, 'jinyun', '321400', 1, '120.09036', '28.65944'); -INSERT INTO `base_postage_region` -VALUES (1029, 1025, 'S', '遂昌', '遂昌县', 3, 'suichang', '323300', 1, '119.27606', '28.59291'); -INSERT INTO `base_postage_region` -VALUES (1030, 1025, 'S', '松阳', '松阳县', 3, 'songyang', '323400', 1, '119.48199', '28.4494'); -INSERT INTO `base_postage_region` -VALUES (1031, 1025, 'Y', '云和', '云和县', 3, 'yunhe', '323600', 1, '119.57287', '28.11643'); -INSERT INTO `base_postage_region` -VALUES (1032, 1025, 'Q', '庆元', '庆元县', 3, 'qingyuan', '323800', 1, '119.06256', '27.61842'); -INSERT INTO `base_postage_region` -VALUES (1033, 1025, 'J', '景宁', '景宁畲族自治县', 3, 'jingning', '323500', 1, '119.63839', '27.97393'); -INSERT INTO `base_postage_region` -VALUES (1034, 1025, 'L', '龙泉', '龙泉市', 3, 'longquan', '323700', 1, '119.14163', '28.0743'); -INSERT INTO `base_postage_region` -VALUES (1035, 933, 'Z', '舟山新区', '舟山群岛新区', 2, 'zhoushan', '316000', 1, '122.317657', '29.813242'); -INSERT INTO `base_postage_region` -VALUES (1036, 1035, 'J', '金塘', '金塘岛', 3, 'jintang', '316000', 1, '121.893373', '30.040641'); -INSERT INTO `base_postage_region` -VALUES (1037, 1035, 'L', '六横', '六横岛', 3, 'liuheng', '316000', 1, '122.14265', '29.662938'); -INSERT INTO `base_postage_region` -VALUES (1038, 1035, NULL, '衢山', '衢山岛', 3, 'qushan', '316000', 1, '122.358425', '30.442642'); -INSERT INTO `base_postage_region` -VALUES (1039, 1035, 'Z', '舟山', '舟山本岛西北部', 3, 'zhoushan', '316000', 1, '122.03064', '30.140377'); -INSERT INTO `base_postage_region` -VALUES (1040, 1035, NULL, '岱山', '岱山岛西南部', 3, 'daishan', '316000', 1, '122.180123', '30.277269'); -INSERT INTO `base_postage_region` -VALUES (1041, 1035, NULL, '泗礁', '泗礁岛', 3, 'sijiao', '316000', 1, '122.45803', '30.725112'); -INSERT INTO `base_postage_region` -VALUES (1042, 1035, 'Z', '朱家尖', '朱家尖岛', 3, 'zhujiajian', '316000', 1, '122.390636', '29.916303'); -INSERT INTO `base_postage_region` -VALUES (1043, 1035, 'Y', '洋山', '洋山岛', 3, 'yangshan', '316000', 1, '121.995891', '30.094637'); -INSERT INTO `base_postage_region` -VALUES (1044, 1035, 'C', '长涂', '长涂岛', 3, 'changtu', '316000', 1, '122.284681', '30.24888'); -INSERT INTO `base_postage_region` -VALUES (1045, 1035, 'X', '虾峙', '虾峙岛', 3, 'xiazhi', '316000', 1, '122.244686', '29.752941'); -INSERT INTO `base_postage_region` -VALUES (1046, 0, 'A', '安徽', '安徽省', 1, 'anhui', '', 1, '117.283042', '31.86119'); -INSERT INTO `base_postage_region` -VALUES (1047, 1046, 'H', '合肥', '合肥市', 2, 'hefei', '230001', 1, '117.283042', '31.86119'); -INSERT INTO `base_postage_region` -VALUES (1048, 1047, 'Y', '瑶海', '瑶海区', 3, 'yaohai', '230011', 1, '117.30947', '31.85809'); -INSERT INTO `base_postage_region` -VALUES (1049, 1047, 'L', '庐阳', '庐阳区', 3, 'luyang', '230001', 1, '117.26452', '31.87874'); -INSERT INTO `base_postage_region` -VALUES (1050, 1047, 'S', '蜀山', '蜀山区', 3, 'shushan', '230031', 1, '117.26104', '31.85117'); -INSERT INTO `base_postage_region` -VALUES (1051, 1047, 'B', '包河', '包河区', 3, 'baohe', '230041', 1, '117.30984', '31.79502'); -INSERT INTO `base_postage_region` -VALUES (1052, 1047, 'C', '长丰', '长丰县', 3, 'changfeng', '231100', 1, '117.16549', '32.47959'); -INSERT INTO `base_postage_region` -VALUES (1053, 1047, 'F', '肥东', '肥东县', 3, 'feidong', '231600', 1, '117.47128', '31.88525'); -INSERT INTO `base_postage_region` -VALUES (1054, 1047, 'F', '肥西', '肥西县', 3, 'feixi', '231200', 1, '117.16845', '31.72143'); -INSERT INTO `base_postage_region` -VALUES (1055, 1047, 'L', '庐江', '庐江县', 3, 'lujiang', '231500', 1, '117.289844', '31.251488'); -INSERT INTO `base_postage_region` -VALUES (1056, 1047, 'C', '巢湖', '巢湖市', 3, 'chaohu', '238000', 1, '117.874155', '31.600518'); -INSERT INTO `base_postage_region` -VALUES (1057, 1046, 'W', '芜湖', '芜湖市', 2, 'wuhu', '241000', 1, '118.376451', '31.326319'); -INSERT INTO `base_postage_region` -VALUES (1058, 1057, 'J', '镜湖', '镜湖区', 3, 'jinghu', '241000', 1, '118.38525', '31.34038'); -INSERT INTO `base_postage_region` -VALUES (1059, 1057, NULL, '弋江', '弋江区', 3, 'yijiang', '241000', 1, '118.37265', '31.31178'); -INSERT INTO `base_postage_region` -VALUES (1060, 1057, NULL, '鸠江', '鸠江区', 3, 'jiujiang', '241000', 1, '118.39215', '31.36928'); -INSERT INTO `base_postage_region` -VALUES (1061, 1057, 'S', '三山', '三山区', 3, 'sanshan', '241000', 1, '118.22509', '31.20703'); -INSERT INTO `base_postage_region` -VALUES (1062, 1057, 'W', '芜湖', '芜湖县', 3, 'wuhu', '241100', 1, '118.57525', '31.13476'); -INSERT INTO `base_postage_region` -VALUES (1063, 1057, 'F', '繁昌', '繁昌县', 3, 'fanchang', '241200', 1, '118.19982', '31.08319'); -INSERT INTO `base_postage_region` -VALUES (1064, 1057, 'N', '南陵', '南陵县', 3, 'nanling', '242400', 1, '118.33688', '30.91969'); -INSERT INTO `base_postage_region` -VALUES (1065, 1057, 'W', '无为', '无为县', 3, 'wuwei', '238300', 1, '117.911432', '31.303075'); -INSERT INTO `base_postage_region` -VALUES (1066, 1046, 'B', '蚌埠', '蚌埠市', 2, 'bengbu', '233000', 1, '117.36237', '32.934037'); -INSERT INTO `base_postage_region` -VALUES (1067, 1066, 'L', '龙子湖', '龙子湖区', 3, 'longzihu', '233000', 1, '117.39379', '32.94301'); -INSERT INTO `base_postage_region` -VALUES (1068, 1066, 'B', '蚌山', '蚌山区', 3, 'bengshan', '233000', 1, '117.36767', '32.94411'); -INSERT INTO `base_postage_region` -VALUES (1069, 1066, 'Y', '禹会', '禹会区', 3, 'yuhui', '233010', 1, '117.35315', '32.93336'); -INSERT INTO `base_postage_region` -VALUES (1070, 1066, 'H', '淮上', '淮上区', 3, 'huaishang', '233002', 1, '117.35983', '32.96423'); -INSERT INTO `base_postage_region` -VALUES (1071, 1066, 'H', '怀远', '怀远县', 3, 'huaiyuan', '233400', 1, '117.20507', '32.97007'); -INSERT INTO `base_postage_region` -VALUES (1072, 1066, 'W', '五河', '五河县', 3, 'wuhe', '233300', 1, '117.89144', '33.14457'); -INSERT INTO `base_postage_region` -VALUES (1073, 1066, 'G', '固镇', '固镇县', 3, 'guzhen', '233700', 1, '117.31558', '33.31803'); -INSERT INTO `base_postage_region` -VALUES (1074, 1046, 'H', '淮南', '淮南市', 2, 'huainan', '232001', 1, '117.025449', '32.645947'); -INSERT INTO `base_postage_region` -VALUES (1075, 1074, 'D', '大通', '大通区', 3, 'datong', '232033', 1, '117.05255', '32.63265'); -INSERT INTO `base_postage_region` -VALUES (1076, 1074, 'T', '田家庵', '田家庵区', 3, 'tianjiaan', '232000', 1, '117.01739', '32.64697'); -INSERT INTO `base_postage_region` -VALUES (1077, 1074, 'X', '谢家集', '谢家集区', 3, 'xiejiaji', '232052', 1, '116.86377', '32.59818'); -INSERT INTO `base_postage_region` -VALUES (1078, 1074, 'B', '八公山', '八公山区', 3, 'bagongshan', '232072', 1, '116.83694', '32.62941'); -INSERT INTO `base_postage_region` -VALUES (1079, 1074, 'P', '潘集', '潘集区', 3, 'panji', '232082', 1, '116.81622', '32.78287'); -INSERT INTO `base_postage_region` -VALUES (1080, 1074, 'F', '凤台', '凤台县', 3, 'fengtai', '232100', 1, '116.71569', '32.70752'); -INSERT INTO `base_postage_region` -VALUES (1081, 1046, 'M', '马鞍山', '马鞍山市', 2, 'maanshan', '243001', 1, '118.507906', '31.689362'); -INSERT INTO `base_postage_region` -VALUES (1082, 1081, 'H', '花山', '花山区', 3, 'huashan', '243000', 1, '118.51231', '31.7001'); -INSERT INTO `base_postage_region` -VALUES (1083, 1081, 'Y', '雨山', '雨山区', 3, 'yushan', '243071', 1, '118.49869', '31.68219'); -INSERT INTO `base_postage_region` -VALUES (1084, 1081, 'B', '博望', '博望区', 3, 'bowang', '243131', 1, '118.844387', '31.561871'); -INSERT INTO `base_postage_region` -VALUES (1085, 1081, 'D', '当涂', '当涂县', 3, 'dangtu', '243100', 1, '118.49786', '31.57098'); -INSERT INTO `base_postage_region` -VALUES (1086, 1081, 'H', '含山', '含山县', 3, 'hanshan', '238100', 1, '118.105545', '31.727758'); -INSERT INTO `base_postage_region` -VALUES (1087, 1081, 'H', '和县', '和县', 3, 'hexian', '238200', 1, '118.351405', '31.741794'); -INSERT INTO `base_postage_region` -VALUES (1088, 1046, 'H', '淮北', '淮北市', 2, 'huaibei', '235000', 1, '116.794664', '33.971707'); -INSERT INTO `base_postage_region` -VALUES (1089, 1088, 'D', '杜集', '杜集区', 3, 'duji', '235000', 1, '116.82998', '33.99363'); -INSERT INTO `base_postage_region` -VALUES (1090, 1088, 'X', '相山', '相山区', 3, 'xiangshan', '235000', 1, '116.79464', '33.95979'); -INSERT INTO `base_postage_region` -VALUES (1091, 1088, 'L', '烈山', '烈山区', 3, 'lieshan', '235000', 1, '116.81448', '33.89355'); -INSERT INTO `base_postage_region` -VALUES (1092, 1088, NULL, '濉溪', '濉溪县', 3, 'suixi', '235100', 1, '116.76785', '33.91455'); -INSERT INTO `base_postage_region` -VALUES (1093, 1046, 'T', '铜陵', '铜陵市', 2, 'tongling', '244000', 1, '117.816576', '30.929935'); -INSERT INTO `base_postage_region` -VALUES (1094, 1093, 'T', '铜官山', '铜官山区', 3, 'tongguanshan', '244000', 1, '117.81525', '30.93423'); -INSERT INTO `base_postage_region` -VALUES (1095, 1093, 'S', '狮子山', '狮子山区', 3, 'shizishan', '244000', 1, '117.89178', '30.92631'); -INSERT INTO `base_postage_region` -VALUES (1096, 1093, 'J', '郊区', '郊区', 3, 'jiaoqu', '244000', 1, '117.80868', '30.91976'); -INSERT INTO `base_postage_region` -VALUES (1097, 1093, 'T', '铜陵', '铜陵县', 3, 'tongling', '244100', 1, '117.79113', '30.95365'); -INSERT INTO `base_postage_region` -VALUES (1098, 1046, 'A', '安庆', '安庆市', 2, 'anqing', '246001', 1, '117.053571', '30.524816'); -INSERT INTO `base_postage_region` -VALUES (1099, 1098, 'Y', '迎江', '迎江区', 3, 'yingjiang', '246001', 1, '117.0493', '30.50421'); -INSERT INTO `base_postage_region` -VALUES (1100, 1098, 'D', '大观', '大观区', 3, 'daguan', '246002', 1, '117.03426', '30.51216'); -INSERT INTO `base_postage_region` -VALUES (1101, 1098, 'Y', '宜秀', '宜秀区', 3, 'yixiu', '246003', 1, '117.06127', '30.50783'); -INSERT INTO `base_postage_region` -VALUES (1102, 1098, 'H', '怀宁', '怀宁县', 3, 'huaining', '246100', 1, '116.82968', '30.73376'); -INSERT INTO `base_postage_region` -VALUES (1103, 1098, NULL, '枞阳', '枞阳县', 3, 'zongyang', '246700', 1, '117.22015', '30.69956'); -INSERT INTO `base_postage_region` -VALUES (1104, 1098, 'Q', '潜山', '潜山县', 3, 'qianshan', '246300', 1, '116.57574', '30.63037'); -INSERT INTO `base_postage_region` -VALUES (1105, 1098, 'T', '太湖', '太湖县', 3, 'taihu', '246400', 1, '116.3088', '30.4541'); -INSERT INTO `base_postage_region` -VALUES (1106, 1098, 'S', '宿松', '宿松县', 3, 'susong', '246500', 1, '116.12915', '30.1536'); -INSERT INTO `base_postage_region` -VALUES (1107, 1098, 'W', '望江', '望江县', 3, 'wangjiang', '246200', 1, '116.68814', '30.12585'); -INSERT INTO `base_postage_region` -VALUES (1108, 1098, 'Y', '岳西', '岳西县', 3, 'yuexi', '246600', 1, '116.35995', '30.84983'); -INSERT INTO `base_postage_region` -VALUES (1109, 1098, 'T', '桐城', '桐城市', 3, 'tongcheng', '231400', 1, '116.95071', '31.05216'); -INSERT INTO `base_postage_region` -VALUES (1110, 1046, 'H', '黄山', '黄山市', 2, 'huangshan', '245000', 1, '118.317325', '29.709239'); -INSERT INTO `base_postage_region` -VALUES (1111, 1110, 'T', '屯溪', '屯溪区', 3, 'tunxi', '245000', 1, '118.33368', '29.71138'); -INSERT INTO `base_postage_region` -VALUES (1112, 1110, 'H', '黄山', '黄山区', 3, 'huangshan', '242700', 1, '118.1416', '30.2729'); -INSERT INTO `base_postage_region` -VALUES (1113, 1110, 'H', '徽州', '徽州区', 3, 'huizhou', '245061', 1, '118.33654', '29.82784'); -INSERT INTO `base_postage_region` -VALUES (1114, 1110, NULL, '歙县', '歙县', 3, 'shexian', '245200', 1, '118.43676', '29.86745'); -INSERT INTO `base_postage_region` -VALUES (1115, 1110, 'X', '休宁', '休宁县', 3, 'xiuning', '245400', 1, '118.18136', '29.78607'); -INSERT INTO `base_postage_region` -VALUES (1116, 1110, NULL, '黟县', '黟县', 3, 'yixian', '245500', 1, '117.94137', '29.92588'); -INSERT INTO `base_postage_region` -VALUES (1117, 1110, 'Q', '祁门', '祁门县', 3, 'qimen', '245600', 1, '117.71847', '29.85723'); -INSERT INTO `base_postage_region` -VALUES (1118, 1046, 'C', '滁州', '滁州市', 2, 'chuzhou', '239000', 1, '118.316264', '32.303627'); -INSERT INTO `base_postage_region` -VALUES (1119, 1118, 'L', '琅琊', '琅琊区', 3, 'langya', '239000', 1, '118.30538', '32.29521'); -INSERT INTO `base_postage_region` -VALUES (1120, 1118, 'N', '南谯', '南谯区', 3, 'nanqiao', '239000', 1, '118.31222', '32.31861'); -INSERT INTO `base_postage_region` -VALUES (1121, 1118, 'L', '来安', '来安县', 3, 'laian', '239200', 1, '118.43438', '32.45176'); -INSERT INTO `base_postage_region` -VALUES (1122, 1118, 'Q', '全椒', '全椒县', 3, 'quanjiao', '239500', 1, '118.27291', '32.08524'); -INSERT INTO `base_postage_region` -VALUES (1123, 1118, 'D', '定远', '定远县', 3, 'dingyuan', '233200', 1, '117.68035', '32.52488'); -INSERT INTO `base_postage_region` -VALUES (1124, 1118, 'F', '凤阳', '凤阳县', 3, 'fengyang', '233100', 1, '117.56454', '32.86507'); -INSERT INTO `base_postage_region` -VALUES (1125, 1118, 'T', '天长', '天长市', 3, 'tianchang', '239300', 1, '118.99868', '32.69124'); -INSERT INTO `base_postage_region` -VALUES (1126, 1118, 'M', '明光', '明光市', 3, 'mingguang', '239400', 1, '117.99093', '32.77819'); -INSERT INTO `base_postage_region` -VALUES (1127, 1046, 'F', '阜阳', '阜阳市', 2, 'fuyang', '236033', 1, '115.819729', '32.896969'); -INSERT INTO `base_postage_region` -VALUES (1128, 1127, NULL, '颍州', '颍州区', 3, 'yingzhou', '236001', 1, '115.80694', '32.88346'); -INSERT INTO `base_postage_region` -VALUES (1129, 1127, NULL, '颍东', '颍东区', 3, 'yingdong', '236058', 1, '115.85659', '32.91296'); -INSERT INTO `base_postage_region` -VALUES (1130, 1127, NULL, '颍泉', '颍泉区', 3, 'yingquan', '236045', 1, '115.80712', '32.9249'); -INSERT INTO `base_postage_region` -VALUES (1131, 1127, 'L', '临泉', '临泉县', 3, 'linquan', '236400', 1, '115.26232', '33.06758'); -INSERT INTO `base_postage_region` -VALUES (1132, 1127, 'T', '太和', '太和县', 3, 'taihe', '236600', 1, '115.62191', '33.16025'); -INSERT INTO `base_postage_region` -VALUES (1133, 1127, 'F', '阜南', '阜南县', 3, 'funan', '236300', 1, '115.58563', '32.63551'); -INSERT INTO `base_postage_region` -VALUES (1134, 1127, NULL, '颍上', '颍上县', 3, 'yingshang', '236200', 1, '116.26458', '32.62998'); -INSERT INTO `base_postage_region` -VALUES (1135, 1127, 'J', '界首', '界首市', 3, 'jieshou', '236500', 1, '115.37445', '33.25714'); -INSERT INTO `base_postage_region` -VALUES (1136, 1046, 'S', '宿州', '宿州市', 2, 'suzhou', '234000', 1, '116.984084', '33.633891'); -INSERT INTO `base_postage_region` -VALUES (1137, 1136, NULL, '埇桥', '埇桥区', 3, 'yongqiao', '234000', 1, '116.97731', '33.64058'); -INSERT INTO `base_postage_region` -VALUES (1138, 1136, NULL, '砀山', '砀山县', 3, 'dangshan', '235300', 1, '116.35363', '34.42356'); -INSERT INTO `base_postage_region` -VALUES (1139, 1136, 'X', '萧县', '萧县', 3, 'xiaoxian', '235200', 1, '116.94546', '34.1879'); -INSERT INTO `base_postage_region` -VALUES (1140, 1136, 'L', '灵璧', '灵璧县', 3, 'lingbi', '234200', 1, '117.55813', '33.54339'); -INSERT INTO `base_postage_region` -VALUES (1141, 1136, NULL, '泗县', '泗县', 3, 'sixian', '234300', 1, '117.91033', '33.48295'); -INSERT INTO `base_postage_region` -VALUES (1142, 1046, 'L', '六安', '六安市', 2, 'luan', '237000', 1, '116.507676', '31.752889'); -INSERT INTO `base_postage_region` -VALUES (1143, 1142, 'J', '金安', '金安区', 3, 'jinan', '237005', 1, '116.50912', '31.75573'); -INSERT INTO `base_postage_region` -VALUES (1144, 1142, 'Y', '裕安', '裕安区', 3, 'yuan', '237010', 1, '116.47985', '31.73787'); -INSERT INTO `base_postage_region` -VALUES (1145, 1142, 'S', '寿县', '寿县', 3, 'shouxian', '232200', 1, '116.78466', '32.57653'); -INSERT INTO `base_postage_region` -VALUES (1146, 1142, 'H', '霍邱', '霍邱县', 3, 'huoqiu', '237400', 1, '116.27795', '32.353'); -INSERT INTO `base_postage_region` -VALUES (1147, 1142, 'S', '舒城', '舒城县', 3, 'shucheng', '231300', 1, '116.94491', '31.46413'); -INSERT INTO `base_postage_region` -VALUES (1148, 1142, 'J', '金寨', '金寨县', 3, 'jinzhai', '237300', 1, '115.93463', '31.7351'); -INSERT INTO `base_postage_region` -VALUES (1149, 1142, 'H', '霍山', '霍山县', 3, 'huoshan', '237200', 1, '116.33291', '31.3929'); -INSERT INTO `base_postage_region` -VALUES (1150, 1046, NULL, '亳州', '亳州市', 2, 'bozhou', '236802', 1, '115.782939', '33.869338'); -INSERT INTO `base_postage_region` -VALUES (1151, 1150, NULL, '谯城', '谯城区', 3, 'qiaocheng', '236800', 1, '115.77941', '33.87532'); -INSERT INTO `base_postage_region` -VALUES (1152, 1150, 'W', '涡阳', '涡阳县', 3, 'guoyang', '233600', 1, '116.21682', '33.50911'); -INSERT INTO `base_postage_region` -VALUES (1153, 1150, 'M', '蒙城', '蒙城县', 3, 'mengcheng', '233500', 1, '116.5646', '33.26477'); -INSERT INTO `base_postage_region` -VALUES (1154, 1150, 'L', '利辛', '利辛县', 3, 'lixin', '236700', 1, '116.208', '33.14198'); -INSERT INTO `base_postage_region` -VALUES (1155, 1046, 'C', '池州', '池州市', 2, 'chizhou', '247100', 1, '117.489157', '30.656037'); -INSERT INTO `base_postage_region` -VALUES (1156, 1155, 'G', '贵池', '贵池区', 3, 'guichi', '247100', 1, '117.48722', '30.65283'); -INSERT INTO `base_postage_region` -VALUES (1157, 1155, 'D', '东至', '东至县', 3, 'dongzhi', '247200', 1, '117.02719', '30.0969'); -INSERT INTO `base_postage_region` -VALUES (1158, 1155, 'S', '石台', '石台县', 3, 'shitai', '245100', 1, '117.48666', '30.21042'); -INSERT INTO `base_postage_region` -VALUES (1159, 1155, 'Q', '青阳', '青阳县', 3, 'qingyang', '242800', 1, '117.84744', '30.63932'); -INSERT INTO `base_postage_region` -VALUES (1160, 1046, 'X', '宣城', '宣城市', 2, 'xuancheng', '242000', 1, '118.757995', '30.945667'); -INSERT INTO `base_postage_region` -VALUES (1161, 1160, 'X', '宣州', '宣州区', 3, 'xuanzhou', '242000', 1, '118.75462', '30.94439'); -INSERT INTO `base_postage_region` -VALUES (1162, 1160, 'L', '郎溪', '郎溪县', 3, 'langxi', '242100', 1, '119.17923', '31.12599'); -INSERT INTO `base_postage_region` -VALUES (1163, 1160, 'G', '广德', '广德县', 3, 'guangde', '242200', 1, '119.41769', '30.89371'); -INSERT INTO `base_postage_region` -VALUES (1164, 1160, NULL, '泾县', '泾县', 3, 'jingxian', '242500', 1, '118.41964', '30.69498'); -INSERT INTO `base_postage_region` -VALUES (1165, 1160, 'J', '绩溪', '绩溪县', 3, 'jixi', '245300', 1, '118.59765', '30.07069'); -INSERT INTO `base_postage_region` -VALUES (1166, 1160, NULL, '旌德', '旌德县', 3, 'jingde', '242600', 1, '118.54299', '30.28898'); -INSERT INTO `base_postage_region` -VALUES (1167, 1160, 'N', '宁国', '宁国市', 3, 'ningguo', '242300', 1, '118.98349', '30.6238'); -INSERT INTO `base_postage_region` -VALUES (1168, 0, 'F', '福建', '福建省', 1, 'fujian', '', 1, '119.306239', '26.075302'); -INSERT INTO `base_postage_region` -VALUES (1169, 1168, 'F', '福州', '福州市', 2, 'fuzhou', '350001', 1, '119.306239', '26.075302'); -INSERT INTO `base_postage_region` -VALUES (1170, 1169, 'G', '鼓楼', '鼓楼区', 3, 'gulou', '350001', 1, '119.30384', '26.08225'); -INSERT INTO `base_postage_region` -VALUES (1171, 1169, 'T', '台江', '台江区', 3, 'taijiang', '350004', 1, '119.30899', '26.06204'); -INSERT INTO `base_postage_region` -VALUES (1172, 1169, 'C', '仓山', '仓山区', 3, 'cangshan', '350007', 1, '119.31543', '26.04335'); -INSERT INTO `base_postage_region` -VALUES (1173, 1169, 'M', '马尾', '马尾区', 3, 'mawei', '350015', 1, '119.4555', '25.98942'); -INSERT INTO `base_postage_region` -VALUES (1174, 1169, 'J', '晋安', '晋安区', 3, 'jinan', '350011', 1, '119.32828', '26.0818'); -INSERT INTO `base_postage_region` -VALUES (1175, 1169, 'M', '闽侯', '闽侯县', 3, 'minhou', '350100', 1, '119.13388', '26.15014'); -INSERT INTO `base_postage_region` -VALUES (1176, 1169, 'L', '连江', '连江县', 3, 'lianjiang', '350500', 1, '119.53433', '26.19466'); -INSERT INTO `base_postage_region` -VALUES (1177, 1169, 'L', '罗源', '罗源县', 3, 'luoyuan', '350600', 1, '119.5509', '26.48752'); -INSERT INTO `base_postage_region` -VALUES (1178, 1169, 'M', '闽清', '闽清县', 3, 'minqing', '350800', 1, '118.8623', '26.21901'); -INSERT INTO `base_postage_region` -VALUES (1179, 1169, 'Y', '永泰', '永泰县', 3, 'yongtai', '350700', 1, '118.936', '25.86816'); -INSERT INTO `base_postage_region` -VALUES (1180, 1169, 'P', '平潭', '平潭县', 3, 'pingtan', '350400', 1, '119.791197', '25.503672'); -INSERT INTO `base_postage_region` -VALUES (1181, 1169, 'F', '福清', '福清市', 3, 'fuqing', '350300', 1, '119.38507', '25.72086'); -INSERT INTO `base_postage_region` -VALUES (1182, 1169, 'C', '长乐', '长乐市', 3, 'changle', '350200', 1, '119.52313', '25.96276'); -INSERT INTO `base_postage_region` -VALUES (1183, 1168, 'X', '厦门', '厦门市', 2, 'xiamen', '361003', 1, '118.11022', '24.490474'); -INSERT INTO `base_postage_region` -VALUES (1184, 1183, 'S', '思明', '思明区', 3, 'siming', '361001', 1, '118.08233', '24.44543'); -INSERT INTO `base_postage_region` -VALUES (1185, 1183, 'H', '海沧', '海沧区', 3, 'haicang', '361026', 1, '118.03289', '24.48461'); -INSERT INTO `base_postage_region` -VALUES (1186, 1183, 'H', '湖里', '湖里区', 3, 'huli', '361006', 1, '118.14621', '24.51253'); -INSERT INTO `base_postage_region` -VALUES (1187, 1183, 'J', '集美', '集美区', 3, 'jimei', '361021', 1, '118.09719', '24.57584'); -INSERT INTO `base_postage_region` -VALUES (1188, 1183, 'T', '同安', '同安区', 3, 'tongan', '361100', 1, '118.15197', '24.72308'); -INSERT INTO `base_postage_region` -VALUES (1189, 1183, 'X', '翔安', '翔安区', 3, 'xiangan', '361101', 1, '118.24783', '24.61863'); -INSERT INTO `base_postage_region` -VALUES (1190, 1168, 'P', '莆田', '莆田市', 2, 'putian', '351100', 1, '119.007558', '25.431011'); -INSERT INTO `base_postage_region` -VALUES (1191, 1190, 'C', '城厢', '城厢区', 3, 'chengxiang', '351100', 1, '118.99462', '25.41872'); -INSERT INTO `base_postage_region` -VALUES (1192, 1190, 'H', '涵江', '涵江区', 3, 'hanjiang', '351111', 1, '119.11621', '25.45876'); -INSERT INTO `base_postage_region` -VALUES (1193, 1190, 'L', '荔城', '荔城区', 3, 'licheng', '351100', 1, '119.01339', '25.43369'); -INSERT INTO `base_postage_region` -VALUES (1194, 1190, 'X', '秀屿', '秀屿区', 3, 'xiuyu', '351152', 1, '119.10553', '25.31831'); -INSERT INTO `base_postage_region` -VALUES (1195, 1190, 'X', '仙游', '仙游县', 3, 'xianyou', '351200', 1, '118.69177', '25.36214'); -INSERT INTO `base_postage_region` -VALUES (1196, 1168, 'S', '三明', '三明市', 2, 'sanming', '365000', 1, '117.635001', '26.265444'); -INSERT INTO `base_postage_region` -VALUES (1197, 1196, 'M', '梅列', '梅列区', 3, 'meilie', '365000', 1, '117.64585', '26.27171'); -INSERT INTO `base_postage_region` -VALUES (1198, 1196, 'S', '三元', '三元区', 3, 'sanyuan', '365001', 1, '117.60788', '26.23372'); -INSERT INTO `base_postage_region` -VALUES (1199, 1196, 'M', '明溪', '明溪县', 3, 'mingxi', '365200', 1, '117.20498', '26.35294'); -INSERT INTO `base_postage_region` -VALUES (1200, 1196, 'Q', '清流', '清流县', 3, 'qingliu', '365300', 1, '116.8146', '26.17144'); -INSERT INTO `base_postage_region` -VALUES (1201, 1196, 'N', '宁化', '宁化县', 3, 'ninghua', '365400', 1, '116.66101', '26.25874'); -INSERT INTO `base_postage_region` -VALUES (1202, 1196, 'D', '大田', '大田县', 3, 'datian', '366100', 1, '117.8471', '25.6926'); -INSERT INTO `base_postage_region` -VALUES (1203, 1196, 'Y', '尤溪', '尤溪县', 3, 'youxi', '365100', 1, '118.19049', '26.17002'); -INSERT INTO `base_postage_region` -VALUES (1204, 1196, 'S', '沙县', '沙县', 3, 'shaxian', '365500', 1, '117.79266', '26.39615'); -INSERT INTO `base_postage_region` -VALUES (1205, 1196, 'J', '将乐', '将乐县', 3, 'jiangle', '353300', 1, '117.47317', '26.72837'); -INSERT INTO `base_postage_region` -VALUES (1206, 1196, 'T', '泰宁', '泰宁县', 3, 'taining', '354400', 1, '117.17578', '26.9001'); -INSERT INTO `base_postage_region` -VALUES (1207, 1196, 'J', '建宁', '建宁县', 3, 'jianning', '354500', 1, '116.84603', '26.83091'); -INSERT INTO `base_postage_region` -VALUES (1208, 1196, 'Y', '永安', '永安市', 3, 'yongan', '366000', 1, '117.36517', '25.94136'); -INSERT INTO `base_postage_region` -VALUES (1209, 1168, 'Q', '泉州', '泉州市', 2, 'quanzhou', '362000', 1, '118.589421', '24.908853'); -INSERT INTO `base_postage_region` -VALUES (1210, 1209, 'L', '鲤城', '鲤城区', 3, 'licheng', '362000', 1, '118.56591', '24.88741'); -INSERT INTO `base_postage_region` -VALUES (1211, 1209, 'F', '丰泽', '丰泽区', 3, 'fengze', '362000', 1, '118.61328', '24.89119'); -INSERT INTO `base_postage_region` -VALUES (1212, 1209, 'L', '洛江', '洛江区', 3, 'luojiang', '362011', 1, '118.67111', '24.93984'); -INSERT INTO `base_postage_region` -VALUES (1213, 1209, 'Q', '泉港', '泉港区', 3, 'quangang', '362114', 1, '118.91586', '25.12005'); -INSERT INTO `base_postage_region` -VALUES (1214, 1209, 'H', '惠安', '惠安县', 3, 'huian', '362100', 1, '118.79687', '25.03059'); -INSERT INTO `base_postage_region` -VALUES (1215, 1209, 'A', '安溪', '安溪县', 3, 'anxi', '362400', 1, '118.18719', '25.05627'); -INSERT INTO `base_postage_region` -VALUES (1216, 1209, 'Y', '永春', '永春县', 3, 'yongchun', '362600', 1, '118.29437', '25.32183'); -INSERT INTO `base_postage_region` -VALUES (1217, 1209, 'D', '德化', '德化县', 3, 'dehua', '362500', 1, '118.24176', '25.49224'); -INSERT INTO `base_postage_region` -VALUES (1218, 1209, 'J', '金门', '金门县', 3, 'jinmen', '', 1, '118.32263', '24.42922'); -INSERT INTO `base_postage_region` -VALUES (1219, 1209, 'S', '石狮', '石狮市', 3, 'shishi', '362700', 1, '118.64779', '24.73242'); -INSERT INTO `base_postage_region` -VALUES (1220, 1209, 'J', '晋江', '晋江市', 3, 'jinjiang', '362200', 1, '118.55194', '24.78141'); -INSERT INTO `base_postage_region` -VALUES (1221, 1209, 'N', '南安', '南安市', 3, 'nanan', '362300', 1, '118.38589', '24.96055'); -INSERT INTO `base_postage_region` -VALUES (1222, 1168, 'Z', '漳州', '漳州市', 2, 'zhangzhou', '363005', 1, '117.661801', '24.510897'); -INSERT INTO `base_postage_region` -VALUES (1223, 1222, NULL, '芗城', '芗城区', 3, 'xiangcheng', '363000', 1, '117.65402', '24.51081'); -INSERT INTO `base_postage_region` -VALUES (1224, 1222, 'L', '龙文', '龙文区', 3, 'longwen', '363005', 1, '117.70971', '24.50323'); -INSERT INTO `base_postage_region` -VALUES (1225, 1222, 'Y', '云霄', '云霄县', 3, 'yunxiao', '363300', 1, '117.34051', '23.95534'); -INSERT INTO `base_postage_region` -VALUES (1226, 1222, 'Z', '漳浦', '漳浦县', 3, 'zhangpu', '363200', 1, '117.61367', '24.11706'); -INSERT INTO `base_postage_region` -VALUES (1227, 1222, NULL, '诏安', '诏安县', 3, 'zhaoan', '363500', 1, '117.17501', '23.71148'); -INSERT INTO `base_postage_region` -VALUES (1228, 1222, 'C', '长泰', '长泰县', 3, 'changtai', '363900', 1, '117.75924', '24.62526'); -INSERT INTO `base_postage_region` -VALUES (1229, 1222, 'D', '东山', '东山县', 3, 'dongshan', '363400', 1, '117.42822', '23.70109'); -INSERT INTO `base_postage_region` -VALUES (1230, 1222, 'N', '南靖', '南靖县', 3, 'nanjing', '363600', 1, '117.35736', '24.51448'); -INSERT INTO `base_postage_region` -VALUES (1231, 1222, 'P', '平和', '平和县', 3, 'pinghe', '363700', 1, '117.3124', '24.36395'); -INSERT INTO `base_postage_region` -VALUES (1232, 1222, 'H', '华安', '华安县', 3, 'huaan', '363800', 1, '117.54077', '25.00563'); -INSERT INTO `base_postage_region` -VALUES (1233, 1222, 'L', '龙海', '龙海市', 3, 'longhai', '363100', 1, '117.81802', '24.44655'); -INSERT INTO `base_postage_region` -VALUES (1234, 1168, 'N', '南平', '南平市', 2, 'nanping', '353000', 1, '118.178459', '26.635627'); -INSERT INTO `base_postage_region` -VALUES (1235, 1234, 'Y', '延平', '延平区', 3, 'yanping', '353000', 1, '118.18189', '26.63745'); -INSERT INTO `base_postage_region` -VALUES (1236, 1234, 'J', '建阳', '建阳区', 3, 'jianyang', '354200', 1, '118.12267', '27.332067'); -INSERT INTO `base_postage_region` -VALUES (1237, 1234, 'S', '顺昌', '顺昌县', 3, 'shunchang', '353200', 1, '117.8103', '26.79298'); -INSERT INTO `base_postage_region` -VALUES (1238, 1234, 'P', '浦城', '浦城县', 3, 'pucheng', '353400', 1, '118.54007', '27.91888'); -INSERT INTO `base_postage_region` -VALUES (1239, 1234, 'G', '光泽', '光泽县', 3, 'guangze', '354100', 1, '117.33346', '27.54231'); -INSERT INTO `base_postage_region` -VALUES (1240, 1234, 'S', '松溪', '松溪县', 3, 'songxi', '353500', 1, '118.78533', '27.52624'); -INSERT INTO `base_postage_region` -VALUES (1241, 1234, 'Z', '政和', '政和县', 3, 'zhenghe', '353600', 1, '118.85571', '27.36769'); -INSERT INTO `base_postage_region` -VALUES (1242, 1234, 'S', '邵武', '邵武市', 3, 'shaowu', '354000', 1, '117.4924', '27.34033'); -INSERT INTO `base_postage_region` -VALUES (1243, 1234, 'W', '武夷山', '武夷山市', 3, 'wuyishan', '354300', 1, '118.03665', '27.75543'); -INSERT INTO `base_postage_region` -VALUES (1244, 1234, 'J', '建瓯', '建瓯市', 3, 'jianou', '353100', 1, '118.29766', '27.02301'); -INSERT INTO `base_postage_region` -VALUES (1245, 1168, 'L', '龙岩', '龙岩市', 2, 'longyan', '364000', 1, '117.02978', '25.091603'); -INSERT INTO `base_postage_region` -VALUES (1246, 1245, 'X', '新罗', '新罗区', 3, 'xinluo', '364000', 1, '117.03693', '25.09834'); -INSERT INTO `base_postage_region` -VALUES (1247, 1245, 'C', '长汀', '长汀县', 3, 'changting', '366300', 1, '116.35888', '25.82773'); -INSERT INTO `base_postage_region` -VALUES (1248, 1245, 'Y', '永定', '永定区', 3, 'yongding', '364100', 1, '116.73199', '24.72302'); -INSERT INTO `base_postage_region` -VALUES (1249, 1245, 'S', '上杭', '上杭县', 3, 'shanghang', '364200', 1, '116.42022', '25.04943'); -INSERT INTO `base_postage_region` -VALUES (1250, 1245, 'W', '武平', '武平县', 3, 'wuping', '364300', 1, '116.10229', '25.09244'); -INSERT INTO `base_postage_region` -VALUES (1251, 1245, 'L', '连城', '连城县', 3, 'liancheng', '366200', 1, '116.75454', '25.7103'); -INSERT INTO `base_postage_region` -VALUES (1252, 1245, 'Z', '漳平', '漳平市', 3, 'zhangping', '364400', 1, '117.41992', '25.29109'); -INSERT INTO `base_postage_region` -VALUES (1253, 1168, 'N', '宁德', '宁德市', 2, 'ningde', '352100', 1, '119.527082', '26.65924'); -INSERT INTO `base_postage_region` -VALUES (1254, 1253, 'J', '蕉城', '蕉城区', 3, 'jiaocheng', '352100', 1, '119.52643', '26.66048'); -INSERT INTO `base_postage_region` -VALUES (1255, 1253, 'X', '霞浦', '霞浦县', 3, 'xiapu', '355100', 1, '119.99893', '26.88578'); -INSERT INTO `base_postage_region` -VALUES (1256, 1253, 'G', '古田', '古田县', 3, 'gutian', '352200', 1, '118.74688', '26.57682'); -INSERT INTO `base_postage_region` -VALUES (1257, 1253, 'P', '屏南', '屏南县', 3, 'pingnan', '352300', 1, '118.98861', '26.91099'); -INSERT INTO `base_postage_region` -VALUES (1258, 1253, 'S', '寿宁', '寿宁县', 3, 'shouning', '355500', 1, '119.5039', '27.45996'); -INSERT INTO `base_postage_region` -VALUES (1259, 1253, 'Z', '周宁', '周宁县', 3, 'zhouning', '355400', 1, '119.33837', '27.10664'); -INSERT INTO `base_postage_region` -VALUES (1260, 1253, NULL, '柘荣', '柘荣县', 3, 'zherong', '355300', 1, '119.89971', '27.23543'); -INSERT INTO `base_postage_region` -VALUES (1261, 1253, 'F', '福安', '福安市', 3, 'fuan', '355000', 1, '119.6495', '27.08673'); -INSERT INTO `base_postage_region` -VALUES (1262, 1253, 'F', '福鼎', '福鼎市', 3, 'fuding', '355200', 1, '120.21664', '27.3243'); -INSERT INTO `base_postage_region` -VALUES (1263, 0, 'J', '江西', '江西省', 1, 'jiangxi', '', 1, '115.892151', '28.676493'); -INSERT INTO `base_postage_region` -VALUES (1264, 1263, 'N', '南昌', '南昌市', 2, 'nanchang', '330008', 1, '115.892151', '28.676493'); -INSERT INTO `base_postage_region` -VALUES (1265, 1264, 'D', '东湖', '东湖区', 3, 'donghu', '330006', 1, '115.8988', '28.68505'); -INSERT INTO `base_postage_region` -VALUES (1266, 1264, 'X', '西湖', '西湖区', 3, 'xihu', '330009', 1, '115.87728', '28.65688'); -INSERT INTO `base_postage_region` -VALUES (1267, 1264, 'Q', '青云谱', '青云谱区', 3, 'qingyunpu', '330001', 1, '115.915', '28.63199'); -INSERT INTO `base_postage_region` -VALUES (1268, 1264, 'W', '湾里', '湾里区', 3, 'wanli', '330004', 1, '115.73104', '28.71529'); -INSERT INTO `base_postage_region` -VALUES (1269, 1264, 'Q', '青山湖', '青山湖区', 3, 'qingshanhu', '330029', 1, '115.9617', '28.68206'); -INSERT INTO `base_postage_region` -VALUES (1270, 1264, 'N', '南昌', '南昌县', 3, 'nanchang', '330200', 1, '115.94393', '28.54559'); -INSERT INTO `base_postage_region` -VALUES (1271, 1264, 'X', '新建', '新建县', 3, 'xinjian', '330100', 1, '115.81546', '28.69248'); -INSERT INTO `base_postage_region` -VALUES (1272, 1264, 'A', '安义', '安义县', 3, 'anyi', '330500', 1, '115.54879', '28.84602'); -INSERT INTO `base_postage_region` -VALUES (1273, 1264, 'J', '进贤', '进贤县', 3, 'jinxian', '331700', 1, '116.24087', '28.37679'); -INSERT INTO `base_postage_region` -VALUES (1274, 1263, 'J', '景德镇', '景德镇市', 2, 'jingdezhen', '333000', 1, '117.214664', '29.29256'); -INSERT INTO `base_postage_region` -VALUES (1275, 1274, 'C', '昌江', '昌江区', 3, 'changjiang', '333000', 1, '117.18359', '29.27321'); -INSERT INTO `base_postage_region` -VALUES (1276, 1274, 'Z', '珠山', '珠山区', 3, 'zhushan', '333000', 1, '117.20233', '29.30127'); -INSERT INTO `base_postage_region` -VALUES (1277, 1274, 'F', '浮梁', '浮梁县', 3, 'fuliang', '333400', 1, '117.21517', '29.35156'); -INSERT INTO `base_postage_region` -VALUES (1278, 1274, 'L', '乐平', '乐平市', 3, 'leping', '333300', 1, '117.12887', '28.96295'); -INSERT INTO `base_postage_region` -VALUES (1279, 1263, 'P', '萍乡', '萍乡市', 2, 'pingxiang', '337000', 1, '113.852186', '27.622946'); -INSERT INTO `base_postage_region` -VALUES (1280, 1279, 'A', '安源', '安源区', 3, 'anyuan', '337000', 1, '113.89135', '27.61653'); -INSERT INTO `base_postage_region` -VALUES (1281, 1279, 'X', '湘东', '湘东区', 3, 'xiangdong', '337016', 1, '113.73294', '27.64007'); -INSERT INTO `base_postage_region` -VALUES (1282, 1279, 'L', '莲花', '莲花县', 3, 'lianhua', '337100', 1, '113.96142', '27.12866'); -INSERT INTO `base_postage_region` -VALUES (1283, 1279, 'S', '上栗', '上栗县', 3, 'shangli', '337009', 1, '113.79403', '27.87467'); -INSERT INTO `base_postage_region` -VALUES (1284, 1279, 'L', '芦溪', '芦溪县', 3, 'luxi', '337053', 1, '114.02951', '27.63063'); -INSERT INTO `base_postage_region` -VALUES (1285, 1263, 'J', '九江', '九江市', 2, 'jiujiang', '332000', 1, '115.992811', '29.712034'); -INSERT INTO `base_postage_region` -VALUES (1286, 1285, 'L', '庐山', '庐山区', 3, 'lushan', '332005', 1, '115.98904', '29.67177'); -INSERT INTO `base_postage_region` -VALUES (1287, 1285, NULL, '浔阳', '浔阳区', 3, 'xunyang', '332000', 1, '115.98986', '29.72786'); -INSERT INTO `base_postage_region` -VALUES (1288, 1285, 'J', '九江', '九江县', 3, 'jiujiang', '332100', 1, '115.91128', '29.60852'); -INSERT INTO `base_postage_region` -VALUES (1289, 1285, 'W', '武宁', '武宁县', 3, 'wuning', '332300', 1, '115.10061', '29.2584'); -INSERT INTO `base_postage_region` -VALUES (1290, 1285, 'X', '修水', '修水县', 3, 'xiushui', '332400', 1, '114.54684', '29.02539'); -INSERT INTO `base_postage_region` -VALUES (1291, 1285, 'Y', '永修', '永修县', 3, 'yongxiu', '330300', 1, '115.80911', '29.02093'); -INSERT INTO `base_postage_region` -VALUES (1292, 1285, 'D', '德安', '德安县', 3, 'dean', '330400', 1, '115.75601', '29.31341'); -INSERT INTO `base_postage_region` -VALUES (1293, 1285, 'X', '星子', '星子县', 3, 'xingzi', '332800', 1, '116.04492', '29.44608'); -INSERT INTO `base_postage_region` -VALUES (1294, 1285, 'D', '都昌', '都昌县', 3, 'duchang', '332600', 1, '116.20401', '29.27327'); -INSERT INTO `base_postage_region` -VALUES (1295, 1285, 'H', '湖口', '湖口县', 3, 'hukou', '332500', 1, '116.21853', '29.73818'); -INSERT INTO `base_postage_region` -VALUES (1296, 1285, 'P', '彭泽', '彭泽县', 3, 'pengze', '332700', 1, '116.55011', '29.89589'); -INSERT INTO `base_postage_region` -VALUES (1297, 1285, 'R', '瑞昌', '瑞昌市', 3, 'ruichang', '332200', 1, '115.66705', '29.67183'); -INSERT INTO `base_postage_region` -VALUES (1298, 1285, 'G', '共青城', '共青城市', 3, 'gongqingcheng', '332020', 1, '115.801939', '29.238785'); -INSERT INTO `base_postage_region` -VALUES (1299, 1263, 'X', '新余', '新余市', 2, 'xinyu', '338025', 1, '114.930835', '27.810834'); -INSERT INTO `base_postage_region` -VALUES (1300, 1299, 'Y', '渝水', '渝水区', 3, 'yushui', '338025', 1, '114.944', '27.80098'); -INSERT INTO `base_postage_region` -VALUES (1301, 1299, 'F', '分宜', '分宜县', 3, 'fenyi', '336600', 1, '114.69189', '27.81475'); -INSERT INTO `base_postage_region` -VALUES (1302, 1263, 'Y', '鹰潭', '鹰潭市', 2, 'yingtan', '335000', 1, '117.033838', '28.238638'); -INSERT INTO `base_postage_region` -VALUES (1303, 1302, 'Y', '月湖', '月湖区', 3, 'yuehu', '335000', 1, '117.03732', '28.23913'); -INSERT INTO `base_postage_region` -VALUES (1304, 1302, 'Y', '余江', '余江县', 3, 'yujiang', '335200', 1, '116.81851', '28.21034'); -INSERT INTO `base_postage_region` -VALUES (1305, 1302, 'G', '贵溪', '贵溪市', 3, 'guixi', '335400', 1, '117.24246', '28.2926'); -INSERT INTO `base_postage_region` -VALUES (1306, 1263, 'G', '赣州', '赣州市', 2, 'ganzhou', '341000', 1, '114.940278', '25.85097'); -INSERT INTO `base_postage_region` -VALUES (1307, 1306, 'Z', '章贡', '章贡区', 3, 'zhanggong', '341000', 1, '114.94284', '25.8624'); -INSERT INTO `base_postage_region` -VALUES (1308, 1306, 'N', '南康', '南康区', 3, 'nankang', '341400', 1, '114.756933', '25.661721'); -INSERT INTO `base_postage_region` -VALUES (1309, 1306, 'G', '赣县', '赣县', 3, 'ganxian', '341100', 1, '115.01171', '25.86149'); -INSERT INTO `base_postage_region` -VALUES (1310, 1306, 'X', '信丰', '信丰县', 3, 'xinfeng', '341600', 1, '114.92279', '25.38612'); -INSERT INTO `base_postage_region` -VALUES (1311, 1306, 'D', '大余', '大余县', 3, 'dayu', '341500', 1, '114.35757', '25.39561'); -INSERT INTO `base_postage_region` -VALUES (1312, 1306, 'S', '上犹', '上犹县', 3, 'shangyou', '341200', 1, '114.54138', '25.79567'); -INSERT INTO `base_postage_region` -VALUES (1313, 1306, 'C', '崇义', '崇义县', 3, 'chongyi', '341300', 1, '114.30835', '25.68186'); -INSERT INTO `base_postage_region` -VALUES (1314, 1306, 'A', '安远', '安远县', 3, 'anyuan', '342100', 1, '115.39483', '25.1371'); -INSERT INTO `base_postage_region` -VALUES (1315, 1306, 'L', '龙南', '龙南县', 3, 'longnan', '341700', 1, '114.78994', '24.91086'); -INSERT INTO `base_postage_region` -VALUES (1316, 1306, 'D', '定南', '定南县', 3, 'dingnan', '341900', 1, '115.02713', '24.78395'); -INSERT INTO `base_postage_region` -VALUES (1317, 1306, 'Q', '全南', '全南县', 3, 'quannan', '341800', 1, '114.5292', '24.74324'); -INSERT INTO `base_postage_region` -VALUES (1318, 1306, 'N', '宁都', '宁都县', 3, 'ningdu', '342800', 1, '116.01565', '26.47227'); -INSERT INTO `base_postage_region` -VALUES (1319, 1306, 'Y', '于都', '于都县', 3, 'yudu', '342300', 1, '115.41415', '25.95257'); -INSERT INTO `base_postage_region` -VALUES (1320, 1306, 'X', '兴国', '兴国县', 3, 'xingguo', '342400', 1, '115.36309', '26.33776'); -INSERT INTO `base_postage_region` -VALUES (1321, 1306, 'H', '会昌', '会昌县', 3, 'huichang', '342600', 1, '115.78555', '25.60068'); -INSERT INTO `base_postage_region` -VALUES (1322, 1306, 'X', '寻乌', '寻乌县', 3, 'xunwu', '342200', 1, '115.64852', '24.95513'); -INSERT INTO `base_postage_region` -VALUES (1323, 1306, 'S', '石城', '石城县', 3, 'shicheng', '342700', 1, '116.3442', '26.32617'); -INSERT INTO `base_postage_region` -VALUES (1324, 1306, 'R', '瑞金', '瑞金市', 3, 'ruijin', '342500', 1, '116.02703', '25.88557'); -INSERT INTO `base_postage_region` -VALUES (1325, 1263, 'J', '吉安', '吉安市', 2, 'jian', '343000', 1, '114.986373', '27.111699'); -INSERT INTO `base_postage_region` -VALUES (1326, 1325, 'J', '吉州', '吉州区', 3, 'jizhou', '343000', 1, '114.97598', '27.10669'); -INSERT INTO `base_postage_region` -VALUES (1327, 1325, 'Q', '青原', '青原区', 3, 'qingyuan', '343009', 1, '115.01747', '27.10577'); -INSERT INTO `base_postage_region` -VALUES (1328, 1325, 'J', '吉安', '吉安县', 3, 'jian', '343100', 1, '114.90695', '27.04048'); -INSERT INTO `base_postage_region` -VALUES (1329, 1325, 'J', '吉水', '吉水县', 3, 'jishui', '331600', 1, '115.1343', '27.21071'); -INSERT INTO `base_postage_region` -VALUES (1330, 1325, 'X', '峡江', '峡江县', 3, 'xiajiang', '331409', 1, '115.31723', '27.576'); -INSERT INTO `base_postage_region` -VALUES (1331, 1325, 'X', '新干', '新干县', 3, 'xingan', '331300', 1, '115.39306', '27.74092'); -INSERT INTO `base_postage_region` -VALUES (1332, 1325, 'Y', '永丰', '永丰县', 3, 'yongfeng', '331500', 1, '115.44238', '27.31785'); -INSERT INTO `base_postage_region` -VALUES (1333, 1325, 'T', '泰和', '泰和县', 3, 'taihe', '343700', 1, '114.90789', '26.79113'); -INSERT INTO `base_postage_region` -VALUES (1334, 1325, 'S', '遂川', '遂川县', 3, 'suichuan', '343900', 1, '114.51629', '26.32598'); -INSERT INTO `base_postage_region` -VALUES (1335, 1325, 'W', '万安', '万安县', 3, 'wanan', '343800', 1, '114.78659', '26.45931'); -INSERT INTO `base_postage_region` -VALUES (1336, 1325, 'A', '安福', '安福县', 3, 'anfu', '343200', 1, '114.61956', '27.39276'); -INSERT INTO `base_postage_region` -VALUES (1337, 1325, 'Y', '永新', '永新县', 3, 'yongxin', '343400', 1, '114.24246', '26.94488'); -INSERT INTO `base_postage_region` -VALUES (1338, 1325, 'J', '井冈山', '井冈山市', 3, 'jinggangshan', '343600', 1, '114.28949', '26.74804'); -INSERT INTO `base_postage_region` -VALUES (1339, 1263, 'Y', '宜春', '宜春市', 2, 'yichun', '336000', 1, '114.391136', '27.8043'); -INSERT INTO `base_postage_region` -VALUES (1340, 1339, 'Y', '袁州', '袁州区', 3, 'yuanzhou', '336000', 1, '114.38246', '27.79649'); -INSERT INTO `base_postage_region` -VALUES (1341, 1339, 'F', '奉新', '奉新县', 3, 'fengxin', '330700', 1, '115.40036', '28.6879'); -INSERT INTO `base_postage_region` -VALUES (1342, 1339, 'W', '万载', '万载县', 3, 'wanzai', '336100', 1, '114.4458', '28.10656'); -INSERT INTO `base_postage_region` -VALUES (1343, 1339, 'S', '上高', '上高县', 3, 'shanggao', '336400', 1, '114.92459', '28.23423'); -INSERT INTO `base_postage_region` -VALUES (1344, 1339, 'Y', '宜丰', '宜丰县', 3, 'yifeng', '336300', 1, '114.7803', '28.38555'); -INSERT INTO `base_postage_region` -VALUES (1345, 1339, 'J', '靖安', '靖安县', 3, 'jingan', '330600', 1, '115.36279', '28.86167'); -INSERT INTO `base_postage_region` -VALUES (1346, 1339, 'T', '铜鼓', '铜鼓县', 3, 'tonggu', '336200', 1, '114.37036', '28.52311'); -INSERT INTO `base_postage_region` -VALUES (1347, 1339, 'F', '丰城', '丰城市', 3, 'fengcheng', '331100', 1, '115.77114', '28.15918'); -INSERT INTO `base_postage_region` -VALUES (1348, 1339, 'Z', '樟树', '樟树市', 3, 'zhangshu', '331200', 1, '115.5465', '28.05332'); -INSERT INTO `base_postage_region` -VALUES (1349, 1339, 'G', '高安', '高安市', 3, 'gaoan', '330800', 1, '115.3753', '28.4178'); -INSERT INTO `base_postage_region` -VALUES (1350, 1263, 'F', '抚州', '抚州市', 2, 'fuzhou', '344000', 1, '116.358351', '27.98385'); -INSERT INTO `base_postage_region` -VALUES (1351, 1350, 'L', '临川', '临川区', 3, 'linchuan', '344000', 1, '116.35919', '27.97721'); -INSERT INTO `base_postage_region` -VALUES (1352, 1350, 'N', '南城', '南城县', 3, 'nancheng', '344700', 1, '116.64419', '27.55381'); -INSERT INTO `base_postage_region` -VALUES (1353, 1350, 'L', '黎川', '黎川县', 3, 'lichuan', '344600', 1, '116.90771', '27.28232'); -INSERT INTO `base_postage_region` -VALUES (1354, 1350, 'N', '南丰', '南丰县', 3, 'nanfeng', '344500', 1, '116.5256', '27.21842'); -INSERT INTO `base_postage_region` -VALUES (1355, 1350, 'C', '崇仁', '崇仁县', 3, 'chongren', '344200', 1, '116.06021', '27.75962'); -INSERT INTO `base_postage_region` -VALUES (1356, 1350, 'L', '乐安', '乐安县', 3, 'lean', '344300', 1, '115.83108', '27.42812'); -INSERT INTO `base_postage_region` -VALUES (1357, 1350, 'Y', '宜黄', '宜黄县', 3, 'yihuang', '344400', 1, '116.23626', '27.55487'); -INSERT INTO `base_postage_region` -VALUES (1358, 1350, 'J', '金溪', '金溪县', 3, 'jinxi', '344800', 1, '116.77392', '27.90753'); -INSERT INTO `base_postage_region` -VALUES (1359, 1350, 'Z', '资溪', '资溪县', 3, 'zixi', '335300', 1, '117.06939', '27.70493'); -INSERT INTO `base_postage_region` -VALUES (1360, 1350, 'D', '东乡', '东乡县', 3, 'dongxiang', '331800', 1, '116.59039', '28.23614'); -INSERT INTO `base_postage_region` -VALUES (1361, 1350, 'G', '广昌', '广昌县', 3, 'guangchang', '344900', 1, '116.32547', '26.8341'); -INSERT INTO `base_postage_region` -VALUES (1362, 1263, 'S', '上饶', '上饶市', 2, 'shangrao', '334000', 1, '117.971185', '28.44442'); -INSERT INTO `base_postage_region` -VALUES (1363, 1362, 'X', '信州', '信州区', 3, 'xinzhou', '334000', 1, '117.96682', '28.43121'); -INSERT INTO `base_postage_region` -VALUES (1364, 1362, 'S', '上饶', '上饶县', 3, 'shangrao', '334100', 1, '117.90884', '28.44856'); -INSERT INTO `base_postage_region` -VALUES (1365, 1362, 'G', '广丰', '广丰县', 3, 'guangfeng', '334600', 1, '118.19158', '28.43766'); -INSERT INTO `base_postage_region` -VALUES (1366, 1362, 'Y', '玉山', '玉山县', 3, 'yushan', '334700', 1, '118.24462', '28.6818'); -INSERT INTO `base_postage_region` -VALUES (1367, 1362, 'Q', '铅山', '铅山县', 3, 'yanshan', '334500', 1, '117.70996', '28.31549'); -INSERT INTO `base_postage_region` -VALUES (1368, 1362, 'H', '横峰', '横峰县', 3, 'hengfeng', '334300', 1, '117.5964', '28.40716'); -INSERT INTO `base_postage_region` -VALUES (1369, 1362, NULL, '弋阳', '弋阳县', 3, 'yiyang', '334400', 1, '117.45929', '28.37451'); -INSERT INTO `base_postage_region` -VALUES (1370, 1362, 'Y', '余干', '余干县', 3, 'yugan', '335100', 1, '116.69555', '28.70206'); -INSERT INTO `base_postage_region` -VALUES (1371, 1362, NULL, '鄱阳', '鄱阳县', 3, 'poyang', '333100', 1, '116.69967', '29.0118'); -INSERT INTO `base_postage_region` -VALUES (1372, 1362, 'W', '万年', '万年县', 3, 'wannian', '335500', 1, '117.06884', '28.69537'); -INSERT INTO `base_postage_region` -VALUES (1373, 1362, NULL, '婺源', '婺源县', 3, 'wuyuan', '333200', 1, '117.86105', '29.24841'); -INSERT INTO `base_postage_region` -VALUES (1374, 1362, 'D', '德兴', '德兴市', 3, 'dexing', '334200', 1, '117.57919', '28.94736'); -INSERT INTO `base_postage_region` -VALUES (1375, 0, 'S', '山东', '山东省', 1, 'shandong', '', 1, '117.000923', '36.675807'); -INSERT INTO `base_postage_region` -VALUES (1376, 1375, 'J', '济南', '济南市', 2, 'jinan', '250001', 1, '117.000923', '36.675807'); -INSERT INTO `base_postage_region` -VALUES (1377, 1376, 'L', '历下', '历下区', 3, 'lixia', '250014', 1, '117.0768', '36.66661'); -INSERT INTO `base_postage_region` -VALUES (1378, 1376, 'S', '市中区', '市中区', 3, 'shizhongqu', '250001', 1, '116.99741', '36.65101'); -INSERT INTO `base_postage_region` -VALUES (1379, 1376, 'H', '槐荫', '槐荫区', 3, 'huaiyin', '250117', 1, '116.90075', '36.65136'); -INSERT INTO `base_postage_region` -VALUES (1380, 1376, 'T', '天桥', '天桥区', 3, 'tianqiao', '250031', 1, '116.98749', '36.67801'); -INSERT INTO `base_postage_region` -VALUES (1381, 1376, 'L', '历城', '历城区', 3, 'licheng', '250100', 1, '117.06509', '36.67995'); -INSERT INTO `base_postage_region` -VALUES (1382, 1376, 'C', '长清', '长清区', 3, 'changqing', '250300', 1, '116.75192', '36.55352'); -INSERT INTO `base_postage_region` -VALUES (1383, 1376, 'P', '平阴', '平阴县', 3, 'pingyin', '250400', 1, '116.45587', '36.28955'); -INSERT INTO `base_postage_region` -VALUES (1384, 1376, 'J', '济阳', '济阳县', 3, 'jiyang', '251400', 1, '117.17327', '36.97845'); -INSERT INTO `base_postage_region` -VALUES (1385, 1376, 'S', '商河', '商河县', 3, 'shanghe', '251600', 1, '117.15722', '37.31119'); -INSERT INTO `base_postage_region` -VALUES (1386, 1376, 'Z', '章丘', '章丘市', 3, 'zhangqiu', '250200', 1, '117.53677', '36.71392'); -INSERT INTO `base_postage_region` -VALUES (1387, 1375, 'Q', '青岛', '青岛市', 2, 'qingdao', '266001', 1, '120.369557', '36.094406'); -INSERT INTO `base_postage_region` -VALUES (1388, 1387, 'S', '市南', '市南区', 3, 'shinan', '266001', 1, '120.38773', '36.06671'); -INSERT INTO `base_postage_region` -VALUES (1389, 1387, 'S', '市北', '市北区', 3, 'shibei', '266011', 1, '120.37469', '36.08734'); -INSERT INTO `base_postage_region` -VALUES (1390, 1387, 'H', '黄岛', '黄岛区', 3, 'huangdao', '266500', 1, '120.19775', '35.96065'); -INSERT INTO `base_postage_region` -VALUES (1391, 1387, NULL, '崂山', '崂山区', 3, 'laoshan', '266100', 1, '120.46923', '36.10717'); -INSERT INTO `base_postage_region` -VALUES (1392, 1387, 'L', '李沧', '李沧区', 3, 'licang', '266021', 1, '120.43286', '36.14502'); -INSERT INTO `base_postage_region` -VALUES (1393, 1387, 'C', '城阳', '城阳区', 3, 'chengyang', '266041', 1, '120.39621', '36.30735'); -INSERT INTO `base_postage_region` -VALUES (1394, 1387, 'J', '胶州', '胶州市', 3, 'jiaozhou', '266300', 1, '120.0335', '36.26442'); -INSERT INTO `base_postage_region` -VALUES (1395, 1387, 'J', '即墨', '即墨市', 3, 'jimo', '266200', 1, '120.44699', '36.38907'); -INSERT INTO `base_postage_region` -VALUES (1396, 1387, 'P', '平度', '平度市', 3, 'pingdu', '266700', 1, '119.95996', '36.78688'); -INSERT INTO `base_postage_region` -VALUES (1397, 1387, 'L', '莱西', '莱西市', 3, 'laixi', '266600', 1, '120.51773', '36.88804'); -INSERT INTO `base_postage_region` -VALUES (1398, 1387, 'X', '西海岸', '西海岸新区', 3, 'xihaian', '266500', 1, '120.19775', '35.96065'); -INSERT INTO `base_postage_region` -VALUES (1399, 1375, 'Z', '淄博', '淄博市', 2, 'zibo', '255039', 1, '118.047648', '36.814939'); -INSERT INTO `base_postage_region` -VALUES (1400, 1399, 'Z', '淄川', '淄川区', 3, 'zichuan', '255100', 1, '117.96655', '36.64339'); -INSERT INTO `base_postage_region` -VALUES (1401, 1399, 'Z', '张店', '张店区', 3, 'zhangdian', '255022', 1, '118.01788', '36.80676'); -INSERT INTO `base_postage_region` -VALUES (1402, 1399, 'B', '博山', '博山区', 3, 'boshan', '255200', 1, '117.86166', '36.49469'); -INSERT INTO `base_postage_region` -VALUES (1403, 1399, 'L', '临淄', '临淄区', 3, 'linzi', '255400', 1, '118.30966', '36.8259'); -INSERT INTO `base_postage_region` -VALUES (1404, 1399, 'Z', '周村', '周村区', 3, 'zhoucun', '255300', 1, '117.86969', '36.80322'); -INSERT INTO `base_postage_region` -VALUES (1405, 1399, 'H', '桓台', '桓台县', 3, 'huantai', '256400', 1, '118.09698', '36.96036'); -INSERT INTO `base_postage_region` -VALUES (1406, 1399, 'G', '高青', '高青县', 3, 'gaoqing', '256300', 1, '117.82708', '37.17197'); -INSERT INTO `base_postage_region` -VALUES (1407, 1399, 'Y', '沂源', '沂源县', 3, 'yiyuan', '256100', 1, '118.17105', '36.18536'); -INSERT INTO `base_postage_region` -VALUES (1408, 1375, 'Z', '枣庄', '枣庄市', 2, 'zaozhuang', '277101', 1, '117.557964', '34.856424'); -INSERT INTO `base_postage_region` -VALUES (1409, 1408, 'S', '市中区', '市中区', 3, 'shizhongqu', '277101', 1, '117.55603', '34.86391'); -INSERT INTO `base_postage_region` -VALUES (1410, 1408, 'X', '薛城', '薛城区', 3, 'xuecheng', '277000', 1, '117.26318', '34.79498'); -INSERT INTO `base_postage_region` -VALUES (1411, 1408, NULL, '峄城', '峄城区', 3, 'yicheng', '277300', 1, '117.59057', '34.77225'); -INSERT INTO `base_postage_region` -VALUES (1412, 1408, 'T', '台儿庄', '台儿庄区', 3, 'taierzhuang', '277400', 1, '117.73452', '34.56363'); -INSERT INTO `base_postage_region` -VALUES (1413, 1408, 'S', '山亭', '山亭区', 3, 'shanting', '277200', 1, '117.4663', '35.09541'); -INSERT INTO `base_postage_region` -VALUES (1414, 1408, NULL, '滕州', '滕州市', 3, 'tengzhou', '277500', 1, '117.165', '35.10534'); -INSERT INTO `base_postage_region` -VALUES (1415, 1375, 'D', '东营', '东营市', 2, 'dongying', '257093', 1, '118.4963', '37.461266'); -INSERT INTO `base_postage_region` -VALUES (1416, 1415, 'D', '东营', '东营区', 3, 'dongying', '257029', 1, '118.5816', '37.44875'); -INSERT INTO `base_postage_region` -VALUES (1417, 1415, 'H', '河口', '河口区', 3, 'hekou', '257200', 1, '118.5249', '37.88541'); -INSERT INTO `base_postage_region` -VALUES (1418, 1415, 'K', '垦利', '垦利县', 3, 'kenli', '257500', 1, '118.54815', '37.58825'); -INSERT INTO `base_postage_region` -VALUES (1419, 1415, 'L', '利津', '利津县', 3, 'lijin', '257400', 1, '118.25637', '37.49157'); -INSERT INTO `base_postage_region` -VALUES (1420, 1415, 'G', '广饶', '广饶县', 3, 'guangrao', '257300', 1, '118.40704', '37.05381'); -INSERT INTO `base_postage_region` -VALUES (1421, 1375, 'Y', '烟台', '烟台市', 2, 'yantai', '264010', 1, '121.391382', '37.539297'); -INSERT INTO `base_postage_region` -VALUES (1422, 1421, 'Z', '芝罘', '芝罘区', 3, 'zhifu', '264001', 1, '121.40023', '37.54064'); -INSERT INTO `base_postage_region` -VALUES (1423, 1421, 'F', '福山', '福山区', 3, 'fushan', '265500', 1, '121.26812', '37.49841'); -INSERT INTO `base_postage_region` -VALUES (1424, 1421, 'M', '牟平', '牟平区', 3, 'muping', '264100', 1, '121.60067', '37.38846'); -INSERT INTO `base_postage_region` -VALUES (1425, 1421, 'L', '莱山', '莱山区', 3, 'laishan', '264600', 1, '121.44512', '37.51165'); -INSERT INTO `base_postage_region` -VALUES (1426, 1421, 'C', '长岛', '长岛县', 3, 'changdao', '265800', 1, '120.738', '37.91754'); -INSERT INTO `base_postage_region` -VALUES (1427, 1421, 'L', '龙口', '龙口市', 3, 'longkou', '265700', 1, '120.50634', '37.64064'); -INSERT INTO `base_postage_region` -VALUES (1428, 1421, 'L', '莱阳', '莱阳市', 3, 'laiyang', '265200', 1, '120.71066', '36.98012'); -INSERT INTO `base_postage_region` -VALUES (1429, 1421, 'L', '莱州', '莱州市', 3, 'laizhou', '261400', 1, '119.94137', '37.17806'); -INSERT INTO `base_postage_region` -VALUES (1430, 1421, 'P', '蓬莱', '蓬莱市', 3, 'penglai', '265600', 1, '120.75988', '37.81119'); -INSERT INTO `base_postage_region` -VALUES (1431, 1421, 'Z', '招远', '招远市', 3, 'zhaoyuan', '265400', 1, '120.40481', '37.36269'); -INSERT INTO `base_postage_region` -VALUES (1432, 1421, 'Q', '栖霞', '栖霞市', 3, 'qixia', '265300', 1, '120.85025', '37.33571'); -INSERT INTO `base_postage_region` -VALUES (1433, 1421, 'H', '海阳', '海阳市', 3, 'haiyang', '265100', 1, '121.15976', '36.77622'); -INSERT INTO `base_postage_region` -VALUES (1434, 1375, 'W', '潍坊', '潍坊市', 2, 'weifang', '261041', 1, '119.107078', '36.70925'); -INSERT INTO `base_postage_region` -VALUES (1435, 1434, 'W', '潍城', '潍城区', 3, 'weicheng', '261021', 1, '119.10582', '36.7139'); -INSERT INTO `base_postage_region` -VALUES (1436, 1434, 'H', '寒亭', '寒亭区', 3, 'hanting', '261100', 1, '119.21832', '36.77504'); -INSERT INTO `base_postage_region` -VALUES (1437, 1434, 'F', '坊子', '坊子区', 3, 'fangzi', '261200', 1, '119.16476', '36.65218'); -INSERT INTO `base_postage_region` -VALUES (1438, 1434, 'K', '奎文', '奎文区', 3, 'kuiwen', '261031', 1, '119.12532', '36.70723'); -INSERT INTO `base_postage_region` -VALUES (1439, 1434, 'L', '临朐', '临朐县', 3, 'linqu', '262600', 1, '118.544', '36.51216'); -INSERT INTO `base_postage_region` -VALUES (1440, 1434, 'C', '昌乐', '昌乐县', 3, 'changle', '262400', 1, '118.83017', '36.7078'); -INSERT INTO `base_postage_region` -VALUES (1441, 1434, 'Q', '青州', '青州市', 3, 'qingzhou', '262500', 1, '118.47915', '36.68505'); -INSERT INTO `base_postage_region` -VALUES (1442, 1434, 'Z', '诸城', '诸城市', 3, 'zhucheng', '262200', 1, '119.40988', '35.99662'); -INSERT INTO `base_postage_region` -VALUES (1443, 1434, 'S', '寿光', '寿光市', 3, 'shouguang', '262700', 1, '118.74047', '36.88128'); -INSERT INTO `base_postage_region` -VALUES (1444, 1434, 'A', '安丘', '安丘市', 3, 'anqiu', '262100', 1, '119.2189', '36.47847'); -INSERT INTO `base_postage_region` -VALUES (1445, 1434, 'G', '高密', '高密市', 3, 'gaomi', '261500', 1, '119.75701', '36.38397'); -INSERT INTO `base_postage_region` -VALUES (1446, 1434, 'C', '昌邑', '昌邑市', 3, 'changyi', '261300', 1, '119.39767', '36.86008'); -INSERT INTO `base_postage_region` -VALUES (1447, 1375, 'J', '济宁', '济宁市', 2, 'jining', '272119', 1, '116.587245', '35.415393'); -INSERT INTO `base_postage_region` -VALUES (1448, 1447, 'R', '任城', '任城区', 3, 'rencheng', '272113', 1, '116.59504', '35.40659'); -INSERT INTO `base_postage_region` -VALUES (1449, 1447, NULL, '兖州', '兖州区', 3, 'yanzhou', '272000', 1, '116.826546', '35.552305'); -INSERT INTO `base_postage_region` -VALUES (1450, 1447, 'W', '微山', '微山县', 3, 'weishan', '277600', 1, '117.12875', '34.80712'); -INSERT INTO `base_postage_region` -VALUES (1451, 1447, 'Y', '鱼台', '鱼台县', 3, 'yutai', '272300', 1, '116.64761', '34.99674'); -INSERT INTO `base_postage_region` -VALUES (1452, 1447, 'J', '金乡', '金乡县', 3, 'jinxiang', '272200', 1, '116.31146', '35.065'); -INSERT INTO `base_postage_region` -VALUES (1453, 1447, 'J', '嘉祥', '嘉祥县', 3, 'jiaxiang', '272400', 1, '116.34249', '35.40836'); -INSERT INTO `base_postage_region` -VALUES (1454, 1447, NULL, '汶上', '汶上县', 3, 'wenshang', '272501', 1, '116.48742', '35.73295'); -INSERT INTO `base_postage_region` -VALUES (1455, 1447, NULL, '泗水', '泗水县', 3, 'sishui', '273200', 1, '117.27948', '35.66113'); -INSERT INTO `base_postage_region` -VALUES (1456, 1447, 'L', '梁山', '梁山县', 3, 'liangshan', '272600', 1, '116.09683', '35.80322'); -INSERT INTO `base_postage_region` -VALUES (1457, 1447, 'Q', '曲阜', '曲阜市', 3, 'qufu', '273100', 1, '116.98645', '35.58091'); -INSERT INTO `base_postage_region` -VALUES (1458, 1447, 'Z', '邹城', '邹城市', 3, 'zoucheng', '273500', 1, '116.97335', '35.40531'); -INSERT INTO `base_postage_region` -VALUES (1459, 1375, 'T', '泰安', '泰安市', 2, 'taian', '271000', 1, '117.129063', '36.194968'); -INSERT INTO `base_postage_region` -VALUES (1460, 1459, 'T', '泰山', '泰山区', 3, 'taishan', '271000', 1, '117.13446', '36.19411'); -INSERT INTO `base_postage_region` -VALUES (1461, 1459, NULL, '岱岳', '岱岳区', 3, 'daiyue', '271000', 1, '117.04174', '36.1875'); -INSERT INTO `base_postage_region` -VALUES (1462, 1459, 'N', '宁阳', '宁阳县', 3, 'ningyang', '271400', 1, '116.80542', '35.7599'); -INSERT INTO `base_postage_region` -VALUES (1463, 1459, 'D', '东平', '东平县', 3, 'dongping', '271500', 1, '116.47113', '35.93792'); -INSERT INTO `base_postage_region` -VALUES (1464, 1459, 'X', '新泰', '新泰市', 3, 'xintai', '271200', 1, '117.76959', '35.90887'); -INSERT INTO `base_postage_region` -VALUES (1465, 1459, 'F', '肥城', '肥城市', 3, 'feicheng', '271600', 1, '116.76815', '36.18247'); -INSERT INTO `base_postage_region` -VALUES (1466, 1375, 'W', '威海', '威海市', 2, 'weihai', '264200', 1, '122.116394', '37.509691'); -INSERT INTO `base_postage_region` -VALUES (1467, 1466, 'H', '环翠', '环翠区', 3, 'huancui', '264200', 1, '122.12344', '37.50199'); -INSERT INTO `base_postage_region` -VALUES (1468, 1466, 'W', '文登', '文登区', 3, 'wendeng', '266440', 1, '122.057139', '37.196211'); -INSERT INTO `base_postage_region` -VALUES (1469, 1466, 'R', '荣成', '荣成市', 3, 'rongcheng', '264300', 1, '122.48773', '37.1652'); -INSERT INTO `base_postage_region` -VALUES (1470, 1466, 'R', '乳山', '乳山市', 3, 'rushan', '264500', 1, '121.53814', '36.91918'); -INSERT INTO `base_postage_region` -VALUES (1471, 1375, 'R', '日照', '日照市', 2, 'rizhao', '276800', 1, '119.461208', '35.428588'); -INSERT INTO `base_postage_region` -VALUES (1472, 1471, 'D', '东港', '东港区', 3, 'donggang', '276800', 1, '119.46237', '35.42541'); -INSERT INTO `base_postage_region` -VALUES (1473, 1471, NULL, '岚山', '岚山区', 3, 'lanshan', '276808', 1, '119.31884', '35.12203'); -INSERT INTO `base_postage_region` -VALUES (1474, 1471, 'W', '五莲', '五莲县', 3, 'wulian', '262300', 1, '119.207', '35.75004'); -INSERT INTO `base_postage_region` -VALUES (1475, 1471, NULL, '莒县', '莒县', 3, 'juxian', '276500', 1, '118.83789', '35.58054'); -INSERT INTO `base_postage_region` -VALUES (1476, 1375, 'L', '莱芜', '莱芜市', 2, 'laiwu', '271100', 1, '117.677736', '36.214397'); -INSERT INTO `base_postage_region` -VALUES (1477, 1476, 'L', '莱城', '莱城区', 3, 'laicheng', '271199', 1, '117.65986', '36.2032'); -INSERT INTO `base_postage_region` -VALUES (1478, 1476, 'G', '钢城', '钢城区', 3, 'gangcheng', '271100', 1, '117.8049', '36.06319'); -INSERT INTO `base_postage_region` -VALUES (1479, 1375, 'L', '临沂', '临沂市', 2, 'linyi', '253000', 1, '118.326443', '35.065282'); -INSERT INTO `base_postage_region` -VALUES (1480, 1479, 'L', '兰山', '兰山区', 3, 'lanshan', '276002', 1, '118.34817', '35.06872'); -INSERT INTO `base_postage_region` -VALUES (1481, 1479, 'L', '罗庄', '罗庄区', 3, 'luozhuang', '276022', 1, '118.28466', '34.99627'); -INSERT INTO `base_postage_region` -VALUES (1482, 1479, 'H', '河东', '河东区', 3, 'hedong', '276034', 1, '118.41055', '35.08803'); -INSERT INTO `base_postage_region` -VALUES (1483, 1479, 'Y', '沂南', '沂南县', 3, 'yinan', '276300', 1, '118.47061', '35.55131'); -INSERT INTO `base_postage_region` -VALUES (1484, 1479, NULL, '郯城', '郯城县', 3, 'tancheng', '276100', 1, '118.36712', '34.61354'); -INSERT INTO `base_postage_region` -VALUES (1485, 1479, 'Y', '沂水', '沂水县', 3, 'yishui', '276400', 1, '118.63009', '35.78731'); -INSERT INTO `base_postage_region` -VALUES (1486, 1479, 'L', '兰陵', '兰陵县', 3, 'lanling', '277700', 1, '117.856592', '34.738315'); -INSERT INTO `base_postage_region` -VALUES (1487, 1479, 'F', '费县', '费县', 3, 'feixian', '273400', 1, '117.97836', '35.26562'); -INSERT INTO `base_postage_region` -VALUES (1488, 1479, 'P', '平邑', '平邑县', 3, 'pingyi', '273300', 1, '117.63867', '35.50573'); -INSERT INTO `base_postage_region` -VALUES (1489, 1479, NULL, '莒南', '莒南县', 3, 'junan', '276600', 1, '118.83227', '35.17539'); -INSERT INTO `base_postage_region` -VALUES (1490, 1479, 'M', '蒙阴', '蒙阴县', 3, 'mengyin', '276200', 1, '117.94592', '35.70996'); -INSERT INTO `base_postage_region` -VALUES (1491, 1479, 'L', '临沭', '临沭县', 3, 'linshu', '276700', 1, '118.65267', '34.92091'); -INSERT INTO `base_postage_region` -VALUES (1492, 1375, 'D', '德州', '德州市', 2, 'dezhou', '253000', 1, '116.307428', '37.453968'); -INSERT INTO `base_postage_region` -VALUES (1493, 1492, 'D', '德城', '德城区', 3, 'decheng', '253012', 1, '116.29943', '37.45126'); -INSERT INTO `base_postage_region` -VALUES (1494, 1492, 'L', '陵城', '陵城区', 3, 'lingcheng', '253500', 1, '116.57601', '37.33571'); -INSERT INTO `base_postage_region` -VALUES (1495, 1492, 'N', '宁津', '宁津县', 3, 'ningjin', '253400', 1, '116.79702', '37.65301'); -INSERT INTO `base_postage_region` -VALUES (1496, 1492, 'Q', '庆云', '庆云县', 3, 'qingyun', '253700', 1, '117.38635', '37.77616'); -INSERT INTO `base_postage_region` -VALUES (1497, 1492, 'L', '临邑', '临邑县', 3, 'linyi', '251500', 1, '116.86547', '37.19053'); -INSERT INTO `base_postage_region` -VALUES (1498, 1492, 'Q', '齐河', '齐河县', 3, 'qihe', '251100', 1, '116.75515', '36.79532'); -INSERT INTO `base_postage_region` -VALUES (1499, 1492, 'P', '平原', '平原县', 3, 'pingyuan', '253100', 1, '116.43432', '37.16632'); -INSERT INTO `base_postage_region` -VALUES (1500, 1492, 'X', '夏津', '夏津县', 3, 'xiajin', '253200', 1, '116.0017', '36.94852'); -INSERT INTO `base_postage_region` -VALUES (1501, 1492, 'W', '武城', '武城县', 3, 'wucheng', '253300', 1, '116.07009', '37.21403'); -INSERT INTO `base_postage_region` -VALUES (1502, 1492, 'L', '乐陵', '乐陵市', 3, 'leling', '253600', 1, '117.23141', '37.73164'); -INSERT INTO `base_postage_region` -VALUES (1503, 1492, 'Y', '禹城', '禹城市', 3, 'yucheng', '251200', 1, '116.64309', '36.93444'); -INSERT INTO `base_postage_region` -VALUES (1504, 1375, 'L', '聊城', '聊城市', 2, 'liaocheng', '252052', 1, '115.980367', '36.456013'); -INSERT INTO `base_postage_region` -VALUES (1505, 1504, 'D', '东昌府', '东昌府区', 3, 'dongchangfu', '252000', 1, '115.97383', '36.44458'); -INSERT INTO `base_postage_region` -VALUES (1506, 1504, 'Y', '阳谷', '阳谷县', 3, 'yanggu', '252300', 1, '115.79126', '36.11444'); -INSERT INTO `base_postage_region` -VALUES (1507, 1504, NULL, '莘县', '莘县', 3, 'shenxian', '252400', 1, '115.6697', '36.23423'); -INSERT INTO `base_postage_region` -VALUES (1508, 1504, NULL, '茌平', '茌平县', 3, 'chiping', '252100', 1, '116.25491', '36.57969'); -INSERT INTO `base_postage_region` -VALUES (1509, 1504, 'D', '东阿', '东阿县', 3, 'donge', '252200', 1, '116.25012', '36.33209'); -INSERT INTO `base_postage_region` -VALUES (1510, 1504, 'G', '冠县', '冠县', 3, 'guanxian', '252500', 1, '115.44195', '36.48429'); -INSERT INTO `base_postage_region` -VALUES (1511, 1504, 'G', '高唐', '高唐县', 3, 'gaotang', '252800', 1, '116.23172', '36.86535'); -INSERT INTO `base_postage_region` -VALUES (1512, 1504, 'L', '临清', '临清市', 3, 'linqing', '252600', 1, '115.70629', '36.83945'); -INSERT INTO `base_postage_region` -VALUES (1513, 1375, 'B', '滨州', '滨州市', 2, 'binzhou', '256619', 1, '118.016974', '37.383542'); -INSERT INTO `base_postage_region` -VALUES (1514, 1513, 'B', '滨城', '滨城区', 3, 'bincheng', '256613', 1, '118.02026', '37.38524'); -INSERT INTO `base_postage_region` -VALUES (1515, 1513, 'Z', '沾化', '沾化区', 3, 'zhanhua', '256800', 1, '118.13214', '37.69832'); -INSERT INTO `base_postage_region` -VALUES (1516, 1513, 'H', '惠民', '惠民县', 3, 'huimin', '251700', 1, '117.51113', '37.49013'); -INSERT INTO `base_postage_region` -VALUES (1517, 1513, 'Y', '阳信', '阳信县', 3, 'yangxin', '251800', 1, '117.58139', '37.64198'); -INSERT INTO `base_postage_region` -VALUES (1518, 1513, 'W', '无棣', '无棣县', 3, 'wudi', '251900', 1, '117.61395', '37.74009'); -INSERT INTO `base_postage_region` -VALUES (1519, 1513, 'B', '博兴', '博兴县', 3, 'boxing', '256500', 1, '118.1336', '37.14316'); -INSERT INTO `base_postage_region` -VALUES (1520, 1513, 'Z', '邹平', '邹平县', 3, 'zouping', '256200', 1, '117.74307', '36.86295'); -INSERT INTO `base_postage_region` -VALUES (1521, 1513, 'B', '北海新区', '北海新区', 3, 'beihaixinqu', '256200', 1, '118.016974', '37.383542'); -INSERT INTO `base_postage_region` -VALUES (1522, 1375, 'H', '菏泽', '菏泽市', 2, 'heze', '274020', 1, '115.469381', '35.246531'); -INSERT INTO `base_postage_region` -VALUES (1523, 1522, 'M', '牡丹', '牡丹区', 3, 'mudan', '274009', 1, '115.41662', '35.25091'); -INSERT INTO `base_postage_region` -VALUES (1524, 1522, 'C', '曹县', '曹县', 3, 'caoxian', '274400', 1, '115.54226', '34.82659'); -INSERT INTO `base_postage_region` -VALUES (1525, 1522, 'D', '单县', '单县', 3, 'shanxian', '273700', 1, '116.08703', '34.79514'); -INSERT INTO `base_postage_region` -VALUES (1526, 1522, 'C', '成武', '成武县', 3, 'chengwu', '274200', 1, '115.8897', '34.95332'); -INSERT INTO `base_postage_region` -VALUES (1527, 1522, 'J', '巨野', '巨野县', 3, 'juye', '274900', 1, '116.09497', '35.39788'); -INSERT INTO `base_postage_region` -VALUES (1528, 1522, NULL, '郓城', '郓城县', 3, 'yuncheng', '274700', 1, '115.94439', '35.60044'); -INSERT INTO `base_postage_region` -VALUES (1529, 1522, NULL, '鄄城', '鄄城县', 3, 'juancheng', '274600', 1, '115.50997', '35.56412'); -INSERT INTO `base_postage_region` -VALUES (1530, 1522, 'D', '定陶', '定陶县', 3, 'dingtao', '274100', 1, '115.57287', '35.07118'); -INSERT INTO `base_postage_region` -VALUES (1531, 1522, 'D', '东明', '东明县', 3, 'dongming', '274500', 1, '115.09079', '35.28906'); -INSERT INTO `base_postage_region` -VALUES (1532, 0, 'H', '河南', '河南省', 1, 'henan', '', 1, '113.665412', '34.757975'); -INSERT INTO `base_postage_region` -VALUES (1533, 1532, 'Z', '郑州', '郑州市', 2, 'zhengzhou', '450000', 1, '113.665412', '34.757975'); -INSERT INTO `base_postage_region` -VALUES (1534, 1533, 'Z', '中原', '中原区', 3, 'zhongyuan', '450007', 1, '113.61333', '34.74827'); -INSERT INTO `base_postage_region` -VALUES (1535, 1533, 'E', '二七', '二七区', 3, 'erqi', '450052', 1, '113.63931', '34.72336'); -INSERT INTO `base_postage_region` -VALUES (1536, 1533, 'G', '管城', '管城回族区', 3, 'guancheng', '450000', 1, '113.67734', '34.75383'); -INSERT INTO `base_postage_region` -VALUES (1537, 1533, 'J', '金水', '金水区', 3, 'jinshui', '450003', 1, '113.66057', '34.80028'); -INSERT INTO `base_postage_region` -VALUES (1538, 1533, 'S', '上街', '上街区', 3, 'shangjie', '450041', 1, '113.30897', '34.80276'); -INSERT INTO `base_postage_region` -VALUES (1539, 1533, 'H', '惠济', '惠济区', 3, 'huiji', '450053', 1, '113.61688', '34.86735'); -INSERT INTO `base_postage_region` -VALUES (1540, 1533, 'Z', '中牟', '中牟县', 3, 'zhongmu', '451450', 1, '113.97619', '34.71899'); -INSERT INTO `base_postage_region` -VALUES (1541, 1533, 'G', '巩义', '巩义市', 3, 'gongyi', '451200', 1, '113.022', '34.74794'); -INSERT INTO `base_postage_region` -VALUES (1542, 1533, NULL, '荥阳', '荥阳市', 3, 'xingyang', '450100', 1, '113.38345', '34.78759'); -INSERT INTO `base_postage_region` -VALUES (1543, 1533, 'X', '新密', '新密市', 3, 'xinmi', '452300', 1, '113.3869', '34.53704'); -INSERT INTO `base_postage_region` -VALUES (1544, 1533, 'X', '新郑', '新郑市', 3, 'xinzheng', '451100', 1, '113.73645', '34.3955'); -INSERT INTO `base_postage_region` -VALUES (1545, 1533, 'D', '登封', '登封市', 3, 'dengfeng', '452470', 1, '113.05023', '34.45345'); -INSERT INTO `base_postage_region` -VALUES (1546, 1532, 'K', '开封', '开封市', 2, 'kaifeng', '475001', 1, '114.341447', '34.797049'); -INSERT INTO `base_postage_region` -VALUES (1547, 1546, 'L', '龙亭', '龙亭区', 3, 'longting', '475100', 1, '114.35484', '34.79995'); -INSERT INTO `base_postage_region` -VALUES (1548, 1546, 'S', '顺河', '顺河回族区', 3, 'shunhe', '475000', 1, '114.36123', '34.79586'); -INSERT INTO `base_postage_region` -VALUES (1549, 1546, 'G', '鼓楼', '鼓楼区', 3, 'gulou', '475000', 1, '114.35559', '34.79517'); -INSERT INTO `base_postage_region` -VALUES (1550, 1546, 'Y', '禹王台', '禹王台区', 3, 'yuwangtai', '475003', 1, '114.34787', '34.77693'); -INSERT INTO `base_postage_region` -VALUES (1551, 1546, 'X', '祥符', '祥符区', 3, 'xiangfu', '475100', 1, '114.43859', '34.75874'); -INSERT INTO `base_postage_region` -VALUES (1552, 1546, NULL, '杞县', '杞县', 3, 'qixian', '475200', 1, '114.7828', '34.55033'); -INSERT INTO `base_postage_region` -VALUES (1553, 1546, 'T', '通许', '通许县', 3, 'tongxu', '475400', 1, '114.46716', '34.47522'); -INSERT INTO `base_postage_region` -VALUES (1554, 1546, 'W', '尉氏', '尉氏县', 3, 'weishi', '475500', 1, '114.19284', '34.41223'); -INSERT INTO `base_postage_region` -VALUES (1555, 1546, 'L', '兰考', '兰考县', 3, 'lankao', '475300', 1, '114.81961', '34.8235'); -INSERT INTO `base_postage_region` -VALUES (1556, 1532, 'L', '洛阳', '洛阳市', 2, 'luoyang', '471000', 1, '112.434468', '34.663041'); -INSERT INTO `base_postage_region` -VALUES (1557, 1556, 'L', '老城', '老城区', 3, 'laocheng', '471002', 1, '112.46902', '34.68364'); -INSERT INTO `base_postage_region` -VALUES (1558, 1556, 'X', '西工', '西工区', 3, 'xigong', '471000', 1, '112.4371', '34.67'); -INSERT INTO `base_postage_region` -VALUES (1559, 1556, NULL, '瀍河', '瀍河回族区', 3, 'chanhe', '471002', 1, '112.50018', '34.67985'); -INSERT INTO `base_postage_region` -VALUES (1560, 1556, 'J', '涧西', '涧西区', 3, 'jianxi', '471003', 1, '112.39588', '34.65823'); -INSERT INTO `base_postage_region` -VALUES (1561, 1556, 'J', '吉利', '吉利区', 3, 'jili', '471012', 1, '112.58905', '34.90088'); -INSERT INTO `base_postage_region` -VALUES (1562, 1556, 'L', '洛龙', '洛龙区', 3, 'luolong', '471000', 1, '112.46412', '34.61866'); -INSERT INTO `base_postage_region` -VALUES (1563, 1556, 'M', '孟津', '孟津县', 3, 'mengjin', '471100', 1, '112.44351', '34.826'); -INSERT INTO `base_postage_region` -VALUES (1564, 1556, 'X', '新安', '新安县', 3, 'xinan', '471800', 1, '112.13238', '34.72814'); -INSERT INTO `base_postage_region` -VALUES (1565, 1556, NULL, '栾川', '栾川县', 3, 'luanchuan', '471500', 1, '111.61779', '33.78576'); -INSERT INTO `base_postage_region` -VALUES (1566, 1556, NULL, '嵩县', '嵩县', 3, 'songxian', '471400', 1, '112.08526', '34.13466'); -INSERT INTO `base_postage_region` -VALUES (1567, 1556, 'R', '汝阳', '汝阳县', 3, 'ruyang', '471200', 1, '112.47314', '34.15387'); -INSERT INTO `base_postage_region` -VALUES (1568, 1556, 'Y', '宜阳', '宜阳县', 3, 'yiyang', '471600', 1, '112.17907', '34.51523'); -INSERT INTO `base_postage_region` -VALUES (1569, 1556, 'L', '洛宁', '洛宁县', 3, 'luoning', '471700', 1, '111.65087', '34.38913'); -INSERT INTO `base_postage_region` -VALUES (1570, 1556, 'Y', '伊川', '伊川县', 3, 'yichuan', '471300', 1, '112.42947', '34.42205'); -INSERT INTO `base_postage_region` -VALUES (1571, 1556, NULL, '偃师', '偃师市', 3, 'yanshi', '471900', 1, '112.7922', '34.7281'); -INSERT INTO `base_postage_region` -VALUES (1572, 1532, 'P', '平顶山', '平顶山市', 2, 'pingdingshan', '467000', 1, '113.307718', '33.735241'); -INSERT INTO `base_postage_region` -VALUES (1573, 1572, 'X', '新华', '新华区', 3, 'xinhua', '467002', 1, '113.29402', '33.7373'); -INSERT INTO `base_postage_region` -VALUES (1574, 1572, 'W', '卫东', '卫东区', 3, 'weidong', '467021', 1, '113.33511', '33.73472'); -INSERT INTO `base_postage_region` -VALUES (1575, 1572, 'S', '石龙', '石龙区', 3, 'shilong', '467045', 1, '112.89879', '33.89878'); -INSERT INTO `base_postage_region` -VALUES (1576, 1572, 'Z', '湛河', '湛河区', 3, 'zhanhe', '467000', 1, '113.29252', '33.7362'); -INSERT INTO `base_postage_region` -VALUES (1577, 1572, 'B', '宝丰', '宝丰县', 3, 'baofeng', '467400', 1, '113.05493', '33.86916'); -INSERT INTO `base_postage_region` -VALUES (1578, 1572, 'Y', '叶县', '叶县', 3, 'yexian', '467200', 1, '113.35104', '33.62225'); -INSERT INTO `base_postage_region` -VALUES (1579, 1572, 'L', '鲁山', '鲁山县', 3, 'lushan', '467300', 1, '112.9057', '33.73879'); -INSERT INTO `base_postage_region` -VALUES (1580, 1572, NULL, '郏县', '郏县', 3, 'jiaxian', '467100', 1, '113.21588', '33.97072'); -INSERT INTO `base_postage_region` -VALUES (1581, 1572, 'W', '舞钢', '舞钢市', 3, 'wugang', '462500', 1, '113.52417', '33.2938'); -INSERT INTO `base_postage_region` -VALUES (1582, 1572, 'R', '汝州', '汝州市', 3, 'ruzhou', '467500', 1, '112.84301', '34.16135'); -INSERT INTO `base_postage_region` -VALUES (1583, 1532, 'A', '安阳', '安阳市', 2, 'anyang', '455000', 1, '114.352482', '36.103442'); -INSERT INTO `base_postage_region` -VALUES (1584, 1583, 'W', '文峰', '文峰区', 3, 'wenfeng', '455000', 1, '114.35708', '36.09046'); -INSERT INTO `base_postage_region` -VALUES (1585, 1583, 'B', '北关', '北关区', 3, 'beiguan', '455001', 1, '114.35735', '36.11872'); -INSERT INTO `base_postage_region` -VALUES (1586, 1583, 'Y', '殷都', '殷都区', 3, 'yindu', '455004', 1, '114.3034', '36.1099'); -INSERT INTO `base_postage_region` -VALUES (1587, 1583, 'L', '龙安', '龙安区', 3, 'longan', '455001', 1, '114.34814', '36.11904'); -INSERT INTO `base_postage_region` -VALUES (1588, 1583, 'A', '安阳', '安阳县', 3, 'anyang', '455000', 1, '114.36605', '36.06695'); -INSERT INTO `base_postage_region` -VALUES (1589, 1583, 'T', '汤阴', '汤阴县', 3, 'tangyin', '456150', 1, '114.35839', '35.92152'); -INSERT INTO `base_postage_region` -VALUES (1590, 1583, 'H', '滑县', '滑县', 3, 'huaxian', '456400', 1, '114.52066', '35.5807'); -INSERT INTO `base_postage_region` -VALUES (1591, 1583, 'N', '内黄', '内黄县', 3, 'neihuang', '456350', 1, '114.90673', '35.95269'); -INSERT INTO `base_postage_region` -VALUES (1592, 1583, 'L', '林州', '林州市', 3, 'linzhou', '456550', 1, '113.81558', '36.07804'); -INSERT INTO `base_postage_region` -VALUES (1593, 1532, 'H', '鹤壁', '鹤壁市', 2, 'hebi', '458030', 1, '114.295444', '35.748236'); -INSERT INTO `base_postage_region` -VALUES (1594, 1593, 'H', '鹤山', '鹤山区', 3, 'heshan', '458010', 1, '114.16336', '35.95458'); -INSERT INTO `base_postage_region` -VALUES (1595, 1593, 'S', '山城', '山城区', 3, 'shancheng', '458000', 1, '114.18443', '35.89773'); -INSERT INTO `base_postage_region` -VALUES (1596, 1593, NULL, '淇滨', '淇滨区', 3, 'qibin', '458000', 1, '114.29867', '35.74127'); -INSERT INTO `base_postage_region` -VALUES (1597, 1593, 'J', '浚县', '浚县', 3, 'xunxian', '456250', 1, '114.54879', '35.67085'); -INSERT INTO `base_postage_region` -VALUES (1598, 1593, NULL, '淇县', '淇县', 3, 'qixian', '456750', 1, '114.1976', '35.60782'); -INSERT INTO `base_postage_region` -VALUES (1599, 1532, 'X', '新乡', '新乡市', 2, 'xinxiang', '453000', 1, '113.883991', '35.302616'); -INSERT INTO `base_postage_region` -VALUES (1600, 1599, 'H', '红旗', '红旗区', 3, 'hongqi', '453000', 1, '113.87523', '35.30367'); -INSERT INTO `base_postage_region` -VALUES (1601, 1599, 'W', '卫滨', '卫滨区', 3, 'weibin', '453000', 1, '113.86578', '35.30211'); -INSERT INTO `base_postage_region` -VALUES (1602, 1599, 'F', '凤泉', '凤泉区', 3, 'fengquan', '453011', 1, '113.91507', '35.38399'); -INSERT INTO `base_postage_region` -VALUES (1603, 1599, 'M', '牧野', '牧野区', 3, 'muye', '453002', 1, '113.9086', '35.3149'); -INSERT INTO `base_postage_region` -VALUES (1604, 1599, 'X', '新乡', '新乡县', 3, 'xinxiang', '453700', 1, '113.80511', '35.19075'); -INSERT INTO `base_postage_region` -VALUES (1605, 1599, 'H', '获嘉', '获嘉县', 3, 'huojia', '453800', 1, '113.66159', '35.26521'); -INSERT INTO `base_postage_region` -VALUES (1606, 1599, 'Y', '原阳', '原阳县', 3, 'yuanyang', '453500', 1, '113.93994', '35.06565'); -INSERT INTO `base_postage_region` -VALUES (1607, 1599, 'Y', '延津', '延津县', 3, 'yanjin', '453200', 1, '114.20266', '35.14327'); -INSERT INTO `base_postage_region` -VALUES (1608, 1599, 'F', '封丘', '封丘县', 3, 'fengqiu', '453300', 1, '114.41915', '35.04166'); -INSERT INTO `base_postage_region` -VALUES (1609, 1599, 'C', '长垣', '长垣县', 3, 'changyuan', '453400', 1, '114.66882', '35.20046'); -INSERT INTO `base_postage_region` -VALUES (1610, 1599, 'W', '卫辉', '卫辉市', 3, 'weihui', '453100', 1, '114.06454', '35.39843'); -INSERT INTO `base_postage_region` -VALUES (1611, 1599, 'H', '辉县', '辉县市', 3, 'huixian', '453600', 1, '113.8067', '35.46307'); -INSERT INTO `base_postage_region` -VALUES (1612, 1532, 'J', '焦作', '焦作市', 2, 'jiaozuo', '454002', 1, '113.238266', '35.23904'); -INSERT INTO `base_postage_region` -VALUES (1613, 1612, 'J', '解放', '解放区', 3, 'jiefang', '454000', 1, '113.22933', '35.24023'); -INSERT INTO `base_postage_region` -VALUES (1614, 1612, 'Z', '中站', '中站区', 3, 'zhongzhan', '454191', 1, '113.18315', '35.23665'); -INSERT INTO `base_postage_region` -VALUES (1615, 1612, 'M', '马村', '马村区', 3, 'macun', '454171', 1, '113.3187', '35.26908'); -INSERT INTO `base_postage_region` -VALUES (1616, 1612, 'S', '山阳', '山阳区', 3, 'shanyang', '454002', 1, '113.25464', '35.21436'); -INSERT INTO `base_postage_region` -VALUES (1617, 1612, 'X', '修武', '修武县', 3, 'xiuwu', '454350', 1, '113.44775', '35.22357'); -INSERT INTO `base_postage_region` -VALUES (1618, 1612, 'B', '博爱', '博爱县', 3, 'boai', '454450', 1, '113.06698', '35.16943'); -INSERT INTO `base_postage_region` -VALUES (1619, 1612, 'W', '武陟', '武陟县', 3, 'wuzhi', '454950', 1, '113.39718', '35.09505'); -INSERT INTO `base_postage_region` -VALUES (1620, 1612, 'W', '温县', '温县', 3, 'wenxian', '454850', 1, '113.08065', '34.94022'); -INSERT INTO `base_postage_region` -VALUES (1621, 1612, 'Q', '沁阳', '沁阳市', 3, 'qinyang', '454550', 1, '112.94494', '35.08935'); -INSERT INTO `base_postage_region` -VALUES (1622, 1612, 'M', '孟州', '孟州市', 3, 'mengzhou', '454750', 1, '112.79138', '34.9071'); -INSERT INTO `base_postage_region` -VALUES (1623, 1532, NULL, '濮阳', '濮阳市', 2, 'puyang', '457000', 1, '115.041299', '35.768234'); -INSERT INTO `base_postage_region` -VALUES (1624, 1623, 'H', '华龙', '华龙区', 3, 'hualong', '457001', 1, '115.07446', '35.77736'); -INSERT INTO `base_postage_region` -VALUES (1625, 1623, 'Q', '清丰', '清丰县', 3, 'qingfeng', '457300', 1, '115.10415', '35.88507'); -INSERT INTO `base_postage_region` -VALUES (1626, 1623, 'N', '南乐', '南乐县', 3, 'nanle', '457400', 1, '115.20639', '36.07686'); -INSERT INTO `base_postage_region` -VALUES (1627, 1623, 'F', '范县', '范县', 3, 'fanxian', '457500', 1, '115.50405', '35.85178'); -INSERT INTO `base_postage_region` -VALUES (1628, 1623, 'T', '台前', '台前县', 3, 'taiqian', '457600', 1, '115.87158', '35.96923'); -INSERT INTO `base_postage_region` -VALUES (1629, 1623, NULL, '濮阳', '濮阳县', 3, 'puyang', '457100', 1, '115.03057', '35.70745'); -INSERT INTO `base_postage_region` -VALUES (1630, 1532, 'X', '许昌', '许昌市', 2, 'xuchang', '461000', 1, '113.826063', '34.022956'); -INSERT INTO `base_postage_region` -VALUES (1631, 1630, 'W', '魏都', '魏都区', 3, 'weidu', '461000', 1, '113.8227', '34.02544'); -INSERT INTO `base_postage_region` -VALUES (1632, 1630, 'X', '许昌', '许昌县', 3, 'xuchang', '461100', 1, '113.84707', '34.00406'); -INSERT INTO `base_postage_region` -VALUES (1633, 1630, NULL, '鄢陵', '鄢陵县', 3, 'yanling', '461200', 1, '114.18795', '34.10317'); -INSERT INTO `base_postage_region` -VALUES (1634, 1630, 'X', '襄城', '襄城县', 3, 'xiangcheng', '461700', 1, '113.48196', '33.84928'); -INSERT INTO `base_postage_region` -VALUES (1635, 1630, 'Y', '禹州', '禹州市', 3, 'yuzhou', '461670', 1, '113.48803', '34.14054'); -INSERT INTO `base_postage_region` -VALUES (1636, 1630, 'C', '长葛', '长葛市', 3, 'changge', '461500', 1, '113.77328', '34.21846'); -INSERT INTO `base_postage_region` -VALUES (1637, 1532, NULL, '漯河', '漯河市', 2, 'luohe', '462000', 1, '114.026405', '33.575855'); -INSERT INTO `base_postage_region` -VALUES (1638, 1637, 'Y', '源汇', '源汇区', 3, 'yuanhui', '462000', 1, '114.00647', '33.55627'); -INSERT INTO `base_postage_region` -VALUES (1639, 1637, NULL, '郾城', '郾城区', 3, 'yancheng', '462300', 1, '114.00694', '33.58723'); -INSERT INTO `base_postage_region` -VALUES (1640, 1637, 'Z', '召陵', '召陵区', 3, 'zhaoling', '462300', 1, '114.09399', '33.58601'); -INSERT INTO `base_postage_region` -VALUES (1641, 1637, 'W', '舞阳', '舞阳县', 3, 'wuyang', '462400', 1, '113.59848', '33.43243'); -INSERT INTO `base_postage_region` -VALUES (1642, 1637, 'L', '临颍', '临颍县', 3, 'linying', '462600', 1, '113.93661', '33.81123'); -INSERT INTO `base_postage_region` -VALUES (1643, 1532, 'S', '三门峡', '三门峡市', 2, 'sanmenxia', '472000', 1, '111.194099', '34.777338'); -INSERT INTO `base_postage_region` -VALUES (1644, 1643, 'H', '湖滨', '湖滨区', 3, 'hubin', '472000', 1, '111.20006', '34.77872'); -INSERT INTO `base_postage_region` -VALUES (1645, 1643, NULL, '渑池', '渑池县', 3, 'mianchi', '472400', 1, '111.76184', '34.76725'); -INSERT INTO `base_postage_region` -VALUES (1646, 1643, 'S', '陕县', '陕县', 3, 'shanxian', '472100', 1, '111.10333', '34.72052'); -INSERT INTO `base_postage_region` -VALUES (1647, 1643, 'L', '卢氏', '卢氏县', 3, 'lushi', '472200', 1, '111.04782', '34.05436'); -INSERT INTO `base_postage_region` -VALUES (1648, 1643, 'Y', '义马', '义马市', 3, 'yima', '472300', 1, '111.87445', '34.74721'); -INSERT INTO `base_postage_region` -VALUES (1649, 1643, 'L', '灵宝', '灵宝市', 3, 'lingbao', '472500', 1, '110.8945', '34.51682'); -INSERT INTO `base_postage_region` -VALUES (1650, 1532, 'N', '南阳', '南阳市', 2, 'nanyang', '473002', 1, '112.540918', '32.999082'); -INSERT INTO `base_postage_region` -VALUES (1651, 1650, 'W', '宛城', '宛城区', 3, 'wancheng', '473001', 1, '112.53955', '33.00378'); -INSERT INTO `base_postage_region` -VALUES (1652, 1650, 'W', '卧龙', '卧龙区', 3, 'wolong', '473003', 1, '112.53479', '32.98615'); -INSERT INTO `base_postage_region` -VALUES (1653, 1650, 'N', '南召', '南召县', 3, 'nanzhao', '474650', 1, '112.43194', '33.49098'); -INSERT INTO `base_postage_region` -VALUES (1654, 1650, 'F', '方城', '方城县', 3, 'fangcheng', '473200', 1, '113.01269', '33.25453'); -INSERT INTO `base_postage_region` -VALUES (1655, 1650, 'X', '西峡', '西峡县', 3, 'xixia', '474550', 1, '111.48187', '33.29772'); -INSERT INTO `base_postage_region` -VALUES (1656, 1650, 'Z', '镇平', '镇平县', 3, 'zhenping', '474250', 1, '112.2398', '33.03629'); -INSERT INTO `base_postage_region` -VALUES (1657, 1650, 'N', '内乡', '内乡县', 3, 'neixiang', '474350', 1, '111.84957', '33.04671'); -INSERT INTO `base_postage_region` -VALUES (1658, 1650, NULL, '淅川', '淅川县', 3, 'xichuan', '474450', 1, '111.48663', '33.13708'); -INSERT INTO `base_postage_region` -VALUES (1659, 1650, 'S', '社旗', '社旗县', 3, 'sheqi', '473300', 1, '112.94656', '33.05503'); -INSERT INTO `base_postage_region` -VALUES (1660, 1650, 'T', '唐河', '唐河县', 3, 'tanghe', '473400', 1, '112.83609', '32.69453'); -INSERT INTO `base_postage_region` -VALUES (1661, 1650, 'X', '新野', '新野县', 3, 'xinye', '473500', 1, '112.36151', '32.51698'); -INSERT INTO `base_postage_region` -VALUES (1662, 1650, 'T', '桐柏', '桐柏县', 3, 'tongbai', '474750', 1, '113.42886', '32.37917'); -INSERT INTO `base_postage_region` -VALUES (1663, 1650, 'D', '邓州', '邓州市', 3, 'dengzhou', '474150', 1, '112.0896', '32.68577'); -INSERT INTO `base_postage_region` -VALUES (1664, 1532, 'S', '商丘', '商丘市', 2, 'shangqiu', '476000', 1, '115.650497', '34.437054'); -INSERT INTO `base_postage_region` -VALUES (1665, 1664, 'L', '梁园', '梁园区', 3, 'liangyuan', '476000', 1, '115.64487', '34.44341'); -INSERT INTO `base_postage_region` -VALUES (1666, 1664, NULL, '睢阳', '睢阳区', 3, 'suiyang', '476100', 1, '115.65338', '34.38804'); -INSERT INTO `base_postage_region` -VALUES (1667, 1664, 'M', '民权', '民权县', 3, 'minquan', '476800', 1, '115.14621', '34.64931'); -INSERT INTO `base_postage_region` -VALUES (1668, 1664, NULL, '睢县', '睢县', 3, 'suixian', '476900', 1, '115.07168', '34.44539'); -INSERT INTO `base_postage_region` -VALUES (1669, 1664, 'N', '宁陵', '宁陵县', 3, 'ningling', '476700', 1, '115.30511', '34.45463'); -INSERT INTO `base_postage_region` -VALUES (1670, 1664, NULL, '柘城', '柘城县', 3, 'zhecheng', '476200', 1, '115.30538', '34.0911'); -INSERT INTO `base_postage_region` -VALUES (1671, 1664, 'Y', '虞城', '虞城县', 3, 'yucheng', '476300', 1, '115.86337', '34.40189'); -INSERT INTO `base_postage_region` -VALUES (1672, 1664, 'X', '夏邑', '夏邑县', 3, 'xiayi', '476400', 1, '116.13348', '34.23242'); -INSERT INTO `base_postage_region` -VALUES (1673, 1664, 'Y', '永城', '永城市', 3, 'yongcheng', '476600', 1, '116.44943', '33.92911'); -INSERT INTO `base_postage_region` -VALUES (1674, 1532, 'X', '信阳', '信阳市', 2, 'xinyang', '464000', 1, '114.075031', '32.123274'); -INSERT INTO `base_postage_region` -VALUES (1675, 1674, NULL, '浉河', '浉河区', 3, 'shihe', '464000', 1, '114.05871', '32.1168'); -INSERT INTO `base_postage_region` -VALUES (1676, 1674, 'P', '平桥', '平桥区', 3, 'pingqiao', '464100', 1, '114.12435', '32.10095'); -INSERT INTO `base_postage_region` -VALUES (1677, 1674, 'L', '罗山', '罗山县', 3, 'luoshan', '464200', 1, '114.5314', '32.20277'); -INSERT INTO `base_postage_region` -VALUES (1678, 1674, 'G', '光山', '光山县', 3, 'guangshan', '465450', 1, '114.91873', '32.00992'); -INSERT INTO `base_postage_region` -VALUES (1679, 1674, 'X', '新县', '新县', 3, 'xinxian', '465550', 1, '114.87924', '31.64386'); -INSERT INTO `base_postage_region` -VALUES (1680, 1674, 'S', '商城', '商城县', 3, 'shangcheng', '465350', 1, '115.40856', '31.79986'); -INSERT INTO `base_postage_region` -VALUES (1681, 1674, 'G', '固始', '固始县', 3, 'gushi', '465250', 1, '115.68298', '32.18011'); -INSERT INTO `base_postage_region` -VALUES (1682, 1674, NULL, '潢川', '潢川县', 3, 'huangchuan', '465150', 1, '115.04696', '32.13763'); -INSERT INTO `base_postage_region` -VALUES (1683, 1674, 'H', '淮滨', '淮滨县', 3, 'huaibin', '464400', 1, '115.4205', '32.46614'); -INSERT INTO `base_postage_region` -VALUES (1684, 1674, 'X', '息县', '息县', 3, 'xixian', '464300', 1, '114.7402', '32.34279'); -INSERT INTO `base_postage_region` -VALUES (1685, 1532, 'Z', '周口', '周口市', 2, 'zhoukou', '466000', 1, '114.649653', '33.620357'); -INSERT INTO `base_postage_region` -VALUES (1686, 1685, 'C', '川汇', '川汇区', 3, 'chuanhui', '466000', 1, '114.64202', '33.6256'); -INSERT INTO `base_postage_region` -VALUES (1687, 1685, 'F', '扶沟', '扶沟县', 3, 'fugou', '461300', 1, '114.39477', '34.05999'); -INSERT INTO `base_postage_region` -VALUES (1688, 1685, 'X', '西华', '西华县', 3, 'xihua', '466600', 1, '114.52279', '33.78548'); -INSERT INTO `base_postage_region` -VALUES (1689, 1685, 'S', '商水', '商水县', 3, 'shangshui', '466100', 1, '114.60604', '33.53912'); -INSERT INTO `base_postage_region` -VALUES (1690, 1685, 'S', '沈丘', '沈丘县', 3, 'shenqiu', '466300', 1, '115.09851', '33.40936'); -INSERT INTO `base_postage_region` -VALUES (1691, 1685, 'D', '郸城', '郸城县', 3, 'dancheng', '477150', 1, '115.17715', '33.64485'); -INSERT INTO `base_postage_region` -VALUES (1692, 1685, 'H', '淮阳', '淮阳县', 3, 'huaiyang', '466700', 1, '114.88848', '33.73211'); -INSERT INTO `base_postage_region` -VALUES (1693, 1685, 'T', '太康', '太康县', 3, 'taikang', '461400', 1, '114.83773', '34.06376'); -INSERT INTO `base_postage_region` -VALUES (1694, 1685, 'L', '鹿邑', '鹿邑县', 3, 'luyi', '477200', 1, '115.48553', '33.85931'); -INSERT INTO `base_postage_region` -VALUES (1695, 1685, 'X', '项城', '项城市', 3, 'xiangcheng', '466200', 1, '114.87558', '33.4672'); -INSERT INTO `base_postage_region` -VALUES (1696, 1532, 'Z', '驻马店', '驻马店市', 2, 'zhumadian', '463000', 1, '114.024736', '32.980169'); -INSERT INTO `base_postage_region` -VALUES (1697, 1696, NULL, '驿城', '驿城区', 3, 'yicheng', '463000', 1, '113.99377', '32.97316'); -INSERT INTO `base_postage_region` -VALUES (1698, 1696, 'X', '西平', '西平县', 3, 'xiping', '463900', 1, '114.02322', '33.3845'); -INSERT INTO `base_postage_region` -VALUES (1699, 1696, 'S', '上蔡', '上蔡县', 3, 'shangcai', '463800', 1, '114.26825', '33.26825'); -INSERT INTO `base_postage_region` -VALUES (1700, 1696, 'P', '平舆', '平舆县', 3, 'pingyu', '463400', 1, '114.63552', '32.95727'); -INSERT INTO `base_postage_region` -VALUES (1701, 1696, 'Z', '正阳', '正阳县', 3, 'zhengyang', '463600', 1, '114.38952', '32.6039'); -INSERT INTO `base_postage_region` -VALUES (1702, 1696, 'Q', '确山', '确山县', 3, 'queshan', '463200', 1, '114.02917', '32.80281'); -INSERT INTO `base_postage_region` -VALUES (1703, 1696, 'M', '泌阳', '泌阳县', 3, 'biyang', '463700', 1, '113.32681', '32.71781'); -INSERT INTO `base_postage_region` -VALUES (1704, 1696, 'R', '汝南', '汝南县', 3, 'runan', '463300', 1, '114.36138', '33.00461'); -INSERT INTO `base_postage_region` -VALUES (1705, 1696, 'S', '遂平', '遂平县', 3, 'suiping', '463100', 1, '114.01297', '33.14571'); -INSERT INTO `base_postage_region` -VALUES (1706, 1696, 'X', '新蔡', '新蔡县', 3, 'xincai', '463500', 1, '114.98199', '32.7502'); -INSERT INTO `base_postage_region` -VALUES (1707, 1532, 'Z', ' ', '直辖县级', 2, '', '', 1, '113.665412', '34.757975'); -INSERT INTO `base_postage_region` -VALUES (1708, 1707, 'J', '济源', '济源市', 3, 'jiyuan', '454650', 1, '112.590047', '35.090378'); -INSERT INTO `base_postage_region` -VALUES (1709, 0, 'H', '湖北', '湖北省', 1, 'hubei', '', 1, '114.298572', '30.584355'); -INSERT INTO `base_postage_region` -VALUES (1710, 1709, 'W', '武汉', '武汉市', 2, 'wuhan', '430014', 1, '114.298572', '30.584355'); -INSERT INTO `base_postage_region` -VALUES (1711, 1710, 'J', '江岸', '江岸区', 3, 'jiangan', '430014', 1, '114.30943', '30.59982'); -INSERT INTO `base_postage_region` -VALUES (1712, 1710, 'J', '江汉', '江汉区', 3, 'jianghan', '430021', 1, '114.27093', '30.60146'); -INSERT INTO `base_postage_region` -VALUES (1713, 1710, NULL, '硚口', '硚口区', 3, 'qiaokou', '430033', 1, '114.26422', '30.56945'); -INSERT INTO `base_postage_region` -VALUES (1714, 1710, 'H', '汉阳', '汉阳区', 3, 'hanyang', '430050', 1, '114.27478', '30.54915'); -INSERT INTO `base_postage_region` -VALUES (1715, 1710, 'W', '武昌', '武昌区', 3, 'wuchang', '430061', 1, '114.31589', '30.55389'); -INSERT INTO `base_postage_region` -VALUES (1716, 1710, 'Q', '青山', '青山区', 3, 'qingshan', '430080', 1, '114.39117', '30.63427'); -INSERT INTO `base_postage_region` -VALUES (1717, 1710, 'H', '洪山', '洪山区', 3, 'hongshan', '430070', 1, '114.34375', '30.49989'); -INSERT INTO `base_postage_region` -VALUES (1718, 1710, 'D', '东西湖', '东西湖区', 3, 'dongxihu', '430040', 1, '114.13708', '30.61989'); -INSERT INTO `base_postage_region` -VALUES (1719, 1710, 'H', '汉南', '汉南区', 3, 'hannan', '430090', 1, '114.08462', '30.30879'); -INSERT INTO `base_postage_region` -VALUES (1720, 1710, 'C', '蔡甸', '蔡甸区', 3, 'caidian', '430100', 1, '114.02929', '30.58197'); -INSERT INTO `base_postage_region` -VALUES (1721, 1710, 'J', '江夏', '江夏区', 3, 'jiangxia', '430200', 1, '114.31301', '30.34653'); -INSERT INTO `base_postage_region` -VALUES (1722, 1710, 'H', '黄陂', '黄陂区', 3, 'huangpi', '432200', 1, '114.37512', '30.88151'); -INSERT INTO `base_postage_region` -VALUES (1723, 1710, 'X', '新洲', '新洲区', 3, 'xinzhou', '431400', 1, '114.80136', '30.84145'); -INSERT INTO `base_postage_region` -VALUES (1724, 1709, 'H', '黄石', '黄石市', 2, 'huangshi', '435003', 1, '115.077048', '30.220074'); -INSERT INTO `base_postage_region` -VALUES (1725, 1724, 'H', '黄石港', '黄石港区', 3, 'huangshigang', '435000', 1, '115.06604', '30.22279'); -INSERT INTO `base_postage_region` -VALUES (1726, 1724, 'X', '西塞山', '西塞山区', 3, 'xisaishan', '435001', 1, '115.11016', '30.20487'); -INSERT INTO `base_postage_region` -VALUES (1727, 1724, 'X', '下陆', '下陆区', 3, 'xialu', '435005', 1, '114.96112', '30.17368'); -INSERT INTO `base_postage_region` -VALUES (1728, 1724, 'T', '铁山', '铁山区', 3, 'tieshan', '435006', 1, '114.90109', '30.20678'); -INSERT INTO `base_postage_region` -VALUES (1729, 1724, 'Y', '阳新', '阳新县', 3, 'yangxin', '435200', 1, '115.21527', '29.83038'); -INSERT INTO `base_postage_region` -VALUES (1730, 1724, 'D', '大冶', '大冶市', 3, 'daye', '435100', 1, '114.97174', '30.09438'); -INSERT INTO `base_postage_region` -VALUES (1731, 1709, 'S', '十堰', '十堰市', 2, 'shiyan', '442000', 1, '110.785239', '32.647017'); -INSERT INTO `base_postage_region` -VALUES (1732, 1731, 'M', '茅箭', '茅箭区', 3, 'maojian', '442012', 1, '110.81341', '32.59153'); -INSERT INTO `base_postage_region` -VALUES (1733, 1731, 'Z', '张湾', '张湾区', 3, 'zhangwan', '442001', 1, '110.77067', '32.65195'); -INSERT INTO `base_postage_region` -VALUES (1734, 1731, 'Y', '郧阳', '郧阳区', 3, 'yunyang', '442500', 1, '110.81854', '32.83593'); -INSERT INTO `base_postage_region` -VALUES (1735, 1731, 'Y', '郧西', '郧西县', 3, 'yunxi', '442600', 1, '110.42556', '32.99349'); -INSERT INTO `base_postage_region` -VALUES (1736, 1731, 'Z', '竹山', '竹山县', 3, 'zhushan', '442200', 1, '110.23071', '32.22536'); -INSERT INTO `base_postage_region` -VALUES (1737, 1731, 'Z', '竹溪', '竹溪县', 3, 'zhuxi', '442300', 1, '109.71798', '32.31901'); -INSERT INTO `base_postage_region` -VALUES (1738, 1731, 'F', '房县', '房县', 3, 'fangxian', '442100', 1, '110.74386', '32.05794'); -INSERT INTO `base_postage_region` -VALUES (1739, 1731, 'D', '丹江口', '丹江口市', 3, 'danjiangkou', '442700', 1, '111.51525', '32.54085'); -INSERT INTO `base_postage_region` -VALUES (1740, 1709, 'Y', '宜昌', '宜昌市', 2, 'yichang', '443000', 1, '111.290843', '30.702636'); -INSERT INTO `base_postage_region` -VALUES (1741, 1740, 'X', '西陵', '西陵区', 3, 'xiling', '443000', 1, '111.28573', '30.71077'); -INSERT INTO `base_postage_region` -VALUES (1742, 1740, 'W', '伍家岗', '伍家岗区', 3, 'wujiagang', '443001', 1, '111.3609', '30.64434'); -INSERT INTO `base_postage_region` -VALUES (1743, 1740, 'D', '点军', '点军区', 3, 'dianjun', '443006', 1, '111.26828', '30.6934'); -INSERT INTO `base_postage_region` -VALUES (1744, 1740, NULL, '猇亭', '猇亭区', 3, 'xiaoting', '443007', 1, '111.44079', '30.52663'); -INSERT INTO `base_postage_region` -VALUES (1745, 1740, 'Y', '夷陵', '夷陵区', 3, 'yiling', '443100', 1, '111.3262', '30.76881'); -INSERT INTO `base_postage_region` -VALUES (1746, 1740, 'Y', '远安', '远安县', 3, 'yuanan', '444200', 1, '111.6416', '31.05989'); -INSERT INTO `base_postage_region` -VALUES (1747, 1740, 'X', '兴山', '兴山县', 3, 'xingshan', '443711', 1, '110.74951', '31.34686'); -INSERT INTO `base_postage_region` -VALUES (1748, 1740, NULL, '秭归', '秭归县', 3, 'zigui', '443600', 1, '110.98156', '30.82702'); -INSERT INTO `base_postage_region` -VALUES (1749, 1740, 'C', '长阳', '长阳土家族自治县', 3, 'changyang', '443500', 1, '111.20105', '30.47052'); -INSERT INTO `base_postage_region` -VALUES (1750, 1740, 'W', '五峰', '五峰土家族自治县', 3, 'wufeng', '443413', 1, '110.6748', '30.19856'); -INSERT INTO `base_postage_region` -VALUES (1751, 1740, 'Y', '宜都', '宜都市', 3, 'yidu', '443300', 1, '111.45025', '30.37807'); -INSERT INTO `base_postage_region` -VALUES (1752, 1740, 'D', '当阳', '当阳市', 3, 'dangyang', '444100', 1, '111.78912', '30.8208'); -INSERT INTO `base_postage_region` -VALUES (1753, 1740, 'Z', '枝江', '枝江市', 3, 'zhijiang', '443200', 1, '111.76855', '30.42612'); -INSERT INTO `base_postage_region` -VALUES (1754, 1709, 'X', '襄阳', '襄阳市', 2, 'xiangyang', '441021', 1, '112.144146', '32.042426'); -INSERT INTO `base_postage_region` -VALUES (1755, 1754, 'X', '襄城', '襄城区', 3, 'xiangcheng', '441021', 1, '112.13372', '32.01017'); -INSERT INTO `base_postage_region` -VALUES (1756, 1754, 'F', '樊城', '樊城区', 3, 'fancheng', '441001', 1, '112.13546', '32.04482'); -INSERT INTO `base_postage_region` -VALUES (1757, 1754, 'X', '襄州', '襄州区', 3, 'xiangzhou', '441100', 1, '112.150327', '32.015088'); -INSERT INTO `base_postage_region` -VALUES (1758, 1754, 'N', '南漳', '南漳县', 3, 'nanzhang', '441500', 1, '111.84603', '31.77653'); -INSERT INTO `base_postage_region` -VALUES (1759, 1754, 'G', '谷城', '谷城县', 3, 'gucheng', '441700', 1, '111.65267', '32.26377'); -INSERT INTO `base_postage_region` -VALUES (1760, 1754, 'B', '保康', '保康县', 3, 'baokang', '441600', 1, '111.26138', '31.87874'); -INSERT INTO `base_postage_region` -VALUES (1761, 1754, 'L', '老河口', '老河口市', 3, 'laohekou', '441800', 1, '111.67117', '32.38476'); -INSERT INTO `base_postage_region` -VALUES (1762, 1754, 'Z', '枣阳', '枣阳市', 3, 'zaoyang', '441200', 1, '112.77444', '32.13142'); -INSERT INTO `base_postage_region` -VALUES (1763, 1754, 'Y', '宜城', '宜城市', 3, 'yicheng', '441400', 1, '112.25772', '31.71972'); -INSERT INTO `base_postage_region` -VALUES (1764, 1709, 'E', '鄂州', '鄂州市', 2, 'ezhou', '436000', 1, '114.890593', '30.396536'); -INSERT INTO `base_postage_region` -VALUES (1765, 1764, 'L', '梁子湖', '梁子湖区', 3, 'liangzihu', '436064', 1, '114.68463', '30.10003'); -INSERT INTO `base_postage_region` -VALUES (1766, 1764, 'H', '华容', '华容区', 3, 'huarong', '436030', 1, '114.73568', '30.53328'); -INSERT INTO `base_postage_region` -VALUES (1767, 1764, 'E', '鄂城', '鄂城区', 3, 'echeng', '436000', 1, '114.89158', '30.40024'); -INSERT INTO `base_postage_region` -VALUES (1768, 1709, 'J', '荆门', '荆门市', 2, 'jingmen', '448000', 1, '112.204251', '31.03542'); -INSERT INTO `base_postage_region` -VALUES (1769, 1768, 'D', '东宝', '东宝区', 3, 'dongbao', '448004', 1, '112.20147', '31.05192'); -INSERT INTO `base_postage_region` -VALUES (1770, 1768, 'D', '掇刀', '掇刀区', 3, 'duodao', '448124', 1, '112.208', '30.97316'); -INSERT INTO `base_postage_region` -VALUES (1771, 1768, 'J', '京山', '京山县', 3, 'jingshan', '431800', 1, '113.11074', '31.0224'); -INSERT INTO `base_postage_region` -VALUES (1772, 1768, 'S', '沙洋', '沙洋县', 3, 'shayang', '448200', 1, '112.58853', '30.70916'); -INSERT INTO `base_postage_region` -VALUES (1773, 1768, 'Z', '钟祥', '钟祥市', 3, 'zhongxiang', '431900', 1, '112.58932', '31.1678'); -INSERT INTO `base_postage_region` -VALUES (1774, 1709, 'X', '孝感', '孝感市', 2, 'xiaogan', '432100', 1, '113.926655', '30.926423'); -INSERT INTO `base_postage_region` -VALUES (1775, 1774, 'X', '孝南', '孝南区', 3, 'xiaonan', '432100', 1, '113.91111', '30.9168'); -INSERT INTO `base_postage_region` -VALUES (1776, 1774, 'X', '孝昌', '孝昌县', 3, 'xiaochang', '432900', 1, '113.99795', '31.25799'); -INSERT INTO `base_postage_region` -VALUES (1777, 1774, 'D', '大悟', '大悟县', 3, 'dawu', '432800', 1, '114.12564', '31.56176'); -INSERT INTO `base_postage_region` -VALUES (1778, 1774, 'Y', '云梦', '云梦县', 3, 'yunmeng', '432500', 1, '113.75289', '31.02093'); -INSERT INTO `base_postage_region` -VALUES (1779, 1774, 'Y', '应城', '应城市', 3, 'yingcheng', '432400', 1, '113.57287', '30.92834'); -INSERT INTO `base_postage_region` -VALUES (1780, 1774, 'A', '安陆', '安陆市', 3, 'anlu', '432600', 1, '113.68557', '31.25693'); -INSERT INTO `base_postage_region` -VALUES (1781, 1774, 'H', '汉川', '汉川市', 3, 'hanchuan', '432300', 1, '113.83898', '30.66117'); -INSERT INTO `base_postage_region` -VALUES (1782, 1709, 'J', '荆州', '荆州市', 2, 'jingzhou', '434000', 1, '112.23813', '30.326857'); -INSERT INTO `base_postage_region` -VALUES (1783, 1782, 'S', '沙市', '沙市区', 3, 'shashi', '434000', 1, '112.25543', '30.31107'); -INSERT INTO `base_postage_region` -VALUES (1784, 1782, 'J', '荆州', '荆州区', 3, 'jingzhou', '434020', 1, '112.19006', '30.35264'); -INSERT INTO `base_postage_region` -VALUES (1785, 1782, 'G', '公安', '公安县', 3, 'gongan', '434300', 1, '112.23242', '30.05902'); -INSERT INTO `base_postage_region` -VALUES (1786, 1782, 'J', '监利', '监利县', 3, 'jianli', '433300', 1, '112.89462', '29.81494'); -INSERT INTO `base_postage_region` -VALUES (1787, 1782, 'J', '江陵', '江陵县', 3, 'jiangling', '434101', 1, '112.42468', '30.04174'); -INSERT INTO `base_postage_region` -VALUES (1788, 1782, 'S', '石首', '石首市', 3, 'shishou', '434400', 1, '112.42636', '29.72127'); -INSERT INTO `base_postage_region` -VALUES (1789, 1782, 'H', '洪湖', '洪湖市', 3, 'honghu', '433200', 1, '113.47598', '29.827'); -INSERT INTO `base_postage_region` -VALUES (1790, 1782, 'S', '松滋', '松滋市', 3, 'songzi', '434200', 1, '111.76739', '30.16965'); -INSERT INTO `base_postage_region` -VALUES (1791, 1709, 'H', '黄冈', '黄冈市', 2, 'huanggang', '438000', 1, '114.879365', '30.447711'); -INSERT INTO `base_postage_region` -VALUES (1792, 1791, 'H', '黄州', '黄州区', 3, 'huangzhou', '438000', 1, '114.88008', '30.43436'); -INSERT INTO `base_postage_region` -VALUES (1793, 1791, 'T', '团风', '团风县', 3, 'tuanfeng', '438800', 1, '114.87228', '30.64359'); -INSERT INTO `base_postage_region` -VALUES (1794, 1791, 'H', '红安', '红安县', 3, 'hongan', '438401', 1, '114.6224', '31.28668'); -INSERT INTO `base_postage_region` -VALUES (1795, 1791, 'L', '罗田', '罗田县', 3, 'luotian', '438600', 1, '115.39971', '30.78255'); -INSERT INTO `base_postage_region` -VALUES (1796, 1791, 'Y', '英山', '英山县', 3, 'yingshan', '438700', 1, '115.68142', '30.73516'); -INSERT INTO `base_postage_region` -VALUES (1797, 1791, NULL, '浠水', '浠水县', 3, 'xishui', '438200', 1, '115.26913', '30.45265'); -INSERT INTO `base_postage_region` -VALUES (1798, 1791, NULL, '蕲春', '蕲春县', 3, 'qichun', '435300', 1, '115.43615', '30.22613'); -INSERT INTO `base_postage_region` -VALUES (1799, 1791, 'H', '黄梅', '黄梅县', 3, 'huangmei', '435500', 1, '115.94427', '30.07033'); -INSERT INTO `base_postage_region` -VALUES (1800, 1791, 'M', '麻城', '麻城市', 3, 'macheng', '438300', 1, '115.00988', '31.17228'); -INSERT INTO `base_postage_region` -VALUES (1801, 1791, 'W', '武穴', '武穴市', 3, 'wuxue', '435400', 1, '115.55975', '29.84446'); -INSERT INTO `base_postage_region` -VALUES (1802, 1709, 'X', '咸宁', '咸宁市', 2, 'xianning', '437000', 1, '114.328963', '29.832798'); -INSERT INTO `base_postage_region` -VALUES (1803, 1802, 'X', '咸安', '咸安区', 3, 'xianan', '437000', 1, '114.29872', '29.8529'); -INSERT INTO `base_postage_region` -VALUES (1804, 1802, 'J', '嘉鱼', '嘉鱼县', 3, 'jiayu', '437200', 1, '113.93927', '29.97054'); -INSERT INTO `base_postage_region` -VALUES (1805, 1802, 'T', '通城', '通城县', 3, 'tongcheng', '437400', 1, '113.81582', '29.24568'); -INSERT INTO `base_postage_region` -VALUES (1806, 1802, 'C', '崇阳', '崇阳县', 3, 'chongyang', '437500', 1, '114.03982', '29.55564'); -INSERT INTO `base_postage_region` -VALUES (1807, 1802, 'T', '通山', '通山县', 3, 'tongshan', '437600', 1, '114.48239', '29.6063'); -INSERT INTO `base_postage_region` -VALUES (1808, 1802, 'C', '赤壁', '赤壁市', 3, 'chibi', '437300', 1, '113.90039', '29.72454'); -INSERT INTO `base_postage_region` -VALUES (1809, 1709, 'S', '随州', '随州市', 2, 'suizhou', '441300', 1, '113.37377', '31.717497'); -INSERT INTO `base_postage_region` -VALUES (1810, 1809, 'Z', '曾都', '曾都区', 3, 'zengdu', '441300', 1, '113.37128', '31.71614'); -INSERT INTO `base_postage_region` -VALUES (1811, 1809, 'S', '随县', '随县', 3, 'suixian', '441309', 1, '113.82663', '31.6179'); -INSERT INTO `base_postage_region` -VALUES (1812, 1809, 'G', '广水', '广水市', 3, 'guangshui', '432700', 1, '113.82663', '31.6179'); -INSERT INTO `base_postage_region` -VALUES (1813, 1709, 'E', '恩施', '恩施土家族苗族自治州', 2, 'enshi', '445000', 1, '109.48699', '30.283114'); -INSERT INTO `base_postage_region` -VALUES (1814, 1813, 'E', '恩施', '恩施市', 3, 'enshi', '445000', 1, '109.47942', '30.29502'); -INSERT INTO `base_postage_region` -VALUES (1815, 1813, 'L', '利川', '利川市', 3, 'lichuan', '445400', 1, '108.93591', '30.29117'); -INSERT INTO `base_postage_region` -VALUES (1816, 1813, 'J', '建始', '建始县', 3, 'jianshi', '445300', 1, '109.72207', '30.60209'); -INSERT INTO `base_postage_region` -VALUES (1817, 1813, 'B', '巴东', '巴东县', 3, 'badong', '444300', 1, '110.34066', '31.04233'); -INSERT INTO `base_postage_region` -VALUES (1818, 1813, 'X', '宣恩', '宣恩县', 3, 'xuanen', '445500', 1, '109.49179', '29.98714'); -INSERT INTO `base_postage_region` -VALUES (1819, 1813, 'X', '咸丰', '咸丰县', 3, 'xianfeng', '445600', 1, '109.152', '29.67983'); -INSERT INTO `base_postage_region` -VALUES (1820, 1813, 'L', '来凤', '来凤县', 3, 'laifeng', '445700', 1, '109.40716', '29.49373'); -INSERT INTO `base_postage_region` -VALUES (1821, 1813, 'H', '鹤峰', '鹤峰县', 3, 'hefeng', '445800', 1, '110.03091', '29.89072'); -INSERT INTO `base_postage_region` -VALUES (1822, 1709, 'Z', ' ', '直辖县级', 2, '', '', 1, '114.298572', '30.584355'); -INSERT INTO `base_postage_region` -VALUES (1823, 1822, 'X', '仙桃', '仙桃市', 3, 'xiantao', '433000', 1, '113.453974', '30.364953'); -INSERT INTO `base_postage_region` -VALUES (1824, 1822, 'Q', '潜江', '潜江市', 3, 'qianjiang', '433100', 1, '112.896866', '30.421215'); -INSERT INTO `base_postage_region` -VALUES (1825, 1822, 'T', '天门', '天门市', 3, 'tianmen', '431700', 1, '113.165862', '30.653061'); -INSERT INTO `base_postage_region` -VALUES (1826, 1822, 'S', '神农架', '神农架林区', 3, 'shennongjia', '442400', 1, '110.671525', '31.744449'); -INSERT INTO `base_postage_region` -VALUES (1827, 0, 'H', '湖南', '湖南省', 1, 'hunan', '', 1, '112.982279', '28.19409'); -INSERT INTO `base_postage_region` -VALUES (1828, 1827, 'C', '长沙', '长沙市', 2, 'changsha', '410005', 1, '112.982279', '28.19409'); -INSERT INTO `base_postage_region` -VALUES (1829, 1828, NULL, '芙蓉', '芙蓉区', 3, 'furong', '410011', 1, '113.03176', '28.1844'); -INSERT INTO `base_postage_region` -VALUES (1830, 1828, 'T', '天心', '天心区', 3, 'tianxin', '410004', 1, '112.98991', '28.1127'); -INSERT INTO `base_postage_region` -VALUES (1831, 1828, 'Y', '岳麓', '岳麓区', 3, 'yuelu', '410013', 1, '112.93133', '28.2351'); -INSERT INTO `base_postage_region` -VALUES (1832, 1828, 'K', '开福', '开福区', 3, 'kaifu', '410008', 1, '112.98623', '28.25585'); -INSERT INTO `base_postage_region` -VALUES (1833, 1828, 'Y', '雨花', '雨花区', 3, 'yuhua', '410011', 1, '113.03567', '28.13541'); -INSERT INTO `base_postage_region` -VALUES (1834, 1828, 'W', '望城', '望城区', 3, 'wangcheng', '410200', 1, '112.819549', '28.347458'); -INSERT INTO `base_postage_region` -VALUES (1835, 1828, 'C', '长沙', '长沙县', 3, 'changsha', '410100', 1, '113.08071', '28.24595'); -INSERT INTO `base_postage_region` -VALUES (1836, 1828, 'N', '宁乡', '宁乡县', 3, 'ningxiang', '410600', 1, '112.55749', '28.25358'); -INSERT INTO `base_postage_region` -VALUES (1837, 1828, NULL, '浏阳', '浏阳市', 3, 'liuyang', '410300', 1, '113.64312', '28.16375'); -INSERT INTO `base_postage_region` -VALUES (1838, 1827, 'Z', '株洲', '株洲市', 2, 'zhuzhou', '412000', 1, '113.151737', '27.835806'); -INSERT INTO `base_postage_region` -VALUES (1839, 1838, 'H', '荷塘', '荷塘区', 3, 'hetang', '412000', 1, '113.17315', '27.85569'); -INSERT INTO `base_postage_region` -VALUES (1840, 1838, 'L', '芦淞', '芦淞区', 3, 'lusong', '412000', 1, '113.15562', '27.78525'); -INSERT INTO `base_postage_region` -VALUES (1841, 1838, 'S', '石峰', '石峰区', 3, 'shifeng', '412005', 1, '113.11776', '27.87552'); -INSERT INTO `base_postage_region` -VALUES (1842, 1838, 'T', '天元', '天元区', 3, 'tianyuan', '412007', 1, '113.12335', '27.83103'); -INSERT INTO `base_postage_region` -VALUES (1843, 1838, 'Z', '株洲', '株洲县', 3, 'zhuzhou', '412100', 1, '113.14428', '27.69826'); -INSERT INTO `base_postage_region` -VALUES (1844, 1838, NULL, '攸县', '攸县', 3, 'youxian', '412300', 1, '113.34365', '27.00352'); -INSERT INTO `base_postage_region` -VALUES (1845, 1838, 'C', '茶陵', '茶陵县', 3, 'chaling', '412400', 1, '113.54364', '26.7915'); -INSERT INTO `base_postage_region` -VALUES (1846, 1838, 'Y', '炎陵', '炎陵县', 3, 'yanling', '412500', 1, '113.77163', '26.48818'); -INSERT INTO `base_postage_region` -VALUES (1847, 1838, NULL, '醴陵', '醴陵市', 3, 'liling', '412200', 1, '113.49704', '27.64615'); -INSERT INTO `base_postage_region` -VALUES (1848, 1827, 'X', '湘潭', '湘潭市', 2, 'xiangtan', '411100', 1, '112.925083', '27.846725'); -INSERT INTO `base_postage_region` -VALUES (1849, 1848, 'Y', '雨湖', '雨湖区', 3, 'yuhu', '411100', 1, '112.90399', '27.86859'); -INSERT INTO `base_postage_region` -VALUES (1850, 1848, 'Y', '岳塘', '岳塘区', 3, 'yuetang', '411101', 1, '112.9606', '27.85784'); -INSERT INTO `base_postage_region` -VALUES (1851, 1848, 'X', '湘潭', '湘潭县', 3, 'xiangtan', '411228', 1, '112.9508', '27.77893'); -INSERT INTO `base_postage_region` -VALUES (1852, 1848, 'X', '湘乡', '湘乡市', 3, 'xiangxiang', '411400', 1, '112.53512', '27.73543'); -INSERT INTO `base_postage_region` -VALUES (1853, 1848, 'S', '韶山', '韶山市', 3, 'shaoshan', '411300', 1, '112.52655', '27.91503'); -INSERT INTO `base_postage_region` -VALUES (1854, 1827, 'H', '衡阳', '衡阳市', 2, 'hengyang', '421001', 1, '112.607693', '26.900358'); -INSERT INTO `base_postage_region` -VALUES (1855, 1854, 'Z', '珠晖', '珠晖区', 3, 'zhuhui', '421002', 1, '112.62054', '26.89361'); -INSERT INTO `base_postage_region` -VALUES (1856, 1854, 'Y', '雁峰', '雁峰区', 3, 'yanfeng', '421001', 1, '112.61654', '26.88866'); -INSERT INTO `base_postage_region` -VALUES (1857, 1854, 'S', '石鼓', '石鼓区', 3, 'shigu', '421005', 1, '112.61069', '26.90232'); -INSERT INTO `base_postage_region` -VALUES (1858, 1854, 'Z', '蒸湘', '蒸湘区', 3, 'zhengxiang', '421001', 1, '112.6033', '26.89651'); -INSERT INTO `base_postage_region` -VALUES (1859, 1854, 'N', '南岳', '南岳区', 3, 'nanyue', '421900', 1, '112.7384', '27.23262'); -INSERT INTO `base_postage_region` -VALUES (1860, 1854, 'H', '衡阳', '衡阳县', 3, 'hengyang', '421200', 1, '112.37088', '26.9706'); -INSERT INTO `base_postage_region` -VALUES (1861, 1854, 'H', '衡南', '衡南县', 3, 'hengnan', '421131', 1, '112.67788', '26.73828'); -INSERT INTO `base_postage_region` -VALUES (1862, 1854, 'H', '衡山', '衡山县', 3, 'hengshan', '421300', 1, '112.86776', '27.23134'); -INSERT INTO `base_postage_region` -VALUES (1863, 1854, 'H', '衡东', '衡东县', 3, 'hengdong', '421400', 1, '112.94833', '27.08093'); -INSERT INTO `base_postage_region` -VALUES (1864, 1854, 'Q', '祁东', '祁东县', 3, 'qidong', '421600', 1, '112.09039', '26.79964'); -INSERT INTO `base_postage_region` -VALUES (1865, 1854, NULL, '耒阳', '耒阳市', 3, 'leiyang', '421800', 1, '112.85998', '26.42132'); -INSERT INTO `base_postage_region` -VALUES (1866, 1854, 'C', '常宁', '常宁市', 3, 'changning', '421500', 1, '112.4009', '26.40692'); -INSERT INTO `base_postage_region` -VALUES (1867, 1827, 'S', '邵阳', '邵阳市', 2, 'shaoyang', '422000', 1, '111.46923', '27.237842'); -INSERT INTO `base_postage_region` -VALUES (1868, 1867, 'S', '双清', '双清区', 3, 'shuangqing', '422001', 1, '111.49715', '27.23291'); -INSERT INTO `base_postage_region` -VALUES (1869, 1867, 'D', '大祥', '大祥区', 3, 'daxiang', '422000', 1, '111.45412', '27.23332'); -INSERT INTO `base_postage_region` -VALUES (1870, 1867, 'B', '北塔', '北塔区', 3, 'beita', '422007', 1, '111.45219', '27.24648'); -INSERT INTO `base_postage_region` -VALUES (1871, 1867, 'S', '邵东', '邵东县', 3, 'shaodong', '422800', 1, '111.74441', '27.2584'); -INSERT INTO `base_postage_region` -VALUES (1872, 1867, 'X', '新邵', '新邵县', 3, 'xinshao', '422900', 1, '111.46066', '27.32169'); -INSERT INTO `base_postage_region` -VALUES (1873, 1867, 'S', '邵阳', '邵阳县', 3, 'shaoyang', '422100', 1, '111.27459', '26.99143'); -INSERT INTO `base_postage_region` -VALUES (1874, 1867, 'L', '隆回', '隆回县', 3, 'longhui', '422200', 1, '111.03216', '27.10937'); -INSERT INTO `base_postage_region` -VALUES (1875, 1867, 'D', '洞口', '洞口县', 3, 'dongkou', '422300', 1, '110.57388', '27.05462'); -INSERT INTO `base_postage_region` -VALUES (1876, 1867, 'S', '绥宁', '绥宁县', 3, 'suining', '422600', 1, '110.15576', '26.58636'); -INSERT INTO `base_postage_region` -VALUES (1877, 1867, 'X', '新宁', '新宁县', 3, 'xinning', '422700', 1, '110.85131', '26.42936'); -INSERT INTO `base_postage_region` -VALUES (1878, 1867, 'C', '城步', '城步苗族自治县', 3, 'chengbu', '422500', 1, '110.3222', '26.39048'); -INSERT INTO `base_postage_region` -VALUES (1879, 1867, 'W', '武冈', '武冈市', 3, 'wugang', '422400', 1, '110.63281', '26.72817'); -INSERT INTO `base_postage_region` -VALUES (1880, 1827, 'Y', '岳阳', '岳阳市', 2, 'yueyang', '414000', 1, '113.132855', '29.37029'); -INSERT INTO `base_postage_region` -VALUES (1881, 1880, 'Y', '岳阳楼', '岳阳楼区', 3, 'yueyanglou', '414000', 1, '113.12942', '29.3719'); -INSERT INTO `base_postage_region` -VALUES (1882, 1880, 'Y', '云溪', '云溪区', 3, 'yunxi', '414009', 1, '113.27713', '29.47357'); -INSERT INTO `base_postage_region` -VALUES (1883, 1880, 'J', '君山', '君山区', 3, 'junshan', '414005', 1, '113.00439', '29.45941'); -INSERT INTO `base_postage_region` -VALUES (1884, 1880, 'Y', '岳阳', '岳阳县', 3, 'yueyang', '414100', 1, '113.11987', '29.14314'); -INSERT INTO `base_postage_region` -VALUES (1885, 1880, 'H', '华容', '华容县', 3, 'huarong', '414200', 1, '112.54089', '29.53019'); -INSERT INTO `base_postage_region` -VALUES (1886, 1880, 'X', '湘阴', '湘阴县', 3, 'xiangyin', '414600', 1, '112.90911', '28.68922'); -INSERT INTO `base_postage_region` -VALUES (1887, 1880, 'P', '平江', '平江县', 3, 'pingjiang', '414500', 1, '113.58105', '28.70664'); -INSERT INTO `base_postage_region` -VALUES (1888, 1880, NULL, '汨罗', '汨罗市', 3, 'miluo', '414400', 1, '113.06707', '28.80631'); -INSERT INTO `base_postage_region` -VALUES (1889, 1880, 'L', '临湘', '临湘市', 3, 'linxiang', '414300', 1, '113.4501', '29.47701'); -INSERT INTO `base_postage_region` -VALUES (1890, 1827, 'C', '常德', '常德市', 2, 'changde', '415000', 1, '111.691347', '29.040225'); -INSERT INTO `base_postage_region` -VALUES (1891, 1890, 'W', '武陵', '武陵区', 3, 'wuling', '415000', 1, '111.69791', '29.02876'); -INSERT INTO `base_postage_region` -VALUES (1892, 1890, 'D', '鼎城', '鼎城区', 3, 'dingcheng', '415101', 1, '111.68078', '29.01859'); -INSERT INTO `base_postage_region` -VALUES (1893, 1890, 'A', '安乡', '安乡县', 3, 'anxiang', '415600', 1, '112.16732', '29.41326'); -INSERT INTO `base_postage_region` -VALUES (1894, 1890, 'H', '汉寿', '汉寿县', 3, 'hanshou', '415900', 1, '111.96691', '28.90299'); -INSERT INTO `base_postage_region` -VALUES (1895, 1890, NULL, '澧县', '澧县', 3, 'lixian', '415500', 1, '111.75866', '29.63317'); -INSERT INTO `base_postage_region` -VALUES (1896, 1890, 'L', '临澧', '临澧县', 3, 'linli', '415200', 1, '111.65161', '29.44163'); -INSERT INTO `base_postage_region` -VALUES (1897, 1890, 'T', '桃源', '桃源县', 3, 'taoyuan', '415700', 1, '111.48892', '28.90474'); -INSERT INTO `base_postage_region` -VALUES (1898, 1890, 'S', '石门', '石门县', 3, 'shimen', '415300', 1, '111.37966', '29.58424'); -INSERT INTO `base_postage_region` -VALUES (1899, 1890, 'J', '津市', '津市市', 3, 'jinshi', '415400', 1, '111.87756', '29.60563'); -INSERT INTO `base_postage_region` -VALUES (1900, 1827, 'Z', '张家界', '张家界市', 2, 'zhangjiajie', '427000', 1, '110.479921', '29.127401'); -INSERT INTO `base_postage_region` -VALUES (1901, 1900, 'Y', '永定', '永定区', 3, 'yongding', '427000', 1, '110.47464', '29.13387'); -INSERT INTO `base_postage_region` -VALUES (1902, 1900, 'W', '武陵源', '武陵源区', 3, 'wulingyuan', '427400', 1, '110.55026', '29.34574'); -INSERT INTO `base_postage_region` -VALUES (1903, 1900, 'C', '慈利', '慈利县', 3, 'cili', '427200', 1, '111.13946', '29.42989'); -INSERT INTO `base_postage_region` -VALUES (1904, 1900, 'S', '桑植', '桑植县', 3, 'sangzhi', '427100', 1, '110.16308', '29.39815'); -INSERT INTO `base_postage_region` -VALUES (1905, 1827, 'Y', '益阳', '益阳市', 2, 'yiyang', '413000', 1, '112.355042', '28.570066'); -INSERT INTO `base_postage_region` -VALUES (1906, 1905, 'Z', '资阳', '资阳区', 3, 'ziyang', '413001', 1, '112.32447', '28.59095'); -INSERT INTO `base_postage_region` -VALUES (1907, 1905, 'H', '赫山', '赫山区', 3, 'heshan', '413002', 1, '112.37265', '28.57425'); -INSERT INTO `base_postage_region` -VALUES (1908, 1905, 'N', '南县', '南县', 3, 'nanxian', '413200', 1, '112.3963', '29.36159'); -INSERT INTO `base_postage_region` -VALUES (1909, 1905, 'T', '桃江', '桃江县', 3, 'taojiang', '413400', 1, '112.1557', '28.51814'); -INSERT INTO `base_postage_region` -VALUES (1910, 1905, 'A', '安化', '安化县', 3, 'anhua', '413500', 1, '111.21298', '28.37424'); -INSERT INTO `base_postage_region` -VALUES (1911, 1905, NULL, '沅江', '沅江市', 3, 'yuanjiang', '413100', 1, '112.35427', '28.84403'); -INSERT INTO `base_postage_region` -VALUES (1912, 1827, 'C', '郴州', '郴州市', 2, 'chenzhou', '423000', 1, '113.032067', '25.793589'); -INSERT INTO `base_postage_region` -VALUES (1913, 1912, 'B', '北湖', '北湖区', 3, 'beihu', '423000', 1, '113.01103', '25.78405'); -INSERT INTO `base_postage_region` -VALUES (1914, 1912, 'S', '苏仙', '苏仙区', 3, 'suxian', '423000', 1, '113.04226', '25.80045'); -INSERT INTO `base_postage_region` -VALUES (1915, 1912, 'G', '桂阳', '桂阳县', 3, 'guiyang', '424400', 1, '112.73364', '25.75406'); -INSERT INTO `base_postage_region` -VALUES (1916, 1912, 'Y', '宜章', '宜章县', 3, 'yizhang', '424200', 1, '112.95147', '25.39931'); -INSERT INTO `base_postage_region` -VALUES (1917, 1912, 'Y', '永兴', '永兴县', 3, 'yongxing', '423300', 1, '113.11242', '26.12646'); -INSERT INTO `base_postage_region` -VALUES (1918, 1912, 'J', '嘉禾', '嘉禾县', 3, 'jiahe', '424500', 1, '112.36935', '25.58795'); -INSERT INTO `base_postage_region` -VALUES (1919, 1912, 'L', '临武', '临武县', 3, 'linwu', '424300', 1, '112.56369', '25.27602'); -INSERT INTO `base_postage_region` -VALUES (1920, 1912, 'R', '汝城', '汝城县', 3, 'rucheng', '424100', 1, '113.68582', '25.55204'); -INSERT INTO `base_postage_region` -VALUES (1921, 1912, 'G', '桂东', '桂东县', 3, 'guidong', '423500', 1, '113.9468', '26.07987'); -INSERT INTO `base_postage_region` -VALUES (1922, 1912, 'A', '安仁', '安仁县', 3, 'anren', '423600', 1, '113.26944', '26.70931'); -INSERT INTO `base_postage_region` -VALUES (1923, 1912, 'Z', '资兴', '资兴市', 3, 'zixing', '423400', 1, '113.23724', '25.97668'); -INSERT INTO `base_postage_region` -VALUES (1924, 1827, 'Y', '永州', '永州市', 2, 'yongzhou', '425000', 1, '111.608019', '26.434516'); -INSERT INTO `base_postage_region` -VALUES (1925, 1924, 'L', '零陵', '零陵区', 3, 'lingling', '425100', 1, '111.62103', '26.22109'); -INSERT INTO `base_postage_region` -VALUES (1926, 1924, 'L', '冷水滩', '冷水滩区', 3, 'lengshuitan', '425100', 1, '111.59214', '26.46107'); -INSERT INTO `base_postage_region` -VALUES (1927, 1924, 'Q', '祁阳', '祁阳县', 3, 'qiyang', '426100', 1, '111.84011', '26.58009'); -INSERT INTO `base_postage_region` -VALUES (1928, 1924, 'D', '东安', '东安县', 3, 'dongan', '425900', 1, '111.3164', '26.39202'); -INSERT INTO `base_postage_region` -VALUES (1929, 1924, 'S', '双牌', '双牌县', 3, 'shuangpai', '425200', 1, '111.65927', '25.95988'); -INSERT INTO `base_postage_region` -VALUES (1930, 1924, 'D', '道县', '道县', 3, 'daoxian', '425300', 1, '111.60195', '25.52766'); -INSERT INTO `base_postage_region` -VALUES (1931, 1924, 'J', '江永', '江永县', 3, 'jiangyong', '425400', 1, '111.34082', '25.27233'); -INSERT INTO `base_postage_region` -VALUES (1932, 1924, 'N', '宁远', '宁远县', 3, 'ningyuan', '425600', 1, '111.94625', '25.56913'); -INSERT INTO `base_postage_region` -VALUES (1933, 1924, 'L', '蓝山', '蓝山县', 3, 'lanshan', '425800', 1, '112.19363', '25.36794'); -INSERT INTO `base_postage_region` -VALUES (1934, 1924, 'X', '新田', '新田县', 3, 'xintian', '425700', 1, '112.22103', '25.9095'); -INSERT INTO `base_postage_region` -VALUES (1935, 1924, 'J', '江华', '江华瑶族自治县', 3, 'jianghua', '425500', 1, '111.58847', '25.1845'); -INSERT INTO `base_postage_region` -VALUES (1936, 1827, 'H', '怀化', '怀化市', 2, 'huaihua', '418000', 1, '109.97824', '27.550082'); -INSERT INTO `base_postage_region` -VALUES (1937, 1936, 'H', '鹤城', '鹤城区', 3, 'hecheng', '418000', 1, '109.96509', '27.54942'); -INSERT INTO `base_postage_region` -VALUES (1938, 1936, 'Z', '中方', '中方县', 3, 'zhongfang', '418005', 1, '109.94497', '27.43988'); -INSERT INTO `base_postage_region` -VALUES (1939, 1936, NULL, '沅陵', '沅陵县', 3, 'yuanling', '419600', 1, '110.39633', '28.45548'); -INSERT INTO `base_postage_region` -VALUES (1940, 1936, 'C', '辰溪', '辰溪县', 3, 'chenxi', '419500', 1, '110.18942', '28.00406'); -INSERT INTO `base_postage_region` -VALUES (1941, 1936, NULL, '溆浦', '溆浦县', 3, 'xupu', '419300', 1, '110.59384', '27.90836'); -INSERT INTO `base_postage_region` -VALUES (1942, 1936, 'H', '会同', '会同县', 3, 'huitong', '418300', 1, '109.73568', '26.88716'); -INSERT INTO `base_postage_region` -VALUES (1943, 1936, 'M', '麻阳', '麻阳苗族自治县', 3, 'mayang', '419400', 1, '109.80194', '27.866'); -INSERT INTO `base_postage_region` -VALUES (1944, 1936, 'X', '新晃', '新晃侗族自治县', 3, 'xinhuang', '419200', 1, '109.17166', '27.35937'); -INSERT INTO `base_postage_region` -VALUES (1945, 1936, NULL, '芷江', '芷江侗族自治县', 3, 'zhijiang', '419100', 1, '109.6849', '27.44297'); -INSERT INTO `base_postage_region` -VALUES (1946, 1936, 'J', '靖州', '靖州苗族侗族自治县', 3, 'jingzhou', '418400', 1, '109.69821', '26.57651'); -INSERT INTO `base_postage_region` -VALUES (1947, 1936, 'T', '通道', '通道侗族自治县', 3, 'tongdao', '418500', 1, '109.78515', '26.1571'); -INSERT INTO `base_postage_region` -VALUES (1948, 1936, 'H', '洪江', '洪江市', 3, 'hongjiang', '418100', 1, '109.83651', '27.20922'); -INSERT INTO `base_postage_region` -VALUES (1949, 1827, 'L', '娄底', '娄底市', 2, 'loudi', '417000', 1, '112.008497', '27.728136'); -INSERT INTO `base_postage_region` -VALUES (1950, 1949, 'L', '娄星', '娄星区', 3, 'louxing', '417000', 1, '112.00193', '27.72992'); -INSERT INTO `base_postage_region` -VALUES (1951, 1949, 'S', '双峰', '双峰县', 3, 'shuangfeng', '417700', 1, '112.19921', '27.45418'); -INSERT INTO `base_postage_region` -VALUES (1952, 1949, 'X', '新化', '新化县', 3, 'xinhua', '417600', 1, '111.32739', '27.7266'); -INSERT INTO `base_postage_region` -VALUES (1953, 1949, 'L', '冷水江', '冷水江市', 3, 'lengshuijiang', '417500', 1, '111.43554', '27.68147'); -INSERT INTO `base_postage_region` -VALUES (1954, 1949, 'L', '涟源', '涟源市', 3, 'lianyuan', '417100', 1, '111.67233', '27.68831'); -INSERT INTO `base_postage_region` -VALUES (1955, 1827, 'X', '湘西', '湘西土家族苗族自治州', 2, 'xiangxi', '416000', 1, '109.739735', '28.314296'); -INSERT INTO `base_postage_region` -VALUES (1956, 1955, 'J', '吉首', '吉首市', 3, 'jishou', '416000', 1, '109.69799', '28.26247'); -INSERT INTO `base_postage_region` -VALUES (1957, 1955, NULL, '泸溪', '泸溪县', 3, 'luxi', '416100', 1, '110.21682', '28.2205'); -INSERT INTO `base_postage_region` -VALUES (1958, 1955, 'F', '凤凰', '凤凰县', 3, 'fenghuang', '416200', 1, '109.60156', '27.94822'); -INSERT INTO `base_postage_region` -VALUES (1959, 1955, 'H', '花垣', '花垣县', 3, 'huayuan', '416400', 1, '109.48217', '28.5721'); -INSERT INTO `base_postage_region` -VALUES (1960, 1955, 'B', '保靖', '保靖县', 3, 'baojing', '416500', 1, '109.66049', '28.69997'); -INSERT INTO `base_postage_region` -VALUES (1961, 1955, 'G', '古丈', '古丈县', 3, 'guzhang', '416300', 1, '109.94812', '28.61944'); -INSERT INTO `base_postage_region` -VALUES (1962, 1955, 'Y', '永顺', '永顺县', 3, 'yongshun', '416700', 1, '109.85266', '29.00103'); -INSERT INTO `base_postage_region` -VALUES (1963, 1955, 'L', '龙山', '龙山县', 3, 'longshan', '416800', 1, '109.4432', '29.45693'); -INSERT INTO `base_postage_region` -VALUES (1964, 0, 'G', '广东', '广东省', 1, 'guangdong', '', 1, '113.280637', '23.125178'); -INSERT INTO `base_postage_region` -VALUES (1965, 1964, 'G', '广州', '广州市', 2, 'guangzhou', '510032', 1, '113.280637', '23.125178'); -INSERT INTO `base_postage_region` -VALUES (1966, 1965, 'L', '荔湾', '荔湾区', 3, 'liwan', '510170', 1, '113.2442', '23.12592'); -INSERT INTO `base_postage_region` -VALUES (1967, 1965, 'Y', '越秀', '越秀区', 3, 'yuexiu', '510030', 1, '113.26683', '23.12897'); -INSERT INTO `base_postage_region` -VALUES (1968, 1965, 'H', '海珠', '海珠区', 3, 'haizhu', '510300', 1, '113.26197', '23.10379'); -INSERT INTO `base_postage_region` -VALUES (1969, 1965, 'T', '天河', '天河区', 3, 'tianhe', '510665', 1, '113.36112', '23.12467'); -INSERT INTO `base_postage_region` -VALUES (1970, 1965, 'B', '白云', '白云区', 3, 'baiyun', '510405', 1, '113.27307', '23.15787'); -INSERT INTO `base_postage_region` -VALUES (1971, 1965, 'H', '黄埔', '黄埔区', 3, 'huangpu', '510700', 1, '113.45895', '23.10642'); -INSERT INTO `base_postage_region` -VALUES (1972, 1965, 'F', '番禺', '番禺区', 3, 'panyu', '511400', 1, '113.38397', '22.93599'); -INSERT INTO `base_postage_region` -VALUES (1973, 1965, 'H', '花都', '花都区', 3, 'huadu', '510800', 1, '113.22033', '23.40358'); -INSERT INTO `base_postage_region` -VALUES (1974, 1965, 'N', '南沙', '南沙区', 3, 'nansha', '511458', 1, '113.60845', '22.77144'); -INSERT INTO `base_postage_region` -VALUES (1975, 1965, 'C', '从化', '从化区', 3, 'conghua', '510900', 1, '113.587386', '23.545283'); -INSERT INTO `base_postage_region` -VALUES (1976, 1965, 'Z', '增城', '增城区', 3, 'zengcheng', '511300', 1, '113.829579', '23.290497'); -INSERT INTO `base_postage_region` -VALUES (1977, 1964, 'S', '韶关', '韶关市', 2, 'shaoguan', '512002', 1, '113.591544', '24.801322'); -INSERT INTO `base_postage_region` -VALUES (1978, 1977, 'W', '武江', '武江区', 3, 'wujiang', '512026', 1, '113.58767', '24.79264'); -INSERT INTO `base_postage_region` -VALUES (1979, 1977, NULL, '浈江', '浈江区', 3, 'zhenjiang', '512023', 1, '113.61109', '24.80438'); -INSERT INTO `base_postage_region` -VALUES (1980, 1977, 'Q', '曲江', '曲江区', 3, 'qujiang', '512101', 1, '113.60165', '24.67915'); -INSERT INTO `base_postage_region` -VALUES (1981, 1977, 'S', '始兴', '始兴县', 3, 'shixing', '512500', 1, '114.06799', '24.94759'); -INSERT INTO `base_postage_region` -VALUES (1982, 1977, 'R', '仁化', '仁化县', 3, 'renhua', '512300', 1, '113.74737', '25.08742'); -INSERT INTO `base_postage_region` -VALUES (1983, 1977, 'W', '翁源', '翁源县', 3, 'wengyuan', '512600', 1, '114.13385', '24.3495'); -INSERT INTO `base_postage_region` -VALUES (1984, 1977, 'R', '乳源', '乳源瑶族自治县', 3, 'ruyuan', '512700', 1, '113.27734', '24.77803'); -INSERT INTO `base_postage_region` -VALUES (1985, 1977, 'X', '新丰', '新丰县', 3, 'xinfeng', '511100', 1, '114.20788', '24.05924'); -INSERT INTO `base_postage_region` -VALUES (1986, 1977, 'L', '乐昌', '乐昌市', 3, 'lechang', '512200', 1, '113.35653', '25.12799'); -INSERT INTO `base_postage_region` -VALUES (1987, 1977, 'N', '南雄', '南雄市', 3, 'nanxiong', '512400', 1, '114.30966', '25.11706'); -INSERT INTO `base_postage_region` -VALUES (1988, 1964, 'S', '深圳', '深圳市', 2, 'shenzhen', '518035', 1, '114.085947', '22.547'); -INSERT INTO `base_postage_region` -VALUES (1989, 1988, 'L', '罗湖', '罗湖区', 3, 'luohu', '518021', 1, '114.13116', '22.54836'); -INSERT INTO `base_postage_region` -VALUES (1990, 1988, 'F', '福田', '福田区', 3, 'futian', '518048', 1, '114.05571', '22.52245'); -INSERT INTO `base_postage_region` -VALUES (1991, 1988, 'N', '南山', '南山区', 3, 'nanshan', '518051', 1, '113.93029', '22.53291'); -INSERT INTO `base_postage_region` -VALUES (1992, 1988, 'B', '宝安', '宝安区', 3, 'baoan', '518101', 1, '113.88311', '22.55371'); -INSERT INTO `base_postage_region` -VALUES (1993, 1988, 'L', '龙岗', '龙岗区', 3, 'longgang', '518172', 1, '114.24771', '22.71986'); -INSERT INTO `base_postage_region` -VALUES (1994, 1988, 'Y', '盐田', '盐田区', 3, 'yantian', '518081', 1, '114.23733', '22.5578'); -INSERT INTO `base_postage_region` -VALUES (1995, 1988, 'G', '光明新区', '光明新区', 3, 'guangmingxinqu', '518100', 1, '113.896026', '22.777292'); -INSERT INTO `base_postage_region` -VALUES (1996, 1988, 'P', '坪山新区', '坪山新区', 3, 'pingshanxinqu', '518000', 1, '114.34637', '22.690529'); -INSERT INTO `base_postage_region` -VALUES (1997, 1988, 'D', '大鹏新区', '大鹏新区', 3, 'dapengxinqu', '518000', 1, '114.479901', '22.587862'); -INSERT INTO `base_postage_region` -VALUES (1998, 1988, 'L', '龙华新区', '龙华新区', 3, 'longhuaxinqu', '518100', 1, '114.036585', '22.68695'); -INSERT INTO `base_postage_region` -VALUES (1999, 1964, 'Z', '珠海', '珠海市', 2, 'zhuhai', '519000', 1, '113.552724', '22.255899'); -INSERT INTO `base_postage_region` -VALUES (2000, 1999, 'X', '香洲', '香洲区', 3, 'xiangzhou', '519000', 1, '113.5435', '22.26654'); -INSERT INTO `base_postage_region` -VALUES (2001, 1999, 'D', '斗门', '斗门区', 3, 'doumen', '519110', 1, '113.29644', '22.20898'); -INSERT INTO `base_postage_region` -VALUES (2002, 1999, 'J', '金湾', '金湾区', 3, 'jinwan', '519040', 1, '113.36361', '22.14691'); -INSERT INTO `base_postage_region` -VALUES (2003, 1964, 'S', '汕头', '汕头市', 2, 'shantou', '515041', 1, '116.708463', '23.37102'); -INSERT INTO `base_postage_region` -VALUES (2004, 2003, 'L', '龙湖', '龙湖区', 3, 'longhu', '515041', 1, '116.71641', '23.37166'); -INSERT INTO `base_postage_region` -VALUES (2005, 2003, 'J', '金平', '金平区', 3, 'jinping', '515041', 1, '116.70364', '23.36637'); -INSERT INTO `base_postage_region` -VALUES (2006, 2003, NULL, '濠江', '濠江区', 3, 'haojiang', '515071', 1, '116.72659', '23.28588'); -INSERT INTO `base_postage_region` -VALUES (2007, 2003, 'C', '潮阳', '潮阳区', 3, 'chaoyang', '515100', 1, '116.6015', '23.26485'); -INSERT INTO `base_postage_region` -VALUES (2008, 2003, 'C', '潮南', '潮南区', 3, 'chaonan', '515144', 1, '116.43188', '23.25'); -INSERT INTO `base_postage_region` -VALUES (2009, 2003, 'C', '澄海', '澄海区', 3, 'chenghai', '515800', 1, '116.75589', '23.46728'); -INSERT INTO `base_postage_region` -VALUES (2010, 2003, 'N', '南澳', '南澳县', 3, 'nanao', '515900', 1, '117.01889', '23.4223'); -INSERT INTO `base_postage_region` -VALUES (2011, 1964, 'F', '佛山', '佛山市', 2, 'foshan', '528000', 1, '113.122717', '23.028762'); -INSERT INTO `base_postage_region` -VALUES (2012, 2011, NULL, '禅城', '禅城区', 3, 'chancheng', '528000', 1, '113.1228', '23.00842'); -INSERT INTO `base_postage_region` -VALUES (2013, 2011, 'N', '南海', '南海区', 3, 'nanhai', '528251', 1, '113.14299', '23.02877'); -INSERT INTO `base_postage_region` -VALUES (2014, 2011, 'S', '顺德', '顺德区', 3, 'shunde', '528300', 1, '113.29394', '22.80452'); -INSERT INTO `base_postage_region` -VALUES (2015, 2011, 'S', '三水', '三水区', 3, 'sanshui', '528133', 1, '112.89703', '23.15564'); -INSERT INTO `base_postage_region` -VALUES (2016, 2011, 'G', '高明', '高明区', 3, 'gaoming', '528500', 1, '112.89254', '22.90022'); -INSERT INTO `base_postage_region` -VALUES (2017, 1964, 'J', '江门', '江门市', 2, 'jiangmen', '529000', 1, '113.094942', '22.590431'); -INSERT INTO `base_postage_region` -VALUES (2018, 2017, 'P', '蓬江', '蓬江区', 3, 'pengjiang', '529000', 1, '113.07849', '22.59515'); -INSERT INTO `base_postage_region` -VALUES (2019, 2017, 'J', '江海', '江海区', 3, 'jianghai', '529040', 1, '113.11099', '22.56024'); -INSERT INTO `base_postage_region` -VALUES (2020, 2017, 'X', '新会', '新会区', 3, 'xinhui', '529100', 1, '113.03225', '22.45876'); -INSERT INTO `base_postage_region` -VALUES (2021, 2017, 'T', '台山', '台山市', 3, 'taishan', '529200', 1, '112.79382', '22.2515'); -INSERT INTO `base_postage_region` -VALUES (2022, 2017, 'K', '开平', '开平市', 3, 'kaiping', '529337', 1, '112.69842', '22.37622'); -INSERT INTO `base_postage_region` -VALUES (2023, 2017, 'H', '鹤山', '鹤山市', 3, 'heshan', '529700', 1, '112.96429', '22.76523'); -INSERT INTO `base_postage_region` -VALUES (2024, 2017, 'E', '恩平', '恩平市', 3, 'enping', '529400', 1, '112.30496', '22.18288'); -INSERT INTO `base_postage_region` -VALUES (2025, 1964, 'Z', '湛江', '湛江市', 2, 'zhanjiang', '524047', 1, '110.405529', '21.195338'); -INSERT INTO `base_postage_region` -VALUES (2026, 2025, 'C', '赤坎', '赤坎区', 3, 'chikan', '524033', 1, '110.36592', '21.26606'); -INSERT INTO `base_postage_region` -VALUES (2027, 2025, 'X', '霞山', '霞山区', 3, 'xiashan', '524011', 1, '110.39822', '21.19181'); -INSERT INTO `base_postage_region` -VALUES (2028, 2025, 'P', '坡头', '坡头区', 3, 'potou', '524057', 1, '110.45533', '21.24472'); -INSERT INTO `base_postage_region` -VALUES (2029, 2025, 'M', '麻章', '麻章区', 3, 'mazhang', '524094', 1, '110.3342', '21.26333'); -INSERT INTO `base_postage_region` -VALUES (2030, 2025, 'S', '遂溪', '遂溪县', 3, 'suixi', '524300', 1, '110.25003', '21.37721'); -INSERT INTO `base_postage_region` -VALUES (2031, 2025, 'X', '徐闻', '徐闻县', 3, 'xuwen', '524100', 1, '110.17379', '20.32812'); -INSERT INTO `base_postage_region` -VALUES (2032, 2025, 'L', '廉江', '廉江市', 3, 'lianjiang', '524400', 1, '110.28442', '21.60917'); -INSERT INTO `base_postage_region` -VALUES (2033, 2025, 'L', '雷州', '雷州市', 3, 'leizhou', '524200', 1, '110.10092', '20.91428'); -INSERT INTO `base_postage_region` -VALUES (2034, 2025, 'W', '吴川', '吴川市', 3, 'wuchuan', '524500', 1, '110.77703', '21.44584'); -INSERT INTO `base_postage_region` -VALUES (2035, 1964, 'M', '茂名', '茂名市', 2, 'maoming', '525000', 1, '110.919229', '21.659751'); -INSERT INTO `base_postage_region` -VALUES (2036, 2035, 'M', '茂南', '茂南区', 3, 'maonan', '525000', 1, '110.9187', '21.64103'); -INSERT INTO `base_postage_region` -VALUES (2037, 2035, 'D', '电白', '电白区', 3, 'dianbai', '525400', 1, '111.007264', '21.507219'); -INSERT INTO `base_postage_region` -VALUES (2038, 2035, 'G', '高州', '高州市', 3, 'gaozhou', '525200', 1, '110.85519', '21.92057'); -INSERT INTO `base_postage_region` -VALUES (2039, 2035, 'H', '化州', '化州市', 3, 'huazhou', '525100', 1, '110.63949', '21.66394'); -INSERT INTO `base_postage_region` -VALUES (2040, 2035, 'X', '信宜', '信宜市', 3, 'xinyi', '525300', 1, '110.94647', '22.35351'); -INSERT INTO `base_postage_region` -VALUES (2041, 1964, 'Z', '肇庆', '肇庆市', 2, 'zhaoqing', '526040', 1, '112.472529', '23.051546'); -INSERT INTO `base_postage_region` -VALUES (2042, 2041, 'D', '端州', '端州区', 3, 'duanzhou', '526060', 1, '112.48495', '23.0519'); -INSERT INTO `base_postage_region` -VALUES (2043, 2041, 'D', '鼎湖', '鼎湖区', 3, 'dinghu', '526070', 1, '112.56643', '23.15846'); -INSERT INTO `base_postage_region` -VALUES (2044, 2041, 'G', '广宁', '广宁县', 3, 'guangning', '526300', 1, '112.44064', '23.6346'); -INSERT INTO `base_postage_region` -VALUES (2045, 2041, 'H', '怀集', '怀集县', 3, 'huaiji', '526400', 1, '112.18396', '23.90918'); -INSERT INTO `base_postage_region` -VALUES (2046, 2041, 'F', '封开', '封开县', 3, 'fengkai', '526500', 1, '111.50332', '23.43571'); -INSERT INTO `base_postage_region` -VALUES (2047, 2041, 'D', '德庆', '德庆县', 3, 'deqing', '526600', 1, '111.78555', '23.14371'); -INSERT INTO `base_postage_region` -VALUES (2048, 2041, 'G', '高要', '高要市', 3, 'gaoyao', '526100', 1, '112.45834', '23.02577'); -INSERT INTO `base_postage_region` -VALUES (2049, 2041, 'S', '四会', '四会市', 3, 'sihui', '526200', 1, '112.73416', '23.32686'); -INSERT INTO `base_postage_region` -VALUES (2050, 1964, 'H', '惠州', '惠州市', 2, 'huizhou', '516000', 1, '114.412599', '23.079404'); -INSERT INTO `base_postage_region` -VALUES (2051, 2050, 'H', '惠城', '惠城区', 3, 'huicheng', '516008', 1, '114.3828', '23.08377'); -INSERT INTO `base_postage_region` -VALUES (2052, 2050, 'H', '惠阳', '惠阳区', 3, 'huiyang', '516211', 1, '114.45639', '22.78845'); -INSERT INTO `base_postage_region` -VALUES (2053, 2050, 'B', '博罗', '博罗县', 3, 'boluo', '516100', 1, '114.28964', '23.17307'); -INSERT INTO `base_postage_region` -VALUES (2054, 2050, 'H', '惠东', '惠东县', 3, 'huidong', '516300', 1, '114.72009', '22.98484'); -INSERT INTO `base_postage_region` -VALUES (2055, 2050, 'L', '龙门', '龙门县', 3, 'longmen', '516800', 1, '114.25479', '23.72758'); -INSERT INTO `base_postage_region` -VALUES (2056, 1964, 'M', '梅州', '梅州市', 2, 'meizhou', '514021', 1, '116.117582', '24.299112'); -INSERT INTO `base_postage_region` -VALUES (2057, 2056, 'M', '梅江', '梅江区', 3, 'meijiang', '514000', 1, '116.11663', '24.31062'); -INSERT INTO `base_postage_region` -VALUES (2058, 2056, 'M', '梅县', '梅县区', 3, 'meixian', '514787', 1, '116.097753', '24.286739'); -INSERT INTO `base_postage_region` -VALUES (2059, 2056, 'D', '大埔', '大埔县', 3, 'dabu', '514200', 1, '116.69662', '24.35325'); -INSERT INTO `base_postage_region` -VALUES (2060, 2056, 'F', '丰顺', '丰顺县', 3, 'fengshun', '514300', 1, '116.18219', '23.74094'); -INSERT INTO `base_postage_region` -VALUES (2061, 2056, 'W', '五华', '五华县', 3, 'wuhua', '514400', 1, '115.77893', '23.92417'); -INSERT INTO `base_postage_region` -VALUES (2062, 2056, 'P', '平远', '平远县', 3, 'pingyuan', '514600', 1, '115.89556', '24.57116'); -INSERT INTO `base_postage_region` -VALUES (2063, 2056, 'J', '蕉岭', '蕉岭县', 3, 'jiaoling', '514100', 1, '116.17089', '24.65732'); -INSERT INTO `base_postage_region` -VALUES (2064, 2056, 'X', '兴宁', '兴宁市', 3, 'xingning', '514500', 1, '115.73141', '24.14001'); -INSERT INTO `base_postage_region` -VALUES (2065, 1964, 'S', '汕尾', '汕尾市', 2, 'shanwei', '516600', 1, '115.364238', '22.774485'); -INSERT INTO `base_postage_region` -VALUES (2066, 2065, 'C', '城区', '城区', 3, 'chengqu', '516600', 1, '115.36503', '22.7789'); -INSERT INTO `base_postage_region` -VALUES (2067, 2065, 'H', '海丰', '海丰县', 3, 'haifeng', '516400', 1, '115.32336', '22.96653'); -INSERT INTO `base_postage_region` -VALUES (2068, 2065, 'L', '陆河', '陆河县', 3, 'luhe', '516700', 1, '115.65597', '23.30365'); -INSERT INTO `base_postage_region` -VALUES (2069, 2065, 'L', '陆丰', '陆丰市', 3, 'lufeng', '516500', 1, '115.64813', '22.94335'); -INSERT INTO `base_postage_region` -VALUES (2070, 1964, 'H', '河源', '河源市', 2, 'heyuan', '517000', 1, '114.697802', '23.746266'); -INSERT INTO `base_postage_region` -VALUES (2071, 2070, 'Y', '源城', '源城区', 3, 'yuancheng', '517000', 1, '114.70242', '23.7341'); -INSERT INTO `base_postage_region` -VALUES (2072, 2070, 'Z', '紫金', '紫金县', 3, 'zijin', '517400', 1, '115.18365', '23.63867'); -INSERT INTO `base_postage_region` -VALUES (2073, 2070, 'L', '龙川', '龙川县', 3, 'longchuan', '517300', 1, '115.26025', '24.10142'); -INSERT INTO `base_postage_region` -VALUES (2074, 2070, 'L', '连平', '连平县', 3, 'lianping', '517100', 1, '114.49026', '24.37156'); -INSERT INTO `base_postage_region` -VALUES (2075, 2070, 'H', '和平', '和平县', 3, 'heping', '517200', 1, '114.93841', '24.44319'); -INSERT INTO `base_postage_region` -VALUES (2076, 2070, 'D', '东源', '东源县', 3, 'dongyuan', '517583', 1, '114.74633', '23.78835'); -INSERT INTO `base_postage_region` -VALUES (2077, 1964, 'Y', '阳江', '阳江市', 2, 'yangjiang', '529500', 1, '111.975107', '21.859222'); -INSERT INTO `base_postage_region` -VALUES (2078, 2077, 'J', '江城', '江城区', 3, 'jiangcheng', '529500', 1, '111.95488', '21.86193'); -INSERT INTO `base_postage_region` -VALUES (2079, 2077, 'Y', '阳东', '阳东区', 3, 'yangdong', '529900', 1, '112.01467', '21.87398'); -INSERT INTO `base_postage_region` -VALUES (2080, 2077, 'Y', '阳西', '阳西县', 3, 'yangxi', '529800', 1, '111.61785', '21.75234'); -INSERT INTO `base_postage_region` -VALUES (2081, 2077, 'Y', '阳春', '阳春市', 3, 'yangchun', '529600', 1, '111.78854', '22.17232'); -INSERT INTO `base_postage_region` -VALUES (2082, 1964, 'Q', '清远', '清远市', 2, 'qingyuan', '511500', 1, '113.036779', '23.704188'); -INSERT INTO `base_postage_region` -VALUES (2083, 2082, 'Q', '清城', '清城区', 3, 'qingcheng', '511515', 1, '113.06265', '23.69784'); -INSERT INTO `base_postage_region` -VALUES (2084, 2082, 'Q', '清新', '清新区', 3, 'qingxin', '511810', 1, '113.015203', '23.736949'); -INSERT INTO `base_postage_region` -VALUES (2085, 2082, 'F', '佛冈', '佛冈县', 3, 'fogang', '511600', 1, '113.53286', '23.87231'); -INSERT INTO `base_postage_region` -VALUES (2086, 2082, 'Y', '阳山', '阳山县', 3, 'yangshan', '513100', 1, '112.64129', '24.46516'); -INSERT INTO `base_postage_region` -VALUES (2087, 2082, 'L', '连山', '连山壮族瑶族自治县', 3, 'lianshan', '513200', 1, '112.0802', '24.56807'); -INSERT INTO `base_postage_region` -VALUES (2088, 2082, 'L', '连南', '连南瑶族自治县', 3, 'liannan', '513300', 1, '112.28842', '24.71726'); -INSERT INTO `base_postage_region` -VALUES (2089, 2082, 'Y', '英德', '英德市', 3, 'yingde', '513000', 1, '113.415', '24.18571'); -INSERT INTO `base_postage_region` -VALUES (2090, 2082, 'L', '连州', '连州市', 3, 'lianzhou', '513400', 1, '112.38153', '24.77913'); -INSERT INTO `base_postage_region` -VALUES (2091, 1964, 'D', '东莞', '东莞市', 2, 'dongguan', '523888', 1, '113.760234', '23.048884'); -INSERT INTO `base_postage_region` -VALUES (2092, 2091, NULL, '莞城', '莞城区', 3, 'guancheng', '523128', 1, '113.751043', '23.053412'); -INSERT INTO `base_postage_region` -VALUES (2093, 2091, 'N', '南城', '南城区', 3, 'nancheng', '523617', 1, '113.752125', '23.02018'); -INSERT INTO `base_postage_region` -VALUES (2094, 2091, 'W', '万江', '万江区', 3, 'wanjiang', '523039', 1, '113.739053', '23.043842'); -INSERT INTO `base_postage_region` -VALUES (2095, 2091, 'S', '石碣', '石碣镇', 3, 'shijie', '523290', 1, '113.80217', '23.09899'); -INSERT INTO `base_postage_region` -VALUES (2096, 2091, 'S', '石龙', '石龙镇', 3, 'shilong', '523326', 1, '113.876381', '23.107444'); -INSERT INTO `base_postage_region` -VALUES (2097, 2091, 'C', '茶山', '茶山镇', 3, 'chashan', '523380', 1, '113.883526', '23.062375'); -INSERT INTO `base_postage_region` -VALUES (2098, 2091, 'S', '石排', '石排镇', 3, 'shipai', '523346', 1, '113.919859', '23.0863'); -INSERT INTO `base_postage_region` -VALUES (2099, 2091, 'Q', '企石', '企石镇', 3, 'qishi', '523507', 1, '114.013233', '23.066044'); -INSERT INTO `base_postage_region` -VALUES (2100, 2091, 'H', '横沥', '横沥镇', 3, 'hengli', '523471', 1, '113.957436', '23.025732'); -INSERT INTO `base_postage_region` -VALUES (2101, 2091, 'Q', '桥头', '桥头镇', 3, 'qiaotou', '523520', 1, '114.01385', '22.939727'); -INSERT INTO `base_postage_region` -VALUES (2102, 2091, 'X', '谢岗', '谢岗镇', 3, 'xiegang', '523592', 1, '114.141396', '22.959664'); -INSERT INTO `base_postage_region` -VALUES (2103, 2091, 'D', '东坑', '东坑镇', 3, 'dongkeng', '523451', 1, '113.939835', '22.992804'); -INSERT INTO `base_postage_region` -VALUES (2104, 2091, 'C', '常平', '常平镇', 3, 'changping', '523560', 1, '114.029627', '23.016116'); -INSERT INTO `base_postage_region` -VALUES (2105, 2091, NULL, '寮步', '寮步镇', 3, 'liaobu', '523411', 1, '113.884745', '22.991738'); -INSERT INTO `base_postage_region` -VALUES (2106, 2091, 'D', '大朗', '大朗镇', 3, 'dalang', '523770', 1, '113.9271', '22.965748'); -INSERT INTO `base_postage_region` -VALUES (2107, 2091, 'M', '麻涌', '麻涌镇', 3, 'machong', '523143', 1, '113.546177', '23.045315'); -INSERT INTO `base_postage_region` -VALUES (2108, 2091, 'Z', '中堂', '中堂镇', 3, 'zhongtang', '523233', 1, '113.654422', '23.090164'); -INSERT INTO `base_postage_region` -VALUES (2109, 2091, NULL, '高埗', '高埗镇', 3, 'gaobu', '523282', 1, '113.735917', '23.068415'); -INSERT INTO `base_postage_region` -VALUES (2110, 2091, 'Z', '樟木头', '樟木头镇', 3, 'zhangmutou', '523619', 1, '114.066298', '22.956682'); -INSERT INTO `base_postage_region` -VALUES (2111, 2091, 'D', '大岭山', '大岭山镇', 3, 'dalingshan', '523835', 1, '113.782955', '22.885366'); -INSERT INTO `base_postage_region` -VALUES (2112, 2091, 'W', '望牛墩', '望牛墩镇', 3, 'wangniudun', '523203', 1, '113.658847', '23.055018'); -INSERT INTO `base_postage_region` -VALUES (2113, 2091, 'H', '黄江', '黄江镇', 3, 'huangjiang', '523755', 1, '113.992635', '22.877536'); -INSERT INTO `base_postage_region` -VALUES (2114, 2091, 'H', '洪梅', '洪梅镇', 3, 'hongmei', '523163', 1, '113.613081', '22.992675'); -INSERT INTO `base_postage_region` -VALUES (2115, 2091, 'Q', '清溪', '清溪镇', 3, 'qingxi', '523660', 1, '114.155796', '22.844456'); -INSERT INTO `base_postage_region` -VALUES (2116, 2091, 'S', '沙田', '沙田镇', 3, 'shatian', '523988', 1, '113.760234', '23.048884'); -INSERT INTO `base_postage_region` -VALUES (2117, 2091, NULL, '道滘', '道滘镇', 3, 'daojiao', '523171', 1, '113.760234', '23.048884'); -INSERT INTO `base_postage_region` -VALUES (2118, 2091, 'T', '塘厦', '塘厦镇', 3, 'tangxia', '523713', 1, '114.10765', '22.822862'); -INSERT INTO `base_postage_region` -VALUES (2119, 2091, 'H', '虎门', '虎门镇', 3, 'humen', '523932', 1, '113.71118', '22.82615'); -INSERT INTO `base_postage_region` -VALUES (2120, 2091, 'H', '厚街', '厚街镇', 3, 'houjie', '523960', 1, '113.67301', '22.940815'); -INSERT INTO `base_postage_region` -VALUES (2121, 2091, 'F', '凤岗', '凤岗镇', 3, 'fenggang', '523690', 1, '114.141194', '22.744598'); -INSERT INTO `base_postage_region` -VALUES (2122, 2091, 'C', '长安', '长安镇', 3, 'changan', '523850', 1, '113.803939', '22.816644'); -INSERT INTO `base_postage_region` -VALUES (2123, 1964, 'Z', '中山', '中山市', 2, 'zhongshan', '528403', 1, '113.382391', '22.521113'); -INSERT INTO `base_postage_region` -VALUES (2124, 2123, 'S', '石岐', '石岐区', 3, 'shiqi', '528400', 1, '113.378835', '22.52522'); -INSERT INTO `base_postage_region` -VALUES (2125, 2123, 'N', '南区', '南区', 3, 'nanqu', '528400', 1, '113.355896', '22.486568'); -INSERT INTO `base_postage_region` -VALUES (2126, 2123, 'W', '五桂山', '五桂山区', 3, 'wuguishan', '528458', 1, '113.41079', '22.51968'); -INSERT INTO `base_postage_region` -VALUES (2127, 2123, 'H', '火炬', '火炬开发区', 3, 'huoju', '528437', 1, '113.480523', '22.566082'); -INSERT INTO `base_postage_region` -VALUES (2128, 2123, 'H', '黄圃', '黄圃镇', 3, 'huangpu', '528429', 1, '113.342359', '22.715116'); -INSERT INTO `base_postage_region` -VALUES (2129, 2123, 'N', '南头', '南头镇', 3, 'nantou', '528421', 1, '113.296358', '22.713907'); -INSERT INTO `base_postage_region` -VALUES (2130, 2123, 'D', '东凤', '东凤镇', 3, 'dongfeng', '528425', 1, '113.26114', '22.68775'); -INSERT INTO `base_postage_region` -VALUES (2131, 2123, 'F', '阜沙', '阜沙镇', 3, 'fusha', '528434', 1, '113.353024', '22.666364'); -INSERT INTO `base_postage_region` -VALUES (2132, 2123, 'X', '小榄', '小榄镇', 3, 'xiaolan', '528415', 1, '113.244235', '22.666951'); -INSERT INTO `base_postage_region` -VALUES (2133, 2123, 'D', '东升', '东升镇', 3, 'dongsheng', '528400', 1, '113.296298', '22.614003'); -INSERT INTO `base_postage_region` -VALUES (2134, 2123, 'G', '古镇', '古镇镇', 3, 'guzhen', '528422', 1, '113.179745', '22.611019'); -INSERT INTO `base_postage_region` -VALUES (2135, 2123, 'H', '横栏', '横栏镇', 3, 'henglan', '528478', 1, '113.265845', '22.523202'); -INSERT INTO `base_postage_region` -VALUES (2136, 2123, 'S', '三角', '三角镇', 3, 'sanjiao', '528422', 1, '113.423624', '22.677033'); -INSERT INTO `base_postage_region` -VALUES (2137, 2123, 'M', '民众', '民众镇', 3, 'minzhong', '528441', 1, '113.486025', '22.623468'); -INSERT INTO `base_postage_region` -VALUES (2138, 2123, 'N', '南朗', '南朗镇', 3, 'nanlang', '528454', 1, '113.533939', '22.492378'); -INSERT INTO `base_postage_region` -VALUES (2139, 2123, 'G', '港口', '港口镇', 3, 'gangkou', '528447', 1, '113.382391', '22.521113'); -INSERT INTO `base_postage_region` -VALUES (2140, 2123, 'D', '大涌', '大涌镇', 3, 'dayong', '528476', 1, '113.291708', '22.467712'); -INSERT INTO `base_postage_region` -VALUES (2141, 2123, 'S', '沙溪', '沙溪镇', 3, 'shaxi', '528471', 1, '113.328369', '22.526325'); -INSERT INTO `base_postage_region` -VALUES (2142, 2123, 'S', '三乡', '三乡镇', 3, 'sanxiang', '528463', 1, '113.4334', '22.352494'); -INSERT INTO `base_postage_region` -VALUES (2143, 2123, 'B', '板芙', '板芙镇', 3, 'banfu', '528459', 1, '113.320346', '22.415674'); -INSERT INTO `base_postage_region` -VALUES (2144, 2123, 'S', '神湾', '神湾镇', 3, 'shenwan', '528462', 1, '113.359387', '22.312476'); -INSERT INTO `base_postage_region` -VALUES (2145, 2123, 'T', '坦洲', '坦洲镇', 3, 'tanzhou', '528467', 1, '113.485677', '22.261269'); -INSERT INTO `base_postage_region` -VALUES (2146, 1964, 'C', '潮州', '潮州市', 2, 'chaozhou', '521000', 1, '116.632301', '23.661701'); -INSERT INTO `base_postage_region` -VALUES (2147, 2146, 'X', '湘桥', '湘桥区', 3, 'xiangqiao', '521000', 1, '116.62805', '23.67451'); -INSERT INTO `base_postage_region` -VALUES (2148, 2146, 'C', '潮安', '潮安区', 3, 'chaoan', '515638', 1, '116.592895', '23.643656'); -INSERT INTO `base_postage_region` -VALUES (2149, 2146, 'R', '饶平', '饶平县', 3, 'raoping', '515700', 1, '117.00692', '23.66994'); -INSERT INTO `base_postage_region` -VALUES (2150, 1964, 'J', '揭阳', '揭阳市', 2, 'jieyang', '522000', 1, '116.355733', '23.543778'); -INSERT INTO `base_postage_region` -VALUES (2151, 2150, NULL, '榕城', '榕城区', 3, 'rongcheng', '522000', 1, '116.3671', '23.52508'); -INSERT INTO `base_postage_region` -VALUES (2152, 2150, 'J', '揭东', '揭东区', 3, 'jiedong', '515500', 1, '116.412947', '23.569887'); -INSERT INTO `base_postage_region` -VALUES (2153, 2150, 'J', '揭西', '揭西县', 3, 'jiexi', '515400', 1, '115.83883', '23.42714'); -INSERT INTO `base_postage_region` -VALUES (2154, 2150, 'H', '惠来', '惠来县', 3, 'huilai', '515200', 1, '116.29599', '23.03289'); -INSERT INTO `base_postage_region` -VALUES (2155, 2150, 'P', '普宁', '普宁市', 3, 'puning', '515300', 1, '116.16564', '23.29732'); -INSERT INTO `base_postage_region` -VALUES (2156, 1964, 'Y', '云浮', '云浮市', 2, 'yunfu', '527300', 1, '112.044439', '22.929801'); -INSERT INTO `base_postage_region` -VALUES (2157, 2156, 'Y', '云城', '云城区', 3, 'yuncheng', '527300', 1, '112.03908', '22.92996'); -INSERT INTO `base_postage_region` -VALUES (2158, 2156, 'Y', '云安', '云安区', 3, 'yunan', '527500', 1, '112.00936', '23.07779'); -INSERT INTO `base_postage_region` -VALUES (2159, 2156, 'X', '新兴', '新兴县', 3, 'xinxing', '527400', 1, '112.23019', '22.69734'); -INSERT INTO `base_postage_region` -VALUES (2160, 2156, 'Y', '郁南', '郁南县', 3, 'yunan', '527100', 1, '111.53387', '23.23307'); -INSERT INTO `base_postage_region` -VALUES (2161, 2156, 'L', '罗定', '罗定市', 3, 'luoding', '527200', 1, '111.56979', '22.76967'); -INSERT INTO `base_postage_region` -VALUES (2162, 0, 'G', '广西', '广西壮族自治区', 1, 'guangxi', '', 1, '108.320004', '22.82402'); -INSERT INTO `base_postage_region` -VALUES (2163, 2162, 'N', '南宁', '南宁市', 2, 'nanning', '530028', 1, '108.320004', '22.82402'); -INSERT INTO `base_postage_region` -VALUES (2164, 2163, 'X', '兴宁', '兴宁区', 3, 'xingning', '530023', 1, '108.36694', '22.85355'); -INSERT INTO `base_postage_region` -VALUES (2165, 2163, 'Q', '青秀', '青秀区', 3, 'qingxiu', '530213', 1, '108.49545', '22.78511'); -INSERT INTO `base_postage_region` -VALUES (2166, 2163, 'J', '江南', '江南区', 3, 'jiangnan', '530031', 1, '108.27325', '22.78127'); -INSERT INTO `base_postage_region` -VALUES (2167, 2163, 'X', '西乡塘', '西乡塘区', 3, 'xixiangtang', '530001', 1, '108.31347', '22.83386'); -INSERT INTO `base_postage_region` -VALUES (2168, 2163, 'L', '良庆', '良庆区', 3, 'liangqing', '530219', 1, '108.41284', '22.74914'); -INSERT INTO `base_postage_region` -VALUES (2169, 2163, NULL, '邕宁', '邕宁区', 3, 'yongning', '530200', 1, '108.48684', '22.75628'); -INSERT INTO `base_postage_region` -VALUES (2170, 2163, 'W', '武鸣', '武鸣县', 3, 'wuming', '530100', 1, '108.27719', '23.15643'); -INSERT INTO `base_postage_region` -VALUES (2171, 2163, 'L', '隆安', '隆安县', 3, 'longan', '532700', 1, '107.69192', '23.17336'); -INSERT INTO `base_postage_region` -VALUES (2172, 2163, 'M', '马山', '马山县', 3, 'mashan', '530600', 1, '108.17697', '23.70931'); -INSERT INTO `base_postage_region` -VALUES (2173, 2163, 'S', '上林', '上林县', 3, 'shanglin', '530500', 1, '108.60522', '23.432'); -INSERT INTO `base_postage_region` -VALUES (2174, 2163, 'B', '宾阳', '宾阳县', 3, 'binyang', '530400', 1, '108.81185', '23.2196'); -INSERT INTO `base_postage_region` -VALUES (2175, 2163, 'H', '横县', '横县', 3, 'hengxian', '530300', 1, '109.26608', '22.68448'); -INSERT INTO `base_postage_region` -VALUES (2176, 2163, NULL, '埌东', '埌东新区', 3, 'langdong', '530000', 1, '108.419094', '22.812976'); -INSERT INTO `base_postage_region` -VALUES (2177, 2162, 'L', '柳州', '柳州市', 2, 'liuzhou', '545001', 1, '109.411703', '24.314617'); -INSERT INTO `base_postage_region` -VALUES (2178, 2177, 'C', '城中', '城中区', 3, 'chengzhong', '545001', 1, '109.41082', '24.31543'); -INSERT INTO `base_postage_region` -VALUES (2179, 2177, 'Y', '鱼峰', '鱼峰区', 3, 'yufeng', '545005', 1, '109.4533', '24.31868'); -INSERT INTO `base_postage_region` -VALUES (2180, 2177, 'L', '柳南', '柳南区', 3, 'liunan', '545007', 1, '109.38548', '24.33599'); -INSERT INTO `base_postage_region` -VALUES (2181, 2177, 'L', '柳北', '柳北区', 3, 'liubei', '545002', 1, '109.40202', '24.36267'); -INSERT INTO `base_postage_region` -VALUES (2182, 2177, 'L', '柳江', '柳江县', 3, 'liujiang', '545100', 1, '109.33273', '24.25596'); -INSERT INTO `base_postage_region` -VALUES (2183, 2177, 'L', '柳城', '柳城县', 3, 'liucheng', '545200', 1, '109.23877', '24.64951'); -INSERT INTO `base_postage_region` -VALUES (2184, 2177, 'L', '鹿寨', '鹿寨县', 3, 'luzhai', '545600', 1, '109.75177', '24.47306'); -INSERT INTO `base_postage_region` -VALUES (2185, 2177, 'R', '融安', '融安县', 3, 'rongan', '545400', 1, '109.39761', '25.22465'); -INSERT INTO `base_postage_region` -VALUES (2186, 2177, 'R', '融水', '融水苗族自治县', 3, 'rongshui', '545300', 1, '109.25634', '25.06628'); -INSERT INTO `base_postage_region` -VALUES (2187, 2177, 'S', '三江', '三江侗族自治县', 3, 'sanjiang', '545500', 1, '109.60446', '25.78428'); -INSERT INTO `base_postage_region` -VALUES (2188, 2177, 'L', '柳东', '柳东新区', 3, 'liudong', '545000', 1, '109.437053', '24.329204'); -INSERT INTO `base_postage_region` -VALUES (2189, 2162, 'G', '桂林', '桂林市', 2, 'guilin', '541100', 1, '110.299121', '25.274215'); -INSERT INTO `base_postage_region` -VALUES (2190, 2189, 'X', '秀峰', '秀峰区', 3, 'xiufeng', '541001', 1, '110.28915', '25.28249'); -INSERT INTO `base_postage_region` -VALUES (2191, 2189, 'D', '叠彩', '叠彩区', 3, 'diecai', '541001', 1, '110.30195', '25.31381'); -INSERT INTO `base_postage_region` -VALUES (2192, 2189, 'X', '象山', '象山区', 3, 'xiangshan', '541002', 1, '110.28108', '25.26168'); -INSERT INTO `base_postage_region` -VALUES (2193, 2189, 'Q', '七星', '七星区', 3, 'qixing', '541004', 1, '110.31793', '25.2525'); -INSERT INTO `base_postage_region` -VALUES (2194, 2189, 'Y', '雁山', '雁山区', 3, 'yanshan', '541006', 1, '110.30911', '25.06038'); -INSERT INTO `base_postage_region` -VALUES (2195, 2189, 'L', '临桂', '临桂区', 3, 'lingui', '541100', 1, '110.205487', '25.246257'); -INSERT INTO `base_postage_region` -VALUES (2196, 2189, 'Y', '阳朔', '阳朔县', 3, 'yangshuo', '541900', 1, '110.49475', '24.77579'); -INSERT INTO `base_postage_region` -VALUES (2197, 2189, 'L', '灵川', '灵川县', 3, 'lingchuan', '541200', 1, '110.32949', '25.41292'); -INSERT INTO `base_postage_region` -VALUES (2198, 2189, 'Q', '全州', '全州县', 3, 'quanzhou', '541503', 1, '111.07211', '25.92799'); -INSERT INTO `base_postage_region` -VALUES (2199, 2189, 'X', '兴安', '兴安县', 3, 'xingan', '541300', 1, '110.67144', '25.61167'); -INSERT INTO `base_postage_region` -VALUES (2200, 2189, 'Y', '永福', '永福县', 3, 'yongfu', '541800', 1, '109.98333', '24.98004'); -INSERT INTO `base_postage_region` -VALUES (2201, 2189, 'G', '灌阳', '灌阳县', 3, 'guanyang', '541600', 1, '111.15954', '25.48803'); -INSERT INTO `base_postage_region` -VALUES (2202, 2189, 'L', '龙胜', '龙胜各族自治县', 3, 'longsheng', '541700', 1, '110.01226', '25.79614'); -INSERT INTO `base_postage_region` -VALUES (2203, 2189, 'Z', '资源', '资源县', 3, 'ziyuan', '541400', 1, '110.65255', '26.04237'); -INSERT INTO `base_postage_region` -VALUES (2204, 2189, 'P', '平乐', '平乐县', 3, 'pingle', '542400', 1, '110.64175', '24.63242'); -INSERT INTO `base_postage_region` -VALUES (2205, 2189, 'L', '荔浦', '荔浦县', 3, 'lipu', '546600', 1, '110.3971', '24.49589'); -INSERT INTO `base_postage_region` -VALUES (2206, 2189, 'G', '恭城', '恭城瑶族自治县', 3, 'gongcheng', '542500', 1, '110.83035', '24.83286'); -INSERT INTO `base_postage_region` -VALUES (2207, 2162, 'W', '梧州', '梧州市', 2, 'wuzhou', '543002', 1, '111.316229', '23.472309'); -INSERT INTO `base_postage_region` -VALUES (2208, 2207, 'W', '万秀', '万秀区', 3, 'wanxiu', '543000', 1, '111.32052', '23.47298'); -INSERT INTO `base_postage_region` -VALUES (2209, 2207, 'C', '长洲', '长洲区', 3, 'changzhou', '543003', 1, '111.27494', '23.48573'); -INSERT INTO `base_postage_region` -VALUES (2210, 2207, 'L', '龙圩', '龙圩区', 3, 'longxu', '543002', 1, '111.316229', '23.472309'); -INSERT INTO `base_postage_region` -VALUES (2211, 2207, 'C', '苍梧', '苍梧县', 3, 'cangwu', '543100', 1, '111.24533', '23.42049'); -INSERT INTO `base_postage_region` -VALUES (2212, 2207, 'T', '藤县', '藤县', 3, 'tengxian', '543300', 1, '110.91418', '23.37605'); -INSERT INTO `base_postage_region` -VALUES (2213, 2207, 'M', '蒙山', '蒙山县', 3, 'mengshan', '546700', 1, '110.52221', '24.20168'); -INSERT INTO `base_postage_region` -VALUES (2214, 2207, NULL, '岑溪', '岑溪市', 3, 'cenxi', '543200', 1, '110.99594', '22.9191'); -INSERT INTO `base_postage_region` -VALUES (2215, 2162, 'B', '北海', '北海市', 2, 'beihai', '536000', 1, '109.119254', '21.473343'); -INSERT INTO `base_postage_region` -VALUES (2216, 2215, 'H', '海城', '海城区', 3, 'haicheng', '536000', 1, '109.11744', '21.47501'); -INSERT INTO `base_postage_region` -VALUES (2217, 2215, 'Y', '银海', '银海区', 3, 'yinhai', '536000', 1, '109.13029', '21.4783'); -INSERT INTO `base_postage_region` -VALUES (2218, 2215, 'T', '铁山港', '铁山港区', 3, 'tieshangang', '536017', 1, '109.45578', '21.59661'); -INSERT INTO `base_postage_region` -VALUES (2219, 2215, 'H', '合浦', '合浦县', 3, 'hepu', '536100', 1, '109.20068', '21.66601'); -INSERT INTO `base_postage_region` -VALUES (2220, 2162, 'F', '防城港', '防城港市', 2, 'fangchenggang', '538001', 1, '108.345478', '21.614631'); -INSERT INTO `base_postage_region` -VALUES (2221, 2220, 'G', '港口', '港口区', 3, 'gangkou', '538001', 1, '108.38022', '21.64342'); -INSERT INTO `base_postage_region` -VALUES (2222, 2220, 'F', '防城', '防城区', 3, 'fangcheng', '538021', 1, '108.35726', '21.76464'); -INSERT INTO `base_postage_region` -VALUES (2223, 2220, 'S', '上思', '上思县', 3, 'shangsi', '535500', 1, '107.9823', '22.14957'); -INSERT INTO `base_postage_region` -VALUES (2224, 2220, 'D', '东兴', '东兴市', 3, 'dongxing', '538100', 1, '107.97204', '21.54713'); -INSERT INTO `base_postage_region` -VALUES (2225, 2162, 'Q', '钦州', '钦州市', 2, 'qinzhou', '535099', 1, '108.624175', '21.967127'); -INSERT INTO `base_postage_region` -VALUES (2226, 2225, 'Q', '钦南', '钦南区', 3, 'qinnan', '535099', 1, '108.61775', '21.95137'); -INSERT INTO `base_postage_region` -VALUES (2227, 2225, 'Q', '钦北', '钦北区', 3, 'qinbei', '535099', 1, '108.63037', '21.95127'); -INSERT INTO `base_postage_region` -VALUES (2228, 2225, 'L', '灵山', '灵山县', 3, 'lingshan', '535099', 1, '109.29153', '22.4165'); -INSERT INTO `base_postage_region` -VALUES (2229, 2225, 'P', '浦北', '浦北县', 3, 'pubei', '535099', 1, '109.55572', '22.26888'); -INSERT INTO `base_postage_region` -VALUES (2230, 2162, 'G', '贵港', '贵港市', 2, 'guigang', '537100', 1, '109.602146', '23.0936'); -INSERT INTO `base_postage_region` -VALUES (2231, 2230, 'G', '港北', '港北区', 3, 'gangbei', '537100', 1, '109.57224', '23.11153'); -INSERT INTO `base_postage_region` -VALUES (2232, 2230, 'G', '港南', '港南区', 3, 'gangnan', '537100', 1, '109.60617', '23.07226'); -INSERT INTO `base_postage_region` -VALUES (2233, 2230, NULL, '覃塘', '覃塘区', 3, 'qintang', '537121', 1, '109.44293', '23.12677'); -INSERT INTO `base_postage_region` -VALUES (2234, 2230, 'P', '平南', '平南县', 3, 'pingnan', '537300', 1, '110.39062', '23.54201'); -INSERT INTO `base_postage_region` -VALUES (2235, 2230, 'G', '桂平', '桂平市', 3, 'guiping', '537200', 1, '110.08105', '23.39339'); -INSERT INTO `base_postage_region` -VALUES (2236, 2162, 'Y', '玉林', '玉林市', 2, 'yulin', '537000', 1, '110.154393', '22.63136'); -INSERT INTO `base_postage_region` -VALUES (2237, 2236, 'Y', '玉州', '玉州区', 3, 'yuzhou', '537000', 1, '110.15114', '22.6281'); -INSERT INTO `base_postage_region` -VALUES (2238, 2236, 'F', '福绵', '福绵区', 3, 'fumian', '537023', 1, '110.064816', '22.583057'); -INSERT INTO `base_postage_region` -VALUES (2239, 2236, 'Y', '玉东', '玉东新区', 3, 'yudong', '537000', 1, '110.154393', '22.63136'); -INSERT INTO `base_postage_region` -VALUES (2240, 2236, 'R', '容县', '容县', 3, 'rongxian', '537500', 1, '110.55593', '22.85701'); -INSERT INTO `base_postage_region` -VALUES (2241, 2236, 'L', '陆川', '陆川县', 3, 'luchuan', '537700', 1, '110.26413', '22.32454'); -INSERT INTO `base_postage_region` -VALUES (2242, 2236, 'B', '博白', '博白县', 3, 'bobai', '537600', 1, '109.97744', '22.27286'); -INSERT INTO `base_postage_region` -VALUES (2243, 2236, 'X', '兴业', '兴业县', 3, 'xingye', '537800', 1, '109.87612', '22.74237'); -INSERT INTO `base_postage_region` -VALUES (2244, 2236, 'B', '北流', '北流市', 3, 'beiliu', '537400', 1, '110.35302', '22.70817'); -INSERT INTO `base_postage_region` -VALUES (2245, 2162, 'B', '百色', '百色市', 2, 'baise', '533000', 1, '106.616285', '23.897742'); -INSERT INTO `base_postage_region` -VALUES (2246, 2245, 'Y', '右江', '右江区', 3, 'youjiang', '533000', 1, '106.61764', '23.9009'); -INSERT INTO `base_postage_region` -VALUES (2247, 2245, 'T', '田阳', '田阳县', 3, 'tianyang', '533600', 1, '106.91558', '23.73535'); -INSERT INTO `base_postage_region` -VALUES (2248, 2245, 'T', '田东', '田东县', 3, 'tiandong', '531500', 1, '107.12432', '23.60003'); -INSERT INTO `base_postage_region` -VALUES (2249, 2245, 'P', '平果', '平果县', 3, 'pingguo', '531400', 1, '107.59045', '23.32969'); -INSERT INTO `base_postage_region` -VALUES (2250, 2245, 'D', '德保', '德保县', 3, 'debao', '533700', 1, '106.61917', '23.32515'); -INSERT INTO `base_postage_region` -VALUES (2251, 2245, 'J', '靖西', '靖西县', 3, 'jingxi', '533800', 1, '106.41766', '23.13425'); -INSERT INTO `base_postage_region` -VALUES (2252, 2245, 'N', '那坡', '那坡县', 3, 'napo', '533900', 1, '105.84191', '23.40649'); -INSERT INTO `base_postage_region` -VALUES (2253, 2245, 'L', '凌云', '凌云县', 3, 'lingyun', '533100', 1, '106.56155', '24.34747'); -INSERT INTO `base_postage_region` -VALUES (2254, 2245, 'L', '乐业', '乐业县', 3, 'leye', '533200', 1, '106.56124', '24.78295'); -INSERT INTO `base_postage_region` -VALUES (2255, 2245, 'T', '田林', '田林县', 3, 'tianlin', '533300', 1, '106.22882', '24.29207'); -INSERT INTO `base_postage_region` -VALUES (2256, 2245, 'X', '西林', '西林县', 3, 'xilin', '533500', 1, '105.09722', '24.48966'); -INSERT INTO `base_postage_region` -VALUES (2257, 2245, 'L', '隆林', '隆林各族自治县', 3, 'longlin', '533400', 1, '105.34295', '24.77036'); -INSERT INTO `base_postage_region` -VALUES (2258, 2162, 'H', '贺州', '贺州市', 2, 'hezhou', '542800', 1, '111.552056', '24.414141'); -INSERT INTO `base_postage_region` -VALUES (2259, 2258, 'B', '八步', '八步区', 3, 'babu', '542800', 1, '111.55225', '24.41179'); -INSERT INTO `base_postage_region` -VALUES (2260, 2258, 'Z', '昭平', '昭平县', 3, 'zhaoping', '546800', 1, '110.81082', '24.1701'); -INSERT INTO `base_postage_region` -VALUES (2261, 2258, 'Z', '钟山', '钟山县', 3, 'zhongshan', '542600', 1, '111.30459', '24.52482'); -INSERT INTO `base_postage_region` -VALUES (2262, 2258, 'F', '富川', '富川瑶族自治县', 3, 'fuchuan', '542700', 1, '111.27767', '24.81431'); -INSERT INTO `base_postage_region` -VALUES (2263, 2258, 'P', '平桂', '平桂管理区', 3, 'pingui', '542800', 1, '111.485651', '24.458041'); -INSERT INTO `base_postage_region` -VALUES (2264, 2162, 'H', '河池', '河池市', 2, 'hechi', '547000', 1, '108.062105', '24.695899'); -INSERT INTO `base_postage_region` -VALUES (2265, 2264, 'J', '金城江', '金城江区', 3, 'jinchengjiang', '547000', 1, '108.03727', '24.6897'); -INSERT INTO `base_postage_region` -VALUES (2266, 2264, 'N', '南丹', '南丹县', 3, 'nandan', '547200', 1, '107.54562', '24.9776'); -INSERT INTO `base_postage_region` -VALUES (2267, 2264, 'T', '天峨', '天峨县', 3, 'tiane', '547300', 1, '107.17205', '24.99593'); -INSERT INTO `base_postage_region` -VALUES (2268, 2264, 'F', '凤山', '凤山县', 3, 'fengshan', '547600', 1, '107.04892', '24.54215'); -INSERT INTO `base_postage_region` -VALUES (2269, 2264, 'D', '东兰', '东兰县', 3, 'donglan', '547400', 1, '107.37527', '24.51053'); -INSERT INTO `base_postage_region` -VALUES (2270, 2264, 'L', '罗城', '罗城仫佬族自治县', 3, 'luocheng', '546400', 1, '108.90777', '24.77923'); -INSERT INTO `base_postage_region` -VALUES (2271, 2264, 'H', '环江', '环江毛南族自治县', 3, 'huanjiang', '547100', 1, '108.26055', '24.82916'); -INSERT INTO `base_postage_region` -VALUES (2272, 2264, 'B', '巴马', '巴马瑶族自治县', 3, 'bama', '547500', 1, '107.25308', '24.14135'); -INSERT INTO `base_postage_region` -VALUES (2273, 2264, 'D', '都安', '都安瑶族自治县', 3, 'duan', '530700', 1, '108.10116', '23.93245'); -INSERT INTO `base_postage_region` -VALUES (2274, 2264, 'D', '大化', '大化瑶族自治县', 3, 'dahua', '530800', 1, '107.9985', '23.74487'); -INSERT INTO `base_postage_region` -VALUES (2275, 2264, 'Y', '宜州', '宜州市', 3, 'yizhou', '546300', 1, '108.65304', '24.49391'); -INSERT INTO `base_postage_region` -VALUES (2276, 2162, 'L', '来宾', '来宾市', 2, 'laibin', '546100', 1, '109.229772', '23.733766'); -INSERT INTO `base_postage_region` -VALUES (2277, 2276, 'X', '兴宾', '兴宾区', 3, 'xingbin', '546100', 1, '109.23471', '23.72731'); -INSERT INTO `base_postage_region` -VALUES (2278, 2276, 'X', '忻城', '忻城县', 3, 'xincheng', '546200', 1, '108.66357', '24.06862'); -INSERT INTO `base_postage_region` -VALUES (2279, 2276, 'X', '象州', '象州县', 3, 'xiangzhou', '545800', 1, '109.6994', '23.97355'); -INSERT INTO `base_postage_region` -VALUES (2280, 2276, 'W', '武宣', '武宣县', 3, 'wuxuan', '545900', 1, '109.66284', '23.59474'); -INSERT INTO `base_postage_region` -VALUES (2281, 2276, 'J', '金秀', '金秀瑶族自治县', 3, 'jinxiu', '545799', 1, '110.19079', '24.12929'); -INSERT INTO `base_postage_region` -VALUES (2282, 2276, 'H', '合山', '合山市', 3, 'heshan', '546500', 1, '108.88586', '23.80619'); -INSERT INTO `base_postage_region` -VALUES (2283, 2162, 'C', '崇左', '崇左市', 2, 'chongzuo', '532299', 1, '107.353926', '22.404108'); -INSERT INTO `base_postage_region` -VALUES (2284, 2283, 'J', '江州', '江州区', 3, 'jiangzhou', '532299', 1, '107.34747', '22.41135'); -INSERT INTO `base_postage_region` -VALUES (2285, 2283, 'F', '扶绥', '扶绥县', 3, 'fusui', '532199', 1, '107.90405', '22.63413'); -INSERT INTO `base_postage_region` -VALUES (2286, 2283, 'N', '宁明', '宁明县', 3, 'ningming', '532599', 1, '107.07299', '22.13655'); -INSERT INTO `base_postage_region` -VALUES (2287, 2283, 'L', '龙州', '龙州县', 3, 'longzhou', '532499', 1, '106.85415', '22.33937'); -INSERT INTO `base_postage_region` -VALUES (2288, 2283, 'D', '大新', '大新县', 3, 'daxin', '532399', 1, '107.19821', '22.83412'); -INSERT INTO `base_postage_region` -VALUES (2289, 2283, 'T', '天等', '天等县', 3, 'tiandeng', '532899', 1, '107.13998', '23.077'); -INSERT INTO `base_postage_region` -VALUES (2290, 2283, 'P', '凭祥', '凭祥市', 3, 'pingxiang', '532699', 1, '106.75534', '22.10573'); -INSERT INTO `base_postage_region` -VALUES (2291, 0, 'H', '海南', '海南省', 1, 'hainan', '', 1, '110.33119', '20.031971'); -INSERT INTO `base_postage_region` -VALUES (2292, 2291, 'H', '海口', '海口市', 2, 'haikou', '570000', 1, '110.33119', '20.031971'); -INSERT INTO `base_postage_region` -VALUES (2293, 2292, 'X', '秀英', '秀英区', 3, 'xiuying', '570311', 1, '110.29345', '20.00752'); -INSERT INTO `base_postage_region` -VALUES (2294, 2292, 'L', '龙华', '龙华区', 3, 'longhua', '570145', 1, '110.30194', '20.02866'); -INSERT INTO `base_postage_region` -VALUES (2295, 2292, 'Q', '琼山', '琼山区', 3, 'qiongshan', '571100', 1, '110.35418', '20.00321'); -INSERT INTO `base_postage_region` -VALUES (2296, 2292, 'M', '美兰', '美兰区', 3, 'meilan', '570203', 1, '110.36908', '20.02864'); -INSERT INTO `base_postage_region` -VALUES (2297, 2291, 'S', '三亚', '三亚市', 2, 'sanya', '572000', 1, '109.508268', '18.247872'); -INSERT INTO `base_postage_region` -VALUES (2298, 2297, 'H', '海棠', '海棠区', 3, 'haitang', '572000', 1, '109.508268', '18.247872'); -INSERT INTO `base_postage_region` -VALUES (2299, 2297, 'J', '吉阳', '吉阳区', 3, 'jiyang', '572000', 1, '109.508268', '18.247872'); -INSERT INTO `base_postage_region` -VALUES (2300, 2297, 'T', '天涯', '天涯区', 3, 'tianya', '572000', 1, '109.508268', '18.247872'); -INSERT INTO `base_postage_region` -VALUES (2301, 2297, 'Y', '崖州', '崖州区', 3, 'yazhou', '572000', 1, '109.508268', '18.247872'); -INSERT INTO `base_postage_region` -VALUES (2302, 2291, 'S', '三沙', '三沙市', 2, 'sansha', '573199', 1, '112.34882', '16.831039'); -INSERT INTO `base_postage_region` -VALUES (2303, 2302, 'X', '西沙', '西沙群岛', 3, 'xishaislands', '572000', 1, '112.025528', '16.331342'); -INSERT INTO `base_postage_region` -VALUES (2304, 2302, 'N', '南沙', '南沙群岛', 3, 'nanshaislands', '573100', 1, '116.749998', '11.471888'); -INSERT INTO `base_postage_region` -VALUES (2305, 2302, 'Z', '中沙', '中沙群岛', 3, 'zhongshaislands', '573100', 1, '117.740071', '15.112856'); -INSERT INTO `base_postage_region` -VALUES (2306, 2291, 'Z', ' ', '直辖县级', 2, '', '', 1, '109.503479', '18.739906'); -INSERT INTO `base_postage_region` -VALUES (2307, 2306, 'W', '五指山', '五指山市', 3, 'wuzhishan', '572200', 1, '109.516662', '18.776921'); -INSERT INTO `base_postage_region` -VALUES (2308, 2306, 'Q', '琼海', '琼海市', 3, 'qionghai', '571400', 1, '110.466785', '19.246011'); -INSERT INTO `base_postage_region` -VALUES (2309, 2306, NULL, '儋州', '儋州市', 3, 'danzhou', '571700', 1, '109.576782', '19.517486'); -INSERT INTO `base_postage_region` -VALUES (2310, 2306, 'W', '文昌', '文昌市', 3, 'wenchang', '571339', 1, '110.753975', '19.612986'); -INSERT INTO `base_postage_region` -VALUES (2311, 2306, 'W', '万宁', '万宁市', 3, 'wanning', '571500', 1, '110.388793', '18.796216'); -INSERT INTO `base_postage_region` -VALUES (2312, 2306, 'D', '东方', '东方市', 3, 'dongfang', '572600', 1, '108.653789', '19.10198'); -INSERT INTO `base_postage_region` -VALUES (2313, 2306, 'D', '定安', '定安县', 3, 'dingan', '571200', 1, '110.323959', '19.699211'); -INSERT INTO `base_postage_region` -VALUES (2314, 2306, 'T', '屯昌', '屯昌县', 3, 'tunchang', '571600', 1, '110.102773', '19.362916'); -INSERT INTO `base_postage_region` -VALUES (2315, 2306, 'C', '澄迈', '澄迈县', 3, 'chengmai', '571900', 1, '110.007147', '19.737095'); -INSERT INTO `base_postage_region` -VALUES (2316, 2306, 'L', '临高', '临高县', 3, 'lingao', '571800', 1, '109.687697', '19.908293'); -INSERT INTO `base_postage_region` -VALUES (2317, 2306, 'B', '白沙', '白沙黎族自治县', 3, 'baisha', '572800', 1, '109.452606', '19.224584'); -INSERT INTO `base_postage_region` -VALUES (2318, 2306, 'C', '昌江', '昌江黎族自治县', 3, 'changjiang', '572700', 1, '109.053351', '19.260968'); -INSERT INTO `base_postage_region` -VALUES (2319, 2306, 'L', '乐东', '乐东黎族自治县', 3, 'ledong', '572500', 1, '109.175444', '18.74758'); -INSERT INTO `base_postage_region` -VALUES (2320, 2306, 'L', '陵水', '陵水黎族自治县', 3, 'lingshui', '572400', 1, '110.037218', '18.505006'); -INSERT INTO `base_postage_region` -VALUES (2321, 2306, 'B', '保亭', '保亭黎族苗族自治县', 3, 'baoting', '572300', 1, '109.70245', '18.636371'); -INSERT INTO `base_postage_region` -VALUES (2322, 2306, 'Q', '琼中', '琼中黎族苗族自治县', 3, 'qiongzhong', '572900', 1, '109.839996', '19.03557'); -INSERT INTO `base_postage_region` -VALUES (2323, 0, 'Z', '重庆', '重庆市', 1, 'chongqing', '', 1, '106.504962', '29.533155'); -INSERT INTO `base_postage_region` -VALUES (2324, 2323, 'Z', '重庆', '重庆市', 2, 'chongqing', '400000', 1, '106.504962', '29.533155'); -INSERT INTO `base_postage_region` -VALUES (2325, 2324, 'W', '万州', '万州区', 3, 'wanzhou', '404000', 1, '108.40869', '30.80788'); -INSERT INTO `base_postage_region` -VALUES (2326, 2324, 'F', '涪陵', '涪陵区', 3, 'fuling', '408000', 1, '107.39007', '29.70292'); -INSERT INTO `base_postage_region` -VALUES (2327, 2324, 'Y', '渝中', '渝中区', 3, 'yuzhong', '400010', 1, '106.56901', '29.55279'); -INSERT INTO `base_postage_region` -VALUES (2328, 2324, 'D', '大渡口', '大渡口区', 3, 'dadukou', '400080', 1, '106.48262', '29.48447'); -INSERT INTO `base_postage_region` -VALUES (2329, 2324, 'J', '江北', '江北区', 3, 'jiangbei', '400020', 1, '106.57434', '29.60658'); -INSERT INTO `base_postage_region` -VALUES (2330, 2324, 'S', '沙坪坝', '沙坪坝区', 3, 'shapingba', '400030', 1, '106.45752', '29.54113'); -INSERT INTO `base_postage_region` -VALUES (2331, 2324, 'J', '九龙坡', '九龙坡区', 3, 'jiulongpo', '400050', 1, '106.51107', '29.50197'); -INSERT INTO `base_postage_region` -VALUES (2332, 2324, 'N', '南岸', '南岸区', 3, 'nanan', '400064', 1, '106.56347', '29.52311'); -INSERT INTO `base_postage_region` -VALUES (2333, 2324, 'B', '北碚', '北碚区', 3, 'beibei', '400700', 1, '106.39614', '29.80574'); -INSERT INTO `base_postage_region` -VALUES (2334, 2324, NULL, '綦江', '綦江区', 3, 'qijiang', '400800', 1, '106.926779', '28.960656'); -INSERT INTO `base_postage_region` -VALUES (2335, 2324, 'D', '大足', '大足区', 3, 'dazu', '400900', 1, '105.768121', '29.484025'); -INSERT INTO `base_postage_region` -VALUES (2336, 2324, 'Y', '渝北', '渝北区', 3, 'yubei', '401120', 1, '106.6307', '29.7182'); -INSERT INTO `base_postage_region` -VALUES (2337, 2324, 'B', '巴南', '巴南区', 3, 'banan', '401320', 1, '106.52365', '29.38311'); -INSERT INTO `base_postage_region` -VALUES (2338, 2324, 'Q', '黔江', '黔江区', 3, 'qianjiang', '409700', 1, '108.7709', '29.5332'); -INSERT INTO `base_postage_region` -VALUES (2339, 2324, 'C', '长寿', '长寿区', 3, 'changshou', '401220', 1, '107.08166', '29.85359'); -INSERT INTO `base_postage_region` -VALUES (2340, 2324, 'J', '江津', '江津区', 3, 'jiangjin', '402260', 1, '106.25912', '29.29008'); -INSERT INTO `base_postage_region` -VALUES (2341, 2324, 'H', '合川', '合川区', 3, 'hechuan', '401520', 1, '106.27633', '29.97227'); -INSERT INTO `base_postage_region` -VALUES (2342, 2324, 'Y', '永川', '永川区', 3, 'yongchuan', '402160', 1, '105.927', '29.35593'); -INSERT INTO `base_postage_region` -VALUES (2343, 2324, 'N', '南川', '南川区', 3, 'nanchuan', '408400', 1, '107.09936', '29.15751'); -INSERT INTO `base_postage_region` -VALUES (2344, 2324, NULL, '璧山', '璧山区', 3, 'bishan', '402760', 1, '106.231126', '29.593581'); -INSERT INTO `base_postage_region` -VALUES (2345, 2324, 'T', '铜梁', '铜梁区', 3, 'tongliang', '402560', 1, '106.054948', '29.839944'); -INSERT INTO `base_postage_region` -VALUES (2346, 2324, NULL, '潼南', '潼南区', 3, 'tongnan', '402660', 1, '105.84005', '30.1912'); -INSERT INTO `base_postage_region` -VALUES (2347, 2324, 'R', '荣昌', '荣昌区', 3, 'rongchang', '402460', 1, '105.59442', '29.40488'); -INSERT INTO `base_postage_region` -VALUES (2348, 2324, 'L', '梁平', '梁平区', 3, 'liangping', '405200', 1, '107.79998', '30.67545'); -INSERT INTO `base_postage_region` -VALUES (2349, 2363, 'C', '城口', '城口县', 3, 'chengkou', '405900', 1, '108.66513', '31.94801'); -INSERT INTO `base_postage_region` -VALUES (2350, 2363, 'F', '丰都', '丰都县', 3, 'fengdu', '408200', 1, '107.73098', '29.86348'); -INSERT INTO `base_postage_region` -VALUES (2351, 2363, 'D', '垫江', '垫江县', 3, 'dianjiang', '408300', 1, '107.35446', '30.33359'); -INSERT INTO `base_postage_region` -VALUES (2352, 2363, 'W', '武隆', '武隆县', 3, 'wulong', '408500', 1, '107.7601', '29.32548'); -INSERT INTO `base_postage_region` -VALUES (2353, 2363, 'Z', '忠县', '忠县', 3, 'zhongxian', '404300', 1, '108.03689', '30.28898'); -INSERT INTO `base_postage_region` -VALUES (2354, 2363, 'K', '开县', '开县', 3, 'kaixian', '405400', 1, '108.39306', '31.16095'); -INSERT INTO `base_postage_region` -VALUES (2355, 2363, 'Y', '云阳', '云阳县', 3, 'yunyang', '404500', 1, '108.69726', '30.93062'); -INSERT INTO `base_postage_region` -VALUES (2356, 2363, 'F', '奉节', '奉节县', 3, 'fengjie', '404600', 1, '109.46478', '31.01825'); -INSERT INTO `base_postage_region` -VALUES (2357, 2363, 'W', '巫山', '巫山县', 3, 'wushan', '404700', 1, '109.87814', '31.07458'); -INSERT INTO `base_postage_region` -VALUES (2358, 2363, 'W', '巫溪', '巫溪县', 3, 'wuxi', '405800', 1, '109.63128', '31.39756'); -INSERT INTO `base_postage_region` -VALUES (2359, 2363, 'S', '石柱', '石柱土家族自治县', 3, 'shizhu', '409100', 1, '108.11389', '30.00054'); -INSERT INTO `base_postage_region` -VALUES (2360, 2363, 'X', '秀山', '秀山土家族苗族自治县', 3, 'xiushan', '409900', 1, '108.98861', '28.45062'); -INSERT INTO `base_postage_region` -VALUES (2361, 2363, 'Y', '酉阳', '酉阳土家族苗族自治县', 3, 'youyang', '409800', 1, '108.77212', '28.8446'); -INSERT INTO `base_postage_region` -VALUES (2362, 2363, 'P', '彭水', '彭水苗族土家族自治县', 3, 'pengshui', '409600', 1, '108.16638', '29.29516'); -INSERT INTO `base_postage_region` -VALUES (2363, 2323, 'L', '县', '县', 2, 'xian', '400000', 1, '106.463344', '29.729153'); -INSERT INTO `base_postage_region` -VALUES (2367, 0, 'S', '四川', '四川省', 1, 'sichuan', '', 1, '104.065735', '30.659462'); -INSERT INTO `base_postage_region` -VALUES (2368, 2367, 'C', '成都', '成都市', 2, 'chengdu', '610015', 1, '104.065735', '30.659462'); -INSERT INTO `base_postage_region` -VALUES (2369, 2368, 'J', '锦江', '锦江区', 3, 'jinjiang', '610021', 1, '104.08347', '30.65614'); -INSERT INTO `base_postage_region` -VALUES (2370, 2368, 'Q', '青羊', '青羊区', 3, 'qingyang', '610031', 1, '104.06151', '30.67387'); -INSERT INTO `base_postage_region` -VALUES (2371, 2368, 'J', '金牛', '金牛区', 3, 'jinniu', '610036', 1, '104.05114', '30.69126'); -INSERT INTO `base_postage_region` -VALUES (2372, 2368, 'W', '武侯', '武侯区', 3, 'wuhou', '610041', 1, '104.04303', '30.64235'); -INSERT INTO `base_postage_region` -VALUES (2373, 2368, 'C', '成华', '成华区', 3, 'chenghua', '610066', 1, '104.10193', '30.65993'); -INSERT INTO `base_postage_region` -VALUES (2374, 2368, 'L', '龙泉驿', '龙泉驿区', 3, 'longquanyi', '610100', 1, '104.27462', '30.55658'); -INSERT INTO `base_postage_region` -VALUES (2375, 2368, 'Q', '青白江', '青白江区', 3, 'qingbaijiang', '610300', 1, '104.251', '30.87841'); -INSERT INTO `base_postage_region` -VALUES (2376, 2368, 'X', '新都', '新都区', 3, 'xindu', '610500', 1, '104.15921', '30.82314'); -INSERT INTO `base_postage_region` -VALUES (2377, 2368, 'W', '温江', '温江区', 3, 'wenjiang', '611130', 1, '103.84881', '30.68444'); -INSERT INTO `base_postage_region` -VALUES (2378, 2368, 'J', '金堂', '金堂县', 3, 'jintang', '610400', 1, '104.41195', '30.86195'); -INSERT INTO `base_postage_region` -VALUES (2379, 2368, 'S', '双流', '双流县', 3, 'shuangliu', '610200', 1, '103.92373', '30.57444'); -INSERT INTO `base_postage_region` -VALUES (2380, 2368, NULL, '郫县', '郫县', 3, 'pixian', '611730', 1, '103.88717', '30.81054'); -INSERT INTO `base_postage_region` -VALUES (2381, 2368, 'D', '大邑', '大邑县', 3, 'dayi', '611330', 1, '103.52075', '30.58738'); -INSERT INTO `base_postage_region` -VALUES (2382, 2368, 'P', '蒲江', '蒲江县', 3, 'pujiang', '611630', 1, '103.50616', '30.19667'); -INSERT INTO `base_postage_region` -VALUES (2383, 2368, 'X', '新津', '新津县', 3, 'xinjin', '611430', 1, '103.8114', '30.40983'); -INSERT INTO `base_postage_region` -VALUES (2384, 2368, 'D', '都江堰', '都江堰市', 3, 'dujiangyan', '611830', 1, '103.61941', '30.99825'); -INSERT INTO `base_postage_region` -VALUES (2385, 2368, 'P', '彭州', '彭州市', 3, 'pengzhou', '611930', 1, '103.958', '30.99011'); -INSERT INTO `base_postage_region` -VALUES (2386, 2368, NULL, '邛崃', '邛崃市', 3, 'qionglai', '611530', 1, '103.46283', '30.41489'); -INSERT INTO `base_postage_region` -VALUES (2387, 2368, 'C', '崇州', '崇州市', 3, 'chongzhou', '611230', 1, '103.67285', '30.63014'); -INSERT INTO `base_postage_region` -VALUES (2388, 2367, 'Z', '自贡', '自贡市', 2, 'zigong', '643000', 1, '104.773447', '29.352765'); -INSERT INTO `base_postage_region` -VALUES (2389, 2388, 'Z', '自流井', '自流井区', 3, 'ziliujing', '643000', 1, '104.77719', '29.33745'); -INSERT INTO `base_postage_region` -VALUES (2390, 2388, 'G', '贡井', '贡井区', 3, 'gongjing', '643020', 1, '104.71536', '29.34576'); -INSERT INTO `base_postage_region` -VALUES (2391, 2388, 'D', '大安', '大安区', 3, 'daan', '643010', 1, '104.77383', '29.36364'); -INSERT INTO `base_postage_region` -VALUES (2392, 2388, 'Y', '沿滩', '沿滩区', 3, 'yantan', '643030', 1, '104.88012', '29.26611'); -INSERT INTO `base_postage_region` -VALUES (2393, 2388, 'R', '荣县', '荣县', 3, 'rongxian', '643100', 1, '104.4176', '29.44445'); -INSERT INTO `base_postage_region` -VALUES (2394, 2388, 'F', '富顺', '富顺县', 3, 'fushun', '643200', 1, '104.97491', '29.18123'); -INSERT INTO `base_postage_region` -VALUES (2395, 2367, 'P', '攀枝花', '攀枝花市', 2, 'panzhihua', '617000', 1, '101.716007', '26.580446'); -INSERT INTO `base_postage_region` -VALUES (2396, 2395, 'D', '东区', '东区', 3, 'dongqu', '617067', 1, '101.7052', '26.54677'); -INSERT INTO `base_postage_region` -VALUES (2397, 2395, 'X', '西区', '西区', 3, 'xiqu', '617068', 1, '101.63058', '26.59753'); -INSERT INTO `base_postage_region` -VALUES (2398, 2395, 'R', '仁和', '仁和区', 3, 'renhe', '617061', 1, '101.73812', '26.49841'); -INSERT INTO `base_postage_region` -VALUES (2399, 2395, 'M', '米易', '米易县', 3, 'miyi', '617200', 1, '102.11132', '26.88718'); -INSERT INTO `base_postage_region` -VALUES (2400, 2395, 'Y', '盐边', '盐边县', 3, 'yanbian', '617100', 1, '101.85446', '26.68847'); -INSERT INTO `base_postage_region` -VALUES (2401, 2367, NULL, '泸州', '泸州市', 2, 'luzhou', '646000', 1, '105.443348', '28.889138'); -INSERT INTO `base_postage_region` -VALUES (2402, 2401, 'J', '江阳', '江阳区', 3, 'jiangyang', '646000', 1, '105.45336', '28.88934'); -INSERT INTO `base_postage_region` -VALUES (2403, 2401, 'N', '纳溪', '纳溪区', 3, 'naxi', '646300', 1, '105.37255', '28.77343'); -INSERT INTO `base_postage_region` -VALUES (2404, 2401, 'L', '龙马潭', '龙马潭区', 3, 'longmatan', '646000', 1, '105.43774', '28.91308'); -INSERT INTO `base_postage_region` -VALUES (2405, 2401, NULL, '泸县', '泸县', 3, 'luxian', '646106', 1, '105.38192', '29.15041'); -INSERT INTO `base_postage_region` -VALUES (2406, 2401, 'H', '合江', '合江县', 3, 'hejiang', '646200', 1, '105.8352', '28.81005'); -INSERT INTO `base_postage_region` -VALUES (2407, 2401, 'X', '叙永', '叙永县', 3, 'xuyong', '646400', 1, '105.44473', '28.15586'); -INSERT INTO `base_postage_region` -VALUES (2408, 2401, 'G', '古蔺', '古蔺县', 3, 'gulin', '646500', 1, '105.81347', '28.03867'); -INSERT INTO `base_postage_region` -VALUES (2409, 2367, 'D', '德阳', '德阳市', 2, 'deyang', '618000', 1, '104.398651', '31.127991'); -INSERT INTO `base_postage_region` -VALUES (2410, 2409, NULL, '旌阳', '旌阳区', 3, 'jingyang', '618000', 1, '104.39367', '31.13906'); -INSERT INTO `base_postage_region` -VALUES (2411, 2409, 'Z', '中江', '中江县', 3, 'zhongjiang', '618100', 1, '104.67861', '31.03297'); -INSERT INTO `base_postage_region` -VALUES (2412, 2409, 'L', '罗江', '罗江县', 3, 'luojiang', '618500', 1, '104.51025', '31.31665'); -INSERT INTO `base_postage_region` -VALUES (2413, 2409, 'G', '广汉', '广汉市', 3, 'guanghan', '618300', 1, '104.28234', '30.97686'); -INSERT INTO `base_postage_region` -VALUES (2414, 2409, 'S', '什邡', '什邡市', 3, 'shifang', '618400', 1, '104.16754', '31.1264'); -INSERT INTO `base_postage_region` -VALUES (2415, 2409, 'M', '绵竹', '绵竹市', 3, 'mianzhu', '618200', 1, '104.22076', '31.33772'); -INSERT INTO `base_postage_region` -VALUES (2416, 2367, 'M', '绵阳', '绵阳市', 2, 'mianyang', '621000', 1, '104.741722', '31.46402'); -INSERT INTO `base_postage_region` -VALUES (2417, 2416, 'F', '涪城', '涪城区', 3, 'fucheng', '621000', 1, '104.75719', '31.45522'); -INSERT INTO `base_postage_region` -VALUES (2418, 2416, 'Y', '游仙', '游仙区', 3, 'youxian', '621022', 1, '104.77092', '31.46574'); -INSERT INTO `base_postage_region` -VALUES (2419, 2416, 'S', '三台', '三台县', 3, 'santai', '621100', 1, '105.09079', '31.09179'); -INSERT INTO `base_postage_region` -VALUES (2420, 2416, 'Y', '盐亭', '盐亭县', 3, 'yanting', '621600', 1, '105.3898', '31.22176'); -INSERT INTO `base_postage_region` -VALUES (2421, 2416, 'A', '安县', '安县', 3, 'anxian', '622650', 1, '104.56738', '31.53487'); -INSERT INTO `base_postage_region` -VALUES (2422, 2416, NULL, '梓潼', '梓潼县', 3, 'zitong', '622150', 1, '105.16183', '31.6359'); -INSERT INTO `base_postage_region` -VALUES (2423, 2416, 'B', '北川', '北川羌族自治县', 3, 'beichuan', '622750', 1, '104.46408', '31.83286'); -INSERT INTO `base_postage_region` -VALUES (2424, 2416, 'P', '平武', '平武县', 3, 'pingwu', '622550', 1, '104.52862', '32.40791'); -INSERT INTO `base_postage_region` -VALUES (2425, 2416, 'J', '江油', '江油市', 3, 'jiangyou', '621700', 1, '104.74539', '31.77775'); -INSERT INTO `base_postage_region` -VALUES (2426, 2367, 'G', '广元', '广元市', 2, 'guangyuan', '628000', 1, '105.829757', '32.433668'); -INSERT INTO `base_postage_region` -VALUES (2427, 2426, 'L', '利州', '利州区', 3, 'lizhou', '628017', 1, '105.826194', '32.432276'); -INSERT INTO `base_postage_region` -VALUES (2428, 2426, 'Z', '昭化', '昭化区', 3, 'zhaohua', '628017', 1, '105.640491', '32.386518'); -INSERT INTO `base_postage_region` -VALUES (2429, 2426, 'C', '朝天', '朝天区', 3, 'chaotian', '628017', 1, '105.89273', '32.64398'); -INSERT INTO `base_postage_region` -VALUES (2430, 2426, 'W', '旺苍', '旺苍县', 3, 'wangcang', '628200', 1, '106.29022', '32.22845'); -INSERT INTO `base_postage_region` -VALUES (2431, 2426, 'Q', '青川', '青川县', 3, 'qingchuan', '628100', 1, '105.2391', '32.58563'); -INSERT INTO `base_postage_region` -VALUES (2432, 2426, 'J', '剑阁', '剑阁县', 3, 'jiange', '628300', 1, '105.5252', '32.28845'); -INSERT INTO `base_postage_region` -VALUES (2433, 2426, 'C', '苍溪', '苍溪县', 3, 'cangxi', '628400', 1, '105.936', '31.73209'); -INSERT INTO `base_postage_region` -VALUES (2434, 2367, 'S', '遂宁', '遂宁市', 2, 'suining', '629000', 1, '105.571331', '30.513311'); -INSERT INTO `base_postage_region` -VALUES (2435, 2434, 'C', '船山', '船山区', 3, 'chuanshan', '629000', 1, '105.5809', '30.49991'); -INSERT INTO `base_postage_region` -VALUES (2436, 2434, 'A', '安居', '安居区', 3, 'anju', '629000', 1, '105.46402', '30.35778'); -INSERT INTO `base_postage_region` -VALUES (2437, 2434, 'P', '蓬溪', '蓬溪县', 3, 'pengxi', '629100', 1, '105.70752', '30.75775'); -INSERT INTO `base_postage_region` -VALUES (2438, 2434, 'S', '射洪', '射洪县', 3, 'shehong', '629200', 1, '105.38922', '30.87203'); -INSERT INTO `base_postage_region` -VALUES (2439, 2434, 'D', '大英', '大英县', 3, 'daying', '629300', 1, '105.24346', '30.59434'); -INSERT INTO `base_postage_region` -VALUES (2440, 2367, 'N', '内江', '内江市', 2, 'neijiang', '641000', 1, '105.066138', '29.58708'); -INSERT INTO `base_postage_region` -VALUES (2441, 2440, 'S', '市中区', '市中区', 3, 'shizhongqu', '641000', 1, '105.0679', '29.58709'); -INSERT INTO `base_postage_region` -VALUES (2442, 2440, 'D', '东兴', '东兴区', 3, 'dongxing', '641100', 1, '105.07554', '29.59278'); -INSERT INTO `base_postage_region` -VALUES (2443, 2440, 'W', '威远', '威远县', 3, 'weiyuan', '642450', 1, '104.66955', '29.52823'); -INSERT INTO `base_postage_region` -VALUES (2444, 2440, 'Z', '资中', '资中县', 3, 'zizhong', '641200', 1, '104.85205', '29.76409'); -INSERT INTO `base_postage_region` -VALUES (2445, 2440, 'L', '隆昌', '隆昌县', 3, 'longchang', '642150', 1, '105.28738', '29.33937'); -INSERT INTO `base_postage_region` -VALUES (2446, 2367, 'L', '乐山', '乐山市', 2, 'leshan', '614000', 1, '103.761263', '29.582024'); -INSERT INTO `base_postage_region` -VALUES (2447, 2446, 'S', '市中区', '市中区', 3, 'shizhongqu', '614000', 1, '103.76159', '29.55543'); -INSERT INTO `base_postage_region` -VALUES (2448, 2446, 'S', '沙湾', '沙湾区', 3, 'shawan', '614900', 1, '103.54873', '29.41194'); -INSERT INTO `base_postage_region` -VALUES (2449, 2446, 'W', '五通桥', '五通桥区', 3, 'wutongqiao', '614800', 1, '103.82345', '29.40344'); -INSERT INTO `base_postage_region` -VALUES (2450, 2446, 'J', '金口河', '金口河区', 3, 'jinkouhe', '614700', 1, '103.07858', '29.24578'); -INSERT INTO `base_postage_region` -VALUES (2451, 2446, NULL, '犍为', '犍为县', 3, 'qianwei', '614400', 1, '103.94989', '29.20973'); -INSERT INTO `base_postage_region` -VALUES (2452, 2446, 'J', '井研', '井研县', 3, 'jingyan', '613100', 1, '104.07019', '29.65228'); -INSERT INTO `base_postage_region` -VALUES (2453, 2446, 'J', '夹江', '夹江县', 3, 'jiajiang', '614100', 1, '103.57199', '29.73868'); -INSERT INTO `base_postage_region` -VALUES (2454, 2446, NULL, '沐川', '沐川县', 3, 'muchuan', '614500', 1, '103.90353', '28.95646'); -INSERT INTO `base_postage_region` -VALUES (2455, 2446, 'E', '峨边', '峨边彝族自治县', 3, 'ebian', '614300', 1, '103.26339', '29.23004'); -INSERT INTO `base_postage_region` -VALUES (2456, 2446, 'M', '马边', '马边彝族自治县', 3, 'mabian', '614600', 1, '103.54617', '28.83593'); -INSERT INTO `base_postage_region` -VALUES (2457, 2446, 'E', '峨眉山', '峨眉山市', 3, 'emeishan', '614200', 1, '103.4844', '29.60117'); -INSERT INTO `base_postage_region` -VALUES (2458, 2367, 'N', '南充', '南充市', 2, 'nanchong', '637000', 1, '106.082974', '30.795281'); -INSERT INTO `base_postage_region` -VALUES (2459, 2458, 'S', '顺庆', '顺庆区', 3, 'shunqing', '637000', 1, '106.09216', '30.79642'); -INSERT INTO `base_postage_region` -VALUES (2460, 2458, 'G', '高坪', '高坪区', 3, 'gaoping', '637100', 1, '106.11894', '30.78162'); -INSERT INTO `base_postage_region` -VALUES (2461, 2458, 'J', '嘉陵', '嘉陵区', 3, 'jialing', '637100', 1, '106.07141', '30.75848'); -INSERT INTO `base_postage_region` -VALUES (2462, 2458, 'N', '南部', '南部县', 3, 'nanbu', '637300', 1, '106.06738', '31.35451'); -INSERT INTO `base_postage_region` -VALUES (2463, 2458, 'Y', '营山', '营山县', 3, 'yingshan', '637700', 1, '106.56637', '31.07747'); -INSERT INTO `base_postage_region` -VALUES (2464, 2458, 'P', '蓬安', '蓬安县', 3, 'pengan', '637800', 1, '106.41262', '31.02964'); -INSERT INTO `base_postage_region` -VALUES (2465, 2458, 'Y', '仪陇', '仪陇县', 3, 'yilong', '637600', 1, '106.29974', '31.27628'); -INSERT INTO `base_postage_region` -VALUES (2466, 2458, 'X', '西充', '西充县', 3, 'xichong', '637200', 1, '105.89996', '30.9969'); -INSERT INTO `base_postage_region` -VALUES (2467, 2458, NULL, '阆中', '阆中市', 3, 'langzhong', '637400', 1, '106.00494', '31.55832'); -INSERT INTO `base_postage_region` -VALUES (2468, 2367, 'M', '眉山', '眉山市', 2, 'meishan', '620020', 1, '103.831788', '30.048318'); -INSERT INTO `base_postage_region` -VALUES (2469, 2468, 'D', '东坡', '东坡区', 3, 'dongpo', '620010', 1, '103.832', '30.04219'); -INSERT INTO `base_postage_region` -VALUES (2470, 2468, 'P', '彭山', '彭山区', 3, 'pengshan', '620860', 1, '103.87268', '30.19283'); -INSERT INTO `base_postage_region` -VALUES (2471, 2468, 'R', '仁寿', '仁寿县', 3, 'renshou', '620500', 1, '104.13412', '29.99599'); -INSERT INTO `base_postage_region` -VALUES (2472, 2468, 'H', '洪雅', '洪雅县', 3, 'hongya', '620360', 1, '103.37313', '29.90661'); -INSERT INTO `base_postage_region` -VALUES (2473, 2468, 'D', '丹棱', '丹棱县', 3, 'danling', '620200', 1, '103.51339', '30.01562'); -INSERT INTO `base_postage_region` -VALUES (2474, 2468, 'Q', '青神', '青神县', 3, 'qingshen', '620460', 1, '103.84771', '29.83235'); -INSERT INTO `base_postage_region` -VALUES (2475, 2367, 'Y', '宜宾', '宜宾市', 2, 'yibin', '644000', 1, '104.630825', '28.760189'); -INSERT INTO `base_postage_region` -VALUES (2476, 2475, 'C', '翠屏', '翠屏区', 3, 'cuiping', '644000', 1, '104.61978', '28.76566'); -INSERT INTO `base_postage_region` -VALUES (2477, 2475, 'N', '南溪', '南溪区', 3, 'nanxi', '644100', 1, '104.981133', '28.839806'); -INSERT INTO `base_postage_region` -VALUES (2478, 2475, 'Y', '宜宾', '宜宾县', 3, 'yibin', '644600', 1, '104.53314', '28.68996'); -INSERT INTO `base_postage_region` -VALUES (2479, 2475, 'J', '江安', '江安县', 3, 'jiangan', '644200', 1, '105.06683', '28.72385'); -INSERT INTO `base_postage_region` -VALUES (2480, 2475, 'C', '长宁', '长宁县', 3, 'changning', '644300', 1, '104.9252', '28.57777'); -INSERT INTO `base_postage_region` -VALUES (2481, 2475, 'G', '高县', '高县', 3, 'gaoxian', '645150', 1, '104.51754', '28.43619'); -INSERT INTO `base_postage_region` -VALUES (2482, 2475, NULL, '珙县', '珙县', 3, 'gongxian', '644500', 1, '104.71398', '28.44512'); -INSERT INTO `base_postage_region` -VALUES (2483, 2475, NULL, '筠连', '筠连县', 3, 'junlian', '645250', 1, '104.51217', '28.16495'); -INSERT INTO `base_postage_region` -VALUES (2484, 2475, 'X', '兴文', '兴文县', 3, 'xingwen', '644400', 1, '105.23675', '28.3044'); -INSERT INTO `base_postage_region` -VALUES (2485, 2475, 'P', '屏山', '屏山县', 3, 'pingshan', '645350', 1, '104.16293', '28.64369'); -INSERT INTO `base_postage_region` -VALUES (2486, 2367, 'G', '广安', '广安市', 2, 'guangan', '638000', 1, '106.633369', '30.456398'); -INSERT INTO `base_postage_region` -VALUES (2487, 2486, 'G', '广安', '广安区', 3, 'guangan', '638000', 1, '106.64163', '30.47389'); -INSERT INTO `base_postage_region` -VALUES (2488, 2486, 'Q', '前锋', '前锋区', 3, 'qianfeng', '638019', 1, '106.893537', '30.494572'); -INSERT INTO `base_postage_region` -VALUES (2489, 2486, 'Y', '岳池', '岳池县', 3, 'yuechi', '638300', 1, '106.44079', '30.53918'); -INSERT INTO `base_postage_region` -VALUES (2490, 2486, 'W', '武胜', '武胜县', 3, 'wusheng', '638400', 1, '106.29592', '30.34932'); -INSERT INTO `base_postage_region` -VALUES (2491, 2486, 'L', '邻水', '邻水县', 3, 'linshui', '638500', 1, '106.92968', '30.33449'); -INSERT INTO `base_postage_region` -VALUES (2492, 2486, 'H', '华蓥', '华蓥市', 3, 'huaying', '638600', 1, '106.78466', '30.39007'); -INSERT INTO `base_postage_region` -VALUES (2493, 2367, 'D', '达州', '达州市', 2, 'dazhou', '635000', 1, '107.502262', '31.209484'); -INSERT INTO `base_postage_region` -VALUES (2494, 2493, 'T', '通川', '通川区', 3, 'tongchuan', '635000', 1, '107.50456', '31.21469'); -INSERT INTO `base_postage_region` -VALUES (2495, 2493, 'D', '达川', '达川区', 3, 'dachuan', '635000', 1, '107.502262', '31.209484'); -INSERT INTO `base_postage_region` -VALUES (2496, 2493, 'X', '宣汉', '宣汉县', 3, 'xuanhan', '636150', 1, '107.72775', '31.35516'); -INSERT INTO `base_postage_region` -VALUES (2497, 2493, 'K', '开江', '开江县', 3, 'kaijiang', '636250', 1, '107.86889', '31.0841'); -INSERT INTO `base_postage_region` -VALUES (2498, 2493, 'D', '大竹', '大竹县', 3, 'dazhu', '635100', 1, '107.20855', '30.74147'); -INSERT INTO `base_postage_region` -VALUES (2499, 2493, 'Q', '渠县', '渠县', 3, 'quxian', '635200', 1, '106.97381', '30.8376'); -INSERT INTO `base_postage_region` -VALUES (2500, 2493, 'W', '万源', '万源市', 3, 'wanyuan', '636350', 1, '108.03598', '32.08091'); -INSERT INTO `base_postage_region` -VALUES (2501, 2367, 'Y', '雅安', '雅安市', 2, 'yaan', '625000', 1, '103.001033', '29.987722'); -INSERT INTO `base_postage_region` -VALUES (2502, 2501, 'Y', '雨城', '雨城区', 3, 'yucheng', '625000', 1, '103.03305', '30.00531'); -INSERT INTO `base_postage_region` -VALUES (2503, 2501, 'M', '名山', '名山区', 3, 'mingshan', '625100', 1, '103.112214', '30.084718'); -INSERT INTO `base_postage_region` -VALUES (2504, 2501, NULL, '荥经', '荥经县', 3, 'yingjing', '625200', 1, '102.84652', '29.79402'); -INSERT INTO `base_postage_region` -VALUES (2505, 2501, 'H', '汉源', '汉源县', 3, 'hanyuan', '625300', 1, '102.6784', '29.35168'); -INSERT INTO `base_postage_region` -VALUES (2506, 2501, 'S', '石棉', '石棉县', 3, 'shimian', '625400', 1, '102.35943', '29.22796'); -INSERT INTO `base_postage_region` -VALUES (2507, 2501, 'T', '天全', '天全县', 3, 'tianquan', '625500', 1, '102.75906', '30.06754'); -INSERT INTO `base_postage_region` -VALUES (2508, 2501, 'L', '芦山', '芦山县', 3, 'lushan', '625600', 1, '102.92791', '30.14369'); -INSERT INTO `base_postage_region` -VALUES (2509, 2501, 'B', '宝兴', '宝兴县', 3, 'baoxing', '625700', 1, '102.81555', '30.36836'); -INSERT INTO `base_postage_region` -VALUES (2510, 2367, 'B', '巴中', '巴中市', 2, 'bazhong', '636000', 1, '106.753669', '31.858809'); -INSERT INTO `base_postage_region` -VALUES (2511, 2510, 'B', '巴州', '巴州区', 3, 'bazhou', '636001', 1, '106.76889', '31.85125'); -INSERT INTO `base_postage_region` -VALUES (2512, 2510, 'E', '恩阳', '恩阳区', 3, 'enyang', '636064', 1, '106.753669', '31.858809'); -INSERT INTO `base_postage_region` -VALUES (2513, 2510, 'T', '通江', '通江县', 3, 'tongjiang', '636700', 1, '107.24398', '31.91294'); -INSERT INTO `base_postage_region` -VALUES (2514, 2510, 'N', '南江', '南江县', 3, 'nanjiang', '636600', 1, '106.84164', '32.35335'); -INSERT INTO `base_postage_region` -VALUES (2515, 2510, 'P', '平昌', '平昌县', 3, 'pingchang', '636400', 1, '107.10424', '31.5594'); -INSERT INTO `base_postage_region` -VALUES (2516, 2367, 'Z', '资阳', '资阳市', 2, 'ziyang', '641300', 1, '104.641917', '30.122211'); -INSERT INTO `base_postage_region` -VALUES (2517, 2516, 'Y', '雁江', '雁江区', 3, 'yanjiang', '641300', 1, '104.65216', '30.11525'); -INSERT INTO `base_postage_region` -VALUES (2518, 2516, 'A', '安岳', '安岳县', 3, 'anyue', '642350', 1, '105.3363', '30.09786'); -INSERT INTO `base_postage_region` -VALUES (2519, 2516, 'L', '乐至', '乐至县', 3, 'lezhi', '641500', 1, '105.03207', '30.27227'); -INSERT INTO `base_postage_region` -VALUES (2520, 2516, 'J', '简阳', '简阳市', 3, 'jianyang', '641400', 1, '104.54864', '30.3904'); -INSERT INTO `base_postage_region` -VALUES (2521, 2367, 'A', '阿坝', '阿坝藏族羌族自治州', 2, 'aba', '624000', 1, '102.221374', '31.899792'); -INSERT INTO `base_postage_region` -VALUES (2522, 2521, NULL, '汶川', '汶川县', 3, 'wenchuan', '623000', 1, '103.59079', '31.47326'); -INSERT INTO `base_postage_region` -VALUES (2523, 2521, 'L', '理县', '理县', 3, 'lixian', '623100', 1, '103.17175', '31.43603'); -INSERT INTO `base_postage_region` -VALUES (2524, 2521, 'M', '茂县', '茂县', 3, 'maoxian', '623200', 1, '103.85372', '31.682'); -INSERT INTO `base_postage_region` -VALUES (2525, 2521, 'S', '松潘', '松潘县', 3, 'songpan', '623300', 1, '103.59924', '32.63871'); -INSERT INTO `base_postage_region` -VALUES (2526, 2521, 'J', '九寨沟', '九寨沟县', 3, 'jiuzhaigou', '623400', 1, '104.23672', '33.26318'); -INSERT INTO `base_postage_region` -VALUES (2527, 2521, 'J', '金川', '金川县', 3, 'jinchuan', '624100', 1, '102.06555', '31.47623'); -INSERT INTO `base_postage_region` -VALUES (2528, 2521, 'X', '小金', '小金县', 3, 'xiaojin', '624200', 1, '102.36499', '30.99934'); -INSERT INTO `base_postage_region` -VALUES (2529, 2521, 'H', '黑水', '黑水县', 3, 'heishui', '623500', 1, '102.99176', '32.06184'); -INSERT INTO `base_postage_region` -VALUES (2530, 2521, 'M', '马尔康', '马尔康县', 3, 'maerkang', '624000', 1, '102.20625', '31.90584'); -INSERT INTO `base_postage_region` -VALUES (2531, 2521, 'R', '壤塘', '壤塘县', 3, 'rangtang', '624300', 1, '100.9783', '32.26578'); -INSERT INTO `base_postage_region` -VALUES (2532, 2521, 'A', '阿坝', '阿坝县', 3, 'aba', '624600', 1, '101.70632', '32.90301'); -INSERT INTO `base_postage_region` -VALUES (2533, 2521, 'R', '若尔盖', '若尔盖县', 3, 'ruoergai', '624500', 1, '102.9598', '33.57432'); -INSERT INTO `base_postage_region` -VALUES (2534, 2521, 'H', '红原', '红原县', 3, 'hongyuan', '624400', 1, '102.54525', '32.78989'); -INSERT INTO `base_postage_region` -VALUES (2535, 2367, 'G', '甘孜', '甘孜藏族自治州', 2, 'garze', '626000', 1, '101.963815', '30.050663'); -INSERT INTO `base_postage_region` -VALUES (2536, 2535, 'K', '康定', '康定县', 3, 'kangding', '626000', 1, '101.96487', '30.05532'); -INSERT INTO `base_postage_region` -VALUES (2537, 2535, NULL, '泸定', '泸定县', 3, 'luding', '626100', 1, '102.23507', '29.91475'); -INSERT INTO `base_postage_region` -VALUES (2538, 2535, 'D', '丹巴', '丹巴县', 3, 'danba', '626300', 1, '101.88424', '30.87656'); -INSERT INTO `base_postage_region` -VALUES (2539, 2535, 'J', '九龙', '九龙县', 3, 'jiulong', '626200', 1, '101.50848', '29.00091'); -INSERT INTO `base_postage_region` -VALUES (2540, 2535, 'Y', '雅江', '雅江县', 3, 'yajiang', '627450', 1, '101.01492', '30.03281'); -INSERT INTO `base_postage_region` -VALUES (2541, 2535, 'D', '道孚', '道孚县', 3, 'daofu', '626400', 1, '101.12554', '30.98046'); -INSERT INTO `base_postage_region` -VALUES (2542, 2535, 'L', '炉霍', '炉霍县', 3, 'luhuo', '626500', 1, '100.67681', '31.3917'); -INSERT INTO `base_postage_region` -VALUES (2543, 2535, 'G', '甘孜', '甘孜县', 3, 'ganzi', '626700', 1, '99.99307', '31.62672'); -INSERT INTO `base_postage_region` -VALUES (2544, 2535, 'X', '新龙', '新龙县', 3, 'xinlong', '626800', 1, '100.3125', '30.94067'); -INSERT INTO `base_postage_region` -VALUES (2545, 2535, 'D', '德格', '德格县', 3, 'dege', '627250', 1, '98.58078', '31.80615'); -INSERT INTO `base_postage_region` -VALUES (2546, 2535, 'B', '白玉', '白玉县', 3, 'baiyu', '627150', 1, '98.82568', '31.20902'); -INSERT INTO `base_postage_region` -VALUES (2547, 2535, 'S', '石渠', '石渠县', 3, 'shiqu', '627350', 1, '98.10156', '32.97884'); -INSERT INTO `base_postage_region` -VALUES (2548, 2535, 'S', '色达', '色达县', 3, 'seda', '626600', 1, '100.33224', '32.26839'); -INSERT INTO `base_postage_region` -VALUES (2549, 2535, 'L', '理塘', '理塘县', 3, 'litang', '627550', 1, '100.27005', '29.99674'); -INSERT INTO `base_postage_region` -VALUES (2550, 2535, 'B', '巴塘', '巴塘县', 3, 'batang', '627650', 1, '99.10409', '30.00423'); -INSERT INTO `base_postage_region` -VALUES (2551, 2535, 'X', '乡城', '乡城县', 3, 'xiangcheng', '627850', 1, '99.79943', '28.93554'); -INSERT INTO `base_postage_region` -VALUES (2552, 2535, 'D', '稻城', '稻城县', 3, 'daocheng', '627750', 1, '100.29809', '29.0379'); -INSERT INTO `base_postage_region` -VALUES (2553, 2535, 'D', '得荣', '得荣县', 3, 'derong', '627950', 1, '99.28628', '28.71297'); -INSERT INTO `base_postage_region` -VALUES (2554, 2367, 'L', '凉山', '凉山彝族自治州', 2, 'liangshan', '615000', 1, '102.258746', '27.886762'); -INSERT INTO `base_postage_region` -VALUES (2555, 2554, 'X', '西昌', '西昌市', 3, 'xichang', '615000', 1, '102.26413', '27.89524'); -INSERT INTO `base_postage_region` -VALUES (2556, 2554, 'M', '木里', '木里藏族自治县', 3, 'muli', '615800', 1, '101.2796', '27.92875'); -INSERT INTO `base_postage_region` -VALUES (2557, 2554, 'Y', '盐源', '盐源县', 3, 'yanyuan', '615700', 1, '101.5097', '27.42177'); -INSERT INTO `base_postage_region` -VALUES (2558, 2554, 'D', '德昌', '德昌县', 3, 'dechang', '615500', 1, '102.18017', '27.40482'); -INSERT INTO `base_postage_region` -VALUES (2559, 2554, 'H', '会理', '会理县', 3, 'huili', '615100', 1, '102.24539', '26.65627'); -INSERT INTO `base_postage_region` -VALUES (2560, 2554, 'H', '会东', '会东县', 3, 'huidong', '615200', 1, '102.57815', '26.63429'); -INSERT INTO `base_postage_region` -VALUES (2561, 2554, 'N', '宁南', '宁南县', 3, 'ningnan', '615400', 1, '102.76116', '27.06567'); -INSERT INTO `base_postage_region` -VALUES (2562, 2554, 'P', '普格', '普格县', 3, 'puge', '615300', 1, '102.54055', '27.37485'); -INSERT INTO `base_postage_region` -VALUES (2563, 2554, 'B', '布拖', '布拖县', 3, 'butuo', '616350', 1, '102.81234', '27.7079'); -INSERT INTO `base_postage_region` -VALUES (2564, 2554, 'J', '金阳', '金阳县', 3, 'jinyang', '616250', 1, '103.24774', '27.69698'); -INSERT INTO `base_postage_region` -VALUES (2565, 2554, 'Z', '昭觉', '昭觉县', 3, 'zhaojue', '616150', 1, '102.84661', '28.01155'); -INSERT INTO `base_postage_region` -VALUES (2566, 2554, 'X', '喜德', '喜德县', 3, 'xide', '616750', 1, '102.41336', '28.30739'); -INSERT INTO `base_postage_region` -VALUES (2567, 2554, 'M', '冕宁', '冕宁县', 3, 'mianning', '615600', 1, '102.17108', '28.55161'); -INSERT INTO `base_postage_region` -VALUES (2568, 2554, 'Y', '越西', '越西县', 3, 'yuexi', '616650', 1, '102.5079', '28.64133'); -INSERT INTO `base_postage_region` -VALUES (2569, 2554, 'G', '甘洛', '甘洛县', 3, 'ganluo', '616850', 1, '102.77154', '28.96624'); -INSERT INTO `base_postage_region` -VALUES (2570, 2554, 'M', '美姑', '美姑县', 3, 'meigu', '616450', 1, '103.13116', '28.32596'); -INSERT INTO `base_postage_region` -VALUES (2571, 2554, 'L', '雷波', '雷波县', 3, 'leibo', '616550', 1, '103.57287', '28.26407'); -INSERT INTO `base_postage_region` -VALUES (2572, 0, 'G', '贵州', '贵州省', 1, 'guizhou', '', 1, '106.713478', '26.578343'); -INSERT INTO `base_postage_region` -VALUES (2573, 2572, 'G', '贵阳', '贵阳市', 2, 'guiyang', '550001', 1, '106.713478', '26.578343'); -INSERT INTO `base_postage_region` -VALUES (2574, 2573, 'N', '南明', '南明区', 3, 'nanming', '550001', 1, '106.7145', '26.56819'); -INSERT INTO `base_postage_region` -VALUES (2575, 2573, 'Y', '云岩', '云岩区', 3, 'yunyan', '550001', 1, '106.72485', '26.60484'); -INSERT INTO `base_postage_region` -VALUES (2576, 2573, 'H', '花溪', '花溪区', 3, 'huaxi', '550025', 1, '106.67688', '26.43343'); -INSERT INTO `base_postage_region` -VALUES (2577, 2573, 'W', '乌当', '乌当区', 3, 'wudang', '550018', 1, '106.7521', '26.6302'); -INSERT INTO `base_postage_region` -VALUES (2578, 2573, 'B', '白云', '白云区', 3, 'baiyun', '550014', 1, '106.63088', '26.68284'); -INSERT INTO `base_postage_region` -VALUES (2579, 2573, 'G', '观山湖', '观山湖区', 3, 'guanshanhu', '550009', 1, '106.625442', '26.618209'); -INSERT INTO `base_postage_region` -VALUES (2580, 2573, 'K', '开阳', '开阳县', 3, 'kaiyang', '550300', 1, '106.9692', '27.05533'); -INSERT INTO `base_postage_region` -VALUES (2581, 2573, 'X', '息烽', '息烽县', 3, 'xifeng', '551100', 1, '106.738', '27.09346'); -INSERT INTO `base_postage_region` -VALUES (2582, 2573, 'X', '修文', '修文县', 3, 'xiuwen', '550200', 1, '106.59487', '26.83783'); -INSERT INTO `base_postage_region` -VALUES (2583, 2573, 'Q', '清镇', '清镇市', 3, 'qingzhen', '551400', 1, '106.46862', '26.55261'); -INSERT INTO `base_postage_region` -VALUES (2584, 2572, 'L', '六盘水', '六盘水市', 2, 'liupanshui', '553400', 1, '104.846743', '26.584643'); -INSERT INTO `base_postage_region` -VALUES (2585, 2584, 'Z', '钟山', '钟山区', 3, 'zhongshan', '553000', 1, '104.87848', '26.57699'); -INSERT INTO `base_postage_region` -VALUES (2586, 2584, 'L', '六枝', '六枝特区', 3, 'liuzhi', '553400', 1, '105.48062', '26.20117'); -INSERT INTO `base_postage_region` -VALUES (2587, 2584, 'S', '水城', '水城县', 3, 'shuicheng', '553000', 1, '104.95764', '26.54785'); -INSERT INTO `base_postage_region` -VALUES (2588, 2584, 'P', '盘县', '盘县', 3, 'panxian', '561601', 1, '104.47061', '25.7136'); -INSERT INTO `base_postage_region` -VALUES (2589, 2572, 'Z', '遵义', '遵义市', 2, 'zunyi', '563000', 1, '106.937265', '27.706626'); -INSERT INTO `base_postage_region` -VALUES (2590, 2589, 'H', '红花岗', '红花岗区', 3, 'honghuagang', '563000', 1, '106.89404', '27.64471'); -INSERT INTO `base_postage_region` -VALUES (2591, 2589, 'H', '汇川', '汇川区', 3, 'huichuan', '563000', 1, '106.9393', '27.70625'); -INSERT INTO `base_postage_region` -VALUES (2592, 2589, 'Z', '遵义', '遵义县', 3, 'zunyi', '563100', 1, '106.83331', '27.53772'); -INSERT INTO `base_postage_region` -VALUES (2593, 2589, 'T', '桐梓', '桐梓县', 3, 'tongzi', '563200', 1, '106.82568', '28.13806'); -INSERT INTO `base_postage_region` -VALUES (2594, 2589, 'S', '绥阳', '绥阳县', 3, 'suiyang', '563300', 1, '107.19064', '27.94702'); -INSERT INTO `base_postage_region` -VALUES (2595, 2589, 'Z', '正安', '正安县', 3, 'zhengan', '563400', 1, '107.44357', '28.5512'); -INSERT INTO `base_postage_region` -VALUES (2596, 2589, 'D', '道真', '道真仡佬族苗族自治县', 3, 'daozhen', '563500', 1, '107.61152', '28.864'); -INSERT INTO `base_postage_region` -VALUES (2597, 2589, 'W', '务川', '务川仡佬族苗族自治县', 3, 'wuchuan', '564300', 1, '107.88935', '28.52227'); -INSERT INTO `base_postage_region` -VALUES (2598, 2589, 'F', '凤冈', '凤冈县', 3, 'fenggang', '564200', 1, '107.71682', '27.95461'); -INSERT INTO `base_postage_region` -VALUES (2599, 2589, NULL, '湄潭', '湄潭县', 3, 'meitan', '564100', 1, '107.48779', '27.76676'); -INSERT INTO `base_postage_region` -VALUES (2600, 2589, 'Y', '余庆', '余庆县', 3, 'yuqing', '564400', 1, '107.88821', '27.22532'); -INSERT INTO `base_postage_region` -VALUES (2601, 2589, 'X', '习水', '习水县', 3, 'xishui', '564600', 1, '106.21267', '28.31976'); -INSERT INTO `base_postage_region` -VALUES (2602, 2589, 'C', '赤水', '赤水市', 3, 'chishui', '564700', 1, '105.69845', '28.58921'); -INSERT INTO `base_postage_region` -VALUES (2603, 2589, 'R', '仁怀', '仁怀市', 3, 'renhuai', '564500', 1, '106.40152', '27.79231'); -INSERT INTO `base_postage_region` -VALUES (2604, 2572, 'A', '安顺', '安顺市', 2, 'anshun', '561000', 1, '105.932188', '26.245544'); -INSERT INTO `base_postage_region` -VALUES (2605, 2604, 'X', '西秀', '西秀区', 3, 'xixiu', '561000', 1, '105.96585', '26.24491'); -INSERT INTO `base_postage_region` -VALUES (2606, 2604, 'P', '平坝', '平坝区', 3, 'pingba', '561100', 1, '106.25683', '26.40543'); -INSERT INTO `base_postage_region` -VALUES (2607, 2604, 'P', '普定', '普定县', 3, 'puding', '562100', 1, '105.74285', '26.30141'); -INSERT INTO `base_postage_region` -VALUES (2608, 2604, 'Z', '镇宁', '镇宁布依族苗族自治县', 3, 'zhenning', '561200', 1, '105.76513', '26.05533'); -INSERT INTO `base_postage_region` -VALUES (2609, 2604, 'G', '关岭', '关岭布依族苗族自治县', 3, 'guanling', '561300', 1, '105.61883', '25.94248'); -INSERT INTO `base_postage_region` -VALUES (2610, 2604, 'Z', '紫云', '紫云苗族布依族自治县', 3, 'ziyun', '550800', 1, '106.08364', '25.75258'); -INSERT INTO `base_postage_region` -VALUES (2611, 2572, 'B', '毕节', '毕节市', 2, 'bijie', '551700', 1, '105.28501', '27.301693'); -INSERT INTO `base_postage_region` -VALUES (2612, 2611, 'Q', '七星关', '七星关区', 3, 'qixingguan', '551700', 1, '104.9497', '27.153556'); -INSERT INTO `base_postage_region` -VALUES (2613, 2611, 'D', '大方', '大方县', 3, 'dafang', '551600', 1, '105.609254', '27.143521'); -INSERT INTO `base_postage_region` -VALUES (2614, 2611, 'Q', '黔西', '黔西县', 3, 'qianxi', '551500', 1, '106.038299', '27.024923'); -INSERT INTO `base_postage_region` -VALUES (2615, 2611, 'J', '金沙', '金沙县', 3, 'jinsha', '551800', 1, '106.222103', '27.459693'); -INSERT INTO `base_postage_region` -VALUES (2616, 2611, 'Z', '织金', '织金县', 3, 'zhijin', '552100', 1, '105.768997', '26.668497'); -INSERT INTO `base_postage_region` -VALUES (2617, 2611, 'N', '纳雍', '纳雍县', 3, 'nayong', '553300', 1, '105.375322', '26.769875'); -INSERT INTO `base_postage_region` -VALUES (2618, 2611, 'W', '威宁', '威宁彝族回族苗族自治县', 3, 'weining', '553100', 1, '104.286523', '26.859099'); -INSERT INTO `base_postage_region` -VALUES (2619, 2611, 'H', '赫章', '赫章县', 3, 'hezhang', '553200', 1, '104.726438', '27.119243'); -INSERT INTO `base_postage_region` -VALUES (2620, 2572, 'T', '铜仁', '铜仁市', 2, 'tongren', '554300', 1, '109.191555', '27.718346'); -INSERT INTO `base_postage_region` -VALUES (2621, 2620, 'B', '碧江', '碧江区', 3, 'bijiang', '554300', 1, '109.191555', '27.718346'); -INSERT INTO `base_postage_region` -VALUES (2622, 2620, 'W', '万山', '万山区', 3, 'wanshan', '554200', 1, '109.21199', '27.51903'); -INSERT INTO `base_postage_region` -VALUES (2623, 2620, 'J', '江口', '江口县', 3, 'jiangkou', '554400', 1, '108.848427', '27.691904'); -INSERT INTO `base_postage_region` -VALUES (2624, 2620, 'Y', '玉屏', '玉屏侗族自治县', 3, 'yuping', '554004', 1, '108.917882', '27.238024'); -INSERT INTO `base_postage_region` -VALUES (2625, 2620, 'S', '石阡', '石阡县', 3, 'shiqian', '555100', 1, '108.229854', '27.519386'); -INSERT INTO `base_postage_region` -VALUES (2626, 2620, 'S', '思南', '思南县', 3, 'sinan', '565100', 1, '108.255827', '27.941331'); -INSERT INTO `base_postage_region` -VALUES (2627, 2620, 'Y', '印江', '印江土家族苗族自治县', 3, 'yinjiang', '555200', 1, '108.405517', '27.997976'); -INSERT INTO `base_postage_region` -VALUES (2628, 2620, 'D', '德江', '德江县', 3, 'dejiang', '565200', 1, '108.117317', '28.26094'); -INSERT INTO `base_postage_region` -VALUES (2629, 2620, 'Y', '沿河', '沿河土家族自治县', 3, 'yuanhe', '565300', 1, '108.495746', '28.560487'); -INSERT INTO `base_postage_region` -VALUES (2630, 2620, 'S', '松桃', '松桃苗族自治县', 3, 'songtao', '554100', 1, '109.202627', '28.165419'); -INSERT INTO `base_postage_region` -VALUES (2631, 2572, 'Q', '黔西南', '黔西南布依族苗族自治州', 2, 'qianxinan', '562400', 1, '104.897971', '25.08812'); -INSERT INTO `base_postage_region` -VALUES (2632, 2631, 'X', '兴义', '兴义市 ', 3, 'xingyi', '562400', 1, '104.89548', '25.09205'); -INSERT INTO `base_postage_region` -VALUES (2633, 2631, 'X', '兴仁', '兴仁县', 3, 'xingren', '562300', 1, '105.18652', '25.43282'); -INSERT INTO `base_postage_region` -VALUES (2634, 2631, 'P', '普安', '普安县', 3, 'puan', '561500', 1, '104.95529', '25.78603'); -INSERT INTO `base_postage_region` -VALUES (2635, 2631, 'Q', '晴隆', '晴隆县', 3, 'qinglong', '561400', 1, '105.2192', '25.83522'); -INSERT INTO `base_postage_region` -VALUES (2636, 2631, 'Z', '贞丰', '贞丰县', 3, 'zhenfeng', '562200', 1, '105.65454', '25.38464'); -INSERT INTO `base_postage_region` -VALUES (2637, 2631, 'W', '望谟', '望谟县', 3, 'wangmo', '552300', 1, '106.09957', '25.17822'); -INSERT INTO `base_postage_region` -VALUES (2638, 2631, 'C', '册亨', '册亨县', 3, 'ceheng', '552200', 1, '105.8124', '24.98376'); -INSERT INTO `base_postage_region` -VALUES (2639, 2631, 'A', '安龙', '安龙县', 3, 'anlong', '552400', 1, '105.44268', '25.09818'); -INSERT INTO `base_postage_region` -VALUES (2640, 2572, 'Q', '黔东南', '黔东南苗族侗族自治州', 2, 'qiandongnan', '556000', 1, '107.977488', '26.583352'); -INSERT INTO `base_postage_region` -VALUES (2641, 2640, 'K', '凯里', '凯里市', 3, 'kaili', '556000', 1, '107.98132', '26.56689'); -INSERT INTO `base_postage_region` -VALUES (2642, 2640, 'H', '黄平', '黄平县', 3, 'huangping', '556100', 1, '107.90179', '26.89573'); -INSERT INTO `base_postage_region` -VALUES (2643, 2640, 'S', '施秉', '施秉县', 3, 'shibing', '556200', 1, '108.12597', '27.03495'); -INSERT INTO `base_postage_region` -VALUES (2644, 2640, 'S', '三穗', '三穗县', 3, 'sansui', '556500', 1, '108.67132', '26.94765'); -INSERT INTO `base_postage_region` -VALUES (2645, 2640, 'Z', '镇远', '镇远县', 3, 'zhenyuan', '557700', 1, '108.42721', '27.04933'); -INSERT INTO `base_postage_region` -VALUES (2646, 2640, NULL, '岑巩', '岑巩县', 3, 'cengong', '557800', 1, '108.81884', '27.17539'); -INSERT INTO `base_postage_region` -VALUES (2647, 2640, 'T', '天柱', '天柱县', 3, 'tianzhu', '556600', 1, '109.20718', '26.90781'); -INSERT INTO `base_postage_region` -VALUES (2648, 2640, 'J', '锦屏', '锦屏县', 3, 'jinping', '556700', 1, '109.19982', '26.67635'); -INSERT INTO `base_postage_region` -VALUES (2649, 2640, 'J', '剑河', '剑河县', 3, 'jianhe', '556400', 1, '108.5913', '26.6525'); -INSERT INTO `base_postage_region` -VALUES (2650, 2640, 'T', '台江', '台江县', 3, 'taijiang', '556300', 1, '108.31814', '26.66916'); -INSERT INTO `base_postage_region` -VALUES (2651, 2640, 'L', '黎平', '黎平县', 3, 'liping', '557300', 1, '109.13607', '26.23114'); -INSERT INTO `base_postage_region` -VALUES (2652, 2640, NULL, '榕江', '榕江县', 3, 'rongjiang', '557200', 1, '108.52072', '25.92421'); -INSERT INTO `base_postage_region` -VALUES (2653, 2640, 'C', '从江', '从江县', 3, 'congjiang', '557400', 1, '108.90527', '25.75415'); -INSERT INTO `base_postage_region` -VALUES (2654, 2640, 'L', '雷山', '雷山县', 3, 'leishan', '557100', 1, '108.07745', '26.38385'); -INSERT INTO `base_postage_region` -VALUES (2655, 2640, 'M', '麻江', '麻江县', 3, 'majiang', '557600', 1, '107.59155', '26.49235'); -INSERT INTO `base_postage_region` -VALUES (2656, 2640, 'D', '丹寨', '丹寨县', 3, 'danzhai', '557500', 1, '107.79718', '26.19816'); -INSERT INTO `base_postage_region` -VALUES (2657, 2572, 'Q', '黔南', '黔南布依族苗族自治州', 2, 'qiannan', '558000', 1, '107.517156', '26.258219'); -INSERT INTO `base_postage_region` -VALUES (2658, 2657, 'D', '都匀', '都匀市', 3, 'duyun', '558000', 1, '107.51872', '26.2594'); -INSERT INTO `base_postage_region` -VALUES (2659, 2657, 'F', '福泉', '福泉市', 3, 'fuquan', '550500', 1, '107.51715', '26.67989'); -INSERT INTO `base_postage_region` -VALUES (2660, 2657, 'L', '荔波', '荔波县', 3, 'libo', '558400', 1, '107.88592', '25.4139'); -INSERT INTO `base_postage_region` -VALUES (2661, 2657, 'G', '贵定', '贵定县', 3, 'guiding', '551300', 1, '107.23654', '26.57812'); -INSERT INTO `base_postage_region` -VALUES (2662, 2657, 'W', '瓮安', '瓮安县', 3, 'wengan', '550400', 1, '107.4757', '27.06813'); -INSERT INTO `base_postage_region` -VALUES (2663, 2657, 'D', '独山', '独山县', 3, 'dushan', '558200', 1, '107.54101', '25.8245'); -INSERT INTO `base_postage_region` -VALUES (2664, 2657, 'P', '平塘', '平塘县', 3, 'pingtang', '558300', 1, '107.32428', '25.83294'); -INSERT INTO `base_postage_region` -VALUES (2665, 2657, 'L', '罗甸', '罗甸县', 3, 'luodian', '550100', 1, '106.75186', '25.42586'); -INSERT INTO `base_postage_region` -VALUES (2666, 2657, 'C', '长顺', '长顺县', 3, 'changshun', '550700', 1, '106.45217', '26.02299'); -INSERT INTO `base_postage_region` -VALUES (2667, 2657, 'L', '龙里', '龙里县', 3, 'longli', '551200', 1, '106.97662', '26.45076'); -INSERT INTO `base_postage_region` -VALUES (2668, 2657, 'H', '惠水', '惠水县', 3, 'huishui', '550600', 1, '106.65911', '26.13389'); -INSERT INTO `base_postage_region` -VALUES (2669, 2657, 'S', '三都', '三都水族自治县', 3, 'sandu', '558100', 1, '107.87464', '25.98562'); -INSERT INTO `base_postage_region` -VALUES (2670, 0, 'Y', '云南', '云南省', 1, 'yunnan', '', 1, '102.712251', '25.040609'); -INSERT INTO `base_postage_region` -VALUES (2671, 2670, 'K', '昆明', '昆明市', 2, 'kunming', '650500', 1, '102.712251', '25.040609'); -INSERT INTO `base_postage_region` -VALUES (2672, 2671, 'W', '五华', '五华区', 3, 'wuhua', '650021', 1, '102.70786', '25.03521'); -INSERT INTO `base_postage_region` -VALUES (2673, 2671, 'P', '盘龙', '盘龙区', 3, 'panlong', '650051', 1, '102.71994', '25.04053'); -INSERT INTO `base_postage_region` -VALUES (2674, 2671, 'G', '官渡', '官渡区', 3, 'guandu', '650200', 1, '102.74362', '25.01497'); -INSERT INTO `base_postage_region` -VALUES (2675, 2671, 'X', '西山', '西山区', 3, 'xishan', '650118', 1, '102.66464', '25.03796'); -INSERT INTO `base_postage_region` -VALUES (2676, 2671, 'D', '东川', '东川区', 3, 'dongchuan', '654100', 1, '103.18832', '26.083'); -INSERT INTO `base_postage_region` -VALUES (2677, 2671, 'C', '呈贡', '呈贡区', 3, 'chenggong', '650500', 1, '102.801382', '24.889275'); -INSERT INTO `base_postage_region` -VALUES (2678, 2671, 'J', '晋宁', '晋宁县', 3, 'jinning', '650600', 1, '102.59393', '24.6665'); -INSERT INTO `base_postage_region` -VALUES (2679, 2671, 'F', '富民', '富民县', 3, 'fumin', '650400', 1, '102.4985', '25.22119'); -INSERT INTO `base_postage_region` -VALUES (2680, 2671, 'Y', '宜良', '宜良县', 3, 'yiliang', '652100', 1, '103.14117', '24.91705'); -INSERT INTO `base_postage_region` -VALUES (2681, 2671, 'S', '石林', '石林彝族自治县', 3, 'shilin', '652200', 1, '103.27148', '24.75897'); -INSERT INTO `base_postage_region` -VALUES (2682, 2671, NULL, '嵩明', '嵩明县', 3, 'songming', '651700', 1, '103.03729', '25.33986'); -INSERT INTO `base_postage_region` -VALUES (2683, 2671, 'L', '禄劝', '禄劝彝族苗族自治县', 3, 'luquan', '651500', 1, '102.4671', '25.55387'); -INSERT INTO `base_postage_region` -VALUES (2684, 2671, 'X', '寻甸', '寻甸回族彝族自治县 ', 3, 'xundian', '655200', 1, '103.2557', '25.55961'); -INSERT INTO `base_postage_region` -VALUES (2685, 2671, 'A', '安宁', '安宁市', 3, 'anning', '650300', 1, '102.46972', '24.91652'); -INSERT INTO `base_postage_region` -VALUES (2686, 2670, 'Q', '曲靖', '曲靖市', 2, 'qujing', '655000', 1, '103.797851', '25.501557'); -INSERT INTO `base_postage_region` -VALUES (2687, 2686, NULL, '麒麟', '麒麟区', 3, 'qilin', '655000', 1, '103.80504', '25.49515'); -INSERT INTO `base_postage_region` -VALUES (2688, 2686, 'M', '马龙', '马龙县', 3, 'malong', '655100', 1, '103.57873', '25.42521'); -INSERT INTO `base_postage_region` -VALUES (2689, 2686, 'L', '陆良', '陆良县', 3, 'luliang', '655600', 1, '103.6665', '25.02335'); -INSERT INTO `base_postage_region` -VALUES (2690, 2686, 'S', '师宗', '师宗县', 3, 'shizong', '655700', 1, '103.99084', '24.82822'); -INSERT INTO `base_postage_region` -VALUES (2691, 2686, 'L', '罗平', '罗平县', 3, 'luoping', '655800', 1, '104.30859', '24.88444'); -INSERT INTO `base_postage_region` -VALUES (2692, 2686, 'F', '富源', '富源县', 3, 'fuyuan', '655500', 1, '104.25387', '25.66587'); -INSERT INTO `base_postage_region` -VALUES (2693, 2686, 'H', '会泽', '会泽县', 3, 'huize', '654200', 1, '103.30017', '26.41076'); -INSERT INTO `base_postage_region` -VALUES (2694, 2686, 'Z', '沾益', '沾益县', 3, 'zhanyi', '655331', 1, '103.82135', '25.60715'); -INSERT INTO `base_postage_region` -VALUES (2695, 2686, 'X', '宣威', '宣威市', 3, 'xuanwei', '655400', 1, '104.10409', '26.2173'); -INSERT INTO `base_postage_region` -VALUES (2696, 2670, 'Y', '玉溪', '玉溪市', 2, 'yuxi', '653100', 1, '102.543907', '24.350461'); -INSERT INTO `base_postage_region` -VALUES (2697, 2696, 'H', '红塔', '红塔区', 3, 'hongta', '653100', 1, '102.5449', '24.35411'); -INSERT INTO `base_postage_region` -VALUES (2698, 2696, 'J', '江川', '江川县', 3, 'jiangchuan', '652600', 1, '102.75412', '24.28863'); -INSERT INTO `base_postage_region` -VALUES (2699, 2696, 'C', '澄江', '澄江县', 3, 'chengjiang', '652500', 1, '102.90817', '24.67376'); -INSERT INTO `base_postage_region` -VALUES (2700, 2696, 'T', '通海', '通海县', 3, 'tonghai', '652700', 1, '102.76641', '24.11362'); -INSERT INTO `base_postage_region` -VALUES (2701, 2696, 'H', '华宁', '华宁县', 3, 'huaning', '652800', 1, '102.92831', '24.1926'); -INSERT INTO `base_postage_region` -VALUES (2702, 2696, 'Y', '易门', '易门县', 3, 'yimen', '651100', 1, '102.16354', '24.67122'); -INSERT INTO `base_postage_region` -VALUES (2703, 2696, 'E', '峨山', '峨山彝族自治县', 3, 'eshan', '653200', 1, '102.40576', '24.16904'); -INSERT INTO `base_postage_region` -VALUES (2704, 2696, 'X', '新平', '新平彝族傣族自治县', 3, 'xinping', '653400', 1, '101.98895', '24.06886'); -INSERT INTO `base_postage_region` -VALUES (2705, 2696, 'Y', '元江', '元江哈尼族彝族傣族自治县', 3, 'yuanjiang', '653300', 1, '101.99812', '23.59655'); -INSERT INTO `base_postage_region` -VALUES (2706, 2670, 'B', '保山', '保山市', 2, 'baoshan', '678000', 1, '99.167133', '25.111802'); -INSERT INTO `base_postage_region` -VALUES (2707, 2706, 'L', '隆阳', '隆阳区', 3, 'longyang', '678000', 1, '99.16334', '25.11163'); -INSERT INTO `base_postage_region` -VALUES (2708, 2706, 'S', '施甸', '施甸县', 3, 'shidian', '678200', 1, '99.18768', '24.72418'); -INSERT INTO `base_postage_region` -VALUES (2709, 2706, 'T', '腾冲', '腾冲县', 3, 'tengchong', '679100', 1, '98.49414', '25.02539'); -INSERT INTO `base_postage_region` -VALUES (2710, 2706, 'L', '龙陵', '龙陵县', 3, 'longling', '678300', 1, '98.69024', '24.58746'); -INSERT INTO `base_postage_region` -VALUES (2711, 2706, 'C', '昌宁', '昌宁县', 3, 'changning', '678100', 1, '99.6036', '24.82763'); -INSERT INTO `base_postage_region` -VALUES (2712, 2670, 'Z', '昭通', '昭通市', 2, 'zhaotong', '657000', 1, '103.717216', '27.336999'); -INSERT INTO `base_postage_region` -VALUES (2713, 2712, 'Z', '昭阳', '昭阳区', 3, 'zhaoyang', '657000', 1, '103.70654', '27.31998'); -INSERT INTO `base_postage_region` -VALUES (2714, 2712, 'L', '鲁甸', '鲁甸县', 3, 'ludian', '657100', 1, '103.54721', '27.19238'); -INSERT INTO `base_postage_region` -VALUES (2715, 2712, 'Q', '巧家', '巧家县', 3, 'qiaojia', '654600', 1, '102.92416', '26.91237'); -INSERT INTO `base_postage_region` -VALUES (2716, 2712, 'Y', '盐津', '盐津县', 3, 'yanjin', '657500', 1, '104.23461', '28.10856'); -INSERT INTO `base_postage_region` -VALUES (2717, 2712, 'D', '大关', '大关县', 3, 'daguan', '657400', 1, '103.89254', '27.7488'); -INSERT INTO `base_postage_region` -VALUES (2718, 2712, 'Y', '永善', '永善县', 3, 'yongshan', '657300', 1, '103.63504', '28.2279'); -INSERT INTO `base_postage_region` -VALUES (2719, 2712, 'S', '绥江', '绥江县', 3, 'suijiang', '657700', 1, '103.94937', '28.59661'); -INSERT INTO `base_postage_region` -VALUES (2720, 2712, 'Z', '镇雄', '镇雄县', 3, 'zhenxiong', '657200', 1, '104.87258', '27.43981'); -INSERT INTO `base_postage_region` -VALUES (2721, 2712, 'Y', '彝良', '彝良县', 3, 'yiliang', '657600', 1, '104.04983', '27.62809'); -INSERT INTO `base_postage_region` -VALUES (2722, 2712, 'W', '威信', '威信县', 3, 'weixin', '657900', 1, '105.04754', '27.84065'); -INSERT INTO `base_postage_region` -VALUES (2723, 2712, 'S', '水富', '水富县', 3, 'shuifu', '657800', 1, '104.4158', '28.62986'); -INSERT INTO `base_postage_region` -VALUES (2724, 2670, 'L', '丽江', '丽江市', 2, 'lijiang', '674100', 1, '100.233026', '26.872108'); -INSERT INTO `base_postage_region` -VALUES (2725, 2724, 'G', '古城', '古城区', 3, 'gucheng', '674100', 1, '100.2257', '26.87697'); -INSERT INTO `base_postage_region` -VALUES (2726, 2724, 'Y', '玉龙', '玉龙纳西族自治县', 3, 'yulong', '674100', 1, '100.2369', '26.82149'); -INSERT INTO `base_postage_region` -VALUES (2727, 2724, 'Y', '永胜', '永胜县', 3, 'yongsheng', '674200', 1, '100.74667', '26.68591'); -INSERT INTO `base_postage_region` -VALUES (2728, 2724, 'H', '华坪', '华坪县', 3, 'huaping', '674800', 1, '101.26562', '26.62967'); -INSERT INTO `base_postage_region` -VALUES (2729, 2724, 'N', '宁蒗', '宁蒗彝族自治县', 3, 'ninglang', '674300', 1, '100.8507', '27.28179'); -INSERT INTO `base_postage_region` -VALUES (2730, 2670, 'P', '普洱', '普洱市', 2, 'puer', '665000', 1, '100.972344', '22.777321'); -INSERT INTO `base_postage_region` -VALUES (2731, 2730, 'S', '思茅', '思茅区', 3, 'simao', '665000', 1, '100.97716', '22.78691'); -INSERT INTO `base_postage_region` -VALUES (2732, 2730, 'N', '宁洱', '宁洱哈尼族彝族自治县', 3, 'ninger', '665100', 1, '101.04653', '23.06341'); -INSERT INTO `base_postage_region` -VALUES (2733, 2730, 'M', '墨江', '墨江哈尼族自治县', 3, 'mojiang', '654800', 1, '101.69171', '23.43214'); -INSERT INTO `base_postage_region` -VALUES (2734, 2730, 'J', '景东', '景东彝族自治县', 3, 'jingdong', '676200', 1, '100.83599', '24.44791'); -INSERT INTO `base_postage_region` -VALUES (2735, 2730, 'J', '景谷', '景谷傣族彝族自治县', 3, 'jinggu', '666400', 1, '100.70251', '23.49705'); -INSERT INTO `base_postage_region` -VALUES (2736, 2730, 'Z', '镇沅', '镇沅彝族哈尼族拉祜族自治县', 3, 'zhenyuan', '666500', 1, '101.10675', '24.00557'); -INSERT INTO `base_postage_region` -VALUES (2737, 2730, 'J', '江城', '江城哈尼族彝族自治县', 3, 'jiangcheng', '665900', 1, '101.85788', '22.58424'); -INSERT INTO `base_postage_region` -VALUES (2738, 2730, 'M', '孟连', '孟连傣族拉祜族佤族自治县', 3, 'menglian', '665800', 1, '99.58424', '22.32922'); -INSERT INTO `base_postage_region` -VALUES (2739, 2730, 'L', '澜沧', '澜沧拉祜族自治县', 3, 'lancang', '665600', 1, '99.93591', '22.55474'); -INSERT INTO `base_postage_region` -VALUES (2740, 2730, 'X', '西盟', '西盟佤族自治县', 3, 'ximeng', '665700', 1, '99.59869', '22.64774'); -INSERT INTO `base_postage_region` -VALUES (2741, 2670, 'L', '临沧', '临沧市', 2, 'lincang', '677000', 1, '100.08697', '23.886567'); -INSERT INTO `base_postage_region` -VALUES (2742, 2741, 'L', '临翔', '临翔区', 3, 'linxiang', '677000', 1, '100.08242', '23.89497'); -INSERT INTO `base_postage_region` -VALUES (2743, 2741, 'F', '凤庆', '凤庆县', 3, 'fengqing', '675900', 1, '99.92837', '24.58034'); -INSERT INTO `base_postage_region` -VALUES (2744, 2741, 'Y', '云县', '云县', 3, 'yunxian', '675800', 1, '100.12808', '24.44675'); -INSERT INTO `base_postage_region` -VALUES (2745, 2741, 'Y', '永德', '永德县', 3, 'yongde', '677600', 1, '99.25326', '24.0276'); -INSERT INTO `base_postage_region` -VALUES (2746, 2741, 'Z', '镇康', '镇康县', 3, 'zhenkang', '677704', 1, '98.8255', '23.76241'); -INSERT INTO `base_postage_region` -VALUES (2747, 2741, 'S', '双江', '双江拉祜族佤族布朗族傣族自治县', 3, 'shuangjiang', '677300', 1, '99.82769', '23.47349'); -INSERT INTO `base_postage_region` -VALUES (2748, 2741, 'G', '耿马', '耿马傣族佤族自治县', 3, 'gengma', '677500', 1, '99.39785', '23.53776'); -INSERT INTO `base_postage_region` -VALUES (2749, 2741, 'C', '沧源', '沧源佤族自治县', 3, 'cangyuan', '677400', 1, '99.24545', '23.14821'); -INSERT INTO `base_postage_region` -VALUES (2750, 2670, 'C', '楚雄', '楚雄彝族自治州', 2, 'chuxiong', '675000', 1, '101.546046', '25.041988'); -INSERT INTO `base_postage_region` -VALUES (2751, 2750, 'C', '楚雄', '楚雄市', 3, 'chuxiong', '675000', 1, '101.54615', '25.0329'); -INSERT INTO `base_postage_region` -VALUES (2752, 2750, 'S', '双柏', '双柏县', 3, 'shuangbai', '675100', 1, '101.64205', '24.68882'); -INSERT INTO `base_postage_region` -VALUES (2753, 2750, 'M', '牟定', '牟定县', 3, 'mouding', '675500', 1, '101.54', '25.31551'); -INSERT INTO `base_postage_region` -VALUES (2754, 2750, 'N', '南华', '南华县', 3, 'nanhua', '675200', 1, '101.27313', '25.19293'); -INSERT INTO `base_postage_region` -VALUES (2755, 2750, 'Y', '姚安', '姚安县', 3, 'yaoan', '675300', 1, '101.24279', '25.50467'); -INSERT INTO `base_postage_region` -VALUES (2756, 2750, 'D', '大姚', '大姚县', 3, 'dayao', '675400', 1, '101.32397', '25.72218'); -INSERT INTO `base_postage_region` -VALUES (2757, 2750, 'Y', '永仁', '永仁县', 3, 'yongren', '651400', 1, '101.6716', '26.05794'); -INSERT INTO `base_postage_region` -VALUES (2758, 2750, 'Y', '元谋', '元谋县', 3, 'yuanmou', '651300', 1, '101.87728', '25.70438'); -INSERT INTO `base_postage_region` -VALUES (2759, 2750, 'W', '武定', '武定县', 3, 'wuding', '651600', 1, '102.4038', '25.5295'); -INSERT INTO `base_postage_region` -VALUES (2760, 2750, 'L', '禄丰', '禄丰县', 3, 'lufeng', '651200', 1, '102.07797', '25.14815'); -INSERT INTO `base_postage_region` -VALUES (2761, 2670, 'H', '红河', '红河哈尼族彝族自治州', 2, 'honghe', '661400', 1, '103.384182', '23.366775'); -INSERT INTO `base_postage_region` -VALUES (2762, 2761, 'G', '个旧', '个旧市', 3, 'gejiu', '661000', 1, '103.15966', '23.35894'); -INSERT INTO `base_postage_region` -VALUES (2763, 2761, 'K', '开远', '开远市', 3, 'kaiyuan', '661600', 1, '103.26986', '23.71012'); -INSERT INTO `base_postage_region` -VALUES (2764, 2761, 'M', '蒙自', '蒙自市', 3, 'mengzi', '661101', 1, '103.385005', '23.366843'); -INSERT INTO `base_postage_region` -VALUES (2765, 2761, 'M', '弥勒', '弥勒市', 3, 'mile', '652300', 1, '103.436988', '24.40837'); -INSERT INTO `base_postage_region` -VALUES (2766, 2761, 'P', '屏边', '屏边苗族自治县', 3, 'pingbian', '661200', 1, '103.68554', '22.98425'); -INSERT INTO `base_postage_region` -VALUES (2767, 2761, 'J', '建水', '建水县', 3, 'jianshui', '654300', 1, '102.82656', '23.63472'); -INSERT INTO `base_postage_region` -VALUES (2768, 2761, 'S', '石屏', '石屏县', 3, 'shiping', '662200', 1, '102.49408', '23.71441'); -INSERT INTO `base_postage_region` -VALUES (2769, 2761, NULL, '泸西', '泸西县', 3, 'luxi', '652400', 1, '103.76373', '24.52854'); -INSERT INTO `base_postage_region` -VALUES (2770, 2761, 'Y', '元阳', '元阳县', 3, 'yuanyang', '662400', 1, '102.83261', '23.22281'); -INSERT INTO `base_postage_region` -VALUES (2771, 2761, 'H', '红河县', '红河县', 3, 'honghexian', '654400', 1, '102.42059', '23.36767'); -INSERT INTO `base_postage_region` -VALUES (2772, 2761, 'J', '金平', '金平苗族瑶族傣族自治县', 3, 'jinping', '661500', 1, '103.22651', '22.77959'); -INSERT INTO `base_postage_region` -VALUES (2773, 2761, 'L', '绿春', '绿春县', 3, 'lvchun', '662500', 1, '102.39672', '22.99371'); -INSERT INTO `base_postage_region` -VALUES (2774, 2761, 'H', '河口', '河口瑶族自治县', 3, 'hekou', '661300', 1, '103.93936', '22.52929'); -INSERT INTO `base_postage_region` -VALUES (2775, 2670, 'W', '文山', '文山壮族苗族自治州', 2, 'wenshan', '663000', 1, '104.24401', '23.36951'); -INSERT INTO `base_postage_region` -VALUES (2776, 2775, 'W', '文山', '文山市', 3, 'wenshan', '663000', 1, '104.244277', '23.369216'); -INSERT INTO `base_postage_region` -VALUES (2777, 2775, 'Y', '砚山', '砚山县', 3, 'yanshan', '663100', 1, '104.33306', '23.60723'); -INSERT INTO `base_postage_region` -VALUES (2778, 2775, 'X', '西畴', '西畴县', 3, 'xichou', '663500', 1, '104.67419', '23.43941'); -INSERT INTO `base_postage_region` -VALUES (2779, 2775, 'M', '麻栗坡', '麻栗坡县', 3, 'malipo', '663600', 1, '104.70132', '23.12028'); -INSERT INTO `base_postage_region` -VALUES (2780, 2775, 'M', '马关', '马关县', 3, 'maguan', '663700', 1, '104.39514', '23.01293'); -INSERT INTO `base_postage_region` -VALUES (2781, 2775, 'Q', '丘北', '丘北县', 3, 'qiubei', '663200', 1, '104.19256', '24.03957'); -INSERT INTO `base_postage_region` -VALUES (2782, 2775, 'G', '广南', '广南县', 3, 'guangnan', '663300', 1, '105.05511', '24.0464'); -INSERT INTO `base_postage_region` -VALUES (2783, 2775, 'F', '富宁', '富宁县', 3, 'funing', '663400', 1, '105.63085', '23.62536'); -INSERT INTO `base_postage_region` -VALUES (2784, 2670, 'X', '西双版纳', '西双版纳傣族自治州', 2, 'xishuangbanna', '666100', 1, '100.797941', '22.001724'); -INSERT INTO `base_postage_region` -VALUES (2785, 2784, 'J', '景洪', '景洪市', 3, 'jinghong', '666100', 1, '100.79977', '22.01071'); -INSERT INTO `base_postage_region` -VALUES (2786, 2784, NULL, '勐海', '勐海县', 3, 'menghai', '666200', 1, '100.44931', '21.96175'); -INSERT INTO `base_postage_region` -VALUES (2787, 2784, NULL, '勐腊', '勐腊县', 3, 'mengla', '666300', 1, '101.56488', '21.48162'); -INSERT INTO `base_postage_region` -VALUES (2788, 2670, 'D', '大理', '大理白族自治州', 2, 'dali', '671000', 1, '100.240037', '25.592765'); -INSERT INTO `base_postage_region` -VALUES (2789, 2788, 'D', '大理', '大理市', 3, 'dali', '671000', 1, '100.22998', '25.59157'); -INSERT INTO `base_postage_region` -VALUES (2790, 2788, 'Y', '漾濞', '漾濞彝族自治县', 3, 'yangbi', '672500', 1, '99.95474', '25.6652'); -INSERT INTO `base_postage_region` -VALUES (2791, 2788, 'X', '祥云', '祥云县', 3, 'xiangyun', '672100', 1, '100.55761', '25.47342'); -INSERT INTO `base_postage_region` -VALUES (2792, 2788, 'B', '宾川', '宾川县', 3, 'binchuan', '671600', 1, '100.57666', '25.83144'); -INSERT INTO `base_postage_region` -VALUES (2793, 2788, 'M', '弥渡', '弥渡县', 3, 'midu', '675600', 1, '100.49075', '25.34179'); -INSERT INTO `base_postage_region` -VALUES (2794, 2788, 'N', '南涧', '南涧彝族自治县', 3, 'nanjian', '675700', 1, '100.50964', '25.04349'); -INSERT INTO `base_postage_region` -VALUES (2795, 2788, 'W', '巍山', '巍山彝族回族自治县', 3, 'weishan', '672400', 1, '100.30612', '25.23197'); -INSERT INTO `base_postage_region` -VALUES (2796, 2788, 'Y', '永平', '永平县', 3, 'yongping', '672600', 1, '99.54095', '25.46451'); -INSERT INTO `base_postage_region` -VALUES (2797, 2788, 'Y', '云龙', '云龙县', 3, 'yunlong', '672700', 1, '99.37255', '25.88505'); -INSERT INTO `base_postage_region` -VALUES (2798, 2788, 'E', '洱源', '洱源县', 3, 'eryuan', '671200', 1, '99.94903', '26.10829'); -INSERT INTO `base_postage_region` -VALUES (2799, 2788, 'J', '剑川', '剑川县', 3, 'jianchuan', '671300', 1, '99.90545', '26.53688'); -INSERT INTO `base_postage_region` -VALUES (2800, 2788, 'H', '鹤庆', '鹤庆县', 3, 'heqing', '671500', 1, '100.17697', '26.55798'); -INSERT INTO `base_postage_region` -VALUES (2801, 2670, 'D', '德宏', '德宏傣族景颇族自治州', 2, 'dehong', '678400', 1, '98.578363', '24.436694'); -INSERT INTO `base_postage_region` -VALUES (2802, 2801, 'R', '瑞丽', '瑞丽市', 3, 'ruili', '678600', 1, '97.85183', '24.01277'); -INSERT INTO `base_postage_region` -VALUES (2803, 2801, 'M', '芒市', '芒市', 3, 'mangshi', '678400', 1, '98.588641', '24.433735'); -INSERT INTO `base_postage_region` -VALUES (2804, 2801, 'L', '梁河', '梁河县', 3, 'lianghe', '679200', 1, '98.29705', '24.80658'); -INSERT INTO `base_postage_region` -VALUES (2805, 2801, 'Y', '盈江', '盈江县', 3, 'yingjiang', '679300', 1, '97.93179', '24.70579'); -INSERT INTO `base_postage_region` -VALUES (2806, 2801, 'L', '陇川', '陇川县', 3, 'longchuan', '678700', 1, '97.79199', '24.18302'); -INSERT INTO `base_postage_region` -VALUES (2807, 2670, 'N', '怒江', '怒江傈僳族自治州', 2, 'nujiang', '673100', 1, '98.854304', '25.850949'); -INSERT INTO `base_postage_region` -VALUES (2808, 2807, NULL, '泸水', '泸水县', 3, 'lushui', '673100', 1, '98.85534', '25.83772'); -INSERT INTO `base_postage_region` -VALUES (2809, 2807, 'F', '福贡', '福贡县', 3, 'fugong', '673400', 1, '98.86969', '26.90366'); -INSERT INTO `base_postage_region` -VALUES (2810, 2807, 'G', '贡山', '贡山独龙族怒族自治县', 3, 'gongshan', '673500', 1, '98.66583', '27.74088'); -INSERT INTO `base_postage_region` -VALUES (2811, 2807, 'L', '兰坪', '兰坪白族普米族自治县', 3, 'lanping', '671400', 1, '99.41891', '26.45251'); -INSERT INTO `base_postage_region` -VALUES (2812, 2670, 'D', '迪庆', '迪庆藏族自治州', 2, 'deqen', '674400', 1, '99.706463', '27.826853'); -INSERT INTO `base_postage_region` -VALUES (2813, 2812, 'X', '香格里拉', '香格里拉市', 3, 'xianggelila', '674400', 1, '99.70601', '27.82308'); -INSERT INTO `base_postage_region` -VALUES (2814, 2812, 'D', '德钦', '德钦县', 3, 'deqin', '674500', 1, '98.91082', '28.4863'); -INSERT INTO `base_postage_region` -VALUES (2815, 2812, 'W', '维西', '维西傈僳族自治县', 3, 'weixi', '674600', 1, '99.28402', '27.1793'); -INSERT INTO `base_postage_region` -VALUES (2816, 0, 'X', '西藏', '西藏自治区', 1, 'tibet', '', 1, '91.132212', '29.660361'); -INSERT INTO `base_postage_region` -VALUES (2817, 2816, 'L', '拉萨', '拉萨市', 2, 'lhasa', '850000', 1, '91.132212', '29.660361'); -INSERT INTO `base_postage_region` -VALUES (2818, 2817, 'C', '城关', '城关区', 3, 'chengguan', '850000', 1, '91.13859', '29.65312'); -INSERT INTO `base_postage_region` -VALUES (2819, 2817, 'L', '林周', '林周县', 3, 'linzhou', '851600', 1, '91.2586', '29.89445'); -INSERT INTO `base_postage_region` -VALUES (2820, 2817, 'D', '当雄', '当雄县', 3, 'dangxiong', '851500', 1, '91.10076', '30.48309'); -INSERT INTO `base_postage_region` -VALUES (2821, 2817, 'N', '尼木', '尼木县', 3, 'nimu', '851300', 1, '90.16378', '29.43353'); -INSERT INTO `base_postage_region` -VALUES (2822, 2817, 'Q', '曲水', '曲水县', 3, 'qushui', '850600', 1, '90.73187', '29.35636'); -INSERT INTO `base_postage_region` -VALUES (2823, 2817, 'D', '堆龙德庆', '堆龙德庆县', 3, 'duilongdeqing', '851400', 1, '91.00033', '29.65002'); -INSERT INTO `base_postage_region` -VALUES (2824, 2817, 'D', '达孜', '达孜县', 3, 'dazi', '850100', 1, '91.35757', '29.6722'); -INSERT INTO `base_postage_region` -VALUES (2825, 2817, 'M', '墨竹工卡', '墨竹工卡县', 3, 'mozhugongka', '850200', 1, '91.72814', '29.83614'); -INSERT INTO `base_postage_region` -VALUES (2826, 2816, 'R', '日喀则', '日喀则市', 2, 'rikaze', '857000', 1, '88.884874', '29.263792'); -INSERT INTO `base_postage_region` -VALUES (2827, 2826, 'S', '桑珠孜', '桑珠孜区', 3, 'sangzhuzi', '857000', 1, '88.880367', '29.269565'); -INSERT INTO `base_postage_region` -VALUES (2828, 2826, 'N', '南木林', '南木林县', 3, 'nanmulin', '857100', 1, '89.09686', '29.68206'); -INSERT INTO `base_postage_region` -VALUES (2829, 2826, 'J', '江孜', '江孜县', 3, 'jiangzi', '857400', 1, '89.60263', '28.91744'); -INSERT INTO `base_postage_region` -VALUES (2830, 2826, 'D', '定日', '定日县', 3, 'dingri', '858200', 1, '87.12176', '28.66129'); -INSERT INTO `base_postage_region` -VALUES (2831, 2826, 'S', '萨迦', '萨迦县', 3, 'sajia', '857800', 1, '88.02191', '28.90299'); -INSERT INTO `base_postage_region` -VALUES (2832, 2826, 'L', '拉孜', '拉孜县', 3, 'lazi', '858100', 1, '87.63412', '29.085'); -INSERT INTO `base_postage_region` -VALUES (2833, 2826, 'A', '昂仁', '昂仁县', 3, 'angren', '858500', 1, '87.23858', '29.29496'); -INSERT INTO `base_postage_region` -VALUES (2834, 2826, 'X', '谢通门', '谢通门县', 3, 'xietongmen', '858900', 1, '88.26242', '29.43337'); -INSERT INTO `base_postage_region` -VALUES (2835, 2826, 'B', '白朗', '白朗县', 3, 'bailang', '857300', 1, '89.26205', '29.10553'); -INSERT INTO `base_postage_region` -VALUES (2836, 2826, 'R', '仁布', '仁布县', 3, 'renbu', '857200', 1, '89.84228', '29.2301'); -INSERT INTO `base_postage_region` -VALUES (2837, 2826, 'K', '康马', '康马县', 3, 'kangma', '857500', 1, '89.68527', '28.5567'); -INSERT INTO `base_postage_region` -VALUES (2838, 2826, 'D', '定结', '定结县', 3, 'dingjie', '857900', 1, '87.77255', '28.36403'); -INSERT INTO `base_postage_region` -VALUES (2839, 2826, 'Z', '仲巴', '仲巴县', 3, 'zhongba', '858800', 1, '84.02951', '29.76595'); -INSERT INTO `base_postage_region` -VALUES (2840, 2826, 'Y', '亚东', '亚东县', 3, 'yadong', '857600', 1, '88.90802', '27.4839'); -INSERT INTO `base_postage_region` -VALUES (2841, 2826, 'J', '吉隆', '吉隆县', 3, 'jilong', '858700', 1, '85.29846', '28.85382'); -INSERT INTO `base_postage_region` -VALUES (2842, 2826, 'N', '聂拉木', '聂拉木县', 3, 'nielamu', '858300', 1, '85.97998', '28.15645'); -INSERT INTO `base_postage_region` -VALUES (2843, 2826, 'S', '萨嘎', '萨嘎县', 3, 'saga', '857800', 1, '85.23413', '29.32936'); -INSERT INTO `base_postage_region` -VALUES (2844, 2826, 'G', '岗巴', '岗巴县', 3, 'gangba', '857700', 1, '88.52069', '28.27504'); -INSERT INTO `base_postage_region` -VALUES (2845, 2816, 'C', '昌都', '昌都市', 2, 'qamdo', '854000', 1, '97.178452', '31.136875'); -INSERT INTO `base_postage_region` -VALUES (2846, 2845, 'K', '昌都', '卡若区', 3, 'karuo', '854000', 1, '97.18043', '31.1385'); -INSERT INTO `base_postage_region` -VALUES (2847, 2845, 'J', '江达', '江达县', 3, 'jiangda', '854100', 1, '98.21865', '31.50343'); -INSERT INTO `base_postage_region` -VALUES (2848, 2845, 'G', '贡觉', '贡觉县', 3, 'gongjue', '854200', 1, '98.27163', '30.85941'); -INSERT INTO `base_postage_region` -VALUES (2849, 2845, 'L', '类乌齐', '类乌齐县', 3, 'leiwuqi', '855600', 1, '96.60015', '31.21207'); -INSERT INTO `base_postage_region` -VALUES (2850, 2845, 'D', '丁青', '丁青县', 3, 'dingqing', '855700', 1, '95.59362', '31.41621'); -INSERT INTO `base_postage_region` -VALUES (2851, 2845, 'C', '察雅', '察雅县', 3, 'chaya', '854300', 1, '97.56521', '30.65336'); -INSERT INTO `base_postage_region` -VALUES (2852, 2845, 'B', '八宿', '八宿县', 3, 'basu', '854600', 1, '96.9176', '30.05346'); -INSERT INTO `base_postage_region` -VALUES (2853, 2845, 'Z', '左贡', '左贡县', 3, 'zuogong', '854400', 1, '97.84429', '29.67108'); -INSERT INTO `base_postage_region` -VALUES (2854, 2845, 'M', '芒康', '芒康县', 3, 'mangkang', '854500', 1, '98.59378', '29.67946'); -INSERT INTO `base_postage_region` -VALUES (2855, 2845, 'L', '洛隆', '洛隆县', 3, 'luolong', '855400', 1, '95.82644', '30.74049'); -INSERT INTO `base_postage_region` -VALUES (2856, 2845, 'B', '边坝', '边坝县', 3, 'bianba', '855500', 1, '94.70687', '30.93434'); -INSERT INTO `base_postage_region` -VALUES (2857, 2816, 'S', '山南', '山南地区', 2, 'shannan', '856000', 1, '91.766529', '29.236023'); -INSERT INTO `base_postage_region` -VALUES (2858, 2857, 'N', '乃东', '乃东县', 3, 'naidong', '856100', 1, '91.76153', '29.2249'); -INSERT INTO `base_postage_region` -VALUES (2859, 2857, 'Z', '扎囊', '扎囊县', 3, 'zhanang', '850800', 1, '91.33288', '29.2399'); -INSERT INTO `base_postage_region` -VALUES (2860, 2857, 'G', '贡嘎', '贡嘎县', 3, 'gongga', '850700', 1, '90.98867', '29.29408'); -INSERT INTO `base_postage_region` -VALUES (2861, 2857, 'S', '桑日', '桑日县', 3, 'sangri', '856200', 1, '92.02005', '29.26643'); -INSERT INTO `base_postage_region` -VALUES (2862, 2857, 'Q', '琼结', '琼结县', 3, 'qiongjie', '856800', 1, '91.68093', '29.02632'); -INSERT INTO `base_postage_region` -VALUES (2863, 2857, 'Q', '曲松', '曲松县', 3, 'qusong', '856300', 1, '92.20263', '29.06412'); -INSERT INTO `base_postage_region` -VALUES (2864, 2857, 'C', '措美', '措美县', 3, 'cuomei', '856900', 1, '91.43237', '28.43794'); -INSERT INTO `base_postage_region` -VALUES (2865, 2857, 'L', '洛扎', '洛扎县', 3, 'luozha', '856600', 1, '90.86035', '28.3872'); -INSERT INTO `base_postage_region` -VALUES (2866, 2857, 'J', '加查', '加查县', 3, 'jiacha', '856400', 1, '92.57702', '29.13973'); -INSERT INTO `base_postage_region` -VALUES (2867, 2857, 'L', '隆子', '隆子县', 3, 'longzi', '856600', 1, '92.46148', '28.40797'); -INSERT INTO `base_postage_region` -VALUES (2868, 2857, 'C', '错那', '错那县', 3, 'cuona', '856700', 1, '91.95752', '27.99224'); -INSERT INTO `base_postage_region` -VALUES (2869, 2857, 'L', '浪卡子', '浪卡子县', 3, 'langkazi', '851100', 1, '90.40002', '28.96948'); -INSERT INTO `base_postage_region` -VALUES (2870, 2816, 'N', '那曲', '那曲地区', 2, 'nagqu', '852000', 1, '92.060214', '31.476004'); -INSERT INTO `base_postage_region` -VALUES (2871, 2870, 'N', '那曲', '那曲县', 3, 'naqu', '852000', 1, '92.0535', '31.46964'); -INSERT INTO `base_postage_region` -VALUES (2872, 2870, 'J', '嘉黎', '嘉黎县', 3, 'jiali', '852400', 1, '93.24987', '30.64233'); -INSERT INTO `base_postage_region` -VALUES (2873, 2870, 'B', '比如', '比如县', 3, 'biru', '852300', 1, '93.68685', '31.4779'); -INSERT INTO `base_postage_region` -VALUES (2874, 2870, 'N', '聂荣', '聂荣县', 3, 'nierong', '853500', 1, '92.29574', '32.11193'); -INSERT INTO `base_postage_region` -VALUES (2875, 2870, 'A', '安多', '安多县', 3, 'anduo', '853400', 1, '91.6795', '32.26125'); -INSERT INTO `base_postage_region` -VALUES (2876, 2870, 'S', '申扎', '申扎县', 3, 'shenzha', '853100', 1, '88.70776', '30.92995'); -INSERT INTO `base_postage_region` -VALUES (2877, 2870, 'S', '索县', '索县', 3, 'suoxian', '852200', 1, '93.78295', '31.88427'); -INSERT INTO `base_postage_region` -VALUES (2878, 2870, 'B', '班戈', '班戈县', 3, 'bange', '852500', 1, '90.01907', '31.36149'); -INSERT INTO `base_postage_region` -VALUES (2879, 2870, 'B', '巴青', '巴青县', 3, 'baqing', '852100', 1, '94.05316', '31.91833'); -INSERT INTO `base_postage_region` -VALUES (2880, 2870, 'N', '尼玛', '尼玛县', 3, 'nima', '852600', 1, '87.25256', '31.79654'); -INSERT INTO `base_postage_region` -VALUES (2881, 2870, 'S', '双湖', '双湖县', 3, 'shuanghu', '852600', 1, '88.837776', '33.189032'); -INSERT INTO `base_postage_region` -VALUES (2882, 2816, 'A', '阿里', '阿里地区', 2, 'ngari', '859000', 1, '80.105498', '32.503187'); -INSERT INTO `base_postage_region` -VALUES (2883, 2882, 'P', '普兰', '普兰县', 3, 'pulan', '859500', 1, '81.177', '30.30002'); -INSERT INTO `base_postage_region` -VALUES (2884, 2882, 'Z', '札达', '札达县', 3, 'zhada', '859600', 1, '79.80255', '31.48345'); -INSERT INTO `base_postage_region` -VALUES (2885, 2882, 'G', '噶尔', '噶尔县', 3, 'gaer', '859400', 1, '80.09579', '32.50024'); -INSERT INTO `base_postage_region` -VALUES (2886, 2882, 'R', '日土', '日土县', 3, 'ritu', '859700', 1, '79.7131', '33.38741'); -INSERT INTO `base_postage_region` -VALUES (2887, 2882, 'G', '革吉', '革吉县', 3, 'geji', '859100', 1, '81.151', '32.3964'); -INSERT INTO `base_postage_region` -VALUES (2888, 2882, 'G', '改则', '改则县', 3, 'gaize', '859200', 1, '84.06295', '32.30446'); -INSERT INTO `base_postage_region` -VALUES (2889, 2882, 'C', '措勤', '措勤县', 3, 'cuoqin', '859300', 1, '85.16616', '31.02095'); -INSERT INTO `base_postage_region` -VALUES (2890, 2816, 'L', '林芝', '林芝地区', 2, 'nyingchi', '850400', 1, '94.362348', '29.654693'); -INSERT INTO `base_postage_region` -VALUES (2891, 2890, 'L', '林芝', '林芝县', 3, 'linzhi', '850400', 1, '94.48391', '29.57562'); -INSERT INTO `base_postage_region` -VALUES (2892, 2890, 'G', '工布江达', '工布江达县', 3, 'gongbujiangda', '850300', 1, '93.2452', '29.88576'); -INSERT INTO `base_postage_region` -VALUES (2893, 2890, 'M', '米林', '米林县', 3, 'milin', '850500', 1, '94.21316', '29.21535'); -INSERT INTO `base_postage_region` -VALUES (2894, 2890, 'M', '墨脱', '墨脱县', 3, 'motuo', '855300', 1, '95.3316', '29.32698'); -INSERT INTO `base_postage_region` -VALUES (2895, 2890, 'B', '波密', '波密县', 3, 'bomi', '855200', 1, '95.77096', '29.85907'); -INSERT INTO `base_postage_region` -VALUES (2896, 2890, 'C', '察隅', '察隅县', 3, 'chayu', '855100', 1, '97.46679', '28.6618'); -INSERT INTO `base_postage_region` -VALUES (2897, 2890, 'L', '朗县', '朗县', 3, 'langxian', '856500', 1, '93.0754', '29.04549'); -INSERT INTO `base_postage_region` -VALUES (2898, 0, 'S', '陕西', '陕西省', 1, 'shaanxi', '', 1, '108.948024', '34.263161'); -INSERT INTO `base_postage_region` -VALUES (2899, 2898, 'X', '西安', '西安市', 2, 'xian', '710003', 1, '108.948024', '34.263161'); -INSERT INTO `base_postage_region` -VALUES (2900, 2899, 'X', '新城', '新城区', 3, 'xincheng', '710004', 1, '108.9608', '34.26641'); -INSERT INTO `base_postage_region` -VALUES (2901, 2899, 'B', '碑林', '碑林区', 3, 'beilin', '710001', 1, '108.93426', '34.2304'); -INSERT INTO `base_postage_region` -VALUES (2902, 2899, 'L', '莲湖', '莲湖区', 3, 'lianhu', '710003', 1, '108.9401', '34.26709'); -INSERT INTO `base_postage_region` -VALUES (2903, 2899, NULL, '灞桥', '灞桥区', 3, 'baqiao', '710038', 1, '109.06451', '34.27264'); -INSERT INTO `base_postage_region` -VALUES (2904, 2899, 'W', '未央', '未央区', 3, 'weiyang', '710014', 1, '108.94683', '34.29296'); -INSERT INTO `base_postage_region` -VALUES (2905, 2899, 'Y', '雁塔', '雁塔区', 3, 'yanta', '710061', 1, '108.94866', '34.22245'); -INSERT INTO `base_postage_region` -VALUES (2906, 2899, 'Y', '阎良', '阎良区', 3, 'yanliang', '710087', 1, '109.22616', '34.66221'); -INSERT INTO `base_postage_region` -VALUES (2907, 2899, 'L', '临潼', '临潼区', 3, 'lintong', '710600', 1, '109.21417', '34.36665'); -INSERT INTO `base_postage_region` -VALUES (2908, 2899, 'C', '长安', '长安区', 3, 'changan', '710100', 1, '108.94586', '34.15559'); -INSERT INTO `base_postage_region` -VALUES (2909, 2899, 'L', '蓝田', '蓝田县', 3, 'lantian', '710500', 1, '109.32339', '34.15128'); -INSERT INTO `base_postage_region` -VALUES (2910, 2899, 'Z', '周至', '周至县', 3, 'zhouzhi', '710400', 1, '108.22207', '34.16337'); -INSERT INTO `base_postage_region` -VALUES (2911, 2899, 'H', '户县', '户县', 3, 'huxian', '710300', 1, '108.60513', '34.10856'); -INSERT INTO `base_postage_region` -VALUES (2912, 2899, 'G', '高陵', '高陵区', 3, 'gaoling', '710200', 1, '109.08816', '34.53483'); -INSERT INTO `base_postage_region` -VALUES (2913, 2898, 'T', '铜川', '铜川市', 2, 'tongchuan', '727100', 1, '108.963122', '34.90892'); -INSERT INTO `base_postage_region` -VALUES (2914, 2913, 'W', '王益', '王益区', 3, 'wangyi', '727000', 1, '109.07564', '35.06896'); -INSERT INTO `base_postage_region` -VALUES (2915, 2913, 'Y', '印台', '印台区', 3, 'yintai', '727007', 1, '109.10208', '35.1169'); -INSERT INTO `base_postage_region` -VALUES (2916, 2913, 'Y', '耀州', '耀州区', 3, 'yaozhou', '727100', 1, '108.98556', '34.91308'); -INSERT INTO `base_postage_region` -VALUES (2917, 2913, 'Y', '宜君', '宜君县', 3, 'yijun', '727200', 1, '109.11813', '35.40108'); -INSERT INTO `base_postage_region` -VALUES (2918, 2898, 'B', '宝鸡', '宝鸡市', 2, 'baoji', '721000', 1, '107.14487', '34.369315'); -INSERT INTO `base_postage_region` -VALUES (2919, 2918, 'W', '渭滨', '渭滨区', 3, 'weibin', '721000', 1, '107.14991', '34.37116'); -INSERT INTO `base_postage_region` -VALUES (2920, 2918, 'J', '金台', '金台区', 3, 'jintai', '721000', 1, '107.14691', '34.37612'); -INSERT INTO `base_postage_region` -VALUES (2921, 2918, 'C', '陈仓', '陈仓区', 3, 'chencang', '721300', 1, '107.38742', '34.35451'); -INSERT INTO `base_postage_region` -VALUES (2922, 2918, 'F', '凤翔', '凤翔县', 3, 'fengxiang', '721400', 1, '107.39645', '34.52321'); -INSERT INTO `base_postage_region` -VALUES (2923, 2918, NULL, '岐山', '岐山县', 3, 'qishan', '722400', 1, '107.62173', '34.44378'); -INSERT INTO `base_postage_region` -VALUES (2924, 2918, 'F', '扶风', '扶风县', 3, 'fufeng', '722200', 1, '107.90017', '34.37524'); -INSERT INTO `base_postage_region` -VALUES (2925, 2918, 'M', '眉县', '眉县', 3, 'meixian', '722300', 1, '107.75079', '34.27569'); -INSERT INTO `base_postage_region` -VALUES (2926, 2918, 'L', '陇县', '陇县', 3, 'longxian', '721200', 1, '106.85946', '34.89404'); -INSERT INTO `base_postage_region` -VALUES (2927, 2918, 'Q', '千阳', '千阳县', 3, 'qianyang', '721100', 1, '107.13043', '34.64219'); -INSERT INTO `base_postage_region` -VALUES (2928, 2918, NULL, '麟游', '麟游县', 3, 'linyou', '721500', 1, '107.79623', '34.67844'); -INSERT INTO `base_postage_region` -VALUES (2929, 2918, 'F', '凤县', '凤县', 3, 'fengxian', '721700', 1, '106.52356', '33.91172'); -INSERT INTO `base_postage_region` -VALUES (2930, 2918, 'T', '太白', '太白县', 3, 'taibai', '721600', 1, '107.31646', '34.06207'); -INSERT INTO `base_postage_region` -VALUES (2931, 2898, 'X', '咸阳', '咸阳市', 2, 'xianyang', '712000', 1, '108.705117', '34.333439'); -INSERT INTO `base_postage_region` -VALUES (2932, 2931, 'Q', '秦都', '秦都区', 3, 'qindu', '712000', 1, '108.71493', '34.33804'); -INSERT INTO `base_postage_region` -VALUES (2933, 2931, 'Y', '杨陵', '杨陵区', 3, 'yangling', '712100', 1, '108.083481', '34.270434'); -INSERT INTO `base_postage_region` -VALUES (2934, 2931, 'W', '渭城', '渭城区', 3, 'weicheng', '712000', 1, '108.72227', '34.33198'); -INSERT INTO `base_postage_region` -VALUES (2935, 2931, 'S', '三原', '三原县', 3, 'sanyuan', '713800', 1, '108.93194', '34.61556'); -INSERT INTO `base_postage_region` -VALUES (2936, 2931, NULL, '泾阳', '泾阳县', 3, 'jingyang', '713700', 1, '108.84259', '34.52705'); -INSERT INTO `base_postage_region` -VALUES (2937, 2931, 'Q', '乾县', '乾县', 3, 'qianxian', '713300', 1, '108.24231', '34.52946'); -INSERT INTO `base_postage_region` -VALUES (2938, 2931, 'L', '礼泉', '礼泉县', 3, 'liquan', '713200', 1, '108.4263', '34.48455'); -INSERT INTO `base_postage_region` -VALUES (2939, 2931, 'Y', '永寿', '永寿县', 3, 'yongshou', '713400', 1, '108.14474', '34.69081'); -INSERT INTO `base_postage_region` -VALUES (2940, 2931, 'B', '彬县', '彬县', 3, 'binxian', '713500', 1, '108.08468', '35.0342'); -INSERT INTO `base_postage_region` -VALUES (2941, 2931, 'C', '长武', '长武县', 3, 'changwu', '713600', 1, '107.7951', '35.2067'); -INSERT INTO `base_postage_region` -VALUES (2942, 2931, 'X', '旬邑', '旬邑县', 3, 'xunyi', '711300', 1, '108.3341', '35.11338'); -INSERT INTO `base_postage_region` -VALUES (2943, 2931, 'C', '淳化', '淳化县', 3, 'chunhua', '711200', 1, '108.58026', '34.79886'); -INSERT INTO `base_postage_region` -VALUES (2944, 2931, 'W', '武功', '武功县', 3, 'wugong', '712200', 1, '108.20434', '34.26003'); -INSERT INTO `base_postage_region` -VALUES (2945, 2931, 'X', '兴平', '兴平市', 3, 'xingping', '713100', 1, '108.49057', '34.29785'); -INSERT INTO `base_postage_region` -VALUES (2946, 2898, 'W', '渭南', '渭南市', 2, 'weinan', '714000', 1, '109.502882', '34.499381'); -INSERT INTO `base_postage_region` -VALUES (2947, 2946, 'L', '临渭', '临渭区', 3, 'linwei', '714000', 1, '109.49296', '34.49822'); -INSERT INTO `base_postage_region` -VALUES (2948, 2946, 'H', '华县', '华县', 3, 'huaxian', '714100', 1, '109.77185', '34.51255'); -INSERT INTO `base_postage_region` -VALUES (2949, 2946, NULL, '潼关', '潼关县', 3, 'tongguan', '714300', 1, '110.24362', '34.54284'); -INSERT INTO `base_postage_region` -VALUES (2950, 2946, 'D', '大荔', '大荔县', 3, 'dali', '715100', 1, '109.94216', '34.79565'); -INSERT INTO `base_postage_region` -VALUES (2951, 2946, 'H', '合阳', '合阳县', 3, 'heyang', '715300', 1, '110.14862', '35.23805'); -INSERT INTO `base_postage_region` -VALUES (2952, 2946, 'C', '澄城', '澄城县', 3, 'chengcheng', '715200', 1, '109.93444', '35.18396'); -INSERT INTO `base_postage_region` -VALUES (2953, 2946, 'P', '蒲城', '蒲城县', 3, 'pucheng', '715500', 1, '109.5903', '34.9568'); -INSERT INTO `base_postage_region` -VALUES (2954, 2946, 'B', '白水', '白水县', 3, 'baishui', '715600', 1, '109.59286', '35.17863'); -INSERT INTO `base_postage_region` -VALUES (2955, 2946, 'F', '富平', '富平县', 3, 'fuping', '711700', 1, '109.1802', '34.75109'); -INSERT INTO `base_postage_region` -VALUES (2956, 2946, 'H', '韩城', '韩城市', 3, 'hancheng', '715400', 1, '110.44238', '35.47926'); -INSERT INTO `base_postage_region` -VALUES (2957, 2946, 'H', '华阴', '华阴市', 3, 'huayin', '714200', 1, '110.08752', '34.56608'); -INSERT INTO `base_postage_region` -VALUES (2958, 2898, 'Y', '延安', '延安市', 2, 'yanan', '716000', 1, '109.49081', '36.596537'); -INSERT INTO `base_postage_region` -VALUES (2959, 2958, 'B', '宝塔', '宝塔区', 3, 'baota', '716000', 1, '109.49336', '36.59154'); -INSERT INTO `base_postage_region` -VALUES (2960, 2958, 'Y', '延长', '延长县', 3, 'yanchang', '717100', 1, '110.01083', '36.57904'); -INSERT INTO `base_postage_region` -VALUES (2961, 2958, 'Y', '延川', '延川县', 3, 'yanchuan', '717200', 1, '110.19415', '36.87817'); -INSERT INTO `base_postage_region` -VALUES (2962, 2958, 'Z', '子长', '子长县', 3, 'zichang', '717300', 1, '109.67532', '37.14253'); -INSERT INTO `base_postage_region` -VALUES (2963, 2958, 'A', '安塞', '安塞县', 3, 'ansai', '717400', 1, '109.32708', '36.86507'); -INSERT INTO `base_postage_region` -VALUES (2964, 2958, 'Z', '志丹', '志丹县', 3, 'zhidan', '717500', 1, '108.76815', '36.82177'); -INSERT INTO `base_postage_region` -VALUES (2965, 2958, 'W', '吴起', '吴起县', 3, 'wuqi', '717600', 1, '108.17611', '36.92785'); -INSERT INTO `base_postage_region` -VALUES (2966, 2958, 'G', '甘泉', '甘泉县', 3, 'ganquan', '716100', 1, '109.35012', '36.27754'); -INSERT INTO `base_postage_region` -VALUES (2967, 2958, 'F', '富县', '富县', 3, 'fuxian', '727500', 1, '109.37927', '35.98803'); -INSERT INTO `base_postage_region` -VALUES (2968, 2958, 'L', '洛川', '洛川县', 3, 'luochuan', '727400', 1, '109.43286', '35.76076'); -INSERT INTO `base_postage_region` -VALUES (2969, 2958, 'Y', '宜川', '宜川县', 3, 'yichuan', '716200', 1, '110.17196', '36.04732'); -INSERT INTO `base_postage_region` -VALUES (2970, 2958, 'H', '黄龙', '黄龙县', 3, 'huanglong', '715700', 1, '109.84259', '35.58349'); -INSERT INTO `base_postage_region` -VALUES (2971, 2958, 'H', '黄陵', '黄陵县', 3, 'huangling', '727300', 1, '109.26333', '35.58357'); -INSERT INTO `base_postage_region` -VALUES (2972, 2898, 'H', '汉中', '汉中市', 2, 'hanzhong', '723000', 1, '107.028621', '33.077668'); -INSERT INTO `base_postage_region` -VALUES (2973, 2972, 'H', '汉台', '汉台区', 3, 'hantai', '723000', 1, '107.03187', '33.06774'); -INSERT INTO `base_postage_region` -VALUES (2974, 2972, 'N', '南郑', '南郑县', 3, 'nanzheng', '723100', 1, '106.94024', '33.00299'); -INSERT INTO `base_postage_region` -VALUES (2975, 2972, 'C', '城固', '城固县', 3, 'chenggu', '723200', 1, '107.33367', '33.15661'); -INSERT INTO `base_postage_region` -VALUES (2976, 2972, 'Y', '洋县', '洋县', 3, 'yangxian', '723300', 1, '107.54672', '33.22102'); -INSERT INTO `base_postage_region` -VALUES (2977, 2972, 'X', '西乡', '西乡县', 3, 'xixiang', '723500', 1, '107.76867', '32.98411'); -INSERT INTO `base_postage_region` -VALUES (2978, 2972, 'M', '勉县', '勉县', 3, 'mianxian', '724200', 1, '106.67584', '33.15273'); -INSERT INTO `base_postage_region` -VALUES (2979, 2972, 'N', '宁强', '宁强县', 3, 'ningqiang', '724400', 1, '106.25958', '32.82881'); -INSERT INTO `base_postage_region` -VALUES (2980, 2972, 'L', '略阳', '略阳县', 3, 'lueyang', '724300', 1, '106.15399', '33.33009'); -INSERT INTO `base_postage_region` -VALUES (2981, 2972, 'Z', '镇巴', '镇巴县', 3, 'zhenba', '723600', 1, '107.89648', '32.53487'); -INSERT INTO `base_postage_region` -VALUES (2982, 2972, 'L', '留坝', '留坝县', 3, 'liuba', '724100', 1, '106.92233', '33.61606'); -INSERT INTO `base_postage_region` -VALUES (2983, 2972, 'F', '佛坪', '佛坪县', 3, 'foping', '723400', 1, '107.98974', '33.52496'); -INSERT INTO `base_postage_region` -VALUES (2984, 2898, 'Y', '榆林', '榆林市', 2, 'yulin', '719000', 1, '109.741193', '38.290162'); -INSERT INTO `base_postage_region` -VALUES (2985, 2984, 'Y', '榆阳', '榆阳区', 3, 'yuyang', '719000', 1, '109.73473', '38.27843'); -INSERT INTO `base_postage_region` -VALUES (2986, 2984, 'S', '神木', '神木县', 3, 'shenmu', '719300', 1, '110.4989', '38.84234'); -INSERT INTO `base_postage_region` -VALUES (2987, 2984, 'F', '府谷', '府谷县', 3, 'fugu', '719400', 1, '111.06723', '39.02805'); -INSERT INTO `base_postage_region` -VALUES (2988, 2984, 'H', '横山', '横山县', 3, 'hengshan', '719100', 1, '109.29568', '37.958'); -INSERT INTO `base_postage_region` -VALUES (2989, 2984, 'J', '靖边', '靖边县', 3, 'jingbian', '718500', 1, '108.79412', '37.59938'); -INSERT INTO `base_postage_region` -VALUES (2990, 2984, 'D', '定边', '定边县', 3, 'dingbian', '718600', 1, '107.59793', '37.59037'); -INSERT INTO `base_postage_region` -VALUES (2991, 2984, 'S', '绥德', '绥德县', 3, 'suide', '718000', 1, '110.26126', '37.49778'); -INSERT INTO `base_postage_region` -VALUES (2992, 2984, 'M', '米脂', '米脂县', 3, 'mizhi', '718100', 1, '110.18417', '37.75529'); -INSERT INTO `base_postage_region` -VALUES (2993, 2984, 'J', '佳县', '佳县', 3, 'jiaxian', '719200', 1, '110.49362', '38.02248'); -INSERT INTO `base_postage_region` -VALUES (2994, 2984, 'W', '吴堡', '吴堡县', 3, 'wubu', '718200', 1, '110.74533', '37.45709'); -INSERT INTO `base_postage_region` -VALUES (2995, 2984, 'Q', '清涧', '清涧县', 3, 'qingjian', '718300', 1, '110.12173', '37.08854'); -INSERT INTO `base_postage_region` -VALUES (2996, 2984, 'Z', '子洲', '子洲县', 3, 'zizhou', '718400', 1, '110.03488', '37.61238'); -INSERT INTO `base_postage_region` -VALUES (2997, 2898, 'A', '安康', '安康市', 2, 'ankang', '725000', 1, '109.029273', '32.6903'); -INSERT INTO `base_postage_region` -VALUES (2998, 2997, 'H', '汉滨', '汉滨区', 3, 'hanbin', '725000', 1, '109.02683', '32.69517'); -INSERT INTO `base_postage_region` -VALUES (2999, 2997, 'H', '汉阴', '汉阴县', 3, 'hanyin', '725100', 1, '108.51098', '32.89129'); -INSERT INTO `base_postage_region` -VALUES (3000, 2997, 'S', '石泉', '石泉县', 3, 'shiquan', '725200', 1, '108.24755', '33.03971'); -INSERT INTO `base_postage_region` -VALUES (3001, 2997, 'N', '宁陕', '宁陕县', 3, 'ningshan', '711600', 1, '108.31515', '33.31726'); -INSERT INTO `base_postage_region` -VALUES (3002, 2997, 'Z', '紫阳', '紫阳县', 3, 'ziyang', '725300', 1, '108.5368', '32.52115'); -INSERT INTO `base_postage_region` -VALUES (3003, 2997, NULL, '岚皋', '岚皋县', 3, 'langao', '725400', 1, '108.90289', '32.30794'); -INSERT INTO `base_postage_region` -VALUES (3004, 2997, 'P', '平利', '平利县', 3, 'pingli', '725500', 1, '109.35775', '32.39111'); -INSERT INTO `base_postage_region` -VALUES (3005, 2997, 'Z', '镇坪', '镇坪县', 3, 'zhenping', '725600', 1, '109.52456', '31.8833'); -INSERT INTO `base_postage_region` -VALUES (3006, 2997, 'X', '旬阳', '旬阳县', 3, 'xunyang', '725700', 1, '109.3619', '32.83207'); -INSERT INTO `base_postage_region` -VALUES (3007, 2997, 'B', '白河', '白河县', 3, 'baihe', '725800', 1, '110.11315', '32.80955'); -INSERT INTO `base_postage_region` -VALUES (3008, 2898, 'S', '商洛', '商洛市', 2, 'shangluo', '726000', 1, '109.939776', '33.868319'); -INSERT INTO `base_postage_region` -VALUES (3009, 3008, 'S', '商州', '商州区', 3, 'shangzhou', '726000', 1, '109.94126', '33.8627'); -INSERT INTO `base_postage_region` -VALUES (3010, 3008, 'L', '洛南', '洛南县', 3, 'luonan', '726100', 1, '110.14645', '34.08994'); -INSERT INTO `base_postage_region` -VALUES (3011, 3008, 'D', '丹凤', '丹凤县', 3, 'danfeng', '726200', 1, '110.33486', '33.69468'); -INSERT INTO `base_postage_region` -VALUES (3012, 3008, 'S', '商南', '商南县', 3, 'shangnan', '726300', 1, '110.88375', '33.52581'); -INSERT INTO `base_postage_region` -VALUES (3013, 3008, 'S', '山阳', '山阳县', 3, 'shanyang', '726400', 1, '109.88784', '33.52931'); -INSERT INTO `base_postage_region` -VALUES (3014, 3008, 'Z', '镇安', '镇安县', 3, 'zhenan', '711500', 1, '109.15374', '33.42366'); -INSERT INTO `base_postage_region` -VALUES (3015, 3008, 'Z', '柞水', '柞水县', 3, 'zhashui', '711400', 1, '109.11105', '33.6831'); -INSERT INTO `base_postage_region` -VALUES (3016, 2898, 'X', '西咸', '西咸新区', 2, 'xixian', '712000', 1, '108.810654', '34.307144'); -INSERT INTO `base_postage_region` -VALUES (3017, 3016, 'K', '空港', '空港新城', 3, 'konggang', '461000', 1, '108.760529', '34.440894'); -INSERT INTO `base_postage_region` -VALUES (3018, 3016, NULL, '沣东', '沣东新城', 3, 'fengdong', '710000', 1, '108.82988', '34.267431'); -INSERT INTO `base_postage_region` -VALUES (3019, 3016, 'Q', '秦汉', '秦汉新城', 3, 'qinhan', '712000', 1, '108.83812', '34.386513'); -INSERT INTO `base_postage_region` -VALUES (3020, 3016, NULL, '沣西', '沣西新城', 3, 'fengxi', '710000', 1, '108.71215', '34.190453'); -INSERT INTO `base_postage_region` -VALUES (3021, 3016, NULL, '泾河', '泾河新城', 3, 'jinghe', '713700', 1, '109.049603', '34.460587'); -INSERT INTO `base_postage_region` -VALUES (3022, 0, 'G', '甘肃', '甘肃省', 1, 'gansu', '', 1, '103.823557', '36.058039'); -INSERT INTO `base_postage_region` -VALUES (3023, 3022, 'L', '兰州', '兰州市', 2, 'lanzhou', '730030', 1, '103.823557', '36.058039'); -INSERT INTO `base_postage_region` -VALUES (3024, 3023, 'C', '城关', '城关区', 3, 'chengguan', '730030', 1, '103.8252', '36.05725'); -INSERT INTO `base_postage_region` -VALUES (3025, 3023, 'Q', '七里河', '七里河区', 3, 'qilihe', '730050', 1, '103.78564', '36.06585'); -INSERT INTO `base_postage_region` -VALUES (3026, 3023, 'X', '西固', '西固区', 3, 'xigu', '730060', 1, '103.62811', '36.08858'); -INSERT INTO `base_postage_region` -VALUES (3027, 3023, 'A', '安宁', '安宁区', 3, 'anning', '730070', 1, '103.7189', '36.10384'); -INSERT INTO `base_postage_region` -VALUES (3028, 3023, 'H', '红古', '红古区', 3, 'honggu', '730084', 1, '102.85955', '36.34537'); -INSERT INTO `base_postage_region` -VALUES (3029, 3023, 'Y', '永登', '永登县', 3, 'yongdeng', '730300', 1, '103.26055', '36.73522'); -INSERT INTO `base_postage_region` -VALUES (3030, 3023, 'G', '皋兰', '皋兰县', 3, 'gaolan', '730200', 1, '103.94506', '36.33215'); -INSERT INTO `base_postage_region` -VALUES (3031, 3023, 'Y', '榆中', '榆中县', 3, 'yuzhong', '730100', 1, '104.1145', '35.84415'); -INSERT INTO `base_postage_region` -VALUES (3032, 3022, 'J', '嘉峪关', '嘉峪关市', 2, 'jiayuguan', '735100', 1, '98.277304', '39.786529'); -INSERT INTO `base_postage_region` -VALUES (3033, 3032, 'X', '雄关', '雄关区', 3, 'xiongguan', '735100', 1, '98.277398', '39.77925'); -INSERT INTO `base_postage_region` -VALUES (3034, 3032, 'C', '长城', '长城区', 3, 'changcheng', '735106', 1, '98.273523', '39.787431'); -INSERT INTO `base_postage_region` -VALUES (3035, 3032, 'J', '镜铁', '镜铁区', 3, 'jingtie', '735100', 1, '98.277304', '39.786529'); -INSERT INTO `base_postage_region` -VALUES (3036, 3022, 'J', '金昌', '金昌市', 2, 'jinchang', '737100', 1, '102.187888', '38.514238'); -INSERT INTO `base_postage_region` -VALUES (3037, 3036, 'J', '金川', '金川区', 3, 'jinchuan', '737100', 1, '102.19376', '38.52101'); -INSERT INTO `base_postage_region` -VALUES (3038, 3036, 'Y', '永昌', '永昌县', 3, 'yongchang', '737200', 1, '101.97222', '38.24711'); -INSERT INTO `base_postage_region` -VALUES (3039, 3022, 'B', '白银', '白银市', 2, 'baiyin', '730900', 1, '104.173606', '36.54568'); -INSERT INTO `base_postage_region` -VALUES (3040, 3039, 'B', '白银', '白银区', 3, 'baiyin', '730900', 1, '104.17355', '36.54411'); -INSERT INTO `base_postage_region` -VALUES (3041, 3039, 'P', '平川', '平川区', 3, 'pingchuan', '730913', 1, '104.82498', '36.7277'); -INSERT INTO `base_postage_region` -VALUES (3042, 3039, 'J', '靖远', '靖远县', 3, 'jingyuan', '730600', 1, '104.68325', '36.56602'); -INSERT INTO `base_postage_region` -VALUES (3043, 3039, 'H', '会宁', '会宁县', 3, 'huining', '730700', 1, '105.05297', '35.69626'); -INSERT INTO `base_postage_region` -VALUES (3044, 3039, 'J', '景泰', '景泰县', 3, 'jingtai', '730400', 1, '104.06295', '37.18359'); -INSERT INTO `base_postage_region` -VALUES (3045, 3022, 'T', '天水', '天水市', 2, 'tianshui', '741000', 1, '105.724998', '34.578529'); -INSERT INTO `base_postage_region` -VALUES (3046, 3045, 'Q', '秦州', '秦州区', 3, 'qinzhou', '741000', 1, '105.72421', '34.58089'); -INSERT INTO `base_postage_region` -VALUES (3047, 3045, 'M', '麦积', '麦积区', 3, 'maiji', '741020', 1, '105.89013', '34.57069'); -INSERT INTO `base_postage_region` -VALUES (3048, 3045, 'Q', '清水', '清水县', 3, 'qingshui', '741400', 1, '106.13671', '34.75032'); -INSERT INTO `base_postage_region` -VALUES (3049, 3045, 'Q', '秦安', '秦安县', 3, 'qinan', '741600', 1, '105.66955', '34.85894'); -INSERT INTO `base_postage_region` -VALUES (3050, 3045, 'G', '甘谷', '甘谷县', 3, 'gangu', '741200', 1, '105.33291', '34.73665'); -INSERT INTO `base_postage_region` -VALUES (3051, 3045, 'W', '武山', '武山县', 3, 'wushan', '741300', 1, '104.88382', '34.72123'); -INSERT INTO `base_postage_region` -VALUES (3052, 3045, 'Z', '张家川', '张家川回族自治县', 3, 'zhangjiachuan', '741500', 1, '106.21582', '34.99582'); -INSERT INTO `base_postage_region` -VALUES (3053, 3022, 'W', '武威', '武威市', 2, 'wuwei', '733000', 1, '102.634697', '37.929996'); -INSERT INTO `base_postage_region` -VALUES (3054, 3053, 'L', '凉州', '凉州区', 3, 'liangzhou', '733000', 1, '102.64203', '37.92832'); -INSERT INTO `base_postage_region` -VALUES (3055, 3053, 'M', '民勤', '民勤县', 3, 'minqin', '733300', 1, '103.09011', '38.62487'); -INSERT INTO `base_postage_region` -VALUES (3056, 3053, 'G', '古浪', '古浪县', 3, 'gulang', '733100', 1, '102.89154', '37.46508'); -INSERT INTO `base_postage_region` -VALUES (3057, 3053, 'T', '天祝', '天祝藏族自治县', 3, 'tianzhu', '733200', 1, '103.1361', '36.97715'); -INSERT INTO `base_postage_region` -VALUES (3058, 3022, 'Z', '张掖', '张掖市', 2, 'zhangye', '734000', 1, '100.455472', '38.932897'); -INSERT INTO `base_postage_region` -VALUES (3059, 3058, 'G', '甘州', '甘州区', 3, 'ganzhou', '734000', 1, '100.4527', '38.92947'); -INSERT INTO `base_postage_region` -VALUES (3060, 3058, 'S', '肃南', '肃南裕固族自治县', 3, 'sunan', '734400', 1, '99.61407', '38.83776'); -INSERT INTO `base_postage_region` -VALUES (3061, 3058, 'M', '民乐', '民乐县', 3, 'minle', '734500', 1, '100.81091', '38.43479'); -INSERT INTO `base_postage_region` -VALUES (3062, 3058, 'L', '临泽', '临泽县', 3, 'linze', '734200', 1, '100.16445', '39.15252'); -INSERT INTO `base_postage_region` -VALUES (3063, 3058, 'G', '高台', '高台县', 3, 'gaotai', '734300', 1, '99.81918', '39.37829'); -INSERT INTO `base_postage_region` -VALUES (3064, 3058, 'S', '山丹', '山丹县', 3, 'shandan', '734100', 1, '101.09359', '38.78468'); -INSERT INTO `base_postage_region` -VALUES (3065, 3022, 'P', '平凉', '平凉市', 2, 'pingliang', '744000', 1, '106.684691', '35.54279'); -INSERT INTO `base_postage_region` -VALUES (3066, 3065, NULL, '崆峒', '崆峒区', 3, 'kongtong', '744000', 1, '106.67483', '35.54262'); -INSERT INTO `base_postage_region` -VALUES (3067, 3065, NULL, '泾川', '泾川县', 3, 'jingchuan', '744300', 1, '107.36581', '35.33223'); -INSERT INTO `base_postage_region` -VALUES (3068, 3065, 'L', '灵台', '灵台县', 3, 'lingtai', '744400', 1, '107.6174', '35.06768'); -INSERT INTO `base_postage_region` -VALUES (3069, 3065, 'C', '崇信', '崇信县', 3, 'chongxin', '744200', 1, '107.03738', '35.30344'); -INSERT INTO `base_postage_region` -VALUES (3070, 3065, 'H', '华亭', '华亭县', 3, 'huating', '744100', 1, '106.65463', '35.2183'); -INSERT INTO `base_postage_region` -VALUES (3071, 3065, 'Z', '庄浪', '庄浪县', 3, 'zhuanglang', '744600', 1, '106.03662', '35.20235'); -INSERT INTO `base_postage_region` -VALUES (3072, 3065, 'J', '静宁', '静宁县', 3, 'jingning', '743400', 1, '105.72723', '35.51991'); -INSERT INTO `base_postage_region` -VALUES (3073, 3022, 'J', '酒泉', '酒泉市', 2, 'jiuquan', '735000', 1, '98.510795', '39.744023'); -INSERT INTO `base_postage_region` -VALUES (3074, 3073, 'S', '肃州', '肃州区', 3, 'suzhou', '735000', 1, '98.50775', '39.74506'); -INSERT INTO `base_postage_region` -VALUES (3075, 3073, 'J', '金塔', '金塔县', 3, 'jinta', '735300', 1, '98.90002', '39.97733'); -INSERT INTO `base_postage_region` -VALUES (3076, 3073, 'G', '瓜州', '瓜州县', 3, 'guazhou', '736100', 1, '95.78271', '40.51548'); -INSERT INTO `base_postage_region` -VALUES (3077, 3073, 'S', '肃北', '肃北蒙古族自治县', 3, 'subei', '736300', 1, '94.87649', '39.51214'); -INSERT INTO `base_postage_region` -VALUES (3078, 3073, 'A', '阿克塞', '阿克塞哈萨克族自治县', 3, 'akesai', '736400', 1, '94.34097', '39.63435'); -INSERT INTO `base_postage_region` -VALUES (3079, 3073, 'Y', '玉门', '玉门市', 3, 'yumen', '735200', 1, '97.04538', '40.29172'); -INSERT INTO `base_postage_region` -VALUES (3080, 3073, 'D', '敦煌', '敦煌市', 3, 'dunhuang', '736200', 1, '94.66159', '40.14211'); -INSERT INTO `base_postage_region` -VALUES (3081, 3022, 'Q', '庆阳', '庆阳市', 2, 'qingyang', '745000', 1, '107.638372', '35.734218'); -INSERT INTO `base_postage_region` -VALUES (3082, 3081, 'X', '西峰', '西峰区', 3, 'xifeng', '745000', 1, '107.65107', '35.73065'); -INSERT INTO `base_postage_region` -VALUES (3083, 3081, 'Q', '庆城', '庆城县', 3, 'qingcheng', '745100', 1, '107.88272', '36.01507'); -INSERT INTO `base_postage_region` -VALUES (3084, 3081, 'H', '环县', '环县', 3, 'huanxian', '745700', 1, '107.30835', '36.56846'); -INSERT INTO `base_postage_region` -VALUES (3085, 3081, 'H', '华池', '华池县', 3, 'huachi', '745600', 1, '107.9891', '36.46108'); -INSERT INTO `base_postage_region` -VALUES (3086, 3081, 'H', '合水', '合水县', 3, 'heshui', '745400', 1, '108.02032', '35.81911'); -INSERT INTO `base_postage_region` -VALUES (3087, 3081, 'Z', '正宁', '正宁县', 3, 'zhengning', '745300', 1, '108.36007', '35.49174'); -INSERT INTO `base_postage_region` -VALUES (3088, 3081, 'N', '宁县', '宁县', 3, 'ningxian', '745200', 1, '107.92517', '35.50164'); -INSERT INTO `base_postage_region` -VALUES (3089, 3081, 'Z', '镇原', '镇原县', 3, 'zhenyuan', '744500', 1, '107.199', '35.67712'); -INSERT INTO `base_postage_region` -VALUES (3090, 3022, 'D', '定西', '定西市', 2, 'dingxi', '743000', 1, '104.626294', '35.579578'); -INSERT INTO `base_postage_region` -VALUES (3091, 3090, 'A', '安定', '安定区', 3, 'anding', '743000', 1, '104.6106', '35.58066'); -INSERT INTO `base_postage_region` -VALUES (3092, 3090, 'T', '通渭', '通渭县', 3, 'tongwei', '743300', 1, '105.24224', '35.21101'); -INSERT INTO `base_postage_region` -VALUES (3093, 3090, 'L', '陇西', '陇西县', 3, 'longxi', '748100', 1, '104.63446', '35.00238'); -INSERT INTO `base_postage_region` -VALUES (3094, 3090, 'W', '渭源', '渭源县', 3, 'weiyuan', '748200', 1, '104.21435', '35.13649'); -INSERT INTO `base_postage_region` -VALUES (3095, 3090, 'L', '临洮', '临洮县', 3, 'lintao', '730500', 1, '103.86196', '35.3751'); -INSERT INTO `base_postage_region` -VALUES (3096, 3090, 'Z', '漳县', '漳县', 3, 'zhangxian', '748300', 1, '104.46704', '34.84977'); -INSERT INTO `base_postage_region` -VALUES (3097, 3090, NULL, '岷县', '岷县', 3, 'minxian', '748400', 1, '104.03772', '34.43444'); -INSERT INTO `base_postage_region` -VALUES (3098, 3022, 'L', '陇南', '陇南市', 2, 'longnan', '746000', 1, '104.929379', '33.388598'); -INSERT INTO `base_postage_region` -VALUES (3099, 3098, 'W', '武都', '武都区', 3, 'wudu', '746000', 1, '104.92652', '33.39239'); -INSERT INTO `base_postage_region` -VALUES (3100, 3098, 'C', '成县', '成县', 3, 'chengxian', '742500', 1, '105.72586', '33.73925'); -INSERT INTO `base_postage_region` -VALUES (3101, 3098, 'W', '文县', '文县', 3, 'wenxian', '746400', 1, '104.68362', '32.94337'); -INSERT INTO `base_postage_region` -VALUES (3102, 3098, NULL, '宕昌', '宕昌县', 3, 'dangchang', '748500', 1, '104.39349', '34.04732'); -INSERT INTO `base_postage_region` -VALUES (3103, 3098, 'K', '康县', '康县', 3, 'kangxian', '746500', 1, '105.60711', '33.32912'); -INSERT INTO `base_postage_region` -VALUES (3104, 3098, 'X', '西和', '西和县', 3, 'xihe', '742100', 1, '105.30099', '34.01432'); -INSERT INTO `base_postage_region` -VALUES (3105, 3098, 'L', '礼县', '礼县', 3, 'lixian', '742200', 1, '105.17785', '34.18935'); -INSERT INTO `base_postage_region` -VALUES (3106, 3098, 'H', '徽县', '徽县', 3, 'huixian', '742300', 1, '106.08529', '33.76898'); -INSERT INTO `base_postage_region` -VALUES (3107, 3098, 'L', '两当', '两当县', 3, 'liangdang', '742400', 1, '106.30484', '33.9096'); -INSERT INTO `base_postage_region` -VALUES (3108, 3022, 'L', '临夏', '临夏回族自治州', 2, 'linxia', '731100', 1, '103.212006', '35.599446'); -INSERT INTO `base_postage_region` -VALUES (3109, 3108, 'L', '临夏', '临夏市', 3, 'linxia', '731100', 1, '103.21', '35.59916'); -INSERT INTO `base_postage_region` -VALUES (3110, 3108, 'L', '临夏', '临夏县', 3, 'linxia', '731800', 1, '102.9938', '35.49519'); -INSERT INTO `base_postage_region` -VALUES (3111, 3108, 'K', '康乐', '康乐县', 3, 'kangle', '731500', 1, '103.71093', '35.37219'); -INSERT INTO `base_postage_region` -VALUES (3112, 3108, 'Y', '永靖', '永靖县', 3, 'yongjing', '731600', 1, '103.32043', '35.93835'); -INSERT INTO `base_postage_region` -VALUES (3113, 3108, 'G', '广河', '广河县', 3, 'guanghe', '731300', 1, '103.56933', '35.48097'); -INSERT INTO `base_postage_region` -VALUES (3114, 3108, 'H', '和政', '和政县', 3, 'hezheng', '731200', 1, '103.34936', '35.42592'); -INSERT INTO `base_postage_region` -VALUES (3115, 3108, 'D', '东乡族', '东乡族自治县', 3, 'dongxiangzu', '731400', 1, '103.39477', '35.66471'); -INSERT INTO `base_postage_region` -VALUES (3116, 3108, 'J', '积石山', '积石山保安族东乡族撒拉族自治县', 3, 'jishishan', '731700', 1, '102.87374', '35.7182'); -INSERT INTO `base_postage_region` -VALUES (3117, 3022, 'G', '甘南', '甘南藏族自治州', 2, 'gannan', '747000', 1, '102.911008', '34.986354'); -INSERT INTO `base_postage_region` -VALUES (3118, 3117, 'H', '合作', '合作市', 3, 'hezuo', '747000', 1, '102.91082', '35.00016'); -INSERT INTO `base_postage_region` -VALUES (3119, 3117, 'L', '临潭', '临潭县', 3, 'lintan', '747500', 1, '103.35287', '34.69515'); -INSERT INTO `base_postage_region` -VALUES (3120, 3117, 'Z', '卓尼', '卓尼县', 3, 'zhuoni', '747600', 1, '103.50811', '34.58919'); -INSERT INTO `base_postage_region` -VALUES (3121, 3117, 'Z', '舟曲', '舟曲县', 3, 'zhouqu', '746300', 1, '104.37155', '33.78468'); -INSERT INTO `base_postage_region` -VALUES (3122, 3117, 'D', '迭部', '迭部县', 3, 'diebu', '747400', 1, '103.22274', '34.05623'); -INSERT INTO `base_postage_region` -VALUES (3123, 3117, 'M', '玛曲', '玛曲县', 3, 'maqu', '747300', 1, '102.0754', '33.997'); -INSERT INTO `base_postage_region` -VALUES (3124, 3117, 'L', '碌曲', '碌曲县', 3, 'luqu', '747200', 1, '102.49176', '34.58872'); -INSERT INTO `base_postage_region` -VALUES (3125, 3117, 'X', '夏河', '夏河县', 3, 'xiahe', '747100', 1, '102.52215', '35.20487'); -INSERT INTO `base_postage_region` -VALUES (3126, 0, 'Q', '青海', '青海省', 1, 'qinghai', '', 1, '101.778916', '36.623178'); -INSERT INTO `base_postage_region` -VALUES (3127, 3126, 'X', '西宁', '西宁市', 2, 'xining', '810000', 1, '101.778916', '36.623178'); -INSERT INTO `base_postage_region` -VALUES (3128, 3127, 'C', '城东', '城东区', 3, 'chengdong', '810007', 1, '101.80373', '36.59969'); -INSERT INTO `base_postage_region` -VALUES (3129, 3127, 'C', '城中', '城中区', 3, 'chengzhong', '810000', 1, '101.78394', '36.62279'); -INSERT INTO `base_postage_region` -VALUES (3130, 3127, 'C', '城西', '城西区', 3, 'chengxi', '810001', 1, '101.76588', '36.62828'); -INSERT INTO `base_postage_region` -VALUES (3131, 3127, 'C', '城北', '城北区', 3, 'chengbei', '810003', 1, '101.7662', '36.65014'); -INSERT INTO `base_postage_region` -VALUES (3132, 3127, 'D', '大通', '大通回族土族自治县', 3, 'datong', '810100', 1, '101.70236', '36.93489'); -INSERT INTO `base_postage_region` -VALUES (3133, 3127, NULL, '湟中', '湟中县', 3, 'huangzhong', '811600', 1, '101.57159', '36.50083'); -INSERT INTO `base_postage_region` -VALUES (3134, 3127, NULL, '湟源', '湟源县', 3, 'huangyuan', '812100', 1, '101.25643', '36.68243'); -INSERT INTO `base_postage_region` -VALUES (3135, 3126, 'H', '海东', '海东市', 2, 'haidong', '810700', 1, '102.10327', '36.502916'); -INSERT INTO `base_postage_region` -VALUES (3136, 3135, 'L', '乐都', '乐都区', 3, 'ledu', '810700', 1, '102.402431', '36.480291'); -INSERT INTO `base_postage_region` -VALUES (3137, 3135, 'P', '平安', '平安县', 3, 'pingan', '810600', 1, '102.104295', '36.502714'); -INSERT INTO `base_postage_region` -VALUES (3138, 3135, 'M', '民和', '民和回族土族自治县', 3, 'minhe', '810800', 1, '102.804209', '36.329451'); -INSERT INTO `base_postage_region` -VALUES (3139, 3135, 'H', '互助', '互助土族自治县', 3, 'huzhu', '810500', 1, '101.956734', '36.83994'); -INSERT INTO `base_postage_region` -VALUES (3140, 3135, 'H', '化隆', '化隆回族自治县', 3, 'hualong', '810900', 1, '102.262329', '36.098322'); -INSERT INTO `base_postage_region` -VALUES (3141, 3135, 'X', '循化', '循化撒拉族自治县', 3, 'xunhua', '811100', 1, '102.486534', '35.847247'); -INSERT INTO `base_postage_region` -VALUES (3142, 3126, 'H', '海北', '海北藏族自治州', 2, 'haibei', '812200', 1, '100.901059', '36.959435'); -INSERT INTO `base_postage_region` -VALUES (3143, 3142, 'M', '门源', '门源回族自治县', 3, 'menyuan', '810300', 1, '101.62228', '37.37611'); -INSERT INTO `base_postage_region` -VALUES (3144, 3142, 'Q', '祁连', '祁连县', 3, 'qilian', '810400', 1, '100.24618', '38.17901'); -INSERT INTO `base_postage_region` -VALUES (3145, 3142, 'H', '海晏', '海晏县', 3, 'haiyan', '812200', 1, '100.9927', '36.89902'); -INSERT INTO `base_postage_region` -VALUES (3146, 3142, 'G', '刚察', '刚察县', 3, 'gangcha', '812300', 1, '100.14675', '37.32161'); -INSERT INTO `base_postage_region` -VALUES (3147, 3126, 'H', '黄南', '黄南藏族自治州', 2, 'huangnan', '811300', 1, '102.019988', '35.517744'); -INSERT INTO `base_postage_region` -VALUES (3148, 3147, 'T', '同仁', '同仁县', 3, 'tongren', '811300', 1, '102.0184', '35.51603'); -INSERT INTO `base_postage_region` -VALUES (3149, 3147, 'J', '尖扎', '尖扎县', 3, 'jianzha', '811200', 1, '102.03411', '35.93947'); -INSERT INTO `base_postage_region` -VALUES (3150, 3147, 'Z', '泽库', '泽库县', 3, 'zeku', '811400', 1, '101.46444', '35.03519'); -INSERT INTO `base_postage_region` -VALUES (3151, 3147, 'H', '河南', '河南蒙古族自治县', 3, 'henan', '811500', 1, '101.60864', '34.73476'); -INSERT INTO `base_postage_region` -VALUES (3152, 3126, 'H', '海南', '海南藏族自治州', 2, 'hainan', '813000', 1, '100.619542', '36.280353'); -INSERT INTO `base_postage_region` -VALUES (3153, 3152, 'G', '共和', '共和县', 3, 'gonghe', '813000', 1, '100.62003', '36.2841'); -INSERT INTO `base_postage_region` -VALUES (3154, 3152, 'T', '同德', '同德县', 3, 'tongde', '813200', 1, '100.57159', '35.25488'); -INSERT INTO `base_postage_region` -VALUES (3155, 3152, 'G', '贵德', '贵德县', 3, 'guide', '811700', 1, '101.432', '36.044'); -INSERT INTO `base_postage_region` -VALUES (3156, 3152, 'X', '兴海', '兴海县', 3, 'xinghai', '813300', 1, '99.98846', '35.59031'); -INSERT INTO `base_postage_region` -VALUES (3157, 3152, 'G', '贵南', '贵南县', 3, 'guinan', '813100', 1, '100.74716', '35.58667'); -INSERT INTO `base_postage_region` -VALUES (3158, 3126, 'G', '果洛', '果洛藏族自治州', 2, 'golog', '814000', 1, '100.242143', '34.4736'); -INSERT INTO `base_postage_region` -VALUES (3159, 3158, 'M', '玛沁', '玛沁县', 3, 'maqin', '814000', 1, '100.23901', '34.47746'); -INSERT INTO `base_postage_region` -VALUES (3160, 3158, 'B', '班玛', '班玛县', 3, 'banma', '814300', 1, '100.73745', '32.93253'); -INSERT INTO `base_postage_region` -VALUES (3161, 3158, 'G', '甘德', '甘德县', 3, 'gande', '814100', 1, '99.90246', '33.96838'); -INSERT INTO `base_postage_region` -VALUES (3162, 3158, 'D', '达日', '达日县', 3, 'dari', '814200', 1, '99.65179', '33.75193'); -INSERT INTO `base_postage_region` -VALUES (3163, 3158, 'J', '久治', '久治县', 3, 'jiuzhi', '624700', 1, '101.48342', '33.42989'); -INSERT INTO `base_postage_region` -VALUES (3164, 3158, 'M', '玛多', '玛多县', 3, 'maduo', '813500', 1, '98.20996', '34.91567'); -INSERT INTO `base_postage_region` -VALUES (3165, 3126, 'Y', '玉树', '玉树藏族自治州', 2, 'yushu', '815000', 1, '97.008522', '33.004049'); -INSERT INTO `base_postage_region` -VALUES (3166, 3165, 'Y', '玉树', '玉树市', 3, 'yushu', '815000', 1, '97.008762', '33.00393'); -INSERT INTO `base_postage_region` -VALUES (3167, 3165, 'Z', '杂多', '杂多县', 3, 'zaduo', '815300', 1, '95.29864', '32.89318'); -INSERT INTO `base_postage_region` -VALUES (3168, 3165, 'C', '称多', '称多县', 3, 'chenduo', '815100', 1, '97.10788', '33.36899'); -INSERT INTO `base_postage_region` -VALUES (3169, 3165, 'Z', '治多', '治多县', 3, 'zhiduo', '815400', 1, '95.61572', '33.8528'); -INSERT INTO `base_postage_region` -VALUES (3170, 3165, 'N', '囊谦', '囊谦县', 3, 'nangqian', '815200', 1, '96.47753', '32.20359'); -INSERT INTO `base_postage_region` -VALUES (3171, 3165, 'Q', '曲麻莱', '曲麻莱县', 3, 'qumalai', '815500', 1, '95.79757', '34.12609'); -INSERT INTO `base_postage_region` -VALUES (3172, 3126, 'H', '海西', '海西蒙古族藏族自治州', 2, 'haixi', '817000', 1, '97.370785', '37.374663'); -INSERT INTO `base_postage_region` -VALUES (3173, 3172, 'G', '格尔木', '格尔木市', 3, 'geermu', '816000', 1, '94.90329', '36.40236'); -INSERT INTO `base_postage_region` -VALUES (3174, 3172, 'D', '德令哈', '德令哈市', 3, 'delingha', '817000', 1, '97.36084', '37.36946'); -INSERT INTO `base_postage_region` -VALUES (3175, 3172, 'W', '乌兰', '乌兰县', 3, 'wulan', '817100', 1, '98.48196', '36.93471'); -INSERT INTO `base_postage_region` -VALUES (3176, 3172, 'D', '都兰', '都兰县', 3, 'dulan', '816100', 1, '98.09228', '36.30135'); -INSERT INTO `base_postage_region` -VALUES (3177, 3172, 'T', '天峻', '天峻县', 3, 'tianjun', '817200', 1, '99.02453', '37.30326'); -INSERT INTO `base_postage_region` -VALUES (3178, 0, 'N', '宁夏', '宁夏回族自治区', 1, 'ningxia', '', 1, '106.278179', '38.46637'); -INSERT INTO `base_postage_region` -VALUES (3179, 3178, 'Y', '银川', '银川市', 2, 'yinchuan', '750004', 1, '106.278179', '38.46637'); -INSERT INTO `base_postage_region` -VALUES (3180, 3179, 'X', '兴庆', '兴庆区', 3, 'xingqing', '750001', 1, '106.28872', '38.47392'); -INSERT INTO `base_postage_region` -VALUES (3181, 3179, 'X', '西夏', '西夏区', 3, 'xixia', '750021', 1, '106.15023', '38.49137'); -INSERT INTO `base_postage_region` -VALUES (3182, 3179, 'J', '金凤', '金凤区', 3, 'jinfeng', '750011', 1, '106.24261', '38.47294'); -INSERT INTO `base_postage_region` -VALUES (3183, 3179, 'Y', '永宁', '永宁县', 3, 'yongning', '750100', 1, '106.2517', '38.27559'); -INSERT INTO `base_postage_region` -VALUES (3184, 3179, 'H', '贺兰', '贺兰县', 3, 'helan', '750200', 1, '106.34982', '38.5544'); -INSERT INTO `base_postage_region` -VALUES (3185, 3179, 'L', '灵武', '灵武市', 3, 'lingwu', '750004', 1, '106.33999', '38.10266'); -INSERT INTO `base_postage_region` -VALUES (3186, 3178, 'S', '石嘴山', '石嘴山市', 2, 'shizuishan', '753000', 1, '106.376173', '39.01333'); -INSERT INTO `base_postage_region` -VALUES (3187, 3186, 'D', '大武口', '大武口区', 3, 'dawukou', '753000', 1, '106.37717', '39.01226'); -INSERT INTO `base_postage_region` -VALUES (3188, 3186, 'H', '惠农', '惠农区', 3, 'huinong', '753600', 1, '106.71145', '39.13193'); -INSERT INTO `base_postage_region` -VALUES (3189, 3186, 'P', '平罗', '平罗县', 3, 'pingluo', '753400', 1, '106.54538', '38.90429'); -INSERT INTO `base_postage_region` -VALUES (3190, 3178, 'W', '吴忠', '吴忠市', 2, 'wuzhong', '751100', 1, '106.199409', '37.986165'); -INSERT INTO `base_postage_region` -VALUES (3191, 3190, 'L', '利通', '利通区', 3, 'litong', '751100', 1, '106.20311', '37.98512'); -INSERT INTO `base_postage_region` -VALUES (3192, 3190, 'H', '红寺堡', '红寺堡区', 3, 'hongsibao', '751900', 1, '106.19822', '37.99747'); -INSERT INTO `base_postage_region` -VALUES (3193, 3190, 'Y', '盐池', '盐池县', 3, 'yanchi', '751500', 1, '107.40707', '37.7833'); -INSERT INTO `base_postage_region` -VALUES (3194, 3190, 'T', '同心', '同心县', 3, 'tongxin', '751300', 1, '105.91418', '36.98116'); -INSERT INTO `base_postage_region` -VALUES (3195, 3190, 'Q', '青铜峡', '青铜峡市', 3, 'qingtongxia', '751600', 1, '106.07489', '38.02004'); -INSERT INTO `base_postage_region` -VALUES (3196, 3178, 'G', '固原', '固原市', 2, 'guyuan', '756000', 1, '106.285241', '36.004561'); -INSERT INTO `base_postage_region` -VALUES (3197, 3196, 'Y', '原州', '原州区', 3, 'yuanzhou', '756000', 1, '106.28778', '36.00374'); -INSERT INTO `base_postage_region` -VALUES (3198, 3196, 'X', '西吉', '西吉县', 3, 'xiji', '756200', 1, '105.73107', '35.96616'); -INSERT INTO `base_postage_region` -VALUES (3199, 3196, 'L', '隆德', '隆德县', 3, 'longde', '756300', 1, '106.12426', '35.61718'); -INSERT INTO `base_postage_region` -VALUES (3200, 3196, NULL, '泾源', '泾源县', 3, 'jingyuan', '756400', 1, '106.33902', '35.49072'); -INSERT INTO `base_postage_region` -VALUES (3201, 3196, 'P', '彭阳', '彭阳县', 3, 'pengyang', '756500', 1, '106.64462', '35.85076'); -INSERT INTO `base_postage_region` -VALUES (3202, 3178, 'Z', '中卫', '中卫市', 2, 'zhongwei', '751700', 1, '105.189568', '37.514951'); -INSERT INTO `base_postage_region` -VALUES (3203, 3202, 'S', '沙坡头', '沙坡头区', 3, 'shapotou', '755000', 1, '105.18962', '37.51044'); -INSERT INTO `base_postage_region` -VALUES (3204, 3202, 'Z', '中宁', '中宁县', 3, 'zhongning', '751200', 1, '105.68515', '37.49149'); -INSERT INTO `base_postage_region` -VALUES (3205, 3202, 'H', '海原', '海原县', 3, 'haiyuan', '751800', 1, '105.64712', '36.56498'); -INSERT INTO `base_postage_region` -VALUES (3206, 0, 'X', '新疆', '新疆维吾尔自治区', 1, 'xinjiang', '', 1, '87.617733', '43.792818'); -INSERT INTO `base_postage_region` -VALUES (3207, 3206, 'W', '乌鲁木齐', '乌鲁木齐市', 2, 'urumqi', '830002', 1, '87.617733', '43.792818'); -INSERT INTO `base_postage_region` -VALUES (3208, 3207, 'T', '天山', '天山区', 3, 'tianshan', '830002', 1, '87.63167', '43.79439'); -INSERT INTO `base_postage_region` -VALUES (3209, 3207, 'S', '沙依巴克', '沙依巴克区', 3, 'shayibake', '830000', 1, '87.59788', '43.80118'); -INSERT INTO `base_postage_region` -VALUES (3210, 3207, 'X', '新市', '新市区', 3, 'xinshi', '830011', 1, '87.57406', '43.84348'); -INSERT INTO `base_postage_region` -VALUES (3211, 3207, 'S', '水磨沟', '水磨沟区', 3, 'shuimogou', '830017', 1, '87.64249', '43.83247'); -INSERT INTO `base_postage_region` -VALUES (3212, 3207, 'T', '头屯河', '头屯河区', 3, 'toutunhe', '830022', 1, '87.29138', '43.85487'); -INSERT INTO `base_postage_region` -VALUES (3213, 3207, 'D', '达坂城', '达坂城区', 3, 'dabancheng', '830039', 1, '88.30697', '43.35797'); -INSERT INTO `base_postage_region` -VALUES (3214, 3207, 'M', '米东', '米东区', 3, 'midong', '830019', 1, '87.68583', '43.94739'); -INSERT INTO `base_postage_region` -VALUES (3215, 3207, 'W', '乌鲁木齐', '乌鲁木齐县', 3, 'wulumuqi', '830063', 1, '87.40939', '43.47125'); -INSERT INTO `base_postage_region` -VALUES (3216, 3206, 'K', '克拉玛依', '克拉玛依市', 2, 'karamay', '834000', 1, '84.873946', '45.595886'); -INSERT INTO `base_postage_region` -VALUES (3217, 3216, 'D', '独山子', '独山子区', 3, 'dushanzi', '834021', 1, '84.88671', '44.32867'); -INSERT INTO `base_postage_region` -VALUES (3218, 3216, 'K', '克拉玛依', '克拉玛依区', 3, 'kelamayi', '834000', 1, '84.86225', '45.59089'); -INSERT INTO `base_postage_region` -VALUES (3219, 3216, 'B', '白碱滩', '白碱滩区', 3, 'baijiantan', '834008', 1, '85.13244', '45.68768'); -INSERT INTO `base_postage_region` -VALUES (3220, 3216, 'W', '乌尔禾', '乌尔禾区', 3, 'wuerhe', '834012', 1, '85.69143', '46.09006'); -INSERT INTO `base_postage_region` -VALUES (3221, 3206, 'T', '吐鲁番', '吐鲁番地区', 2, 'turpan', '838000', 1, '89.184078', '42.947613'); -INSERT INTO `base_postage_region` -VALUES (3222, 3221, 'T', '吐鲁番', '吐鲁番市', 3, 'tulufan', '838000', 1, '89.18579', '42.93505'); -INSERT INTO `base_postage_region` -VALUES (3223, 3221, NULL, '鄯善', '鄯善县', 3, 'shanshan', '838200', 1, '90.21402', '42.8635'); -INSERT INTO `base_postage_region` -VALUES (3224, 3221, 'T', '托克逊', '托克逊县', 3, 'tuokexun', '838100', 1, '88.65823', '42.79231'); -INSERT INTO `base_postage_region` -VALUES (3225, 3206, 'H', '哈密', '哈密地区', 2, 'hami', '839000', 1, '93.51316', '42.833248'); -INSERT INTO `base_postage_region` -VALUES (3226, 3225, 'H', '哈密', '哈密市', 3, 'hami', '839000', 1, '93.51452', '42.82699'); -INSERT INTO `base_postage_region` -VALUES (3227, 3225, 'B', '巴里坤', '巴里坤哈萨克自治县', 3, 'balikun', '839200', 1, '93.01236', '43.59993'); -INSERT INTO `base_postage_region` -VALUES (3228, 3225, 'Y', '伊吾', '伊吾县', 3, 'yiwu', '839300', 1, '94.69403', '43.2537'); -INSERT INTO `base_postage_region` -VALUES (3229, 3206, 'C', '昌吉', '昌吉回族自治州', 2, 'changji', '831100', 1, '87.304012', '44.014577'); -INSERT INTO `base_postage_region` -VALUES (3230, 3229, 'C', '昌吉', '昌吉市', 3, 'changji', '831100', 1, '87.30249', '44.01267'); -INSERT INTO `base_postage_region` -VALUES (3231, 3229, 'F', '阜康', '阜康市', 3, 'fukang', '831500', 1, '87.98529', '44.1584'); -INSERT INTO `base_postage_region` -VALUES (3232, 3229, 'H', '呼图壁', '呼图壁县', 3, 'hutubi', '831200', 1, '86.89892', '44.18977'); -INSERT INTO `base_postage_region` -VALUES (3233, 3229, 'M', '玛纳斯', '玛纳斯县', 3, 'manasi', '832200', 1, '86.2145', '44.30438'); -INSERT INTO `base_postage_region` -VALUES (3234, 3229, 'Q', '奇台', '奇台县', 3, 'qitai', '831800', 1, '89.5932', '44.02221'); -INSERT INTO `base_postage_region` -VALUES (3235, 3229, 'J', '吉木萨尔', '吉木萨尔县', 3, 'jimusaer', '831700', 1, '89.18078', '44.00048'); -INSERT INTO `base_postage_region` -VALUES (3236, 3229, 'M', '木垒', '木垒哈萨克自治县', 3, 'mulei', '831900', 1, '90.28897', '43.83508'); -INSERT INTO `base_postage_region` -VALUES (3237, 3206, 'B', '博尔塔拉', '博尔塔拉蒙古自治州', 2, 'bortala', '833400', 1, '82.074778', '44.903258'); -INSERT INTO `base_postage_region` -VALUES (3238, 3237, 'B', '博乐', '博乐市', 3, 'bole', '833400', 1, '82.0713', '44.90052'); -INSERT INTO `base_postage_region` -VALUES (3239, 3237, 'A', '阿拉山口', '阿拉山口市', 3, 'alashankou', '833400', 1, '82.567721', '45.170616'); -INSERT INTO `base_postage_region` -VALUES (3240, 3237, 'J', '精河', '精河县', 3, 'jinghe', '833300', 1, '82.89419', '44.60774'); -INSERT INTO `base_postage_region` -VALUES (3241, 3237, 'W', '温泉', '温泉县', 3, 'wenquan', '833500', 1, '81.03134', '44.97373'); -INSERT INTO `base_postage_region` -VALUES (3242, 3206, 'B', '巴音郭楞', '巴音郭楞蒙古自治州', 2, 'bayingol', '841000', 1, '86.150969', '41.768552'); -INSERT INTO `base_postage_region` -VALUES (3243, 3242, 'K', '库尔勒', '库尔勒市', 3, 'kuerle', '841000', 1, '86.15528', '41.76602'); -INSERT INTO `base_postage_region` -VALUES (3244, 3242, 'L', '轮台', '轮台县', 3, 'luntai', '841600', 1, '84.26101', '41.77642'); -INSERT INTO `base_postage_region` -VALUES (3245, 3242, 'W', '尉犁', '尉犁县', 3, 'yuli', '841500', 1, '86.25903', '41.33632'); -INSERT INTO `base_postage_region` -VALUES (3246, 3242, 'R', '若羌', '若羌县', 3, 'ruoqiang', '841800', 1, '88.16812', '39.0179'); -INSERT INTO `base_postage_region` -VALUES (3247, 3242, 'Q', '且末', '且末县', 3, 'qiemo', '841900', 1, '85.52975', '38.14534'); -INSERT INTO `base_postage_region` -VALUES (3248, 3242, 'Y', '焉耆', '焉耆回族自治县', 3, 'yanqi', '841100', 1, '86.5744', '42.059'); -INSERT INTO `base_postage_region` -VALUES (3249, 3242, 'H', '和静', '和静县', 3, 'hejing', '841300', 1, '86.39611', '42.31838'); -INSERT INTO `base_postage_region` -VALUES (3250, 3242, 'H', '和硕', '和硕县', 3, 'heshuo', '841200', 1, '86.86392', '42.26814'); -INSERT INTO `base_postage_region` -VALUES (3251, 3242, 'B', '博湖', '博湖县', 3, 'bohu', '841400', 1, '86.63333', '41.98014'); -INSERT INTO `base_postage_region` -VALUES (3252, 3206, 'A', '阿克苏', '阿克苏地区', 2, 'aksu', '843000', 1, '80.265068', '41.170712'); -INSERT INTO `base_postage_region` -VALUES (3253, 3252, 'A', '阿克苏', '阿克苏市', 3, 'akesu', '843000', 1, '80.26338', '41.16754'); -INSERT INTO `base_postage_region` -VALUES (3254, 3252, 'W', '温宿', '温宿县', 3, 'wensu', '843100', 1, '80.24173', '41.27679'); -INSERT INTO `base_postage_region` -VALUES (3255, 3252, 'K', '库车', '库车县', 3, 'kuche', '842000', 1, '82.96209', '41.71793'); -INSERT INTO `base_postage_region` -VALUES (3256, 3252, 'S', '沙雅', '沙雅县', 3, 'shaya', '842200', 1, '82.78131', '41.22497'); -INSERT INTO `base_postage_region` -VALUES (3257, 3252, 'X', '新和', '新和县', 3, 'xinhe', '842100', 1, '82.61053', '41.54964'); -INSERT INTO `base_postage_region` -VALUES (3258, 3252, 'B', '拜城', '拜城县', 3, 'baicheng', '842300', 1, '81.87564', '41.79801'); -INSERT INTO `base_postage_region` -VALUES (3259, 3252, 'W', '乌什', '乌什县', 3, 'wushi', '843400', 1, '79.22937', '41.21569'); -INSERT INTO `base_postage_region` -VALUES (3260, 3252, 'A', '阿瓦提', '阿瓦提县', 3, 'awati', '843200', 1, '80.38336', '40.63926'); -INSERT INTO `base_postage_region` -VALUES (3261, 3252, 'K', '柯坪', '柯坪县', 3, 'keping', '843600', 1, '79.04751', '40.50585'); -INSERT INTO `base_postage_region` -VALUES (3262, 3206, 'K', '克孜勒苏', '克孜勒苏柯尔克孜自治州', 2, 'kizilsu', '845350', 1, '76.172825', '39.713431'); -INSERT INTO `base_postage_region` -VALUES (3263, 3262, 'A', '阿图什', '阿图什市', 3, 'atushi', '845350', 1, '76.16827', '39.71615'); -INSERT INTO `base_postage_region` -VALUES (3264, 3262, 'A', '阿克陶', '阿克陶县', 3, 'aketao', '845550', 1, '75.94692', '39.14892'); -INSERT INTO `base_postage_region` -VALUES (3265, 3262, 'A', '阿合奇', '阿合奇县', 3, 'aheqi', '843500', 1, '78.44848', '40.93947'); -INSERT INTO `base_postage_region` -VALUES (3266, 3262, 'W', '乌恰', '乌恰县', 3, 'wuqia', '845450', 1, '75.25839', '39.71984'); -INSERT INTO `base_postage_region` -VALUES (3267, 3206, 'K', '喀什', '喀什地区', 2, 'kashgar', '844000', 1, '75.989138', '39.467664'); -INSERT INTO `base_postage_region` -VALUES (3268, 3267, 'K', '喀什', '喀什市', 3, 'kashi', '844000', 1, '75.99379', '39.46768'); -INSERT INTO `base_postage_region` -VALUES (3269, 3267, 'S', '疏附', '疏附县', 3, 'shufu', '844100', 1, '75.86029', '39.37534'); -INSERT INTO `base_postage_region` -VALUES (3270, 3267, 'S', '疏勒', '疏勒县', 3, 'shule', '844200', 1, '76.05398', '39.40625'); -INSERT INTO `base_postage_region` -VALUES (3271, 3267, 'Y', '英吉沙', '英吉沙县', 3, 'yingjisha', '844500', 1, '76.17565', '38.92968'); -INSERT INTO `base_postage_region` -VALUES (3272, 3267, 'Z', '泽普', '泽普县', 3, 'zepu', '844800', 1, '77.27145', '38.18935'); -INSERT INTO `base_postage_region` -VALUES (3273, 3267, 'S', '莎车', '莎车县', 3, 'shache', '844700', 1, '77.24316', '38.41601'); -INSERT INTO `base_postage_region` -VALUES (3274, 3267, 'Y', '叶城', '叶城县', 3, 'yecheng', '844900', 1, '77.41659', '37.88324'); -INSERT INTO `base_postage_region` -VALUES (3275, 3267, 'M', '麦盖提', '麦盖提县', 3, 'maigaiti', '844600', 1, '77.64224', '38.89662'); -INSERT INTO `base_postage_region` -VALUES (3276, 3267, 'Y', '岳普湖', '岳普湖县', 3, 'yuepuhu', '844400', 1, '76.77233', '39.23561'); -INSERT INTO `base_postage_region` -VALUES (3277, 3267, NULL, '伽师', '伽师县', 3, 'jiashi', '844300', 1, '76.72372', '39.48801'); -INSERT INTO `base_postage_region` -VALUES (3278, 3267, 'B', '巴楚', '巴楚县', 3, 'bachu', '843800', 1, '78.54888', '39.7855'); -INSERT INTO `base_postage_region` -VALUES (3279, 3267, 'T', '塔什库尔干塔吉克', '塔什库尔干塔吉克自治县', 3, 'tashikuergantajike', '845250', 1, '75.23196', '37.77893'); -INSERT INTO `base_postage_region` -VALUES (3280, 3206, 'H', '和田', '和田地区', 2, 'hotan', '848000', 1, '79.92533', '37.110687'); -INSERT INTO `base_postage_region` -VALUES (3281, 3280, 'H', '和田市', '和田市', 3, 'hetianshi', '848000', 1, '79.91353', '37.11214'); -INSERT INTO `base_postage_region` -VALUES (3282, 3280, 'H', '和田县', '和田县', 3, 'hetianxian', '848000', 1, '79.82874', '37.08922'); -INSERT INTO `base_postage_region` -VALUES (3283, 3280, 'M', '墨玉', '墨玉县', 3, 'moyu', '848100', 1, '79.74035', '37.27248'); -INSERT INTO `base_postage_region` -VALUES (3284, 3280, 'P', '皮山', '皮山县', 3, 'pishan', '845150', 1, '78.28125', '37.62007'); -INSERT INTO `base_postage_region` -VALUES (3285, 3280, 'L', '洛浦', '洛浦县', 3, 'luopu', '848200', 1, '80.18536', '37.07364'); -INSERT INTO `base_postage_region` -VALUES (3286, 3280, 'C', '策勒', '策勒县', 3, 'cele', '848300', 1, '80.80999', '36.99843'); -INSERT INTO `base_postage_region` -VALUES (3287, 3280, 'Y', '于田', '于田县', 3, 'yutian', '848400', 1, '81.66717', '36.854'); -INSERT INTO `base_postage_region` -VALUES (3288, 3280, 'M', '民丰', '民丰县', 3, 'minfeng', '848500', 1, '82.68444', '37.06577'); -INSERT INTO `base_postage_region` -VALUES (3289, 3206, 'Y', '伊犁', '伊犁哈萨克自治州', 2, 'ili', '835100', 1, '81.317946', '43.92186'); -INSERT INTO `base_postage_region` -VALUES (3290, 3289, 'Y', '伊宁', '伊宁市', 3, 'yining', '835000', 1, '81.32932', '43.91294'); -INSERT INTO `base_postage_region` -VALUES (3291, 3289, 'K', '奎屯', '奎屯市', 3, 'kuitun', '833200', 1, '84.90228', '44.425'); -INSERT INTO `base_postage_region` -VALUES (3292, 3289, 'H', '霍尔果斯', '霍尔果斯市', 3, 'huoerguosi', '835221', 1, '80.418189', '44.205778'); -INSERT INTO `base_postage_region` -VALUES (3293, 3289, 'Y', '伊宁', '伊宁县', 3, 'yining', '835100', 1, '81.52764', '43.97863'); -INSERT INTO `base_postage_region` -VALUES (3294, 3289, 'C', '察布查尔锡伯', '察布查尔锡伯自治县', 3, 'chabuchaerxibo', '835300', 1, '81.14956', '43.84023'); -INSERT INTO `base_postage_region` -VALUES (3295, 3289, 'H', '霍城', '霍城县', 3, 'huocheng', '835200', 1, '80.87826', '44.0533'); -INSERT INTO `base_postage_region` -VALUES (3296, 3289, 'G', '巩留', '巩留县', 3, 'gongliu', '835400', 1, '82.22851', '43.48429'); -INSERT INTO `base_postage_region` -VALUES (3297, 3289, 'X', '新源', '新源县', 3, 'xinyuan', '835800', 1, '83.26095', '43.4284'); -INSERT INTO `base_postage_region` -VALUES (3298, 3289, 'Z', '昭苏', '昭苏县', 3, 'zhaosu', '835600', 1, '81.1307', '43.15828'); -INSERT INTO `base_postage_region` -VALUES (3299, 3289, 'T', '特克斯', '特克斯县', 3, 'tekesi', '835500', 1, '81.84005', '43.21938'); -INSERT INTO `base_postage_region` -VALUES (3300, 3289, 'N', '尼勒克', '尼勒克县', 3, 'nileke', '835700', 1, '82.51184', '43.79901'); -INSERT INTO `base_postage_region` -VALUES (3301, 3206, 'T', '塔城', '塔城地区', 2, 'qoqek', '834700', 1, '82.985732', '46.746301'); -INSERT INTO `base_postage_region` -VALUES (3302, 3301, 'T', '塔城', '塔城市', 3, 'tacheng', '834700', 1, '82.97892', '46.74852'); -INSERT INTO `base_postage_region` -VALUES (3303, 3301, 'W', '乌苏', '乌苏市', 3, 'wusu', '833000', 1, '84.68258', '44.43729'); -INSERT INTO `base_postage_region` -VALUES (3304, 3301, 'E', '额敏', '额敏县', 3, 'emin', '834600', 1, '83.62872', '46.5284'); -INSERT INTO `base_postage_region` -VALUES (3305, 3301, 'S', '沙湾', '沙湾县', 3, 'shawan', '832100', 1, '85.61932', '44.33144'); -INSERT INTO `base_postage_region` -VALUES (3306, 3301, 'T', '托里', '托里县', 3, 'tuoli', '834500', 1, '83.60592', '45.93623'); -INSERT INTO `base_postage_region` -VALUES (3307, 3301, 'Y', '裕民', '裕民县', 3, 'yumin', '834800', 1, '82.99002', '46.20377'); -INSERT INTO `base_postage_region` -VALUES (3308, 3301, 'H', '和布克赛尔', '和布克赛尔蒙古自治县', 3, 'hebukesaier', '834400', 1, '85.72662', '46.79362'); -INSERT INTO `base_postage_region` -VALUES (3309, 3206, 'A', '阿勒泰', '阿勒泰地区', 2, 'altay', '836500', 1, '88.13963', '47.848393'); -INSERT INTO `base_postage_region` -VALUES (3310, 3309, 'A', '阿勒泰', '阿勒泰市', 3, 'aletai', '836500', 1, '88.13913', '47.8317'); -INSERT INTO `base_postage_region` -VALUES (3311, 3309, 'B', '布尔津', '布尔津县', 3, 'buerjin', '836600', 1, '86.85751', '47.70062'); -INSERT INTO `base_postage_region` -VALUES (3312, 3309, 'F', '富蕴', '富蕴县', 3, 'fuyun', '836100', 1, '89.52679', '46.99444'); -INSERT INTO `base_postage_region` -VALUES (3313, 3309, 'F', '福海', '福海县', 3, 'fuhai', '836400', 1, '87.49508', '47.11065'); -INSERT INTO `base_postage_region` -VALUES (3314, 3309, 'H', '哈巴河', '哈巴河县', 3, 'habahe', '836700', 1, '86.42092', '48.06046'); -INSERT INTO `base_postage_region` -VALUES (3315, 3309, 'Q', '青河', '青河县', 3, 'qinghe', '836200', 1, '90.38305', '46.67382'); -INSERT INTO `base_postage_region` -VALUES (3316, 3309, 'J', '吉木乃', '吉木乃县', 3, 'jimunai', '836800', 1, '85.87814', '47.43359'); -INSERT INTO `base_postage_region` -VALUES (3317, 3206, 'Z', ' ', '直辖县级', 2, '', '', 1, '91.132212', '29.660361'); -INSERT INTO `base_postage_region` -VALUES (3318, 3317, 'S', '石河子', '石河子市', 3, 'shihezi', '832000', 1, '86.041075', '44.305886'); -INSERT INTO `base_postage_region` -VALUES (3319, 3317, 'A', '阿拉尔', '阿拉尔市', 3, 'aral', '843300', 1, '81.285884', '40.541914'); -INSERT INTO `base_postage_region` -VALUES (3320, 3317, 'T', '图木舒克', '图木舒克市', 3, 'tumxuk', '843806', 1, '79.077978', '39.867316'); -INSERT INTO `base_postage_region` -VALUES (3321, 3317, 'W', '五家渠', '五家渠市', 3, 'wujiaqu', '831300', 1, '87.526884', '44.167401'); -INSERT INTO `base_postage_region` -VALUES (3322, 3317, 'B', '北屯', '北屯市', 3, 'beitun', '836000', 1, '87.808456', '47.362308'); -INSERT INTO `base_postage_region` -VALUES (3323, 3317, 'T', '铁门关', '铁门关市', 3, 'tiemenguan', '836000', 1, '86.194687', '41.811007'); -INSERT INTO `base_postage_region` -VALUES (3324, 3317, 'S', '双河', '双河市', 3, 'shuanghe', '833408', 1, '91.132212', '29.660361'); -INSERT INTO `base_postage_region` -VALUES (3325, 0, 'T', '台湾', '台湾省', 1, 'taiwan', '', 1, '121.509062', '25.044332'); -INSERT INTO `base_postage_region` -VALUES (3326, 3325, 'T', '台北', '台北市', 2, 'taipei', '1', 1, '121.565170', '25.037798'); -INSERT INTO `base_postage_region` -VALUES (3327, 3326, 'S', '松山', '松山区', 3, 'songshan', '105', 1, '121.577206', '25.049698'); -INSERT INTO `base_postage_region` -VALUES (3328, 3326, 'X', '信义', '信义区', 3, 'xinyi', '110', 1, '121.751381', '25.129407'); -INSERT INTO `base_postage_region` -VALUES (3329, 3326, 'D', '大安', '大安区', 3, 'daan', '106', 1, '121.534648', '25.026406'); -INSERT INTO `base_postage_region` -VALUES (3330, 3326, 'Z', '中山', '中山区', 3, 'zhongshan', '104', 1, '121.533468', '25.064361'); -INSERT INTO `base_postage_region` -VALUES (3331, 3326, 'Z', '中正', '中正区', 3, 'zhongzheng', '100', 1, '121.518267', '25.032361'); -INSERT INTO `base_postage_region` -VALUES (3332, 3326, 'D', '大同', '大同区', 3, 'datong', '103', 1, '121.515514', '25.065986'); -INSERT INTO `base_postage_region` -VALUES (3333, 3326, 'W', '万华', '万华区', 3, 'wanhua', '108', 1, '121.499332', '25.031933'); -INSERT INTO `base_postage_region` -VALUES (3334, 3326, 'W', '文山', '文山区', 3, 'wenshan', '116', 1, '121.570458', '24.989786'); -INSERT INTO `base_postage_region` -VALUES (3335, 3326, 'N', '南港', '南港区', 3, 'nangang', '115', 1, '121.606858', '25.054656'); -INSERT INTO `base_postage_region` -VALUES (3336, 3326, 'N', '内湖', '内湖区', 3, 'nahu', '114', 1, '121.588998', '25.069664'); -INSERT INTO `base_postage_region` -VALUES (3337, 3326, 'S', '士林', '士林区', 3, 'shilin', '111', 1, '121.519874', '25.092822'); -INSERT INTO `base_postage_region` -VALUES (3338, 3326, 'B', '北投', '北投区', 3, 'beitou', '112', 1, '121.501379', '25.132419'); -INSERT INTO `base_postage_region` -VALUES (3339, 3325, 'G', '高雄', '高雄市', 2, 'kaohsiung', '8', 1, '120.311922', '22.620856'); -INSERT INTO `base_postage_region` -VALUES (3340, 3339, 'Y', '盐埕', '盐埕区', 3, 'yancheng', '803', 1, '120.286795', '22.624666'); -INSERT INTO `base_postage_region` -VALUES (3341, 3339, 'G', '鼓山', '鼓山区', 3, 'gushan', '804', 1, '120.281154', '22.636797'); -INSERT INTO `base_postage_region` -VALUES (3342, 3339, 'Z', '左营', '左营区', 3, 'zuoying', '813', 1, '120.294958', '22.690124'); -INSERT INTO `base_postage_region` -VALUES (3343, 3339, NULL, '楠梓', '楠梓区', 3, 'nanzi', '811', 1, '120.326314', '22.728401'); -INSERT INTO `base_postage_region` -VALUES (3344, 3339, 'S', '三民', '三民区', 3, 'sanmin', '807', 1, '120.299622', '22.647695'); -INSERT INTO `base_postage_region` -VALUES (3345, 3339, 'X', '新兴', '新兴区', 3, 'xinxing', '800', 1, '120.309535', '22.631147'); -INSERT INTO `base_postage_region` -VALUES (3346, 3339, 'Q', '前金', '前金区', 3, 'qianjin', '801', 1, '120.294159', '22.627421'); -INSERT INTO `base_postage_region` -VALUES (3347, 3339, NULL, '苓雅', '苓雅区', 3, 'lingya', '802', 1, '120.312347', '22.621770'); -INSERT INTO `base_postage_region` -VALUES (3348, 3339, 'Q', '前镇', '前镇区', 3, 'qianzhen', '806', 1, '120.318583', '22.586425'); -INSERT INTO `base_postage_region` -VALUES (3349, 3339, 'Q', '旗津', '旗津区', 3, 'qijin', '805', 1, '120.284429', '22.590565'); -INSERT INTO `base_postage_region` -VALUES (3350, 3339, 'X', '小港', '小港区', 3, 'xiaogang', '812', 1, '120.337970', '22.565354'); -INSERT INTO `base_postage_region` -VALUES (3351, 3339, 'F', '凤山', '凤山区', 3, 'fengshan', '830', 1, '120.356892', '22.626945'); -INSERT INTO `base_postage_region` -VALUES (3352, 3339, 'L', '林园', '林园区', 3, 'linyuan', '832', 1, '120.395977', '22.501490'); -INSERT INTO `base_postage_region` -VALUES (3353, 3339, 'D', '大寮', '大寮区', 3, 'daliao', '831', 1, '120.395422', '22.605386'); -INSERT INTO `base_postage_region` -VALUES (3354, 3339, 'D', '大树', '大树区', 3, 'dashu', '840', 1, '120.433095', '22.693394'); -INSERT INTO `base_postage_region` -VALUES (3355, 3339, 'D', '大社', '大社区', 3, 'dashe', '815', 1, '120.346635', '22.729966'); -INSERT INTO `base_postage_region` -VALUES (3356, 3339, 'R', '仁武', '仁武区', 3, 'renwu', '814', 1, '120.347779', '22.701901'); -INSERT INTO `base_postage_region` -VALUES (3357, 3339, 'N', '鸟松', '鸟松区', 3, 'niaosong', '833', 1, '120.364402', '22.659340'); -INSERT INTO `base_postage_region` -VALUES (3358, 3339, 'G', '冈山', '冈山区', 3, 'gangshan', '820', 1, '120.295820', '22.796762'); -INSERT INTO `base_postage_region` -VALUES (3359, 3339, 'Q', '桥头', '桥头区', 3, 'qiaotou', '825', 1, '120.305741', '22.757501'); -INSERT INTO `base_postage_region` -VALUES (3360, 3339, 'Y', '燕巢', '燕巢区', 3, 'yanchao', '824', 1, '120.361956', '22.793370'); -INSERT INTO `base_postage_region` -VALUES (3361, 3339, 'T', '田寮', '田寮区', 3, 'tianliao', '823', 1, '120.359636', '22.869307'); -INSERT INTO `base_postage_region` -VALUES (3362, 3339, 'A', '阿莲', '阿莲区', 3, 'alian', '822', 1, '120.327036', '22.883703'); -INSERT INTO `base_postage_region` -VALUES (3363, 3339, 'L', '路竹', '路竹区', 3, 'luzhu', '821', 1, '120.261828', '22.856851'); -INSERT INTO `base_postage_region` -VALUES (3364, 3339, 'H', '湖内', '湖内区', 3, 'huna', '829', 1, '120.211530', '22.908188'); -INSERT INTO `base_postage_region` -VALUES (3365, 3339, NULL, '茄萣', '茄萣区', 3, 'qieding', '852', 1, '120.182815', '22.906556'); -INSERT INTO `base_postage_region` -VALUES (3366, 3339, 'Y', '永安', '永安区', 3, 'yongan', '828', 1, '120.225308', '22.818580'); -INSERT INTO `base_postage_region` -VALUES (3367, 3339, 'M', '弥陀', '弥陀区', 3, 'mituo', '827', 1, '120.247344', '22.782879'); -INSERT INTO `base_postage_region` -VALUES (3368, 3339, NULL, '梓官', '梓官区', 3, 'ziguan', '826', 1, '120.267322', '22.760475'); -INSERT INTO `base_postage_region` -VALUES (3369, 3339, 'Q', '旗山', '旗山区', 3, 'qishan', '842', 1, '120.483550', '22.888491'); -INSERT INTO `base_postage_region` -VALUES (3370, 3339, 'M', '美浓', '美浓区', 3, 'meinong', '843', 1, '120.541530', '22.897880'); -INSERT INTO `base_postage_region` -VALUES (3371, 3339, 'L', '六龟', '六龟区', 3, 'liugui', '844', 1, '120.633418', '22.997914'); -INSERT INTO `base_postage_region` -VALUES (3372, 3339, 'J', '甲仙', '甲仙区', 3, 'jiaxian', '847', 1, '120.591185', '23.084688'); -INSERT INTO `base_postage_region` -VALUES (3373, 3339, 'S', '杉林', '杉林区', 3, 'shanlin', '846', 1, '120.538980', '22.970712'); -INSERT INTO `base_postage_region` -VALUES (3374, 3339, 'N', '内门', '内门区', 3, 'namen', '845', 1, '120.462351', '22.943437'); -INSERT INTO `base_postage_region` -VALUES (3375, 3339, 'M', '茂林', '茂林区', 3, 'maolin', '851', 1, '120.663217', '22.886248'); -INSERT INTO `base_postage_region` -VALUES (3376, 3339, 'T', '桃源', '桃源区', 3, 'taoyuan', '848', 1, '120.760049', '23.159137'); -INSERT INTO `base_postage_region` -VALUES (3377, 3339, 'N', '那玛夏', '那玛夏区', 3, 'namaxia', '849', 1, '120.692799', '23.216964'); -INSERT INTO `base_postage_region` -VALUES (3378, 3325, 'J', '基隆', '基隆市', 2, 'keelung', '2', 1, '121.746248', '25.130741'); -INSERT INTO `base_postage_region` -VALUES (3379, 3378, 'Z', '中正', '中正区', 3, 'zhongzheng', '202', 1, '121.518267', '25.032361'); -INSERT INTO `base_postage_region` -VALUES (3380, 3378, 'Q', '七堵', '七堵区', 3, 'qidu', '206', 1, '121.713032', '25.095739'); -INSERT INTO `base_postage_region` -VALUES (3381, 3378, 'N', '暖暖', '暖暖区', 3, 'nuannuan', '205', 1, '121.736102', '25.099777'); -INSERT INTO `base_postage_region` -VALUES (3382, 3378, 'R', '仁爱', '仁爱区', 3, 'renai', '200', 1, '121.740940', '25.127526'); -INSERT INTO `base_postage_region` -VALUES (3383, 3378, 'Z', '中山', '中山区', 3, 'zhongshan', '203', 1, '121.739132', '25.133991'); -INSERT INTO `base_postage_region` -VALUES (3384, 3378, 'A', '安乐', '安乐区', 3, 'anle', '204', 1, '121.723203', '25.120910'); -INSERT INTO `base_postage_region` -VALUES (3385, 3378, 'X', '信义', '信义区', 3, 'xinyi', '201', 1, '121.751381', '25.129407'); -INSERT INTO `base_postage_region` -VALUES (3386, 3325, 'T', '台中', '台中市', 2, 'taichung', '4', 1, '120.679040', '24.138620'); -INSERT INTO `base_postage_region` -VALUES (3387, 3386, 'Z', '中区', '中区', 3, 'zhongqu', '400', 1, '120.679510', '24.143830'); -INSERT INTO `base_postage_region` -VALUES (3388, 3386, 'D', '东区', '东区', 3, 'dongqu', '401', 1, '120.704', '24.13662'); -INSERT INTO `base_postage_region` -VALUES (3389, 3386, 'N', '南区', '南区', 3, 'nanqu', '402', 1, '120.188648', '22.960944'); -INSERT INTO `base_postage_region` -VALUES (3390, 3386, 'X', '西区', '西区', 3, 'xiqu', '403', 1, '120.67104', '24.14138'); -INSERT INTO `base_postage_region` -VALUES (3391, 3386, 'B', '北区', '北区', 3, 'beiqu', '404', 1, '120.682410', '24.166040'); -INSERT INTO `base_postage_region` -VALUES (3392, 3386, 'X', '西屯', '西屯区', 3, 'xitun', '407', 1, '120.639820', '24.181340'); -INSERT INTO `base_postage_region` -VALUES (3393, 3386, 'N', '南屯', '南屯区', 3, 'nantun', '408', 1, '120.643080', '24.138270'); -INSERT INTO `base_postage_region` -VALUES (3394, 3386, 'B', '北屯', '北屯区', 3, 'beitun', '406', 1, '120.686250', '24.182220'); -INSERT INTO `base_postage_region` -VALUES (3395, 3386, 'F', '丰原', '丰原区', 3, 'fengyuan', '420', 1, '120.718460', '24.242190'); -INSERT INTO `base_postage_region` -VALUES (3396, 3386, 'D', '东势', '东势区', 3, 'dongshi', '423', 1, '120.827770', '24.258610'); -INSERT INTO `base_postage_region` -VALUES (3397, 3386, 'D', '大甲', '大甲区', 3, 'dajia', '437', 1, '120.622390', '24.348920'); -INSERT INTO `base_postage_region` -VALUES (3398, 3386, 'Q', '清水', '清水区', 3, 'qingshui', '436', 1, '120.559780', '24.268650'); -INSERT INTO `base_postage_region` -VALUES (3399, 3386, 'S', '沙鹿', '沙鹿区', 3, 'shalu', '433', 1, '120.565700', '24.233480'); -INSERT INTO `base_postage_region` -VALUES (3400, 3386, 'W', '梧栖', '梧栖区', 3, 'wuqi', '435', 1, '120.531520', '24.254960'); -INSERT INTO `base_postage_region` -VALUES (3401, 3386, 'H', '后里', '后里区', 3, 'houli', '421', 1, '120.710710', '24.304910'); -INSERT INTO `base_postage_region` -VALUES (3402, 3386, 'S', '神冈', '神冈区', 3, 'shengang', '429', 1, '120.661550', '24.257770'); -INSERT INTO `base_postage_region` -VALUES (3403, 3386, 'T', '潭子', '潭子区', 3, 'tanzi', '427', 1, '120.705160', '24.209530'); -INSERT INTO `base_postage_region` -VALUES (3404, 3386, 'D', '大雅', '大雅区', 3, 'daya', '428', 1, '120.647780', '24.229230'); -INSERT INTO `base_postage_region` -VALUES (3405, 3386, 'X', '新社', '新社区', 3, 'xinshe', '426', 1, '120.809500', '24.234140'); -INSERT INTO `base_postage_region` -VALUES (3406, 3386, 'S', '石冈', '石冈区', 3, 'shigang', '422', 1, '120.780410', '24.274980'); -INSERT INTO `base_postage_region` -VALUES (3407, 3386, 'W', '外埔', '外埔区', 3, 'waipu', '438', 1, '120.654370', '24.332010'); -INSERT INTO `base_postage_region` -VALUES (3408, 3386, 'D', '大安', '大安区', 3, 'daan', '439', 1, '120.58652', '24.34607'); -INSERT INTO `base_postage_region` -VALUES (3409, 3386, 'W', '乌日', '乌日区', 3, 'wuri', '414', 1, '120.623810', '24.104500'); -INSERT INTO `base_postage_region` -VALUES (3410, 3386, 'D', '大肚', '大肚区', 3, 'dadu', '432', 1, '120.540960', '24.153660'); -INSERT INTO `base_postage_region` -VALUES (3411, 3386, 'L', '龙井', '龙井区', 3, 'longjing', '434', 1, '120.545940', '24.192710'); -INSERT INTO `base_postage_region` -VALUES (3412, 3386, 'W', '雾峰', '雾峰区', 3, 'wufeng', '413', 1, '120.700200', '24.061520'); -INSERT INTO `base_postage_region` -VALUES (3413, 3386, 'T', '太平', '太平区', 3, 'taiping', '411', 1, '120.718523', '24.126472'); -INSERT INTO `base_postage_region` -VALUES (3414, 3386, 'D', '大里', '大里区', 3, 'dali', '412', 1, '120.677860', '24.099390'); -INSERT INTO `base_postage_region` -VALUES (3415, 3386, 'H', '和平', '和平区', 3, 'heping', '424', 1, '120.88349', '24.17477'); -INSERT INTO `base_postage_region` -VALUES (3416, 3325, 'T', '台南', '台南市', 2, 'tainan', '7', 1, '120.279363', '23.172478'); -INSERT INTO `base_postage_region` -VALUES (3417, 3416, 'D', '东区', '东区', 3, 'dongqu', '701', 1, '120.224198', '22.980072'); -INSERT INTO `base_postage_region` -VALUES (3418, 3416, 'N', '南区', '南区', 3, 'nanqu', '702', 1, '120.188648', '22.960944'); -INSERT INTO `base_postage_region` -VALUES (3419, 3416, 'B', '北区', '北区', 3, 'beiqu', '704', 1, '120.682410', '24.166040'); -INSERT INTO `base_postage_region` -VALUES (3420, 3416, 'A', '安南', '安南区', 3, 'annan', '709', 1, '120.184617', '23.047230'); -INSERT INTO `base_postage_region` -VALUES (3421, 3416, 'A', '安平', '安平区', 3, 'anping', '708', 1, '120.166810', '23.000763'); -INSERT INTO `base_postage_region` -VALUES (3422, 3416, 'Z', '中西', '中西区', 3, 'zhongxi', '700', 1, '120.205957', '22.992152'); -INSERT INTO `base_postage_region` -VALUES (3423, 3416, 'X', '新营', '新营区', 3, 'xinying', '730', 1, '120.316698', '23.310274'); -INSERT INTO `base_postage_region` -VALUES (3424, 3416, 'Y', '盐水', '盐水区', 3, 'yanshui', '737', 1, '120.266398', '23.319828'); -INSERT INTO `base_postage_region` -VALUES (3425, 3416, 'B', '白河', '白河区', 3, 'baihe', '732', 1, '120.415810', '23.351221'); -INSERT INTO `base_postage_region` -VALUES (3426, 3416, 'L', '柳营', '柳营区', 3, 'liuying', '736', 1, '120.311286', '23.278133'); -INSERT INTO `base_postage_region` -VALUES (3427, 3416, 'H', '后壁', '后壁区', 3, 'houbi', '731', 1, '120.362726', '23.366721'); -INSERT INTO `base_postage_region` -VALUES (3428, 3416, 'D', '东山', '东山区', 3, 'dongshan', '733', 1, '120.403984', '23.326092'); -INSERT INTO `base_postage_region` -VALUES (3429, 3416, 'M', '麻豆', '麻豆区', 3, 'madou', '721', 1, '120.248179', '23.181680'); -INSERT INTO `base_postage_region` -VALUES (3430, 3416, 'X', '下营', '下营区', 3, 'xiaying', '735', 1, '120.264484', '23.235413'); -INSERT INTO `base_postage_region` -VALUES (3431, 3416, 'L', '六甲', '六甲区', 3, 'liujia', '734', 1, '120.347600', '23.231931'); -INSERT INTO `base_postage_region` -VALUES (3432, 3416, 'G', '官田', '官田区', 3, 'guantian', '720', 1, '120.314374', '23.194652'); -INSERT INTO `base_postage_region` -VALUES (3433, 3416, 'D', '大内', '大内区', 3, 'dana', '742', 1, '120.348853', '23.119460'); -INSERT INTO `base_postage_region` -VALUES (3434, 3416, 'J', '佳里', '佳里区', 3, 'jiali', '722', 1, '120.177211', '23.165121'); -INSERT INTO `base_postage_region` -VALUES (3435, 3416, 'X', '学甲', '学甲区', 3, 'xuejia', '726', 1, '120.180255', '23.232348'); -INSERT INTO `base_postage_region` -VALUES (3436, 3416, 'X', '西港', '西港区', 3, 'xigang', '723', 1, '120.203618', '23.123057'); -INSERT INTO `base_postage_region` -VALUES (3437, 3416, 'Q', '七股', '七股区', 3, 'qigu', '724', 1, '120.140003', '23.140545'); -INSERT INTO `base_postage_region` -VALUES (3438, 3416, 'J', '将军', '将军区', 3, 'jiangjun', '725', 1, '120.156871', '23.199543'); -INSERT INTO `base_postage_region` -VALUES (3439, 3416, 'B', '北门', '北门区', 3, 'beimen', '727', 1, '120.125821', '23.267148'); -INSERT INTO `base_postage_region` -VALUES (3440, 3416, 'X', '新化', '新化区', 3, 'xinhua', '712', 1, '120.310807', '23.038533'); -INSERT INTO `base_postage_region` -VALUES (3441, 3416, 'S', '善化', '善化区', 3, 'shanhua', '741', 1, '120.296895', '23.132261'); -INSERT INTO `base_postage_region` -VALUES (3442, 3416, 'X', '新市', '新市区', 3, 'xinshi', '744', 1, '120.295138', '23.07897'); -INSERT INTO `base_postage_region` -VALUES (3443, 3416, 'A', '安定', '安定区', 3, 'anding', '745', 1, '120.237083', '23.121498'); -INSERT INTO `base_postage_region` -VALUES (3444, 3416, 'S', '山上', '山上区', 3, 'shanshang', '743', 1, '120.352908', '23.103223'); -INSERT INTO `base_postage_region` -VALUES (3445, 3416, 'Y', '玉井', '玉井区', 3, 'yujing', '714', 1, '120.460110', '23.123859'); -INSERT INTO `base_postage_region` -VALUES (3446, 3416, NULL, '楠西', '楠西区', 3, 'nanxi', '715', 1, '120.485396', '23.173454'); -INSERT INTO `base_postage_region` -VALUES (3447, 3416, 'N', '南化', '南化区', 3, 'nanhua', '716', 1, '120.477116', '23.042614'); -INSERT INTO `base_postage_region` -VALUES (3448, 3416, 'Z', '左镇', '左镇区', 3, 'zuozhen', '713', 1, '120.407309', '23.057955'); -INSERT INTO `base_postage_region` -VALUES (3449, 3416, 'R', '仁德', '仁德区', 3, 'rende', '717', 1, '120.251520', '22.972212'); -INSERT INTO `base_postage_region` -VALUES (3450, 3416, 'G', '归仁', '归仁区', 3, 'guiren', '711', 1, '120.293791', '22.967081'); -INSERT INTO `base_postage_region` -VALUES (3451, 3416, 'G', '关庙', '关庙区', 3, 'guanmiao', '718', 1, '120.327689', '22.962949'); -INSERT INTO `base_postage_region` -VALUES (3452, 3416, 'L', '龙崎', '龙崎区', 3, 'longqi', '719', 1, '120.360824', '22.965681'); -INSERT INTO `base_postage_region` -VALUES (3453, 3416, 'Y', '永康', '永康区', 3, 'yongkang', '710', 1, '120.257069', '23.026061'); -INSERT INTO `base_postage_region` -VALUES (3454, 3325, 'X', '新竹', '新竹市', 2, 'hsinchu', '3', 1, '120.968798', '24.806738'); -INSERT INTO `base_postage_region` -VALUES (3455, 3454, 'D', '东区', '东区', 3, 'dongqu', '300', 1, '120.970239', '24.801337'); -INSERT INTO `base_postage_region` -VALUES (3456, 3454, 'B', '北区', '北区', 3, 'beiqu', '', 1, '120.682410', '24.166040'); -INSERT INTO `base_postage_region` -VALUES (3457, 3454, 'X', '香山', '香山区', 3, 'xiangshan', '', 1, '120.956679', '24.768933'); -INSERT INTO `base_postage_region` -VALUES (3458, 3325, 'J', '嘉义', '嘉义市', 2, 'chiayi', '6', 1, '120.452538', '23.481568'); -INSERT INTO `base_postage_region` -VALUES (3459, 3458, 'D', '东区', '东区', 3, 'dongqu', '600', 1, '120.458009', '23.486213'); -INSERT INTO `base_postage_region` -VALUES (3460, 3458, 'X', '西区', '西区', 3, 'xiqu', '600', 1, '120.437493', '23.473029'); -INSERT INTO `base_postage_region` -VALUES (3461, 3325, 'X', '新北', '新北市', 2, 'newtaipei', '2', 1, '121.465746', '25.012366'); -INSERT INTO `base_postage_region` -VALUES (3462, 3461, 'B', '板桥', '板桥区', 3, 'banqiao', '220', 1, '121.459084', '25.009578'); -INSERT INTO `base_postage_region` -VALUES (3463, 3461, 'S', '三重', '三重区', 3, 'sanzhong', '241', 1, '121.488102', '25.061486'); -INSERT INTO `base_postage_region` -VALUES (3464, 3461, 'Z', '中和', '中和区', 3, 'zhonghe', '235', 1, '121.498980', '24.999397'); -INSERT INTO `base_postage_region` -VALUES (3465, 3461, 'Y', '永和', '永和区', 3, 'yonghe', '234', 1, '121.513660', '25.007802'); -INSERT INTO `base_postage_region` -VALUES (3466, 3461, 'X', '新庄', '新庄区', 3, 'xinzhuang', '242', 1, '121.450413', '25.035947'); -INSERT INTO `base_postage_region` -VALUES (3467, 3461, 'X', '新店', '新店区', 3, 'xindian', '231', 1, '121.541750', '24.967558'); -INSERT INTO `base_postage_region` -VALUES (3468, 3461, 'S', '树林', '树林区', 3, 'shulin', '238', 1, '121.420533', '24.990706'); -INSERT INTO `base_postage_region` -VALUES (3469, 3461, NULL, '莺歌', '莺歌区', 3, 'yingge', '239', 1, '121.354573', '24.955413'); -INSERT INTO `base_postage_region` -VALUES (3470, 3461, 'S', '三峡', '三峡区', 3, 'sanxia', '237', 1, '121.368905', '24.934339'); -INSERT INTO `base_postage_region` -VALUES (3471, 3461, 'D', '淡水', '淡水区', 3, 'danshui', '251', 1, '121.440915', '25.169452'); -INSERT INTO `base_postage_region` -VALUES (3472, 3461, 'X', '汐止', '汐止区', 3, 'xizhi', '221', 1, '121.629470', '25.062999'); -INSERT INTO `base_postage_region` -VALUES (3473, 3461, 'R', '瑞芳', '瑞芳区', 3, 'ruifang', '224', 1, '121.810061', '25.108895'); -INSERT INTO `base_postage_region` -VALUES (3474, 3461, 'T', '土城', '土城区', 3, 'tucheng', '236', 1, '121.443348', '24.972201'); -INSERT INTO `base_postage_region` -VALUES (3475, 3461, 'L', '芦洲', '芦洲区', 3, 'luzhou', '247', 1, '121.473700', '25.084923'); -INSERT INTO `base_postage_region` -VALUES (3476, 3461, 'W', '五股', '五股区', 3, 'wugu', '248', 1, '121.438156', '25.082743'); -INSERT INTO `base_postage_region` -VALUES (3477, 3461, 'T', '泰山', '泰山区', 3, 'taishan', '243', 1, '121.430811', '25.058864'); -INSERT INTO `base_postage_region` -VALUES (3478, 3461, 'L', '林口', '林口区', 3, 'linkou', '244', 1, '121.391602', '25.077531'); -INSERT INTO `base_postage_region` -VALUES (3479, 3461, 'S', '深坑', '深坑区', 3, 'shenkeng', '222', 1, '121.615670', '25.002329'); -INSERT INTO `base_postage_region` -VALUES (3480, 3461, 'S', '石碇', '石碇区', 3, 'shiding', '223', 1, '121.658567', '24.991679'); -INSERT INTO `base_postage_region` -VALUES (3481, 3461, 'P', '坪林', '坪林区', 3, 'pinglin', '232', 1, '121.711185', '24.937388'); -INSERT INTO `base_postage_region` -VALUES (3482, 3461, 'S', '三芝', '三芝区', 3, 'sanzhi', '252', 1, '121.500866', '25.258047'); -INSERT INTO `base_postage_region` -VALUES (3483, 3461, 'S', '石门', '石门区', 3, 'shimen', '253', 1, '121.568491', '25.290412'); -INSERT INTO `base_postage_region` -VALUES (3484, 3461, 'B', '八里', '八里区', 3, 'bali', '249', 1, '121.398227', '25.146680'); -INSERT INTO `base_postage_region` -VALUES (3485, 3461, 'P', '平溪', '平溪区', 3, 'pingxi', '226', 1, '121.738255', '25.025725'); -INSERT INTO `base_postage_region` -VALUES (3486, 3461, 'S', '双溪', '双溪区', 3, 'shuangxi', '227', 1, '121.865676', '25.033409'); -INSERT INTO `base_postage_region` -VALUES (3487, 3461, 'G', '贡寮', '贡寮区', 3, 'gongliao', '228', 1, '121.908185', '25.022388'); -INSERT INTO `base_postage_region` -VALUES (3488, 3461, 'J', '金山', '金山区', 3, 'jinshan', '208', 1, '121.636427', '25.221883'); -INSERT INTO `base_postage_region` -VALUES (3489, 3461, 'W', '万里', '万里区', 3, 'wanli', '207', 1, '121.688687', '25.181234'); -INSERT INTO `base_postage_region` -VALUES (3490, 3461, 'W', '乌来', '乌来区', 3, 'wulai', '233', 1, '121.550531', '24.865296'); -INSERT INTO `base_postage_region` -VALUES (3491, 3325, 'Y', '宜兰', '宜兰县', 2, 'yilan', '2', 1, '121.500000', '24.600000'); -INSERT INTO `base_postage_region` -VALUES (3492, 3491, 'Y', '宜兰', '宜兰市', 3, 'yilan', '260', 1, '121.753476', '24.751682'); -INSERT INTO `base_postage_region` -VALUES (3493, 3491, 'L', '罗东', '罗东镇', 3, 'luodong', '265', 1, '121.766919', '24.677033'); -INSERT INTO `base_postage_region` -VALUES (3494, 3491, 'S', '苏澳', '苏澳镇', 3, 'suao', '270', 1, '121.842656', '24.594622'); -INSERT INTO `base_postage_region` -VALUES (3495, 3491, 'T', '头城', '头城镇', 3, 'toucheng', '261', 1, '121.823307', '24.859217'); -INSERT INTO `base_postage_region` -VALUES (3496, 3491, 'J', '礁溪', '礁溪乡', 3, 'jiaoxi', '262', 1, '121.766680', '24.822345'); -INSERT INTO `base_postage_region` -VALUES (3497, 3491, 'Z', '壮围', '壮围乡', 3, 'zhuangwei', '263', 1, '121.781619', '24.744949'); -INSERT INTO `base_postage_region` -VALUES (3498, 3491, 'Y', '员山', '员山乡', 3, 'yuanshan', '264', 1, '121.721733', '24.741771'); -INSERT INTO `base_postage_region` -VALUES (3499, 3491, 'D', '冬山', '冬山乡', 3, 'dongshan', '269', 1, '121.792280', '24.634514'); -INSERT INTO `base_postage_region` -VALUES (3500, 3491, 'W', '五结', '五结乡', 3, 'wujie', '268', 1, '121.798297', '24.684640'); -INSERT INTO `base_postage_region` -VALUES (3501, 3491, 'S', '三星', '三星乡', 3, 'sanxing', '266', 1, '121.003418', '23.775291'); -INSERT INTO `base_postage_region` -VALUES (3502, 3491, 'D', '大同', '大同乡', 3, 'datong', '267', 1, '121.605557', '24.675997'); -INSERT INTO `base_postage_region` -VALUES (3503, 3491, 'N', '南澳', '南澳乡', 3, 'nanao', '272', 1, '121.799810', '24.465393'); -INSERT INTO `base_postage_region` -VALUES (3504, 3325, 'T', '桃园', '桃园县', 2, 'taoyuan', '3', 1, '121.083000', '25.000000'); -INSERT INTO `base_postage_region` -VALUES (3505, 3504, 'T', '桃园', '桃园市', 3, 'taoyuan', '330', 1, '121.301337', '24.993777'); -INSERT INTO `base_postage_region` -VALUES (3506, 3504, 'Z', '中坜', '中坜市', 3, 'zhongli', '320', 1, '121.224926', '24.965353'); -INSERT INTO `base_postage_region` -VALUES (3507, 3504, 'P', '平镇', '平镇市', 3, 'pingzhen', '324', 1, '121.218359', '24.945752'); -INSERT INTO `base_postage_region` -VALUES (3508, 3504, 'B', '八德', '八德市', 3, 'bade', '334', 1, '121.284655', '24.928651'); -INSERT INTO `base_postage_region` -VALUES (3509, 3504, 'Y', '杨梅', '杨梅市', 3, 'yangmei', '326', 1, '121.145873', '24.907575'); -INSERT INTO `base_postage_region` -VALUES (3510, 3504, 'L', '芦竹', '芦竹市', 3, 'luzhu', '338', 1, '121.292064', '25.045392'); -INSERT INTO `base_postage_region` -VALUES (3511, 3504, 'D', '大溪', '大溪镇', 3, 'daxi', '335', 1, '121.286962', '24.880584'); -INSERT INTO `base_postage_region` -VALUES (3512, 3504, 'D', '大园', '大园乡', 3, 'dayuan', '337', 1, '121.196292', '25.064471'); -INSERT INTO `base_postage_region` -VALUES (3513, 3504, 'G', '龟山', '龟山乡', 3, 'guishan', '333', 1, '121.337767', '24.992517'); -INSERT INTO `base_postage_region` -VALUES (3514, 3504, 'L', '龙潭', '龙潭乡', 3, 'longtan', '325', 1, '121.216392', '24.863851'); -INSERT INTO `base_postage_region` -VALUES (3515, 3504, 'X', '新屋', '新屋乡', 3, 'xinwu', '327', 1, '121.105801', '24.972203'); -INSERT INTO `base_postage_region` -VALUES (3516, 3504, 'G', '观音', '观音乡', 3, 'guanyin', '328', 1, '121.077519', '25.033303'); -INSERT INTO `base_postage_region` -VALUES (3517, 3504, 'F', '复兴', '复兴乡', 3, 'fuxing', '336', 1, '121.352613', '24.820908'); -INSERT INTO `base_postage_region` -VALUES (3518, 3325, 'X', '新竹', '新竹县', 2, 'hsinchu', '3', 1, '121.160000', '24.600000'); -INSERT INTO `base_postage_region` -VALUES (3519, 3518, 'Z', '竹北', '竹北市', 3, 'zhubei', '302', 1, '121.004317', '24.839652'); -INSERT INTO `base_postage_region` -VALUES (3520, 3518, 'Z', '竹东', '竹东镇', 3, 'zhudong', '310', 1, '121.086418', '24.733601'); -INSERT INTO `base_postage_region` -VALUES (3521, 3518, 'X', '新埔', '新埔镇', 3, 'xinpu', '305', 1, '121.072804', '24.824820'); -INSERT INTO `base_postage_region` -VALUES (3522, 3518, 'G', '关西', '关西镇', 3, 'guanxi', '306', 1, '121.177301', '24.788842'); -INSERT INTO `base_postage_region` -VALUES (3523, 3518, 'H', '湖口', '湖口乡', 3, 'hukou', '303', 1, '121.043691', '24.903943'); -INSERT INTO `base_postage_region` -VALUES (3524, 3518, 'X', '新丰', '新丰乡', 3, 'xinfeng', '304', 1, '120.983006', '24.899600'); -INSERT INTO `base_postage_region` -VALUES (3525, 3518, NULL, '芎林', '芎林乡', 3, 'xionglin', '307', 1, '121.076924', '24.774436'); -INSERT INTO `base_postage_region` -VALUES (3526, 3518, 'H', '横山', '横山乡', 3, 'hengshan', '312', 1, '121.116244', '24.720807'); -INSERT INTO `base_postage_region` -VALUES (3527, 3518, 'B', '北埔', '北埔乡', 3, 'beipu', '314', 1, '121.053156', '24.697126'); -INSERT INTO `base_postage_region` -VALUES (3528, 3518, 'B', '宝山', '宝山乡', 3, 'baoshan', '308', 1, '120.985752', '24.760975'); -INSERT INTO `base_postage_region` -VALUES (3529, 3518, 'E', '峨眉', '峨眉乡', 3, 'emei', '315', 1, '121.015291', '24.686127'); -INSERT INTO `base_postage_region` -VALUES (3530, 3518, 'J', '尖石', '尖石乡', 3, 'jianshi', '313', 1, '121.197802', '24.704360'); -INSERT INTO `base_postage_region` -VALUES (3531, 3518, 'W', '五峰', '五峰乡', 3, 'wufeng', '311', 1, '121.003418', '23.775291'); -INSERT INTO `base_postage_region` -VALUES (3532, 3325, 'M', '苗栗', '苗栗县', 2, 'miaoli', '3', 1, '120.750000', '24.500000'); -INSERT INTO `base_postage_region` -VALUES (3533, 3532, 'M', '苗栗', '苗栗市', 3, 'miaoli', '360', 1, '120.818869', '24.561472'); -INSERT INTO `base_postage_region` -VALUES (3534, 3532, 'Y', '苑里', '苑里镇', 3, 'yuanli', '358', 1, '120.648907', '24.441750'); -INSERT INTO `base_postage_region` -VALUES (3535, 3532, 'T', '通霄', '通霄镇', 3, 'tongxiao', '357', 1, '120.676700', '24.489087'); -INSERT INTO `base_postage_region` -VALUES (3536, 3532, 'Z', '竹南', '竹南镇', 3, 'zhunan', '350', 1, '120.872641', '24.685513'); -INSERT INTO `base_postage_region` -VALUES (3537, 3532, 'T', '头份', '头份镇', 3, 'toufen', '351', 1, '120.895188', '24.687993'); -INSERT INTO `base_postage_region` -VALUES (3538, 3532, 'H', '后龙', '后龙镇', 3, 'houlong', '356', 1, '120.786480', '24.612617'); -INSERT INTO `base_postage_region` -VALUES (3539, 3532, 'Z', '卓兰', '卓兰镇', 3, 'zhuolan', '369', 1, '120.823441', '24.309509'); -INSERT INTO `base_postage_region` -VALUES (3540, 3532, 'D', '大湖', '大湖乡', 3, 'dahu', '364', 1, '120.863641', '24.422547'); -INSERT INTO `base_postage_region` -VALUES (3541, 3532, 'G', '公馆', '公馆乡', 3, 'gongguan', '363', 1, '120.822983', '24.499108'); -INSERT INTO `base_postage_region` -VALUES (3542, 3532, 'T', '铜锣', '铜锣乡', 3, 'tongluo', '366', 1, '121.003418', '23.775291'); -INSERT INTO `base_postage_region` -VALUES (3543, 3532, 'N', '南庄', '南庄乡', 3, 'nanzhuang', '353', 1, '120.994957', '24.596835'); -INSERT INTO `base_postage_region` -VALUES (3544, 3532, 'T', '头屋', '头屋乡', 3, 'touwu', '362', 1, '120.846616', '24.574249'); -INSERT INTO `base_postage_region` -VALUES (3545, 3532, 'S', '三义', '三义乡', 3, 'sanyi', '367', 1, '120.742340', '24.350270'); -INSERT INTO `base_postage_region` -VALUES (3546, 3532, 'X', '西湖', '西湖乡', 3, 'xihu', '368', 1, '121.003418', '23.775291'); -INSERT INTO `base_postage_region` -VALUES (3547, 3532, 'Z', '造桥', '造桥乡', 3, 'zaoqiao', '361', 1, '120.862399', '24.637537'); -INSERT INTO `base_postage_region` -VALUES (3548, 3532, 'S', '三湾', '三湾乡', 3, 'sanwan', '352', 1, '120.951484', '24.651051'); -INSERT INTO `base_postage_region` -VALUES (3549, 3532, 'S', '狮潭', '狮潭乡', 3, 'shitan', '354', 1, '120.918024', '24.540004'); -INSERT INTO `base_postage_region` -VALUES (3550, 3532, 'T', '泰安', '泰安乡', 3, 'taian', '365', 1, '120.904441', '24.442600'); -INSERT INTO `base_postage_region` -VALUES (3551, 3325, 'Z', '彰化', '彰化县', 2, 'changhua', '5', 1, '120.416000', '24.000000'); -INSERT INTO `base_postage_region` -VALUES (3552, 3551, 'Z', '彰化市', '彰化市', 3, 'zhanghuashi', '500', 1, '120.542294', '24.080911'); -INSERT INTO `base_postage_region` -VALUES (3553, 3551, 'L', '鹿港', '鹿港镇', 3, 'lugang', '505', 1, '120.435392', '24.056937'); -INSERT INTO `base_postage_region` -VALUES (3554, 3551, 'H', '和美', '和美镇', 3, 'hemei', '508', 1, '120.500265', '24.110904'); -INSERT INTO `base_postage_region` -VALUES (3555, 3551, 'X', '线西', '线西乡', 3, 'xianxi', '507', 1, '120.465921', '24.128653'); -INSERT INTO `base_postage_region` -VALUES (3556, 3551, 'S', '伸港', '伸港乡', 3, 'shengang', '509', 1, '120.484224', '24.146081'); -INSERT INTO `base_postage_region` -VALUES (3557, 3551, 'F', '福兴', '福兴乡', 3, 'fuxing', '506', 1, '120.443682', '24.047883'); -INSERT INTO `base_postage_region` -VALUES (3558, 3551, 'X', '秀水', '秀水乡', 3, 'xiushui', '504', 1, '120.502658', '24.035267'); -INSERT INTO `base_postage_region` -VALUES (3559, 3551, 'H', '花坛', '花坛乡', 3, 'huatan', '503', 1, '120.538403', '24.029399'); -INSERT INTO `base_postage_region` -VALUES (3560, 3551, 'F', '芬园', '芬园乡', 3, 'fenyuan', '502', 1, '120.629024', '24.013658'); -INSERT INTO `base_postage_region` -VALUES (3561, 3551, 'Y', '员林', '员林镇', 3, 'yuanlin', '510', 1, '120.574625', '23.958999'); -INSERT INTO `base_postage_region` -VALUES (3562, 3551, 'X', '溪湖', '溪湖镇', 3, 'xihu', '514', 1, '120.479144', '23.962315'); -INSERT INTO `base_postage_region` -VALUES (3563, 3551, 'T', '田中', '田中镇', 3, 'tianzhong', '520', 1, '120.580629', '23.861718'); -INSERT INTO `base_postage_region` -VALUES (3564, 3551, 'D', '大村', '大村乡', 3, 'dacun', '515', 1, '120.540713', '23.993726'); -INSERT INTO `base_postage_region` -VALUES (3565, 3551, 'P', '埔盐', '埔盐乡', 3, 'puyan', '516', 1, '120.464044', '24.000346'); -INSERT INTO `base_postage_region` -VALUES (3566, 3551, 'P', '埔心', '埔心乡', 3, 'puxin', '513', 1, '120.543568', '23.953019'); -INSERT INTO `base_postage_region` -VALUES (3567, 3551, 'Y', '永靖', '永靖乡', 3, 'yongjing', '512', 1, '120.547775', '23.924703'); -INSERT INTO `base_postage_region` -VALUES (3568, 3551, 'S', '社头', '社头乡', 3, 'shetou', '511', 1, '120.582681', '23.896686'); -INSERT INTO `base_postage_region` -VALUES (3569, 3551, 'E', '二水', '二水乡', 3, 'ershui', '530', 1, '120.618788', '23.806995'); -INSERT INTO `base_postage_region` -VALUES (3570, 3551, 'B', '北斗', '北斗镇', 3, 'beidou', '521', 1, '120.520449', '23.870911'); -INSERT INTO `base_postage_region` -VALUES (3571, 3551, 'E', '二林', '二林镇', 3, 'erlin', '526', 1, '120.374468', '23.899751'); -INSERT INTO `base_postage_region` -VALUES (3572, 3551, 'T', '田尾', '田尾乡', 3, 'tianwei', '522', 1, '120.524717', '23.890735'); -INSERT INTO `base_postage_region` -VALUES (3573, 3551, NULL, '埤头', '埤头乡', 3, 'pitou', '523', 1, '120.462599', '23.891324'); -INSERT INTO `base_postage_region` -VALUES (3574, 3551, 'F', '芳苑', '芳苑乡', 3, 'fangyuan', '528', 1, '120.320329', '23.924222'); -INSERT INTO `base_postage_region` -VALUES (3575, 3551, 'D', '大城', '大城乡', 3, 'dacheng', '527', 1, '120.320934', '23.852382'); -INSERT INTO `base_postage_region` -VALUES (3576, 3551, 'Z', '竹塘', '竹塘乡', 3, 'zhutang', '525', 1, '120.427499', '23.860112'); -INSERT INTO `base_postage_region` -VALUES (3577, 3551, 'X', '溪州', '溪州乡', 3, 'xizhou', '524', 1, '120.498706', '23.851229'); -INSERT INTO `base_postage_region` -VALUES (3578, 3325, 'N', '南投', '南投县', 2, 'nantou', '5', 1, '120.830000', '23.830000'); -INSERT INTO `base_postage_region` -VALUES (3579, 3578, 'N', '南投市', '南投市', 3, 'nantoushi', '540', 1, '120.683706', '23.909956'); -INSERT INTO `base_postage_region` -VALUES (3580, 3578, 'P', '埔里', '埔里镇', 3, 'puli', '545', 1, '120.964648', '23.964789'); -INSERT INTO `base_postage_region` -VALUES (3581, 3578, 'C', '草屯', '草屯镇', 3, 'caotun', '542', 1, '120.680343', '23.973947'); -INSERT INTO `base_postage_region` -VALUES (3582, 3578, 'Z', '竹山', '竹山镇', 3, 'zhushan', '557', 1, '120.672007', '23.757655'); -INSERT INTO `base_postage_region` -VALUES (3583, 3578, 'J', '集集', '集集镇', 3, 'jiji', '552', 1, '120.783673', '23.829013'); -INSERT INTO `base_postage_region` -VALUES (3584, 3578, 'M', '名间', '名间乡', 3, 'mingjian', '551', 1, '120.702797', '23.838427'); -INSERT INTO `base_postage_region` -VALUES (3585, 3578, 'L', '鹿谷', '鹿谷乡', 3, 'lugu', '558', 1, '120.752796', '23.744471'); -INSERT INTO `base_postage_region` -VALUES (3586, 3578, 'Z', '中寮', '中寮乡', 3, 'zhongliao', '541', 1, '120.766654', '23.878935'); -INSERT INTO `base_postage_region` -VALUES (3587, 3578, 'Y', '鱼池', '鱼池乡', 3, 'yuchi', '555', 1, '120.936060', '23.896356'); -INSERT INTO `base_postage_region` -VALUES (3588, 3578, 'G', '国姓', '国姓乡', 3, 'guoxing', '544', 1, '120.858541', '24.042298'); -INSERT INTO `base_postage_region` -VALUES (3589, 3578, 'S', '水里', '水里乡', 3, 'shuili', '553', 1, '120.855912', '23.812086'); -INSERT INTO `base_postage_region` -VALUES (3590, 3578, 'X', '信义', '信义乡', 3, 'xinyi', '556', 1, '120.855257', '23.699922'); -INSERT INTO `base_postage_region` -VALUES (3591, 3578, 'R', '仁爱', '仁爱乡', 3, 'renai', '546', 1, '121.133543', '24.024429'); -INSERT INTO `base_postage_region` -VALUES (3592, 3325, 'Y', '云林', '云林县', 2, 'yunlin', '6', 1, '120.250000', '23.750000'); -INSERT INTO `base_postage_region` -VALUES (3593, 3592, 'D', '斗六', '斗六市', 3, 'douliu', '640', 1, '120.527360', '23.697651'); -INSERT INTO `base_postage_region` -VALUES (3594, 3592, 'D', '斗南', '斗南镇', 3, 'dounan', '630', 1, '120.479075', '23.679731'); -INSERT INTO `base_postage_region` -VALUES (3595, 3592, 'H', '虎尾', '虎尾镇', 3, 'huwei', '632', 1, '120.445339', '23.708182'); -INSERT INTO `base_postage_region` -VALUES (3596, 3592, 'X', '西螺', '西螺镇', 3, 'xiluo', '648', 1, '120.466010', '23.797984'); -INSERT INTO `base_postage_region` -VALUES (3597, 3592, 'T', '土库', '土库镇', 3, 'tuku', '633', 1, '120.392572', '23.677822'); -INSERT INTO `base_postage_region` -VALUES (3598, 3592, 'B', '北港', '北港镇', 3, 'beigang', '651', 1, '120.302393', '23.575525'); -INSERT INTO `base_postage_region` -VALUES (3599, 3592, 'G', '古坑', '古坑乡', 3, 'gukeng', '646', 1, '120.562043', '23.642568'); -INSERT INTO `base_postage_region` -VALUES (3600, 3592, 'D', '大埤', '大埤乡', 3, 'dapi', '631', 1, '120.430516', '23.645908'); -INSERT INTO `base_postage_region` -VALUES (3601, 3592, NULL, '莿桐', '莿桐乡', 3, 'citong', '647', 1, '120.502374', '23.760784'); -INSERT INTO `base_postage_region` -VALUES (3602, 3592, 'L', '林内', '林内乡', 3, 'linna', '643', 1, '120.611365', '23.758712'); -INSERT INTO `base_postage_region` -VALUES (3603, 3592, 'E', '二仑', '二仑乡', 3, 'erlun', '649', 1, '120.415077', '23.771273'); -INSERT INTO `base_postage_region` -VALUES (3604, 3592, 'L', '仑背', '仑背乡', 3, 'lunbei', '637', 1, '120.353895', '23.758840'); -INSERT INTO `base_postage_region` -VALUES (3605, 3592, 'M', '麦寮', '麦寮乡', 3, 'mailiao', '638', 1, '120.252043', '23.753841'); -INSERT INTO `base_postage_region` -VALUES (3606, 3592, 'D', '东势', '东势乡', 3, 'dongshi', '635', 1, '120.252672', '23.674679'); -INSERT INTO `base_postage_region` -VALUES (3607, 3592, 'B', '褒忠', '褒忠乡', 3, 'baozhong', '634', 1, '120.310488', '23.694245'); -INSERT INTO `base_postage_region` -VALUES (3608, 3592, 'T', '台西', '台西乡', 3, 'taixi', '636', 1, '120.196141', '23.702819'); -INSERT INTO `base_postage_region` -VALUES (3609, 3592, 'Y', '元长', '元长乡', 3, 'yuanchang', '655', 1, '120.315124', '23.649458'); -INSERT INTO `base_postage_region` -VALUES (3610, 3592, 'S', '四湖', '四湖乡', 3, 'sihu', '654', 1, '120.225741', '23.637740'); -INSERT INTO `base_postage_region` -VALUES (3611, 3592, 'K', '口湖', '口湖乡', 3, 'kouhu', '653', 1, '120.185370', '23.582406'); -INSERT INTO `base_postage_region` -VALUES (3612, 3592, 'S', '水林', '水林乡', 3, 'shuilin', '652', 1, '120.245948', '23.572634'); -INSERT INTO `base_postage_region` -VALUES (3613, 3325, 'J', '嘉义', '嘉义县', 2, 'chiayi', '6', 1, '120.300000', '23.500000'); -INSERT INTO `base_postage_region` -VALUES (3614, 3613, 'T', '太保', '太保市', 3, 'taibao', '612', 1, '120.332876', '23.459647'); -INSERT INTO `base_postage_region` -VALUES (3615, 3613, 'P', '朴子', '朴子市', 3, 'puzi', '613', 1, '120.247014', '23.464961'); -INSERT INTO `base_postage_region` -VALUES (3616, 3613, 'B', '布袋', '布袋镇', 3, 'budai', '625', 1, '120.166936', '23.377979'); -INSERT INTO `base_postage_region` -VALUES (3617, 3613, 'D', '大林', '大林镇', 3, 'dalin', '622', 1, '120.471336', '23.603815'); -INSERT INTO `base_postage_region` -VALUES (3618, 3613, 'M', '民雄', '民雄乡', 3, 'minxiong', '621', 1, '120.428577', '23.551456'); -INSERT INTO `base_postage_region` -VALUES (3619, 3613, 'X', '溪口', '溪口乡', 3, 'xikou', '623', 1, '120.393822', '23.602223'); -INSERT INTO `base_postage_region` -VALUES (3620, 3613, 'X', '新港', '新港乡', 3, 'xingang', '616', 1, '120.347647', '23.551806'); -INSERT INTO `base_postage_region` -VALUES (3621, 3613, 'L', '六脚', '六脚乡', 3, 'liujiao', '615', 1, '120.291083', '23.493942'); -INSERT INTO `base_postage_region` -VALUES (3622, 3613, 'D', '东石', '东石乡', 3, 'dongshi', '614', 1, '120.153822', '23.459235'); -INSERT INTO `base_postage_region` -VALUES (3623, 3613, 'Y', '义竹', '义竹乡', 3, 'yizhu', '624', 1, '120.243423', '23.336277'); -INSERT INTO `base_postage_region` -VALUES (3624, 3613, 'L', '鹿草', '鹿草乡', 3, 'lucao', '611', 1, '120.308370', '23.410784'); -INSERT INTO `base_postage_region` -VALUES (3625, 3613, 'S', '水上', '水上乡', 3, 'shuishang', '608', 1, '120.397936', '23.428104'); -INSERT INTO `base_postage_region` -VALUES (3626, 3613, 'Z', '中埔', '中埔乡', 3, 'zhongpu', '606', 1, '120.522948', '23.425148'); -INSERT INTO `base_postage_region` -VALUES (3627, 3613, 'Z', '竹崎', '竹崎乡', 3, 'zhuqi', '604', 1, '120.551466', '23.523184'); -INSERT INTO `base_postage_region` -VALUES (3628, 3613, 'M', '梅山', '梅山乡', 3, 'meishan', '603', 1, '120.557192', '23.584915'); -INSERT INTO `base_postage_region` -VALUES (3629, 3613, 'F', '番路', '番路乡', 3, 'fanlu', '602', 1, '120.555043', '23.465222'); -INSERT INTO `base_postage_region` -VALUES (3630, 3613, 'D', '大埔', '大埔乡', 3, 'dapu', '607', 1, '120.593795', '23.296715'); -INSERT INTO `base_postage_region` -VALUES (3631, 3613, 'A', '阿里山', '阿里山乡', 3, 'alishan', '605', 1, '120.732520', '23.467950'); -INSERT INTO `base_postage_region` -VALUES (3632, 3325, 'P', '屏东', '屏东县', 2, 'pingtung', '9', 1, '120.487928', '22.682802'); -INSERT INTO `base_postage_region` -VALUES (3633, 3632, 'P', '屏东', '屏东市', 3, 'pingdong', '900', 1, '120.488465', '22.669723'); -INSERT INTO `base_postage_region` -VALUES (3634, 3632, 'C', '潮州', '潮州镇', 3, 'chaozhou', '920', 1, '120.542854', '22.550536'); -INSERT INTO `base_postage_region` -VALUES (3635, 3632, 'D', '东港', '东港镇', 3, 'donggang', '928', 1, '120.454489', '22.466626'); -INSERT INTO `base_postage_region` -VALUES (3636, 3632, 'H', '恒春', '恒春镇', 3, 'hengchun', '946', 1, '120.745451', '22.002373'); -INSERT INTO `base_postage_region` -VALUES (3637, 3632, 'W', '万丹', '万丹乡', 3, 'wandan', '913', 1, '120.484533', '22.589839'); -INSERT INTO `base_postage_region` -VALUES (3638, 3632, 'C', '长治', '长治乡', 3, 'changzhi', '908', 1, '120.527614', '22.677062'); -INSERT INTO `base_postage_region` -VALUES (3639, 3632, NULL, '麟洛', '麟洛乡', 3, 'linluo', '909', 1, '120.527283', '22.650604'); -INSERT INTO `base_postage_region` -VALUES (3640, 3632, 'J', '九如', '九如乡', 3, 'jiuru', '904', 1, '120.490142', '22.739778'); -INSERT INTO `base_postage_region` -VALUES (3641, 3632, 'L', '里港', '里港乡', 3, 'ligang', '905', 1, '120.494490', '22.779220'); -INSERT INTO `base_postage_region` -VALUES (3642, 3632, 'Y', '盐埔', '盐埔乡', 3, 'yanpu', '907', 1, '120.572849', '22.754783'); -INSERT INTO `base_postage_region` -VALUES (3643, 3632, 'G', '高树', '高树乡', 3, 'gaoshu', '906', 1, '120.600214', '22.826789'); -INSERT INTO `base_postage_region` -VALUES (3644, 3632, 'W', '万峦', '万峦乡', 3, 'wanluan', '923', 1, '120.566477', '22.571965'); -INSERT INTO `base_postage_region` -VALUES (3645, 3632, 'N', '内埔', '内埔乡', 3, 'napu', '912', 1, '120.566865', '22.611967'); -INSERT INTO `base_postage_region` -VALUES (3646, 3632, 'Z', '竹田', '竹田乡', 3, 'zhutian', '911', 1, '120.544038', '22.584678'); -INSERT INTO `base_postage_region` -VALUES (3647, 3632, 'X', '新埤', '新埤乡', 3, 'xinpi', '925', 1, '120.549546', '22.469976'); -INSERT INTO `base_postage_region` -VALUES (3648, 3632, NULL, '枋寮', '枋寮乡', 3, 'fangliao', '940', 1, '120.593438', '22.365560'); -INSERT INTO `base_postage_region` -VALUES (3649, 3632, 'X', '新园', '新园乡', 3, 'xinyuan', '932', 1, '120.461739', '22.543952'); -INSERT INTO `base_postage_region` -VALUES (3650, 3632, NULL, '崁顶', '崁顶乡', 3, 'kanding', '924', 1, '120.514571', '22.514795'); -INSERT INTO `base_postage_region` -VALUES (3651, 3632, 'L', '林边', '林边乡', 3, 'linbian', '927', 1, '120.515091', '22.434015'); -INSERT INTO `base_postage_region` -VALUES (3652, 3632, 'N', '南州', '南州乡', 3, 'nanzhou', '926', 1, '120.509808', '22.490192'); -INSERT INTO `base_postage_region` -VALUES (3653, 3632, 'J', '佳冬', '佳冬乡', 3, 'jiadong', '931', 1, '120.551544', '22.417653'); -INSERT INTO `base_postage_region` -VALUES (3654, 3632, 'L', '琉球', '琉球乡', 3, 'liuqiu', '929', 1, '120.369020', '22.342366'); -INSERT INTO `base_postage_region` -VALUES (3655, 3632, 'C', '车城', '车城乡', 3, 'checheng', '944', 1, '120.710979', '22.072077'); -INSERT INTO `base_postage_region` -VALUES (3656, 3632, 'M', '满州', '满州乡', 3, 'manzhou', '947', 1, '120.838843', '22.020853'); -INSERT INTO `base_postage_region` -VALUES (3657, 3632, NULL, '枋山', '枋山乡', 3, 'fangshan', '941', 1, '120.656356', '22.260338'); -INSERT INTO `base_postage_region` -VALUES (3658, 3632, 'S', '三地门', '三地门乡', 3, 'sandimen', '901', 1, '120.654486', '22.713877'); -INSERT INTO `base_postage_region` -VALUES (3659, 3632, 'W', '雾台', '雾台乡', 3, 'wutai', '902', 1, '120.732318', '22.744877'); -INSERT INTO `base_postage_region` -VALUES (3660, 3632, 'M', '玛家', '玛家乡', 3, 'majia', '903', 1, '120.644130', '22.706718'); -INSERT INTO `base_postage_region` -VALUES (3661, 3632, 'T', '泰武', '泰武乡', 3, 'taiwu', '921', 1, '120.632856', '22.591819'); -INSERT INTO `base_postage_region` -VALUES (3662, 3632, 'L', '来义', '来义乡', 3, 'laiyi', '922', 1, '120.633601', '22.525866'); -INSERT INTO `base_postage_region` -VALUES (3663, 3632, 'C', '春日', '春日乡', 3, 'chunri', '942', 1, '120.628793', '22.370672'); -INSERT INTO `base_postage_region` -VALUES (3664, 3632, 'S', '狮子', '狮子乡', 3, 'shizi', '943', 1, '120.704617', '22.201917'); -INSERT INTO `base_postage_region` -VALUES (3665, 3632, 'M', '牡丹', '牡丹乡', 3, 'mudan', '945', 1, '120.770108', '22.125687'); -INSERT INTO `base_postage_region` -VALUES (3666, 3325, 'T', '台东', '台东县', 2, 'taitung', '9', 1, '120.916000', '23.000000'); -INSERT INTO `base_postage_region` -VALUES (3667, 3666, 'T', '台东', '台东市', 3, 'taidong', '950', 1, '121.145654', '22.756045'); -INSERT INTO `base_postage_region` -VALUES (3668, 3666, 'C', '成功', '成功镇', 3, 'chenggong', '961', 1, '121.379571', '23.100223'); -INSERT INTO `base_postage_region` -VALUES (3669, 3666, 'G', '关山', '关山镇', 3, 'guanshan', '956', 1, '121.163134', '23.047450'); -INSERT INTO `base_postage_region` -VALUES (3670, 3666, 'B', '卑南', '卑南乡', 3, 'beinan', '954', 1, '121.083503', '22.786039'); -INSERT INTO `base_postage_region` -VALUES (3671, 3666, 'L', '鹿野', '鹿野乡', 3, 'luye', '955', 1, '121.135982', '22.913951'); -INSERT INTO `base_postage_region` -VALUES (3672, 3666, 'C', '池上', '池上乡', 3, 'chishang', '958', 1, '121.215139', '23.122393'); -INSERT INTO `base_postage_region` -VALUES (3673, 3666, 'D', '东河', '东河乡', 3, 'donghe', '959', 1, '121.300334', '22.969934'); -INSERT INTO `base_postage_region` -VALUES (3674, 3666, 'C', '长滨', '长滨乡', 3, 'changbin', '962', 1, '121.451522', '23.315041'); -INSERT INTO `base_postage_region` -VALUES (3675, 3666, 'T', '太麻里', '太麻里乡', 3, 'taimali', '963', 1, '121.007394', '22.615383'); -INSERT INTO `base_postage_region` -VALUES (3676, 3666, 'D', '大武', '大武乡', 3, 'dawu', '965', 1, '120.889938', '22.339919'); -INSERT INTO `base_postage_region` -VALUES (3677, 3666, 'L', '绿岛', '绿岛乡', 3, 'lvdao', '951', 1, '121.492596', '22.661676'); -INSERT INTO `base_postage_region` -VALUES (3678, 3666, 'H', '海端', '海端乡', 3, 'haiduan', '957', 1, '121.172008', '23.101074'); -INSERT INTO `base_postage_region` -VALUES (3679, 3666, 'Y', '延平', '延平乡', 3, 'yanping', '953', 1, '121.084499', '22.902358'); -INSERT INTO `base_postage_region` -VALUES (3680, 3666, 'J', '金峰', '金峰乡', 3, 'jinfeng', '964', 1, '120.971292', '22.595511'); -INSERT INTO `base_postage_region` -VALUES (3681, 3666, 'D', '达仁', '达仁乡', 3, 'daren', '966', 1, '120.884131', '22.294869'); -INSERT INTO `base_postage_region` -VALUES (3682, 3666, 'L', '兰屿', '兰屿乡', 3, 'lanyu', '952', 1, '121.532473', '22.056736'); -INSERT INTO `base_postage_region` -VALUES (3683, 3325, 'H', '花莲', '花莲县', 2, 'hualien', '9', 1, '121.300000', '23.830000'); -INSERT INTO `base_postage_region` -VALUES (3684, 3683, 'H', '花莲', '花莲市', 3, 'hualian', '970', 1, '121.606810', '23.982074'); -INSERT INTO `base_postage_region` -VALUES (3685, 3683, 'F', '凤林', '凤林镇', 3, 'fenglin', '975', 1, '121.451687', '23.744648'); -INSERT INTO `base_postage_region` -VALUES (3686, 3683, 'Y', '玉里', '玉里镇', 3, 'yuli', '981', 1, '121.316445', '23.336509'); -INSERT INTO `base_postage_region` -VALUES (3687, 3683, 'X', '新城', '新城乡', 3, 'xincheng', '971', 1, '121.640512', '24.128133'); -INSERT INTO `base_postage_region` -VALUES (3688, 3683, 'J', '吉安', '吉安乡', 3, 'jian', '973', 1, '121.568005', '23.961635'); -INSERT INTO `base_postage_region` -VALUES (3689, 3683, 'S', '寿丰', '寿丰乡', 3, 'shoufeng', '974', 1, '121.508955', '23.870680'); -INSERT INTO `base_postage_region` -VALUES (3690, 3683, 'G', '光复', '光复乡', 3, 'guangfu', '976', 1, '121.423496', '23.669084'); -INSERT INTO `base_postage_region` -VALUES (3691, 3683, 'F', '丰滨', '丰滨乡', 3, 'fengbin', '977', 1, '121.518639', '23.597080'); -INSERT INTO `base_postage_region` -VALUES (3692, 3683, 'R', '瑞穗', '瑞穗乡', 3, 'ruisui', '978', 1, '121.375992', '23.496817'); -INSERT INTO `base_postage_region` -VALUES (3693, 3683, 'F', '富里', '富里乡', 3, 'fuli', '983', 1, '121.250124', '23.179984'); -INSERT INTO `base_postage_region` -VALUES (3694, 3683, 'X', '秀林', '秀林乡', 3, 'xiulin', '972', 1, '121.620381', '24.116642'); -INSERT INTO `base_postage_region` -VALUES (3695, 3683, 'W', '万荣', '万荣乡', 3, 'wanrong', '979', 1, '121.407493', '23.715346'); -INSERT INTO `base_postage_region` -VALUES (3696, 3683, 'Z', '卓溪', '卓溪乡', 3, 'zhuoxi', '982', 1, '121.303422', '23.346369'); -INSERT INTO `base_postage_region` -VALUES (3697, 3325, 'P', '澎湖', '澎湖县', 2, 'penghu', '8', 1, '119.566417', '23.569733'); -INSERT INTO `base_postage_region` -VALUES (3698, 3697, 'M', '马公', '马公市', 3, 'magong', '880', 1, '119.566499', '23.565845'); -INSERT INTO `base_postage_region` -VALUES (3699, 3697, 'H', '湖西', '湖西乡', 3, 'huxi', '885', 1, '119.659666', '23.583358'); -INSERT INTO `base_postage_region` -VALUES (3700, 3697, 'B', '白沙', '白沙乡', 3, 'baisha', '884', 1, '119.597919', '23.666060'); -INSERT INTO `base_postage_region` -VALUES (3701, 3697, 'X', '西屿', '西屿乡', 3, 'xiyu', '881', 1, '119.506974', '23.600836'); -INSERT INTO `base_postage_region` -VALUES (3702, 3697, 'W', '望安', '望安乡', 3, 'wangan', '882', 1, '119.500538', '23.357531'); -INSERT INTO `base_postage_region` -VALUES (3703, 3697, 'Q', '七美', '七美乡', 3, 'qimei', '883', 1, '119.423929', '23.206018'); -INSERT INTO `base_postage_region` -VALUES (3704, 3325, 'J', '金门', '金门县', 2, 'jinmen', '8', 1, '118.317089', '24.432706'); -INSERT INTO `base_postage_region` -VALUES (3705, 3704, 'J', '金城', '金城镇', 3, 'jincheng', '893', 1, '118.316667', '24.416667'); -INSERT INTO `base_postage_region` -VALUES (3706, 3704, 'J', '金湖', '金湖镇', 3, 'jinhu', '891', 1, '118.419743', '24.438633'); -INSERT INTO `base_postage_region` -VALUES (3707, 3704, 'J', '金沙', '金沙镇', 3, 'jinsha', '890', 1, '118.427993', '24.481109'); -INSERT INTO `base_postage_region` -VALUES (3708, 3704, 'J', '金宁', '金宁乡', 3, 'jinning', '892', 1, '118.334506', '24.45672'); -INSERT INTO `base_postage_region` -VALUES (3709, 3704, 'L', '烈屿', '烈屿乡', 3, 'lieyu', '894', 1, '118.247255', '24.433102'); -INSERT INTO `base_postage_region` -VALUES (3710, 3704, 'W', '乌丘', '乌丘乡', 3, 'wuqiu', '896', 1, '118.319578', '24.435038'); -INSERT INTO `base_postage_region` -VALUES (3711, 3325, 'L', '连江', '连江县', 2, 'lienchiang', '2', 1, '119.539704', '26.197364'); -INSERT INTO `base_postage_region` -VALUES (3712, 3711, 'N', '南竿', '南竿乡', 3, 'nangan', '209', 1, '119.944267', '26.144035'); -INSERT INTO `base_postage_region` -VALUES (3713, 3711, 'B', '北竿', '北竿乡', 3, 'beigan', '210', 1, '120.000572', '26.221983'); -INSERT INTO `base_postage_region` -VALUES (3714, 3711, NULL, '莒光', '莒光乡', 3, 'juguang', '211', 1, '119.940405', '25.976256'); -INSERT INTO `base_postage_region` -VALUES (3715, 3711, 'D', '东引', '东引乡', 3, 'dongyin', '212', 1, '120.493955', '26.366164'); -INSERT INTO `base_postage_region` -VALUES (3716, 0, 'X', '香港', '香港特别行政区', 1, 'hongkong', '', 1, '114.173355', '22.320048'); -INSERT INTO `base_postage_region` -VALUES (3738, 0, 'A', '澳门', '澳门特别行政区', 1, 'macau', '', 1, '113.54909', '22.198951'); -INSERT INTO `base_postage_region` -VALUES (3739, 3738, 'A', '澳门半岛', '澳门半岛', 2, 'macaupeninsula', '999078', 1, '113.549134', '22.198751'); -INSERT INTO `base_postage_region` -VALUES (3740, 3739, 'H', '花地玛堂区', '花地玛堂区', 3, 'nossasenhoradefatima', '999078', 1, '113.552284', '22.208067'); -INSERT INTO `base_postage_region` -VALUES (3741, 3739, 'S', '圣安多尼堂区', '圣安多尼堂区', 3, 'santoantonio', '999078', 1, '113.564301', '22.12381'); -INSERT INTO `base_postage_region` -VALUES (3742, 3739, 'D', '大堂', '大堂区', 3, 'sé', '999078', 1, '113.552971', '22.188359'); -INSERT INTO `base_postage_region` -VALUES (3743, 3739, 'W', '望德堂区', '望德堂区', 3, 'saolazaro', '999078', 1, '113.550568', '22.194081'); -INSERT INTO `base_postage_region` -VALUES (3744, 3739, 'F', '风顺堂区', '风顺堂区', 3, 'saolourenco', '999078', 1, '113.541928', '22.187368'); -INSERT INTO `base_postage_region` -VALUES (3745, 3738, NULL, '氹仔岛', '氹仔岛', 2, 'taipa', '999078', 1, '113.577669', '22.156838'); -INSERT INTO `base_postage_region` -VALUES (3746, 3745, 'J', '嘉模堂区', '嘉模堂区', 3, 'ourladyofcarmelsparish', '999078', 1, '113.565303', '22.149029'); -INSERT INTO `base_postage_region` -VALUES (3747, 3738, 'L', '路环岛', '路环岛', 2, 'coloane', '999078', 1, '113.564857', '22.116226'); -INSERT INTO `base_postage_region` -VALUES (3748, 3747, 'S', '圣方济各堂区', '圣方济各堂区', 3, 'stfrancisxaviersparish', '999078', 1, '113.559954', '22.123486'); -INSERT INTO `base_postage_region` -VALUES (3999, 3716, NULL, '香港', '香港特别行政区', 2, 'hongkong', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4000, 3999, NULL, '中西区', '中西区', 3, 'zhongxin', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4001, 3999, NULL, '东区', '东区', 3, 'dong', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4002, 3999, NULL, '九龙城区', '九龙城区', 3, 'jiulong', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4003, 3999, NULL, '观塘区', '观塘区', 3, 'guantang', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4004, 3999, NULL, '南区', '南区', 3, 'nan', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4005, 3999, NULL, '深水埗区', '深水埗区', 3, 'shenshuibu', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4006, 3999, NULL, '湾仔区', '湾仔区', 3, 'wanzi', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4007, 3999, NULL, '黄大仙区', '黄大仙区', 3, 'huangdaxian', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4008, 3999, NULL, '油尖旺区', '油尖旺区', 3, 'youjianwang', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4009, 3999, NULL, '离岛区', '离岛区', 3, 'lidao', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4010, 3999, NULL, '葵青区', '葵青区', 3, 'kuiqing', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4011, 3999, NULL, '北区', '北区', 3, 'bei', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4012, 3999, NULL, '西贡区', '西贡区', 3, 'xigong', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4013, 3999, NULL, '沙田区', '沙田区', 3, 'shatian', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4014, 3999, NULL, '屯门区', '屯门区', 3, 'tunmen', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4015, 3999, NULL, '大埔区', '大埔区', 3, 'dapu', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4016, 3999, NULL, '荃湾区', '荃湾区', 3, 'quanwan', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4017, 3999, NULL, '元朗区', '元朗区', 3, 'yuanlang', NULL, 1, NULL, NULL); -INSERT INTO `base_postage_region` -VALUES (4018, 2291, 'D', '儋州', '儋州市', 2, 'danzhou', '571700', 1, NULL, NULL); - --- ---------------------------- --- Table structure for system_config --- ---------------------------- -DROP TABLE IF EXISTS `system_config`; -CREATE TABLE `system_config` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配置分类', - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配置名称', - `value` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '配置内容', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_system_config_type`(`type`) USING BTREE, - INDEX `idx_system_config_name`(`name`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统-配置' ROW_FORMAT = COMPACT; - --- ---------------------------- --- Records of system_config --- ---------------------------- -INSERT INTO `system_config` -VALUES (1, 'base', 'app_name', 'ThinkAdmin'); -INSERT INTO `system_config` -VALUES (2, 'base', 'app_version', 'v6'); -INSERT INTO `system_config` -VALUES (3, 'base', 'beian', ''); -INSERT INTO `system_config` -VALUES (4, 'base', 'miitbeian', ''); -INSERT INTO `system_config` -VALUES (5, 'base', 'site_copy', '©版权所有 2014-2020 楚才科技'); -INSERT INTO `system_config` -VALUES (6, 'base', 'site_icon', 'https://v6.thinkadmin.top/upload/f4/7b8fe06e38ae9908e8398da45583b9.png'); -INSERT INTO `system_config` -VALUES (7, 'base', 'site_name', 'ThinkAdmin'); -INSERT INTO `system_config` -VALUES (8, 'base', 'xpath', 'admin'); -INSERT INTO `system_config` -VALUES (9, 'storage', 'allow_exts', 'doc,gif,icon,jpg,mp3,mp4,p12,pem,png,rar,xls,xlsx'); -INSERT INTO `system_config` -VALUES (10, 'storage', 'link_type', 'none'); -INSERT INTO `system_config` -VALUES (11, 'storage', 'local_http_domain', ''); -INSERT INTO `system_config` -VALUES (12, 'storage', 'local_http_protocol', 'follow'); -INSERT INTO `system_config` -VALUES (13, 'storage', 'qiniu_http_protocol', 'http'); -INSERT INTO `system_config` -VALUES (14, 'storage', 'txcos_http_protocol', 'http'); -INSERT INTO `system_config` -VALUES (15, 'storage', 'type', 'local'); -INSERT INTO `system_config` -VALUES (16, 'wechat', 'thr_appid', 'wx60a43dd8161666d4'); -INSERT INTO `system_config` -VALUES (17, 'wechat', 'thr_appkey', '7d0e4a487c6258b2232294b6ef0adb9e'); -INSERT INTO `system_config` -VALUES (18, 'wechat', 'type', 'thr'); -INSERT INTO `system_config` -VALUES (19, 'storage', 'alioss_http_protocol', 'http'); - --- ---------------------------- --- Table structure for system_menu --- ---------------------------- -DROP TABLE IF EXISTS `system_menu`; -CREATE TABLE `system_menu` -( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `pid` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '上级ID', - `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '菜单名称', - `icon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '菜单图标', - `node` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '节点代码', - `url` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '链接节点', - `params` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '链接参数', - `target` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '_self' COMMENT '打开方式', - `sort` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '状态(0:禁用,1:启用)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_system_menu_status`(`status`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统-菜单' ROW_FORMAT = COMPACT; - --- ---------------------------- --- Records of system_menu --- ---------------------------- -INSERT INTO `system_menu` -VALUES (2, 0, '系统管理', '', '', '#', '', '_self', 100, 1, '2018-09-05 18:04:52'); -INSERT INTO `system_menu` -VALUES (3, 4, '系统菜单管理', 'layui-icon layui-icon-layouts', '', 'admin/menu/index', '', '_self', 1, 1, '2018-09-05 18:05:26'); -INSERT INTO `system_menu` -VALUES (4, 2, '系统配置', '', '', '#', '', '_self', 20, 1, '2018-09-05 18:07:17'); -INSERT INTO `system_menu` -VALUES (5, 12, '系统用户管理', 'layui-icon layui-icon-username', '', 'admin/user/index', '', '_self', 1, 1, '2018-09-06 11:10:42'); -INSERT INTO `system_menu` -VALUES (7, 12, '访问权限管理', 'layui-icon layui-icon-vercode', '', 'admin/auth/index', '', '_self', 2, 1, '2018-09-06 15:17:14'); -INSERT INTO `system_menu` -VALUES (8, 4, '数据字典管理', 'layui-icon layui-icon-code-circle', 'admin/base/index', 'admin/base/index', '', '_self', 2, 1, '2021-07-29 14:17:42'); -INSERT INTO `system_menu` -VALUES (11, 4, '系统参数配置', 'layui-icon layui-icon-set', '', 'admin/config/index', '', '_self', 5, 1, '2018-09-06 16:43:47'); -INSERT INTO `system_menu` -VALUES (12, 2, '权限管理', '', '', '#', '', '_self', 10, 1, '2018-09-06 18:01:31'); -INSERT INTO `system_menu` -VALUES (27, 4, '系统任务管理', 'layui-icon layui-icon-log', '', 'admin/queue/index', '', '_self', 4, 1, '2018-11-29 11:13:34'); -INSERT INTO `system_menu` -VALUES (49, 4, '系统日志管理', 'layui-icon layui-icon-form', '', 'admin/oplog/index', '', '_self', 3, 1, '2019-02-18 12:56:56'); -INSERT INTO `system_menu` -VALUES (56, 0, '微信管理', '', '', '#', '', '_self', 200, 1, '2019-12-09 11:00:37'); -INSERT INTO `system_menu` -VALUES (57, 56, '微信管理', '', '', '#', '', '_self', 0, 1, '2019-12-09 13:56:58'); -INSERT INTO `system_menu` -VALUES (58, 57, '微信接口配置', 'layui-icon layui-icon-set', '', 'wechat/config/options', '', '_self', 0, 1, '2019-12-09 13:57:28'); -INSERT INTO `system_menu` -VALUES (59, 57, '微信支付配置', 'layui-icon layui-icon-rmb', '', 'wechat/config/payment', '', '_self', 0, 1, '2019-12-09 13:58:42'); -INSERT INTO `system_menu` -VALUES (60, 56, '微信定制', '', '', '#', '', '_self', 0, 1, '2019-12-09 18:35:16'); -INSERT INTO `system_menu` -VALUES (61, 60, '微信粉丝管理', 'layui-icon layui-icon-username', '', 'wechat/fans/index', '', '_self', 0, 1, '2019-12-09 18:35:37'); -INSERT INTO `system_menu` -VALUES (62, 60, '微信图文管理', 'layui-icon layui-icon-template-1', '', 'wechat/news/index', '', '_self', 0, 1, '2019-12-09 18:43:51'); -INSERT INTO `system_menu` -VALUES (63, 60, '微信菜单配置', 'layui-icon layui-icon-cellphone', '', 'wechat/menu/index', '', '_self', 0, 1, '2019-12-09 22:49:28'); -INSERT INTO `system_menu` -VALUES (64, 60, '回复规则管理', 'layui-icon layui-icon-engine', '', 'wechat/keys/index', '', '_self', 0, 1, '2019-12-14 14:09:04'); -INSERT INTO `system_menu` -VALUES (65, 60, '关注回复配置', 'layui-icon layui-icon-senior', '', 'wechat/keys/subscribe', '', '_self', 0, 1, '2019-12-14 14:10:31'); -INSERT INTO `system_menu` -VALUES (66, 60, '默认回复配置', 'layui-icon layui-icon-util', '', 'wechat/keys/defaults', '', '_self', 0, 1, '2019-12-14 14:11:18'); -INSERT INTO `system_menu` -VALUES (67, 0, '控制台', '', '', '#', '', '_self', 300, 1, '2020-07-13 06:51:46'); -INSERT INTO `system_menu` -VALUES (68, 67, '数据管理', '', '', '#', '', '_self', 301, 1, '2020-07-13 06:51:54'); -INSERT INTO `system_menu` -VALUES (70, 68, '文章内容管理', 'layui-icon layui-icon-template', 'data/news.item/index', 'data/news.item/index', '', '_self', 10, 0, '2020-07-13 06:52:26'); -INSERT INTO `system_menu` -VALUES (71, 68, '轮播图片管理', 'layui-icon layui-icon-carousel', 'data/base.config/sliderhome', 'data/base.config/sliderhome', '', '_self', 30, 1, '2020-07-14 01:17:02'); -INSERT INTO `system_menu` -VALUES (73, 67, '商城管理', '', '', '#', '', '_self', 303, 1, '2020-09-08 02:51:30'); -INSERT INTO `system_menu` -VALUES (75, 73, '商品分类管理', 'layui-icon layui-icon-tabs', 'data/shop.cate/index', 'data/shop.cate/index', '', '_self', 70, 1, '2020-09-08 03:35:58'); -INSERT INTO `system_menu` -VALUES (76, 73, '商品数据管理', 'layui-icon layui-icon-star', 'data/shop.goods/index', 'data/shop.goods/index', '', '_self', 90, 1, '2020-09-08 07:13:19'); -INSERT INTO `system_menu` -VALUES (77, 90, '会员用户管理', 'layui-icon layui-icon-user', 'data/user.admin/index', 'data/user.admin/index', '', '_self', 900, 1, '2020-09-10 01:48:02'); -INSERT INTO `system_menu` -VALUES (78, 73, '订单数据管理', 'layui-icon layui-icon-template', 'data/shop.order/index', 'data/shop.order/index', '', '_self', 60, 1, '2020-09-10 01:48:41'); -INSERT INTO `system_menu` -VALUES (79, 73, '订单发货管理', 'layui-icon layui-icon-transfer', 'data/shop.send/index', 'data/shop.send/index', '', '_self', 50, 1, '2020-09-10 01:50:12'); -INSERT INTO `system_menu` -VALUES (81, 73, '快递公司管理', 'layui-icon layui-icon-website', 'data/base.postage.company/index', 'data/base.postage.company/index', '', '_self', 0, 1, '2020-09-15 08:47:46'); -INSERT INTO `system_menu` -VALUES (82, 73, '邮费模板管理', 'layui-icon layui-icon-template-1', 'data/base.postage.template/index', 'data/base.postage.template/index', '', '_self', 0, 1, '2020-09-15 09:14:46'); -INSERT INTO `system_menu` -VALUES (84, 68, '微信小程序配置', 'layui-icon layui-icon-set', 'data/base.config/wxapp', 'data/base.config/wxapp', '', '_self', 5, 1, '2020-09-21 16:34:08'); -INSERT INTO `system_menu` -VALUES (87, 68, '支付参数管理', 'layui-icon layui-icon-rmb', 'data/base.payment/index', 'data/base.payment/index', '', '_self', 6, 1, '2020-12-12 09:08:09'); -INSERT INTO `system_menu` -VALUES (88, 68, '系统通知管理', 'layui-icon layui-icon-notice', 'data/base.message/index', 'data/base.message/index', '', '_self', 6, 1, '2021-01-20 10:07:32'); -INSERT INTO `system_menu` -VALUES (89, 90, '余额充值管理', 'layui-icon layui-icon-rmb', 'data/user.balance/index', 'data/user.balance/index', '', '_self', 800, 1, '2021-01-20 10:09:49'); -INSERT INTO `system_menu` -VALUES (90, 67, '用户管理', '', '', '#', '', '_self', 302, 1, '2021-01-22 05:43:01'); -INSERT INTO `system_menu` -VALUES (91, 90, '用户等级管理', 'layui-icon layui-icon-senior', 'data/base.upgrade/index', 'data/base.upgrade/index', '', '_self', 300, 1, '2021-01-22 05:43:27'); -INSERT INTO `system_menu` -VALUES (92, 90, '用户折扣方案', 'layui-icon layui-icon-set', 'data/base.discount/index', 'data/base.discount/index', '', '_self', 200, 1, '2021-01-27 05:44:51'); -INSERT INTO `system_menu` -VALUES (93, 90, '用户提现管理', 'layui-icon layui-icon-component', 'data/user.transfer/index', 'data/user.transfer/index', '', '_self', 500, 1, '2021-01-28 06:48:34'); -INSERT INTO `system_menu` -VALUES (94, 68, '页面内容管理', 'layui-icon layui-icon-read', 'data/base.config/pagehome', 'data/base.config/pagehome', '', '_self', 20, 0, '2021-02-24 08:49:16'); -INSERT INTO `system_menu` -VALUES (95, 68, '邀请二维码设置', 'layui-icon layui-icon-cols', 'data/base.config/cropper', 'data/base.config/cropper', '', '_self', 0, 1, '2021-03-01 09:53:59'); -INSERT INTO `system_menu` -VALUES (97, 90, '用户返利管理', 'layui-icon layui-icon-transfer', 'data/user.rebate/index', 'data/user.rebate/index', '', '_self', 600, 1, '2021-03-12 10:06:49'); -INSERT INTO `system_menu` -VALUES (98, 0, '首 页', '', 'data/total.portal/index', 'data/total.portal/index', '', '_self', 400, 1, '2021-04-10 13:43:19'); -INSERT INTO `system_menu` -VALUES (99, 60, '关注自动回复', 'layui-icon layui-icon-release', 'wechat/auto/index', 'wechat/auto/index', '', '_self', 0, 1, '2021-04-10 15:56:54'); --- ---------------------------- --- Table structure for system_user --- ---------------------------- -DROP TABLE IF EXISTS `system_user`; -CREATE TABLE `system_user` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `usertype` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户类型', - `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户账号', - `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户密码', - `nickname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户昵称', - `headimg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '头像地址', - `authorize` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '权限授权', - `contact_qq` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '联系QQ', - `contact_mail` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '联系邮箱', - `contact_phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '联系手机', - `login_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '登录地址', - `login_at` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '登录时间', - `login_num` bigint(20) NULL DEFAULT 0 COMMENT '登录次数', - `describe` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '备注说明', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '状态(0禁用,1启用)', - `sort` bigint(20) NULL DEFAULT 0 COMMENT '排序权重', - `is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '删除(1删除,0未删)', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_system_user_status`(`status`) USING BTREE, - INDEX `idx_system_user_username`(`username`) USING BTREE, - INDEX `idx_system_user_deleted`(`is_deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统-用户' ROW_FORMAT = COMPACT; - --- ---------------------------- --- Records of system_user --- ---------------------------- -INSERT INTO `system_user` -VALUES (10000, '', 'admin', '21232f297a57a5a743894a0e4a801fc3', '系统管理员', 'https://xhtwxapp.cdn.xiaoding.shop/cf/23526f451784ff137f161b8fe18d5a.png', ',,', '', '', '', '127.0.0.1', '2021-04-10 13:42:51', 142, '', 1, 0, 0, '2015-11-13 15:14:22'); - -SET -FOREIGN_KEY_CHECKS = 1; diff --git a/SQL03-数据库升级.sql b/SQL03-数据库升级.sql deleted file mode 100644 index 016621721..000000000 --- a/SQL03-数据库升级.sql +++ /dev/null @@ -1,69 +0,0 @@ -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- 尝试创建微信自动回复数据表 -CREATE TABLE IF NOT EXISTS `wechat_auto` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '类型(text,image,news)', - `time` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '延迟时间', - `code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '消息编号', - `appid` char(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '公众号APPID', - `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '文本内容', - `image_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '图片链接', - `voice_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '语音链接', - `music_title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '音乐标题', - `music_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '音乐链接', - `music_image` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '缩略图片', - `music_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '音乐描述', - `video_title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '视频标题', - `video_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '视频URL', - `video_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '视频描述', - `news_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '图文ID', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '状态(0禁用,1启用)', - `create_by` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '创建人', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_wechat_auto_type` (`type`) USING BTREE, - INDEX `idx_wechat_auto_keys` (`time`) USING BTREE, - INDEX `idx_wechat_auto_appid` (`appid`) USING BTREE, - INDEX `idx_wechat_auto_code` (`code`) USING BTREE -) ENGINE = InnoDB - AUTO_INCREMENT = 1 - CHARACTER SET = utf8mb4 - COLLATE = utf8mb4_unicode_ci COMMENT = '微信-回复' - ROW_FORMAT = COMPACT; - --- 调整字段名称长度 -ALTER TABLE `system_queue` - MODIFY COLUMN `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '任务名称' AFTER `code`; - --- 尝试创建数据字典数据表 -CREATE TABLE IF NOT EXISTS `system_base` -( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '数据类型', - `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '数据代码', - `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '数据名称', - `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '数据内容', - `sort` bigint(20) NULL DEFAULT 0 COMMENT '排序权重', - `status` tinyint(1) NULL DEFAULT 1 COMMENT '数据状态(0禁用,1启动)', - `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '删除状态(0正常,1已删)', - `deleted_at` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '删除时间', - `deleted_by` bigint(20) NULL DEFAULT 0 COMMENT '删除用户', - `create_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_system_base_type` (`type`) USING BTREE, - INDEX `idx_system_base_code` (`code`) USING BTREE, - INDEX `idx_system_base_name` (`name`(191)) USING BTREE -) ENGINE = InnoDB - AUTO_INCREMENT = 1 - CHARACTER SET = utf8mb4 - COLLATE = utf8mb4_unicode_ci COMMENT = '系统-字典' - ROW_FORMAT = COMPACT; - --- 权限表增加身份权限字段 -ALTER TABLE `system_user` - ADD COLUMN `usertype` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户类型' AFTER `id`; - -SET FOREIGN_KEY_CHECKS = 1; \ No newline at end of file diff --git a/app/admin/controller/Auth.php b/app/admin/controller/Auth.php deleted file mode 100644 index df10c6e49..000000000 --- a/app/admin/controller/Auth.php +++ /dev/null @@ -1,125 +0,0 @@ -layTable(function () { - $this->title = '系统权限管理'; - }, function (QueryHelper $query) { - $query->dateBetween('create_at')->like('title,desc')->equal('status,utype'); - }); - } - - /** - * 添加系统权限 - * @auth true - */ - public function add() - { - SystemAuth::mForm('form'); - } - - /** - * 编辑系统权限 - * @auth true - */ - public function edit() - { - SystemAuth::mForm('form'); - } - - /** - * 修改权限状态 - * @auth true - */ - public function state() - { - SystemAuth::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } - - /** - * 删除系统权限 - * @auth true - */ - public function remove() - { - SystemAuth::mDelete(); - } - - /** - * 权限配置节点 - * @auth true - * @throws \ReflectionException - */ - public function apply() - { - $map = $this->_vali(['auth.require#id' => '权限ID不能为空!']); - if (input('action') === 'get') { - $admin = AdminService::instance(); - if ($this->app->isDebug()) $admin->clearCache(); - $nodes = SystemNode::mk()->where($map)->column('node'); - $this->success('获取权限节点成功!', $admin->getTree($nodes)); - } elseif (input('action') === 'save') { - [$post, $data] = [$this->request->post(), []]; - foreach ($post['nodes'] ?? [] as $node) { - $data[] = ['auth' => $map['auth'], 'node' => $node]; - } - SystemNode::mk()->where($map)->delete(); - SystemNode::mk()->insertAll($data); - sysoplog('系统权限管理', "配置系统权限[{$map['auth']}]授权成功"); - $this->success('访问权限修改成功!', 'javascript:history.back()'); - } else { - SystemAuth::mForm('apply'); - } - } - - /** - * 表单后置数据处理 - * @param array $data - */ - protected function _apply_form_filter(array &$data) - { - if ($this->request->isGet()) { - $this->title = "编辑【{$data['title']}】授权"; - } - } -} diff --git a/app/admin/controller/Base.php b/app/admin/controller/Base.php deleted file mode 100644 index eaea613bb..000000000 --- a/app/admin/controller/Base.php +++ /dev/null @@ -1,110 +0,0 @@ -layTable(function () { - $this->title = '数据字典管理'; - $this->types = SystemBase::mk()->types(); - $this->type = input('get.type', $this->types[0] ?? '-'); - }, function (QueryHelper $query) { - $query->where(['deleted' => 0])->equal('type'); - $query->like('code,name,status')->dateBetween('create_at'); - }); - } - - /** - * 添加数据字典 - * @auth true - */ - public function add() - { - SystemBase::mForm('form'); - } - - /** - * 编辑数据字典 - * @auth true - */ - public function edit() - { - SystemBase::mForm('form'); - } - - /** - * 表单数据处理 - * @param array $data - */ - protected function _form_filter(array &$data) - { - if ($this->request->isGet()) { - $this->types = SystemBase::mk()->types(); - $this->types[] = '--- 新增类型 ---'; - $this->type = input('get.type') ?: ($this->types[0] ?? '-'); - } else { - $map = []; - $map[] = ['deleted', '=', 0]; - $map[] = ['code', '=', $data['code']]; - $map[] = ['type', '=', $data['type']]; - if (isset($data['id'])) $map[] = ['id', '<>', $data['id']]; - if (SystemBase::mk()->where($map)->count() > 0) { - $this->error("同类型的数据编码已经存在!"); - } - } - } - - /** - * 修改数据状态 - * @auth true - */ - public function state() - { - SystemBase::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } - - /** - * 删除数据记录 - * @auth true - */ - public function remove() - { - SystemBase::mDelete(); - } -} \ No newline at end of file diff --git a/app/admin/controller/Config.php b/app/admin/controller/Config.php deleted file mode 100644 index f8e25cc13..000000000 --- a/app/admin/controller/Config.php +++ /dev/null @@ -1,109 +0,0 @@ -title = '系统参数配置'; - $this->isSuper = AdminService::instance()->isSuper(); - $this->version = ModuleService::instance()->getVersion(); - $this->fetch(); - } - - /** - * 修改系统参数 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function system() - { - $this->_applyFormToken(); - if ($this->request->isGet()) { - $this->title = '修改系统参数'; - $this->fetch(); - } else { - if ($xpath = $this->request->post('xpath')) { - if (!preg_match('/^[a-zA-Z_][a-zA-Z0-9_]*$/', $xpath)) { - $this->error('后台入口名称需要是由英文字母开头!'); - } - if ($xpath !== 'admin' && file_exists($this->app->getBasePath() . $xpath)) { - $this->error("后台入口名称{$xpath}已经存在应用!"); - } - SystemService::instance()->setRuntime(null, [$xpath => 'admin']); - } - foreach ($this->request->post() as $name => $value) sysconf($name, $value); - sysoplog('系统配置管理', "修改系统参数成功"); - $this->success('修改系统参数成功!', admuri('admin/config/index')); - } - } - - /** - * 修改文件存储 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function storage() - { - $this->_applyFormToken(); - if ($this->request->isGet()) { - $this->type = input('type', 'local'); - if ($this->type === 'alioss') { - $this->points = AliossStorage::region(); - } elseif ($this->type === 'qiniu') { - $this->points = QiniuStorage::region(); - } elseif ($this->type === 'txcos') { - $this->points = TxcosStorage::region(); - } - $this->fetch("storage-{$this->type}"); - } else { - $post = $this->request->post(); - if (!empty($post['storage']['allow_exts'])) { - $deny = ['sh', 'asp', 'bat', 'cmd', 'exe', 'php']; - $exts = array_unique(str2arr(strtolower($post['storage']['allow_exts']))); - if (count(array_intersect($deny, $exts)) > 0) $this->error('禁止上传可执行的文件!'); - $post['storage']['allow_exts'] = join(',', $exts); - } - foreach ($post as $name => $value) sysconf($name, $value); - sysoplog('系统配置管理', "修改系统存储参数"); - $this->success('修改文件存储成功!'); - } - } -} diff --git a/app/admin/controller/Index.php b/app/admin/controller/Index.php deleted file mode 100644 index 145fcae13..000000000 --- a/app/admin/controller/Index.php +++ /dev/null @@ -1,121 +0,0 @@ -app->isDebug(); - AdminService::instance()->apply($debug); - /*! 读取当前用户权限菜单树 */ - $this->menus = MenuService::instance()->getTree(); - /*! 判断当前用户的登录状态 */ - $this->login = AdminService::instance()->isLogin(); - /*! 菜单为空且未登录跳转到登录页 */ - if (empty($this->menus) && empty($this->login)) { - $this->redirect(sysuri('admin/login/index')); - } else { - $this->title = '系统管理后台'; - $this->isSuper = AdminService::instance()->isSuper(); - $this->fetch(); - } - } - - /** - * 修改用户资料 - * @login true - * @param mixed $id 用户ID - */ - public function info($id = 0) - { - $this->_applyFormToken(); - if (AdminService::instance()->getUserId() === intval($id)) { - SystemUser::mForm('admin@user/form', 'id', [], ['id' => $id]); - } else { - $this->error('只能修改自己的资料!'); - } - } - - /** - * 资料修改后处理 - * @param bool $status - */ - protected function _info_form_result(bool $status) - { - if ($status) { - $this->success('用户资料修改成功!', 'javascript:location.reload()'); - } - } - - /** - * 修改当前用户密码 - * @login true - * @param mixed $id - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function pass($id = 0) - { - $this->_applyFormToken(); - if (AdminService::instance()->getUserId() !== intval($id)) { - $this->error('只能修改当前用户的密码!'); - } - if ($this->app->request->isGet()) { - $this->verify = true; - SystemUser::mForm('admin@user/pass', 'id', [], ['id' => $id]); - } else { - $data = $this->_vali([ - 'password.require' => '登录密码不能为空!', - 'repassword.require' => '重复密码不能为空!', - 'oldpassword.require' => '旧的密码不能为空!', - 'password.confirm:repassword' => '两次输入的密码不一致!', - ]); - $user = SystemUser::mk()->find($id); - if (empty($user)) $this->error('用户不存在!'); - if (md5($data['oldpassword']) !== $user['password']) { - $this->error('旧密码验证失败,请重新输入!'); - } - if ($user->save(['password' => md5($data['password'])])) { - sysoplog('系统用户管理', "修改用户[{$user['id']}]密码成功"); - $this->success('密码修改成功,下次请使用新密码登录!', ''); - } else { - $this->error('密码修改失败,请稍候再试!'); - } - } - } -} diff --git a/app/admin/controller/Login.php b/app/admin/controller/Login.php deleted file mode 100644 index 2f3b8fecc..000000000 --- a/app/admin/controller/Login.php +++ /dev/null @@ -1,126 +0,0 @@ -app->request->isGet()) { - if (AdminService::instance()->isLogin()) { - $this->redirect(sysuri('admin/index/index')); - } else { - $this->title = '系统登录'; - $this->captchaType = 'LoginCaptcha'; - $this->captchaToken = CodeExtend::uniqidDate(18); - $this->developMode = SystemService::instance()->checkRunMode(); - $this->backgrounds = strtr(sysconf('login_image') ?: '', '|', ','); - // 刷新当前后台域名 - $host = "{$this->request->scheme()}://{$this->request->host()}"; - if ($host !== sysconf('base.site_host')) sysconf('base.site_host', $host); - // 标记登录验证令牌 - if (!$this->app->session->get('LoginInputSessionError')) { - $this->app->session->set($this->captchaType, $this->captchaToken); - } - $this->fetch(); - } - } else { - $data = $this->_vali([ - 'username.require' => '登录账号不能为空!', - 'username.min:4' => '登录账号不能少于4位字符!', - 'password.require' => '登录密码不能为空!', - 'password.min:4' => '登录密码不能少于4位字符!', - 'verify.require' => '图形验证码不能为空!', - 'uniqid.require' => '图形验证标识不能为空!', - ]); - if (!CaptchaService::instance()->check($data['verify'], $data['uniqid'])) { - $this->error('图形验证码验证失败,请重新输入!'); - } - /*! 用户信息验证 */ - $map = ['username' => $data['username'], 'is_deleted' => 0]; - $user = SystemUser::mk()->where($map)->find(); - if (empty($user)) { - $this->app->session->set("LoginInputSessionError", true); - $this->error('登录账号或密码错误,请重新输入!'); - } - if (empty($user['status'])) { - $this->app->session->set("LoginInputSessionError", true); - $this->error('账号已经被禁用,请联系管理员!'); - } - if (md5("{$user['password']}{$data['uniqid']}") !== $data['password']) { - $this->app->session->set("LoginInputSessionError", true); - $this->error('登录账号或密码错误,请重新输入!'); - } - $this->app->session->set('user', $user->toArray()); - $this->app->session->delete("LoginInputSessionError"); - $user->save([ - 'login_ip' => $this->app->request->ip(), - 'login_at' => $this->app->db->raw('now()'), - 'login_num' => $this->app->db->raw('login_num+1'), - ]); - sysoplog('系统用户登录', '登录系统后台成功'); - $this->success('登录成功', sysuri('admin/index/index')); - } - } - - /** - * 生成验证码 - */ - public function captcha() - { - $input = $this->_vali([ - 'type.require' => '验证码类型不能为空!', - 'token.require' => '验证码标识不能为空!', - ]); - $image = CaptchaService::instance()->initialize(); - $captcha = ['image' => $image->getData(), 'uniqid' => $image->getUniqid()]; - if ($this->app->session->get($input['type']) === $input['token']) { - $captcha['code'] = $image->getCode(); - $this->app->session->delete($input['type']); - } - $this->success('生成验证码成功', $captcha); - } - - /** - * 退出登录 - */ - public function out() - { - $this->app->session->clear(); - $this->app->session->destroy(); - $this->success('退出登录成功!', sysuri('admin/login/index')); - } -} diff --git a/app/admin/controller/Menu.php b/app/admin/controller/Menu.php deleted file mode 100644 index a075f6406..000000000 --- a/app/admin/controller/Menu.php +++ /dev/null @@ -1,150 +0,0 @@ -title = '系统菜单管理'; - $this->type = input('get.type', 'index'); - SystemMenu::mQuery()->order('sort desc,id asc')->page(false, true); - } - - /** - * 列表数据处理 - * @param array $data - */ - protected function _index_page_filter(array &$data) - { - $data = DataExtend::arr2tree($data); - // 回收站过滤有效菜单 - if ($this->type === 'recycle') foreach ($data as $k1 => &$p1) { - if (!empty($p1['sub'])) foreach ($p1['sub'] as $k2 => &$p2) { - if (!empty($p2['sub'])) foreach ($p2['sub'] as $k3 => $p3) { - if ($p3['status'] > 0) unset($p2['sub'][$k3]); - } - if (empty($p2['sub']) && ($p2['url'] === '#' or $p1['status'] > 0)) unset($p1['sub'][$k2]); - } - if (empty($p1['sub']) && ($p1['url'] === '#' or $p1['status'] > 0)) unset($data[$k1]); - } - // 菜单数据树数据变平化 - $data = DataExtend::arr2table($data); - foreach ($data as &$vo) { - if ($vo['url'] !== '#' && !preg_match('/^(https?:)?(\/\/|\\\\)/i', $vo['url'])) { - $vo['url'] = trim(url($vo['url']) . ($vo['params'] ? "?{$vo['params']}" : ''), '\\/'); - } - $vo['ids'] = join(',', DataExtend::getArrSubIds($data, $vo['id'])); - } - } - - /** - * 添加系统菜单 - * @auth true - */ - public function add() - { - $this->_applyFormToken(); - SystemMenu::mForm('form'); - } - - /** - * 编辑系统菜单 - * @auth true - */ - public function edit() - { - $this->_applyFormToken(); - SystemMenu::mForm('form'); - } - - /** - * 表单数据处理 - * @param array $vo - * @throws \ReflectionException - */ - protected function _form_filter(array &$vo) - { - if ($this->request->isGet()) { - /* 清理权限节点 */ - if ($this->app->isDebug()) { - AdminService::instance()->clearCache(); - } - /* 选择自己的上级菜单 */ - $vo['pid'] = $vo['pid'] ?? input('pid', '0'); - /* 读取系统功能节点 */ - $this->auths = []; - $this->nodes = MenuService::instance()->getList(); - foreach (NodeService::instance()->getMethods() as $node => $item) { - if ($item['isauth'] && substr_count($node, '/') >= 2) { - $this->auths[] = ['node' => $node, 'title' => $item['title']]; - } - } - /* 列出可选上级菜单 */ - $menus = SystemMenu::mk()->order('sort desc,id asc')->column('id,pid,icon,url,node,title,params', 'id'); - $this->menus = DataExtend::arr2table(array_merge($menus, [['id' => '0', 'pid' => '-1', 'url' => '#', 'title' => '顶部菜单']])); - if (isset($vo['id'])) foreach ($this->menus as $menu) if ($menu['id'] === $vo['id']) $vo = $menu; - foreach ($this->menus as $key => $menu) if ($menu['spt'] >= 3 || $menu['url'] !== '#') unset($this->menus[$key]); - if (isset($vo['spt']) && isset($vo['spc']) && in_array($vo['spt'], [1, 2]) && $vo['spc'] > 0) { - foreach ($this->menus as $key => $menu) if ($vo['spt'] <= $menu['spt']) unset($this->menus[$key]); - } - } - } - - /** - * 修改菜单状态 - * @auth true - */ - public function state() - { - $this->_applyFormToken(); - SystemMenu::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } - - /** - * 删除系统菜单 - * @auth true - */ - public function remove() - { - $this->_applyFormToken(); - SystemMenu::mDelete(); - } -} diff --git a/app/admin/controller/Module.php b/app/admin/controller/Module.php deleted file mode 100644 index 0fbc9b7ae..000000000 --- a/app/admin/controller/Module.php +++ /dev/null @@ -1,74 +0,0 @@ -title = '系统模块管理'; - $this->modules = ModuleService::instance()->change(); - $this->fetch(); - } - - /** - * 安装更新模块 - * @auth true - */ - public function install() - { - $data = $this->_vali(['name.require' => '模块名称不能为空!']); - [$state, $message] = ModuleService::instance()->install($data['name']); - $state ? $this->success($message) : $this->error($message); - } - - /** - * 查看模块更新 - * @auth true - */ - public function change() - { - $data = $this->_vali(['name.require' => '模块名称不能为空!']); - $modules = ModuleService::instance()->online(); - $locals = ModuleService::instance()->getModules(); - if (isset($modules[$data['name']])) { - $this->module = $modules[$data['name']]; - $this->current = $locals[$data['name']] ?? []; - $pattern = "|^(\d{4})\.(\d{2})\.(\d{2})\.(\d+)$|"; - $this->module['change'] = array_reverse($this->module['change']); - foreach ($this->module['change'] as $version => &$change) { - $change = ['content' => $change, 'version' => preg_replace($pattern, '$1年$2月$3日 第 $4 次更新', $version)]; - } - $this->fetch(); - } else { - $this->error('未查询到模块更新记录!'); - } - } -} \ No newline at end of file diff --git a/app/admin/controller/Oplog.php b/app/admin/controller/Oplog.php deleted file mode 100644 index 5fe9d1c08..000000000 --- a/app/admin/controller/Oplog.php +++ /dev/null @@ -1,93 +0,0 @@ -layTable(function () { - $this->title = '系统日志管理'; - $columns = SystemOplog::mk()->column('action,username', 'id'); - $this->users = array_unique(array_column($columns, 'username')); - $this->actions = array_unique(array_column($columns, 'action')); - }, function (QueryHelper $query) { - $query->dateBetween('create_at')->equal('username,action')->like('content,geoip,node'); - }); - } - - /** - * 列表数据处理 - * @auth true - * @param array $data - * @throws \Exception - */ - protected function _index_page_filter(array &$data) - { - $region = new Ip2Region(); - foreach ($data as &$vo) { - $isp = $region->btreeSearch($vo['geoip']); - $vo['geoisp'] = str_replace(['内网IP', '0', '|'], '', $isp['region'] ?? '') ?: '-'; - } - } - - /** - * 清理系统日志 - * @auth true - */ - public function clear() - { - try { - SystemOplog::mQuery()->empty(); - sysoplog('系统运维管理', '成功清理所有日志数据'); - $this->success('日志清理成功!'); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (Exception $exception) { - $this->error("日志清理失败,{$exception->getMessage()}"); - } - } - - /** - * 删除系统日志 - * @auth true - */ - public function remove() - { - SystemOplog::mDelete(); - } -} diff --git a/app/admin/controller/Queue.php b/app/admin/controller/Queue.php deleted file mode 100644 index ac3e187dd..000000000 --- a/app/admin/controller/Queue.php +++ /dev/null @@ -1,106 +0,0 @@ -layTable(function () { - $this->title = '系统任务管理'; - $this->iswin = ProcessService::instance()->iswin(); - // 超级管理面板 - if ($this->isSuper = AdminService::instance()->isSuper()) { - $process = ProcessService::instance(); - if ($process->iswin() || empty($_SERVER['USER'])) { - $this->command = $process->think('xadmin:queue start'); - } else { - $this->command = "sudo -u {$_SERVER['USER']} {$process->think('xadmin:queue start')}"; - } - } - // 任务状态统计 - $this->total = ['dos' => 0, 'pre' => 0, 'oks' => 0, 'ers' => 0]; - SystemQueue::mk()->field('status,count(1) count')->group('status')->select()->map(function ($item) { - if ($item['status'] === 1) $this->total['pre'] = $item['count']; - if ($item['status'] === 2) $this->total['dos'] = $item['count']; - if ($item['status'] === 3) $this->total['oks'] = $item['count']; - if ($item['status'] === 4) $this->total['ers'] = $item['count']; - }); - }, function (QueryHelper $query) { - $query->equal('status')->like('code,title,command'); - $query->timeBetween('enter_time,exec_time')->dateBetween('create_at'); - }); - } - - /** - * 重启系统任务 - * @auth true - */ - public function redo() - { - try { - $data = $this->_vali(['code.require' => '任务编号不能为空!']); - $queue = QueueService::instance()->initialize($data['code'])->reset(); - $queue->progress(1, '>>> 任务重置成功 <<<', 0.00); - $this->success('任务重置成功!', $queue->code); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (Exception $exception) { - $this->error($exception->getMessage()); - } - } - - /** - * 清理运行数据 - * @auth true - */ - public function clean() - { - $this->_queue('定时清理系统运行数据', "xadmin:queue clean", 0, [], 0, 3600); - } - - /** - * 删除系统任务 - * @auth true - */ - public function remove() - { - SystemQueue::mDelete(); - } -} diff --git a/app/admin/controller/User.php b/app/admin/controller/User.php deleted file mode 100644 index 93dffa465..000000000 --- a/app/admin/controller/User.php +++ /dev/null @@ -1,187 +0,0 @@ -type = input('get.type', 'index'); - - // 创建快捷查询工具 - SystemUser::mQuery()->layTable(function () { - $this->title = '系统用户管理'; - $this->bases = SystemBase::mk()->items('身份权限'); - }, function (QueryHelper $query) { - - // 加载对应数据列表 - if ($this->type === 'index') { - $query->where(['is_deleted' => 0, 'status' => 1]); - } elseif ($this->type = 'recycle') { - $query->where(['is_deleted' => 0, 'status' => 0]); - } - - // 关联用户身份资料 - $query->with(['userinfo' => function (Relation $relation) { - $relation->field('code,name,content'); - }]); - - // 数据列表搜索过滤 - $query->equal('status,usertype')->dateBetween('login_at,create_at'); - $query->like('username,nickname,contact_phone#phone,contact_mail#mail'); - }); - } - - /** - * 添加系统用户 - * @auth true - */ - public function add() - { - SystemUser::mForm('form'); - } - - /** - * 编辑系统用户 - * @auth true - */ - public function edit() - { - SystemUser::mForm('form'); - } - - /** - * 修改用户密码 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function pass() - { - $this->_applyFormToken(); - if ($this->request->isGet()) { - $this->verify = false; - SystemUser::mForm('pass'); - } else { - $data = $this->_vali([ - 'id.require' => '用户ID不能为空!', - 'password.require' => '登录密码不能为空!', - 'repassword.require' => '重复密码不能为空!', - 'repassword.confirm:password' => '两次输入的密码不一致!', - ]); - $user = SystemUser::mk()->find($data['id']); - if (!empty($user) && $user->save(['password' => md5($data['password'])])) { - sysoplog('系统用户管理', "修改用户[{$data['id']}]密码成功"); - $this->success('密码修改成功,请使用新密码登录!', ''); - } else { - $this->error('密码修改失败,请稍候再试!'); - } - } - } - - /** - * 表单数据处理 - * @param array $data - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _form_filter(array &$data) - { - if ($this->request->isPost()) { - // 账号权限绑定处理 - $data['authorize'] = arr2str($data['authorize'] ?? []); - if (isset($data['id']) && $data['id'] > 0) { - unset($data['username']); - } else { - // 检查账号是否重复 - if (empty($data['username'])) { - $this->error('登录账号不能为空!'); - } - $map = ['username' => $data['username'], 'is_deleted' => 0]; - if (SystemUser::mk()->where($map)->count() > 0) { - $this->error("账号已经存在,请使用其它账号!"); - } - // 新添加的用户密码与账号相同 - $data['password'] = md5($data['username']); - } - } else { - // 权限绑定处理 - $data['authorize'] = str2arr($data['authorize'] ?? ''); - // 用户身份数据 - $this->bases = SystemBase::mk()->items('身份权限'); - // 用户权限管理 - $this->superName = AdminService::instance()->getSuperName(); - $this->authorizes = SystemAuth::mk()->items(); - } - } - - /** - * 修改用户状态 - * @auth true - */ - public function state() - { - $this->_checkInput(); - SystemUser::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } - - /** - * 删除系统用户 - * @auth true - */ - public function remove() - { - $this->_checkInput(); - SystemUser::mDelete(); - } - - /** - * 检查输入变量 - */ - private function _checkInput() - { - if (in_array('10000', str2arr(input('id', '')))) { - $this->error('系统超级账号禁止删除!'); - } - } -} diff --git a/app/admin/controller/api/Plugs.php b/app/admin/controller/api/Plugs.php deleted file mode 100644 index 27e59fd21..000000000 --- a/app/admin/controller/api/Plugs.php +++ /dev/null @@ -1,54 +0,0 @@ -title = '图标选择器'; - $this->field = $this->app->request->get('field', 'icon'); - $this->fetch(realpath(__DIR__ . '/../../view/api/icon.html')); - } - - /** - * 优化数据库 - * @login true - */ - public function optimize() - { - if (AdminService::instance()->isSuper()) { - sysoplog('系统运维管理', '创建数据库优化任务'); - $this->_queue('优化数据库所有数据表', 'xadmin:database optimize'); - } else { - $this->error('只有超级管理员才能操作!'); - } - } -} \ No newline at end of file diff --git a/app/admin/controller/api/Queue.php b/app/admin/controller/api/Queue.php deleted file mode 100644 index 64426dad6..000000000 --- a/app/admin/controller/api/Queue.php +++ /dev/null @@ -1,112 +0,0 @@ -_vali(['code.require' => '任务编号不能为空!']); - $queue = QueueService::instance()->initialize($input['code']); - $this->success('获取任务进度成功!', $queue->progress()); - } - - /** - * WIN停止监听进程 - * @login true - */ - public function stop() - { - try { - $message = nl2br($this->app->console->call('xadmin:queue', ['stop'])->fetch()); - if (stripos($message, 'sent end signal to process')) { - sysoplog('系统运维管理', '尝试停止后台服务主进程'); - $this->success('停止后台服务主进程成功!'); - } elseif (stripos($message, 'processes to stop')) { - $this->success('没有找到需要停止的进程!'); - } else { - $this->error($message); - } - } catch (HttpResponseException $exception) { - throw $exception; - } catch (Exception $exception) { - $this->error($exception->getMessage()); - } - } - - /** - * WIN创建监听进程 - * @login true - */ - public function start() - { - try { - $message = $this->app->console->call('xadmin:queue', ['start'])->fetch(); - if (stripos($message, 'daemons started successfully for pid')) { - sysoplog('系统运维管理', '尝试启动后台服务主进程'); - $this->success('后台服务主进程启动成功!'); - } elseif (stripos($message, 'daemons already exist for pid')) { - $this->success('后台服务主进程已经存在!'); - } else { - $this->error(nl2br($message)); - } - } catch (HttpResponseException $exception) { - throw $exception; - } catch (Exception $exception) { - $this->error($exception->getMessage()); - } - } - - /** - * 检查任务状态 - * @login true - */ - public function status() - { - if (AdminService::instance()->isSuper()) try { - $message = $this->app->console->call('xadmin:queue', ['status'])->fetch(); - if (preg_match('/process.*?\d+.*?running/', $message, $attrs)) { - echo '' . $message . ''; - } else { - echo '' . $message . ''; - } - } catch (Exception $exception) { - echo '' . $exception->getMessage() . ''; - } else { - echo '只有超级管理员才能操作!'; - } - } -} \ No newline at end of file diff --git a/app/admin/controller/api/Runtime.php b/app/admin/controller/api/Runtime.php deleted file mode 100644 index 6215b415f..000000000 --- a/app/admin/controller/api/Runtime.php +++ /dev/null @@ -1,121 +0,0 @@ -isSuper()) try { - AdminService::instance()->clearCache(); - SystemService::instance()->pushRuntime(); - sysoplog('系统运维管理', '刷新并创建网站路由缓存'); - $this->success('网站缓存加速成功!', 'javascript:location.reload()'); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (Exception $exception) { - $this->error($exception->getMessage()); - } else { - $this->error('只有超级管理员才能操作!'); - } - } - - /** - * 清理运行缓存 - * @login true - */ - public function clear() - { - if (AdminService::instance()->isSuper()) try { - AdminService::instance()->clearCache(); - SystemService::instance()->clearRuntime(); - sysoplog('系统运维管理', '清理网站日志及缓存数据'); - $this->success('清空缓存日志成功!', 'javascript:location.reload()'); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (Exception $exception) { - $this->error($exception->getMessage()); - } else { - $this->error('只有超级管理员才能操作!'); - } - } - - /** - * 当前运行模式 - * @login true - */ - public function debug() - { - if (AdminService::instance()->isSuper()) if (input('state')) { - SystemService::instance()->setRuntime('product'); - sysoplog('系统运维管理', '由开发模式切换为生产模式'); - $this->success('已切换为生产模式!', 'javascript:location.reload()'); - } else { - SystemService::instance()->setRuntime('debug'); - sysoplog('系统运维管理', '由生产模式切换为开发模式'); - $this->success('已切换为开发模式!', 'javascript:location.reload()'); - } else { - $this->error('只有超级管理员才能操作!'); - } - } - - /** - * 清理系统配置 - * @login true - */ - public function config() - { - if (AdminService::instance()->isSuper()) try { - [$tmpdata, $newdata] = [[], []]; - foreach (SystemConfig::mk()->order('type,name asc')->cursor() as $item) { - $tmpdata[$item['type']][$item['name']] = $item['value']; - } - foreach ($tmpdata as $type => $items) foreach ($items as $name => $value) { - $newdata[] = ['type' => $type, 'name' => $name, 'value' => $value]; - } - $this->app->db->transaction(function () use ($newdata) { - SystemConfig::mQuery()->empty()->insertAll($newdata); - }); - $this->app->cache->delete('SystemConfig'); - sysoplog('系统运维管理', '清理系统参数配置成功'); - $this->success('清理系统配置成功!', 'javascript:location.reload()'); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (Exception $exception) { - $this->error($exception->getMessage()); - } else { - $this->error('只有超级管理员才能操作!'); - } - } -} \ No newline at end of file diff --git a/app/admin/controller/api/Update.php b/app/admin/controller/api/Update.php deleted file mode 100644 index 80ccb28c8..000000000 --- a/app/admin/controller/api/Update.php +++ /dev/null @@ -1,77 +0,0 @@ -checkRunMode()) { - $this->error('只允许访问本地或官方代码!'); - } - } - - /** - * 读取文件内容 - */ - public function get() - { - $filename = decode(input('encode', '0')); - if (!ModuleService::instance()->checkAllowDownload($filename)) { - $this->error('下载的文件不在认证规则中!'); - } - if (file_exists($realname = $this->app->getRootPath() . $filename)) { - $this->success('读取文件内容成功!', [ - 'content' => base64_encode(file_get_contents($realname)), - ]); - } else { - $this->error('读取文件内容失败!'); - } - } - - /** - * 读取文件列表 - */ - public function node() - { - $this->success('获取文件列表成功!', ModuleService::instance()->getChanges( - json_decode($this->request->post('rules', '[]', ''), true), - json_decode($this->request->post('ignore', '[]', ''), true) - )); - } - - /** - * 获取模块信息 - */ - public function version() - { - $this->success('获取模块信息成功!', ModuleService::instance()->getModules()); - } -} \ No newline at end of file diff --git a/app/admin/controller/api/Upload.php b/app/admin/controller/api/Upload.php deleted file mode 100644 index dc885d870..000000000 --- a/app/admin/controller/api/Upload.php +++ /dev/null @@ -1,228 +0,0 @@ - []]; - foreach (str2arr(sysconf('storage.allow_exts')) as $ext) { - $data['exts'][$ext] = Storage::mime($ext); - } - $template = realpath(__DIR__ . '/../../view/api/upload.js'); - $data['exts'] = json_encode($data['exts'], JSON_UNESCAPED_UNICODE); - $data['nameType'] = sysconf('storage.name_type') ?: 'xmd5'; - return view($template, $data)->contentType('application/x-javascript'); - } - - /** - * 文件上传检查 - * @login true - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function state() - { - [$name, $safe] = [input('name'), $this->getSafe()]; - $data = ['uptype' => $this->getType(), 'safe' => intval($safe), 'key' => input('key')]; - if ($info = Storage::instance($data['uptype'])->info($data['key'], $safe, $name)) { - $data['url'] = $info['url']; - $data['key'] = $info['key']; - $this->success('文件已经上传', $data, 200); - } elseif ('local' === $data['uptype']) { - $data['url'] = LocalStorage::instance()->url($data['key'], $safe, $name); - $data['server'] = LocalStorage::instance()->upload(); - } elseif ('qiniu' === $data['uptype']) { - $data['url'] = QiniuStorage::instance()->url($data['key'], $safe, $name); - $data['token'] = QiniuStorage::instance()->buildUploadToken($data['key'], 3600, $name); - $data['server'] = QiniuStorage::instance()->upload(); - } elseif ('alioss' === $data['uptype']) { - $token = AliossStorage::instance()->buildUploadToken($data['key'], 3600, $name); - $data['url'] = $token['siteurl']; - $data['policy'] = $token['policy']; - $data['signature'] = $token['signature']; - $data['OSSAccessKeyId'] = $token['keyid']; - $data['server'] = AliossStorage::instance()->upload(); - } elseif ('txcos' === $data['uptype']) { - $token = TxcosStorage::instance()->buildUploadToken($data['key'], 3600, $name); - $data['url'] = $token['siteurl']; - $data['q-ak'] = $token['q-ak']; - $data['policy'] = $token['policy']; - $data['q-key-time'] = $token['q-key-time']; - $data['q-signature'] = $token['q-signature']; - $data['q-sign-algorithm'] = $token['q-sign-algorithm']; - $data['server'] = TxcosStorage::instance()->upload(); - } - $this->success('获取上传授权参数', $data, 404); - } - - /** - * 文件上传入口 - * @login true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function file() - { - if (!($file = $this->getFile())->isValid()) { - $this->error('文件上传异常,文件过大或未上传!'); - } - $safeMode = $this->getSafe(); - $extension = strtolower($file->getOriginalExtension()); - $saveName = input('key') ?: Storage::name($file->getPathname(), $extension, '', 'md5_file'); - // 检查文件名称是否合法 - if (strpos($saveName, '../') !== false) { - $this->error('文件路径不能出现跳级操作!'); - } - // 检查文件后缀是否被恶意修改 - if (pathinfo(parse_url($saveName, PHP_URL_PATH), PATHINFO_EXTENSION) !== $extension) { - $this->error('文件后缀异常,请重新上传文件!'); - } - // 屏蔽禁止上传指定后缀的文件 - if (!in_array($extension, str2arr(sysconf('storage.allow_exts')))) { - $this->error('文件类型受限,请在后台配置规则!'); - } - if (in_array($extension, ['sh', 'asp', 'bat', 'cmd', 'exe', 'php'])) { - $this->error('文件安全保护,禁止上传可执行文件!'); - } - try { - if ($this->getType() === 'local') { - $local = LocalStorage::instance(); - $distName = $local->path($saveName, $safeMode); - $file->move(dirname($distName), basename($distName)); - $info = $local->info($saveName, $safeMode, $file->getOriginalName()); - if (in_array($extension, ['jpg', 'gif', 'png', 'bmp', 'jpeg', 'wbmp'])) { - if ($this->imgNotSafe($distName) && $local->del($saveName)) { - $this->error('图片未通过安全检查!'); - } - [$width, $height] = getimagesize($distName); - if (($width < 1 || $height < 1) && $local->del($saveName)) { - $this->error('读取图片的尺寸失败!'); - } - } - } else { - $bina = file_get_contents($file->getPathname()); - $info = Storage::instance($this->getType())->set($saveName, $bina, $safeMode, $file->getOriginalName()); - } - if (isset($info['url'])) { - $this->success('文件上传成功!', ['url' => $safeMode ? $saveName : $info['url']]); - } else { - $this->error('文件处理失败,请稍候再试!'); - } - } catch (HttpResponseException $exception) { - throw $exception; - } catch (Exception $exception) { - $this->error($exception->getMessage()); - } - } - - /** - * 获取文件上传类型 - * @return boolean - */ - private function getSafe(): bool - { - return boolval(input('safe', '0')); - } - - /** - * 获取文件上传方式 - * @return string - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function getType(): string - { - $type = strtolower(input('uptype', '')); - if (in_array($type, ['local', 'qiniu', 'alioss', 'txcos'])) { - return $type; - } else { - return strtolower(sysconf('storage.type')); - } - } - - /** - * 获取本地文件对象 - * @return UploadedFile|void - */ - private function getFile(): UploadedFile - { - try { - $file = $this->request->file('file'); - if ($file instanceof UploadedFile) { - return $file; - } else { - $this->error('未获取到上传的文件对象!'); - } - } catch (HttpResponseException $exception) { - throw $exception; - } catch (Exception $exception) { - $this->error(lang($exception->getMessage())); - } - } - - /** - * 检查图片是否安全 - * @param string $filename - * @return boolean - */ - private function imgNotSafe(string $filename): bool - { - $source = fopen($filename, 'rb'); - if (($size = filesize($filename)) > 512) { - $hexs = bin2hex(fread($source, 512)); - fseek($source, $size - 512); - $hexs .= bin2hex(fread($source, 512)); - } else { - $hexs = bin2hex(fread($source, $size)); - } - if (is_resource($source)) fclose($source); - $bins = hex2bin($hexs); - /* 匹配十六进制中的 <% ( ) %> 或 - - - \ No newline at end of file diff --git a/app/admin/view/api/upload.js b/app/admin/view/api/upload.js deleted file mode 100644 index f80a5f8f8..000000000 --- a/app/admin/view/api/upload.js +++ /dev/null @@ -1,146 +0,0 @@ -define(['md5'], function (SparkMD5, allowMime) { - allowMime = JSON.parse('{$exts|raw}'); - return function (element, callable) { - - /*! 初始化变量 */ - var opt = {elem: $(element), exts: [], mimes: [], files: {}, cache: {}, load: 0, count: {total: 0, uploaded: 0}}; - opt.size = opt.elem.data('size') || 0, opt.mult = opt.elem.data('multiple') > 0; - opt.safe = opt.elem.data('safe') ? 1 : 0, opt.hide = opt.elem.data('hide-load') ? 1 : 0; - opt.type = opt.safe ? 'local' : opt.elem.attr('data-uptype') || ''; - - /*! 查找表单元素, 如果没有找到将不会自动写值 */ - if (!opt.elem.data('input') && opt.elem.data('field')) { - var $input = $('input[name="' + opt.elem.data('field') + '"]:not([type=file])'); - opt.elem.data('input', $input.size() > 0 ? $input.get(0) : null); - } - - /*! 文件选择筛选,使用 MIME 规则过滤文件列表 */ - $((opt.elem.data('type') || '').split(',')).map(function (i, e) { - if (allowMime[e]) opt.exts.push(e), opt.mimes.push(allowMime[e]); - }); - - /*! 初始化上传组件 */ - opt.uploader = layui.upload.render({ - url: '{:sysuri("admin/api.upload/file")}', auto: false, elem: element, accept: 'file', multiple: opt.mult, - exts: opt.exts.join('|'), acceptMime: opt.mimes.join(','), choose: function (object) { - opt.elem.triggerHandler('upload.choose', opt.files = object.pushFile()); - opt.uploader.config.elem.next().val(''), layui.each(opt.files, function (index, file) { - if (opt.size > 0 && file.size > opt.size) return delete opt.files[index], $.msg.tips('文件大小超出限制!'); - opt.load = opt.hide || $.msg.loading('上传进度 0%'); - opt.count.total++, file.index = index, opt.cache[index] = file, delete opt.files[index]; - md5file(file).then(function (file) { - opt.elem.triggerHandler('upload.hash', file), jQuery.ajax("{:sysuri('admin/api.upload/state')}", { - data: {key: file.xkey, uptype: opt.type, safe: opt.safe, name: file.name}, method: 'post', success: function (ret) { - file.xurl = ret.data.url, file.xsafe = ret.data.safe; - file.xpath = ret.data.key, file.xtype = ret.data.uptype; - if (parseInt(ret.code) === 404) { - opt.uploader.config.url = ret.data.server; - opt.uploader.config.data.key = ret.data.key; - opt.uploader.config.data.safe = ret.data.safe; - opt.uploader.config.data.uptype = ret.data.uptype; - if (ret.data.uptype === 'qiniu') { - opt.uploader.config.data.token = ret.data.token; - } else if (ret.data.uptype === 'alioss') { - opt.uploader.config.data['policy'] = ret.data.policy; - opt.uploader.config.data['signature'] = ret.data.signature; - opt.uploader.config.data['OSSAccessKeyId'] = ret.data.OSSAccessKeyId; - opt.uploader.config.data['success_action_status'] = 200; - opt.uploader.config.data['Content-Disposition'] = 'inline;filename=' + encodeURIComponent(file.name); - } else if (ret.data.uptype === 'txcos') { - opt.uploader.config.data['q-ak'] = ret.data['q-ak']; - opt.uploader.config.data['policy'] = ret.data['policy']; - opt.uploader.config.data['q-key-time'] = ret.data['q-key-time']; - opt.uploader.config.data['q-signature'] = ret.data['q-signature']; - opt.uploader.config.data['q-sign-algorithm'] = ret.data['q-sign-algorithm']; - opt.uploader.config.data['success_action_status'] = 200; - opt.uploader.config.data['Content-Disposition'] = 'inline;filename=' + encodeURIComponent(file.name); - } - object.upload(file.index, file); - } else if (parseInt(ret.code) === 200) { - file.xurl = ret.data.url; - opt.uploader.config.done({code: 1, url: file.xurl, info: '文件秒传成功!'}, file.index); - } else { - $.msg.tips(ret.info || ret.error.message || '文件上传出错!'); - } - } - }); - }); - }); - }, progress: function (number) { - /*! 文件上传进度处理 */ - opt.elem.triggerHandler('upload.progress', {number: number, event: arguments[2], file: arguments[3]}); - if (opt.count.total > 1) { - $('[data-upload-progress]').html(number + '%' + ' ' + (opt.count.uploaded + 1) + '/' + opt.count.total); - } else { - $('[data-upload-progress]').html(number + '%'); - } - }, done: function (ret, idx) { - /*! 检查单个文件上传返回的结果 */ - if (ret.code < 1) return $.msg.tips(ret.info || '文件上传失败!'); - if (typeof opt.cache[idx].xurl !== 'string') return $.msg.tips('无效的文件上传对象!'); - /*! 单个文件上传成功结果处理 */ - if (typeof callable === 'function') { - callable.call(opt.elem, opt.cache[idx].xurl, opt.cache['id']); - } else if (opt.mult < 1 && opt.elem.data('input')) { - $(opt.elem.data('input')).val(opt.cache[idx].xurl).trigger('change', opt.cache[idx]); - } - opt.elem.html(opt.elem.data('html')).triggerHandler('upload.done', {file: opt.cache[idx], data: ret}); - /*! 所有文件上传完成后结果处理 */ - if (++opt.count.uploaded >= opt.count.total) { - opt.hide || $.msg.close(opt.load); - if (opt.mult > 0 && opt.elem.data('input')) { - var urls = opt.elem.data('input').value || []; - if (typeof urls === 'string') urls = urls.split('|'); - for (var i in opt.cache) urls.push(opt.cache[i].xurl); - $(opt.elem.data('input')).val(urls.join('|')).trigger('change', opt.cache); - } - opt.elem.triggerHandler('upload.complete', {file: opt.cache}); - (opt.cache = [], opt.files = [], opt.count = {uploaded: 0, total: 0}), opt.uploader.reload(); - } - } - }); - }; - - function md5file(file) { - var deferred = jQuery.Deferred(); - file.xext = file.name.indexOf('.') > -1 ? file.name.split('.').pop() : 'tmp'; - - /*! 兼容不能计算文件 HASH 的情况 */ - var IsDate = '{$nameType|default=""}'.indexOf('date') > -1; - if (!window.FileReader || IsDate) return jQuery.when((function (xmd5, chars) { - while (xmd5.length < 32) xmd5 += chars.charAt(Math.floor(Math.random() * chars.length)); - return setFileXdata(file, xmd5, 6), deferred.resolve(file, file.xmd5, file.xkey), deferred; - })(layui.util.toDateString(Date.now(), 'yyyyMMddHHmmss-'), '0123456789')); - - /*! 读取文件并计算 HASH 值 */ - var spark = new SparkMD5.ArrayBuffer(); - var slice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice; - file.chunkIdx = 0, file.chunkSize = 2097152, file.chunkTotal = Math.ceil(this.size / this.chunkSize); - return jQuery.when(loadNextChunk(file)); - - function setFileXdata(file, xmd5, slice) { - file.xmd5 = xmd5, file.xkey = file.xmd5.substr(0, slice || 2) + '/' + file.xmd5.substr(slice || 2, 30) + '.' + file.xext; - return delete file.chunkIdx, delete file.chunkSize, delete file.chunkTotal, file; - } - - function loadNextChunk(file) { - this.reader = new FileReader(); - this.reader.onload = function (event) { - spark.append(event.target.result); - if (++file.chunkIdx < file.chunkTotal) { - loadNextChunk(file); - } else { - setFileXdata(file, spark.end()); - deferred.resolve(file, file.xmd5, file.xkey); - } - }; - this.reader.onerror = function () { - deferred.reject(); - }; - this.start = file.chunkIdx * file.chunkSize; - this.loaded = (this.start + file.chunkSize >= file.size) ? file.size : this.start + file.chunkSize; - this.reader.readAsArrayBuffer(slice.call(file, this.start, this.loaded)); - return deferred.notify(file, (this.loaded / file.size * 100).toFixed(2)), deferred; - } - } -}); \ No newline at end of file diff --git a/app/admin/view/auth/apply.html b/app/admin/view/auth/apply.html deleted file mode 100644 index 555333905..000000000 --- a/app/admin/view/auth/apply.html +++ /dev/null @@ -1,104 +0,0 @@ -{extend name='main'} - -{block name="content"} -
- -
-
- - -
-
-{/block} - -{block name="script"} - -{/block} - -{block name="style"} - -{/block} \ No newline at end of file diff --git a/app/admin/view/auth/form.html b/app/admin/view/auth/form.html deleted file mode 100644 index f2b2f0587..000000000 --- a/app/admin/view/auth/form.html +++ /dev/null @@ -1,25 +0,0 @@ -
- -
- - - - - -
- -
- {notempty name='vo.id'}{/notempty} - -
- - -
-
\ No newline at end of file diff --git a/app/admin/view/auth/index.html b/app/admin/view/auth/index.html deleted file mode 100644 index 132100362..000000000 --- a/app/admin/view/auth/index.html +++ /dev/null @@ -1,79 +0,0 @@ -{extend name='table'} - -{block name="button"} - - - - - - - -{/block} - -{block name="content"} -
- {include file='auth/index_search'} -
-
-{/block} - -{block name='script'} - - - - - - - - - - -{/block} \ No newline at end of file diff --git a/app/admin/view/auth/index_search.html b/app/admin/view/auth/index_search.html deleted file mode 100644 index ff879060e..000000000 --- a/app/admin/view/auth/index_search.html +++ /dev/null @@ -1,47 +0,0 @@ -
- 条件搜索 - - - -
diff --git a/app/admin/view/base/form.html b/app/admin/view/base/form.html deleted file mode 100644 index 5c809bb43..000000000 --- a/app/admin/view/base/form.html +++ /dev/null @@ -1,69 +0,0 @@ -
- -
- -
-
数据类型DataType
- {if isset($vo.type)} - - {else} - - - {/if} -

请选择数据类型,数据创建后不能再次修改哦 ~

-
- -

请输入新的数据类型,数据创建后不能再次修改哦 ~

-
-
- - - - - - - -
- -
- {notempty name='vo.id'}{/notempty} - -
- - -
- -
\ No newline at end of file diff --git a/app/admin/view/base/index.html b/app/admin/view/base/index.html deleted file mode 100644 index 873b56e94..000000000 --- a/app/admin/view/base/index.html +++ /dev/null @@ -1,85 +0,0 @@ -{extend name='table'} - -{block name="button"} - - - - - - - -{/block} - -{block name="content"} -
- -
- {include file='base/index_search'} -
-
-
-{/block} - -{block name='script'} - - - - - - - - - - -{/block} \ No newline at end of file diff --git a/app/admin/view/base/index_search.html b/app/admin/view/base/index_search.html deleted file mode 100644 index c2fff217b..000000000 --- a/app/admin/view/base/index_search.html +++ /dev/null @@ -1,46 +0,0 @@ -
- 条件搜索 - - -
\ No newline at end of file diff --git a/app/admin/view/config/index.html b/app/admin/view/config/index.html deleted file mode 100644 index a7a6da0fd..000000000 --- a/app/admin/view/config/index.html +++ /dev/null @@ -1,149 +0,0 @@ -{extend name="main"} - -{block name="button"} - -清理无效配置 - - - -修改系统参数 - -{/block} - -{block name="content"} - -
-
- 运行模式Run Mode -
-
- -
-

开发模式:开发人员或在功能调试时使用,系统异常时会显示详细的错误信息,同时还会记录操作日志及数据库 SQL 语句信息。

-

生产模式:项目正式部署上线后使用,系统异常时统一显示 “{:config('app.error_message')}”,只记录重要的异常日志信息,强烈推荐上线后使用此模式。

-
-
-
- - -
-
- 存储引擎Storage Engine -
-
-
- {foreach ['local' => '本地服务器存储','qiniu' => '七牛云对象存储','alioss' => '阿里云OSS存储','txcos' => '腾讯云COS存储'] as $k => $v} {if sysconf('storage.type') eq $k} - {if auth('storage')}{$v}{else}{$v}{/if} - {else} - {if auth('storage')}{$v}{else}{$v}{/if} - {/if}{/foreach} -
-
-

本地服务器存储:文件直接上传到本地服务器的 `static/upload` 目录,不支持大文件上传,占用服务器磁盘空间,访问时消耗服务器带宽流量。

-

七牛云对象存储:文件直接上传到七牛云存储空间,支持大文件上传,不占用服务器空间及服务器带宽流量,支持 CDN 加速访问,访问量大时推荐使用。

-

阿里云OSS存储:文件直接上传到阿里云 OSS 存储空间,支持大文件上传,不占用服务器空间及服务器带宽流量,支持 CDN 加速访问,访问量大时推荐使用。

-

腾讯云COS存储:文件直接上传到腾讯云 COS 存储空间,支持大文件上传,不占用服务器空间及服务器带宽流量,支持 CDN 加速访问,访问量大时推荐使用。

-
-
-
- -
-
- 系统参数System Parameter -
-
-
-
网站名称Website
- -
网站名称及网站图标,将显示在浏览器的标签上。
-
-
-
管理程序名称Name
- -
管理程序名称,将显示在后台左上角标题。
-
-
-
管理程序版本Version
- -
管理程序版本,将显示在后台左上角标题。
-
-
-
公网备案号Baian
- -

公网备案号,可以在 备案管理中心 查询获取,将在登录页面下面显示。

-
-
-
网站备案号Miitbeian
- -
网站备案号,可以在 备案管理中心 查询获取,将显示在登录页面下面。
-
-
-
网站版权信息Copyright
- -
网站版权信息,在后台登录页面显示版本信息并链接到备案到信息备案管理系统。
-
-
-
- -
-
- 系统信息System Information -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
核心框架ThinkPHP Version {$app->version()}
管理程序ThinkAdmin Version {$version|default='6.0.0'}
服务器信息{:php_uname()}
服务器软件{$request->server('SERVER_SOFTWARE',php_sapi_name())}
PHP 版本PHP Version {$Think.const.PHP_VERSION}
MySQL 版本MySQL Version {$app->db->query('SELECT VERSION()')[0]['VERSION()']}
-
-
-{/block} \ No newline at end of file diff --git a/app/admin/view/config/storage-0.html b/app/admin/view/config/storage-0.html deleted file mode 100644 index ee3293f09..000000000 --- a/app/admin/view/config/storage-0.html +++ /dev/null @@ -1,46 +0,0 @@ -
- -
- {if !sysconf('storage.name_type')}{php}sysconf('storage.name_type','xmd5');{/php}{/if} - {foreach ['xmd5'=>'文件哈希值','date'=>'日期+随机'] as $k=>$v} - - {/foreach} -

类型为“文件哈希”时可以实现文件秒传功能,同一个文件只需上传一次节省存储空间,推荐使用。

-
-
-
- -
- {if !sysconf('storage.link_type')}{php}sysconf('storage.link_type','none');{/php}{/if} - {foreach ['none'=>'简洁链接','full'=>'完整链接','none+compress'=>'简洁并压缩图片','full+compress'=>'完整并压缩图片'] as $k=>$v} - - {/foreach} -

类型为“简洁链接”时链接将只返回 hash 地址,而“完整链接”将携带参数保留文件名,图片压缩功能云平台会单独收费。

-
-
- -
- -
- -

设置系统允许上传文件的后缀,多个以英文逗号隔开如:png,jpg,rar,doc,未设置允许上传的后缀

-
-
\ No newline at end of file diff --git a/app/admin/view/config/storage-alioss.html b/app/admin/view/config/storage-alioss.html deleted file mode 100644 index a819600af..000000000 --- a/app/admin/view/config/storage-alioss.html +++ /dev/null @@ -1,98 +0,0 @@ -
-
- -
-

文件将上传到阿里云 OSS 存储,需要配置 OSS 公开访问及跨域策略

-

需要配置跨域访问 CORS 规则,设置:来源 Origin 为 *,允许 Methods 为 POST,允许 Headers 为 *

-
- - {include file='config/storage-0'} - -
- -
- {if !sysconf('storage.alioss_http_protocol')}{php}sysconf('storage.alioss_http_protocol','http');{/php}{/if} - {foreach ['http'=>'HTTP','https'=>'HTTPS','auto'=>"AUTO"] as $protocol=>$remark} - - {/foreach} -

阿里云OSS存储访问协议,其中 HTTPS 需要配置证书才能使用(AUTO 为相对协议)

-
-
- -
- -
- -

阿里云OSS存储空间所在区域,需要严格对应储存所在区域才能上传文件

-
-
- -
- -
- -

填写阿里云OSS存储空间名称,如:think-admin-oss(需要是全区唯一的值,不存在时会自动创建)

-
-
- -
- -
- -

填写阿里云OSS存储外部访问域名,如:static.thinkadmin.top

-
-
- -
- -
- -

可以在 [ 阿里云 > 个人中心 ] 设置并获取到访问密钥

-
-
- -
- -
- -

可以在 [ 阿里云 > 个人中心 ] 设置并获取到安全密钥

-
-
- -
- - -
- - -
- - - -
-
\ No newline at end of file diff --git a/app/admin/view/config/storage-local.html b/app/admin/view/config/storage-local.html deleted file mode 100644 index 9d55964ea..000000000 --- a/app/admin/view/config/storage-local.html +++ /dev/null @@ -1,49 +0,0 @@ -
-
- -
-

文件将存储在本地服务器,默认保存在 public/upload 目录,文件以 HASH 命名。

-

文件存储的目录需要有读写权限,有足够的存储空间。特别注意,本地存储暂不支持图片压缩!

-
- - {include file='config/storage-0'} - -
- -
- {if !sysconf('storage.local_http_protocol')}{php}sysconf('storage.local_http_protocol','http');{/php}{/if} - {foreach ['follow'=>'FOLLOW','http'=>'HTTP','https'=>'HTTPS','path'=>'PATH','auto'=>'AUTO'] as $protocol=>$remark} - - {/foreach} -

本地存储访问协议,其中 HTTPS 需要配置证书才能使用( FOLLOW 跟随系统,PATH 文件路径,AUTO 相对协议 )

-
-
- -
- -
- -

填写上传后的访问域名(不指定时根据当前访问地址自动计算),如:static.thinkadmin.top

-
-
- -
- - -
- - -
- -
-
\ No newline at end of file diff --git a/app/admin/view/config/storage-qiniu.html b/app/admin/view/config/storage-qiniu.html deleted file mode 100644 index 9b60c76ab..000000000 --- a/app/admin/view/config/storage-qiniu.html +++ /dev/null @@ -1,96 +0,0 @@ -
-
- -
-

文件将上传到七牛云存储,对象存储需要配置为公开访问的 Bucket 空间

- 完成实名认证后可获得 10G 免费存储空间哦!我要免费申请 -
- - {include file='config/storage-0'} - -
- -
- {if !sysconf('storage.qiniu_http_protocol')}{php}sysconf('storage.qiniu_http_protocol','http');{/php}{/if} - {foreach ['http'=>'HTTP','https'=>'HTTPS','auto'=>"AUTO"] as $protocol=>$remark} - - {/foreach} -

七牛云存储访问协议,其中 HTTPS 需要配置证书才能使用( AUTO 为相对协议 )

-
-
- -
- -
- {foreach ['华东','华北','华南','北美'] as $area} - - {/foreach} -

七牛云存储空间所在区域,需要严格对应储存所在区域才能上传文件

-
-
- -
- -
- -

填写七牛云存储空间名称,如:static

-
-
- -
- -
- -

填写七牛云存储访问域名,如:static.thinkadmin.top

-
-
- -
- -
- -

可以在 [ 七牛云 > 个人中心 ] 设置并获取到访问密钥

-
-
- -
- -
- -

可以在 [ 七牛云 > 个人中心 ] 设置并获取到安全密钥

-
-
- -
- - -
- - -
-
-
\ No newline at end of file diff --git a/app/admin/view/config/storage-txcos.html b/app/admin/view/config/storage-txcos.html deleted file mode 100644 index 8f0817b42..000000000 --- a/app/admin/view/config/storage-txcos.html +++ /dev/null @@ -1,98 +0,0 @@ -
-
- -
-

文件将上传到 腾讯云 COS 存储,需要配置 COS 公有读私有写访问权限及跨域策略

-

需要配置跨域访问 CORS 规则,设置:来源 Origin 为 *,允许 Methods 为 POST,允许 Headers 为 *

-
- - {include file='config/storage-0'} - -
- -
- {if !sysconf('storage.txcos_http_protocol')}{php}sysconf('storage.txcos_http_protocol','http');{/php}{/if} - {foreach ['http'=>'HTTP','https'=>'HTTPS','auto'=>"AUTO"] as $protocol=>$remark} - - {/foreach} -

腾讯云COS存储访问协议,其中 HTTPS 需要配置证书才能使用( AUTO 为相对协议 )

-
-
- -
- -
- -

腾讯云COS存储空间所在区域,需要严格对应储存所在区域才能上传文件

-
-
- -
- -
- -

填写腾讯云COS存储空间名称,如:thinkadmin-1251143395

-
-
- -
- -
- -

填写腾讯云COS存储外部访问域名,如:static.thinkadmin.top

-
-
- -
- -
- -

可以在 [ 腾讯云 > 个人中心 ] 设置并获取到访问密钥

-
-
- -
- -
- -

可以在 [ 腾讯云 > 个人中心 ] 设置并获取到安全密钥

-
-
- -
- - -
- - -
- - - -
-
\ No newline at end of file diff --git a/app/admin/view/config/system.html b/app/admin/view/config/system.html deleted file mode 100644 index 841587b36..000000000 --- a/app/admin/view/config/system.html +++ /dev/null @@ -1,79 +0,0 @@ -
-
- -
-
登录界面背景BackImage
- - -
- -
-
后台登录入口LoginEntry
- - 名称由英文字母开头且不能存在相同名称的应用,设置之后原地址不能继续访问! -
- -
-
浏览器小图标Icon
- - 建议上传 128x128 | 256x256 的 ico 或 png 图片,可以通过 ICON 在线制作 ico 后缀文件! -
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- 网站备案号和公安备案号可以在备案管理中心查询并获取,网站上线时必需配置备案号,备案号会链接到信息备案管理系统! -
-
-
- -
-
- - -
-
\ No newline at end of file diff --git a/app/admin/view/error.tpl b/app/admin/view/error.tpl deleted file mode 100644 index 43f724108..000000000 --- a/app/admin/view/error.tpl +++ /dev/null @@ -1,568 +0,0 @@ -' . end($names) . ''; - } -} - -if (!function_exists('parse_file')) { - function parse_file($file, $line) - { - return '' . basename($file) . " line {$line}" . ''; - } -} - -if (!function_exists('parse_args')) { - function parse_args($args) - { - $result = []; - foreach ($args as $key => $item) { - switch (true) { - case is_object($item): - $value = sprintf('object(%s)', parse_class(get_class($item))); - break; - case is_array($item): - if (count($item) > 3) { - $value = sprintf('[%s, ...]', parse_args(array_slice($item, 0, 3))); - } else { - $value = sprintf('[%s]', parse_args($item)); - } - break; - case is_string($item): - if (strlen($item) > 20) { - $value = sprintf( - '\'%s...\'', - htmlentities($item), - htmlentities(substr($item, 0, 20)) - ); - } else { - $value = sprintf("'%s'", htmlentities($item)); - } - break; - case is_int($item): - case is_float($item): - $value = $item; - break; - case is_null($item): - $value = 'null'; - break; - case is_bool($item): - $value = '' . ($item ? 'true' : 'false') . ''; - break; - case is_resource($item): - $value = 'resource'; - break; - default: - $value = htmlentities(str_replace("\n", '', var_export(strval($item), true))); - break; - } - - $result[] = is_int($key) ? $value : "'{$key}' => {$value}"; - } - - return implode(', ', $result); - } -} -if (!function_exists('echo_value')) { - function echo_value($val) - { - if (is_array($val) || is_object($val)) { - echo htmlentities(json_encode($val, JSON_PRETTY_PRINT)); - } elseif (is_bool($val)) { - echo $val ? 'true' : 'false'; - } elseif (is_scalar($val)) { - echo htmlentities($val); - } else { - echo 'Resource'; - } - } -} -?> - - - - - 系统发生错误 - - - - - - $trace) { ?> -
-
-
-
-

-
-

-
-
- -
-
    $value) { ?>
  1. ">
-
- -
-

Call Stack

-
    -
  1. - -
  2. - -
  3. - -
-
-
- - -
-

-
- - - -
-

Exception Datas

- $value) { ?> - - - - - - - $val) { ?> - - - - - - - -
empty
- -
- - - -
-

Environment Variables

- $value) { ?> - - - - - - - $val) { ?> - - - - - - - -
empty
- -
- - - - - - - diff --git a/app/admin/view/full.html b/app/admin/view/full.html deleted file mode 100644 index 36e1fc45e..000000000 --- a/app/admin/view/full.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - {block name="title"}{$title|default=''}{if !empty($title)} · {/if}{:sysconf('site_name')}{/block} - - - - - - - - - - - - {block name="style"}{/block} - - - - -{block name='body'} -
-
{block name='content'}{/block}
-
-{/block} - - - -{block name='script'}{/block} - - \ No newline at end of file diff --git a/app/admin/view/index/index-left.html b/app/admin/view/index/index-left.html deleted file mode 100644 index ce89d2d32..000000000 --- a/app/admin/view/index/index-left.html +++ /dev/null @@ -1,39 +0,0 @@ -
- - - - -
- {foreach $menus as $one}{notempty name='one.sub'} - - {/notempty}{/foreach} -
-
\ No newline at end of file diff --git a/app/admin/view/index/index-top.html b/app/admin/view/index/index-top.html deleted file mode 100644 index 687507886..000000000 --- a/app/admin/view/index/index-top.html +++ /dev/null @@ -1,46 +0,0 @@ -
- - -
\ No newline at end of file diff --git a/app/admin/view/index/index.html b/app/admin/view/index/index.html deleted file mode 100644 index 55440c9fb..000000000 --- a/app/admin/view/index/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - {block name="title"}{$title|default=''}{if !empty($title)} · {/if}{:sysconf('site_name')}{/block} - - - - - - - - - - - - {block name="style"}{/block} - - - - - - -{block name='body'} -
- - - {include file='index/index-top'} - - - - {include file="index/index-left"} - - - -
-
- {block name='content'}{/block} -
- -
-
-
-
- -
- - -
-
-
- - -{/block} - - - -{block name='script'}{/block} - - - diff --git a/app/admin/view/login/index.html b/app/admin/view/login/index.html deleted file mode 100644 index 6f42b35f7..000000000 --- a/app/admin/view/login/index.html +++ /dev/null @@ -1,58 +0,0 @@ -{extend name="index/index"} - -{block name="body"} -
-
- {:sysconf('app_name')}{:sysconf('app_version')} - {notempty name='developMode'} - - Fork me on Gitee - - {/notempty} -
-
-

系统管理

-
    -
  • - -
  • -
  • - -
  • -
  • - - -
  • -
  • - -
  • -
-
- -
-{/block} - -{block name='style'} - - - -{/block} - -{block name='script'} - - -{/block} \ No newline at end of file diff --git a/app/admin/view/main.html b/app/admin/view/main.html deleted file mode 100644 index 12d21462f..000000000 --- a/app/admin/view/main.html +++ /dev/null @@ -1,17 +0,0 @@ -
- {block name='style'}{/block} - {block name='header'} - {notempty name='title'} -
- {$title|default=''} -
{block name='button'}{/block}
-
- {/notempty} - {/block} -
-
- {block name='content'}{/block} -
-
- {block name='script'}{/block} -
\ No newline at end of file diff --git a/app/admin/view/menu/form.html b/app/admin/view/menu/form.html deleted file mode 100644 index e20be4c30..000000000 --- a/app/admin/view/menu/form.html +++ /dev/null @@ -1,102 +0,0 @@ -
- -
- -
- -
- -

必选,请选择上级菜单或顶级菜单(目前最多支持三级菜单)

-
-
- -
- -
- -

必选,请填写菜单名称(如:系统管理),建议字符不要太长,一般4-6个汉字

-
-
- -
- -
- -

- 必选,请填写链接地址或选择系统节点(如:https://domain.com/admin/user/index.html 或 admin/user/index) -
当填写链接地址时,以下面的“权限节点”来判断菜单自动隐藏或显示,注意未填写“权限节点”时将不会隐藏该菜单哦 -

-
-
- -
- -
- -

可选,设置菜单链接的GET访问参数(如:name=1&age=3)

-
-
- -
- -
- -

可选,请填写系统权限节点(如:admin/user/index),未填写时默认解释"菜单链接"判断是否拥有访问权限;

-
-
- -
- -
-
- -
- - - - -

可选,设置菜单选项前置图标,目前支持 layui 字体图标及 iconfont 定制字体图标。

-
-
- -
- -
- {notempty name='vo.id'}{/notempty} - -
- - -
-
- -{block name='script'} - -{/block} diff --git a/app/admin/view/menu/index.html b/app/admin/view/menu/index.html deleted file mode 100644 index 6bb65e5cd..000000000 --- a/app/admin/view/menu/index.html +++ /dev/null @@ -1,102 +0,0 @@ -{extend name='main'} - -{block name="button"} - - - - - - - - - - - -{/block} - -{block name="content"} -
- -
- {empty name='list'} -
没有记录哦
- {else} - - - - - - - - - - - - - {foreach $list as $key=>$vo} - - - - - - - - - - {/foreach} - -
- - - -
- - - - {$vo.spl|raw}{$vo.title}{$vo.url}{eq name='vo.status' value='0'}已禁用{else}已激活{/eq} - - {if isset($type) and $type eq 'index'} - - {if auth("add")} - - 添 加 - - 添 加 - - {/if} - - - 编 辑 - - - - 禁 用 - - - {else} - - - 激 活 - - - - 删 除 - - - - 删 除 - - - {/if} -
- {/empty} -
-
-{/block} diff --git a/app/admin/view/module/change.html b/app/admin/view/module/change.html deleted file mode 100644 index 886c21a31..000000000 --- a/app/admin/view/module/change.html +++ /dev/null @@ -1,33 +0,0 @@ -
-
-
-
-
模块名称:{$module.name}
-
开发作者:{$module.author}
-
-
-
最新版本:{$module.version}
-
{if isset($current.version)}已安装版本:{$current.version}{/if}
-
-
模块描述:{$module.content}
-
-
    - {foreach $module.change as $version=>$change} -
  • - {if isset($current.version) and $current.version eq $version} - - {else} - - {/if} -
    -

    - 版本号 {$version} {$change.version|default=''} -

    - {$change.content|default=''|raw} -
    -
  • - {/foreach} -
  • -
-
-
\ No newline at end of file diff --git a/app/admin/view/module/index.html b/app/admin/view/module/index.html deleted file mode 100644 index 5e20d5ca5..000000000 --- a/app/admin/view/module/index.html +++ /dev/null @@ -1,42 +0,0 @@ -{extend name='main'} - -{block name="content"} -
- - {notempty name='modules'} - - - - - - - - - {/notempty} - - {foreach $modules as $key=>$vo} - - - - - - - {/foreach} - -
模块名称模块描述当前版本
{$vo.name}{$vo.content} -
- {if isset($vo.local)} {$vo.local.version} - {if $vo.version > $vo.local.version} - {$vo.version} - {else} - {$vo.type_desc} - {/if} - {else}{$vo.type_desc}{/if} -
-
- {if $vo.type_code eq 1} 安 装{/if} - {if $vo.type_code eq 2} 更 新{/if} -
- {empty name='modules'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} \ No newline at end of file diff --git a/app/admin/view/module/index_search.html b/app/admin/view/module/index_search.html deleted file mode 100644 index 4e0f49ec4..000000000 --- a/app/admin/view/module/index_search.html +++ /dev/null @@ -1,60 +0,0 @@ -
- 条件搜索 - -
- - diff --git a/app/admin/view/oplog/index.html b/app/admin/view/oplog/index.html deleted file mode 100644 index 8b1fd3d41..000000000 --- a/app/admin/view/oplog/index.html +++ /dev/null @@ -1,46 +0,0 @@ -{extend name='table'} - -{block name="button"} - - - - - - -{/block} - -{block name="content"} -
- {include file='oplog/index_search'} -
-
-{/block} - -{block name='script'} - - - -{/block} \ No newline at end of file diff --git a/app/admin/view/oplog/index_search.html b/app/admin/view/oplog/index_search.html deleted file mode 100644 index ebbeb8635..000000000 --- a/app/admin/view/oplog/index_search.html +++ /dev/null @@ -1,74 +0,0 @@ -
- 条件搜索 - -
- - \ No newline at end of file diff --git a/app/admin/view/queue/index.html b/app/admin/view/queue/index.html deleted file mode 100644 index 8a0d64f49..000000000 --- a/app/admin/view/queue/index.html +++ /dev/null @@ -1,150 +0,0 @@ -{extend name='table'} - -{block name="button"} - -优化数据库 - - - - - - - - - - - - - -{/block} - -{block name="content"} -
-
-
-
-
等待处理
-
{$total.pre|default=0}
-
待处理的任务数量
-
- -
-
-
-
正在处理
-
{$total.dos|default=0}
-
处理中的任务数量
-
- -
-
-
-
处理完成
-
{$total.oks|default=0}
-
处理完成的任务数量
-
- -
-
-
-
处理失败
-
{$total.ers|default=0}
-
处理失败的任务数量
-
- -
-
- - {include file='queue/index_search'} -
-
-{/block} - -{block name='script'} - - - -{/block} diff --git a/app/admin/view/queue/index_search.html b/app/admin/view/queue/index_search.html deleted file mode 100644 index 11ecb6478..000000000 --- a/app/admin/view/queue/index_search.html +++ /dev/null @@ -1,80 +0,0 @@ - -
- 服务状态 -
-

后台服务主进程运行状态

-
Checking task process running status ...
- -

配置定时任务来检查并启动进程(建议每分钟执行)

-
{$command|default='--'}
-
-
- - -
- 条件搜索 - -
- - diff --git a/app/admin/view/table.html b/app/admin/view/table.html deleted file mode 100644 index b022fb1fe..000000000 --- a/app/admin/view/table.html +++ /dev/null @@ -1,15 +0,0 @@ -
- {block name='style'}{/block} - {block name='header'}{notempty name='title'} -
- {$title|default=''} -
{block name='button'}{/block}
-
- {/notempty}{/block} -
-
- {block name='content'}{/block} -
-
- {block name='script'}{/block} -
\ No newline at end of file diff --git a/app/admin/view/user/form.html b/app/admin/view/user/form.html deleted file mode 100644 index b860f1fe9..000000000 --- a/app/admin/view/user/form.html +++ /dev/null @@ -1,121 +0,0 @@ -
-
- -
- 用户账号 -
-
-
- - -
-
- -
-
- -
-
-
-
- - {if !empty($bases) || !empty($authorizes)} -
- 用户权限 - {if !empty($bases)} -
-
角色身份Role Identity
-
- {foreach $bases as $base} - - {/foreach} -
-
- {/if} - {if !empty($authorizes)} -
-
访问权限Role Permission
-
- {if isset($vo.username) and $vo.username eq $superName} - 超级用户拥所有访问权限,不需要配置权限。 - {else}{foreach $authorizes as $authorize} - - {/foreach}{/if} -
-
- {/if} -
- {/if} - -
- 用户资料 -
-
- -
-
- -
-
- -
-
- -
- -
- -
- {notempty name='vo.id'}{/notempty} - -
- - -
-
- - \ No newline at end of file diff --git a/app/admin/view/user/index.html b/app/admin/view/user/index.html deleted file mode 100644 index 9afca1bf9..000000000 --- a/app/admin/view/user/index.html +++ /dev/null @@ -1,107 +0,0 @@ -{extend name="../../admin/view/table"} - -{block name="button"} -{if isset($type) and $type eq 'index'} - - - - -批量禁用 - -{else} - -批量恢复 - - -批量删除 - -{/if} -{/block} - -{block name="content"} -
- -
- {include file='user/index_search'} -
-
-
- - - - - - - - - -{/block} diff --git a/app/admin/view/user/index_search.html b/app/admin/view/user/index_search.html deleted file mode 100644 index ec6506f6c..000000000 --- a/app/admin/view/user/index_search.html +++ /dev/null @@ -1,69 +0,0 @@ -
- 条件搜索 - - -
\ No newline at end of file diff --git a/app/admin/view/user/pass.html b/app/admin/view/user/pass.html deleted file mode 100644 index 7c41a074e..000000000 --- a/app/admin/view/user/pass.html +++ /dev/null @@ -1,49 +0,0 @@ -
-
-
- -

登录用户账号创建后,不允许再次修改。

-
- - -
- -

请输入旧密码来验证修改权限,旧密码不限制格式。

-
- - -
- -

密码必需包含大小写字母、数字、符号的任意两者组合。

-
- -
- -

密码必需包含大小写字母、数字、符号的任意两者组合。

-
-
- -
- {notempty name='vo.id'}{/notempty} - -
- - -
-
\ No newline at end of file diff --git a/app/data/command/OrderClean.php b/app/data/command/OrderClean.php deleted file mode 100644 index 0359cd0ca..000000000 --- a/app/data/command/OrderClean.php +++ /dev/null @@ -1,81 +0,0 @@ -setName('xdata:OrderClean'); - $this->setDescription('批量清理商城订单数据'); - } - - /** - * 业务指令执行 - * @param Input $input - * @param Output $output - * @return void - * @throws Exception - */ - protected function execute(Input $input, Output $output) - { - $this->_autoCancelOrder(); - $this->_autoRemoveOrder(); - } - - /** - * 自动取消30分钟未支付的订单 - * @throws Exception - */ - private function _autoCancelOrder() - { - try { - $map = [['status', '<', 3], ['payment_status', '=', 0]]; - $map[] = ['create_at', '<', date('Y-m-d H:i:s', strtotime('-30 minutes'))]; - [$count, $total] = [0, ($result = ShopOrder::mk()->where($map)->select())->count()]; - $result->map(function (Model $item) use ($total, &$count) { - $this->queue->message($total, ++$count, "开始取消未支付的订单 {$item['order_no']}"); - $item->save(['status' => 0, 'cancel_status' => 1, 'cancel_datetime' => date('Y-m-d H:i:s'), 'cancel_remark' => '自动取消30分钟未完成支付']); - OrderService::instance()->stock($item['order_no']); - $this->queue->message($total, $count, "完成取消未支付的订单 {$item['order_no']}", 1); - }); - } catch (\Exception $exception) { - $this->queue->error($exception->getMessage()); - } - } - - /** - * 自动清理已经取消的订单 - * @throws Exception - */ - private function _autoRemoveOrder() - { - try { - $map = [['status', '=', 0], ['payment_status', '=', 0]]; - $map[] = ['create_at', '<', date('Y-m-d H:i:s', strtotime('-3 days'))]; - [$count, $total] = [0, ($result = ShopOrder::mk()->where($map)->select())->count()]; - $result->map(function (Model $item) use ($total, &$count) { - $this->queue->message($total, ++$count, "开始清理已取消的订单 {$item['order_no']}"); - ShopOrder::mk()->where(['order_no' => $item['order_no']])->delete(); - ShopOrderItem::mk()->where(['order_no' => $item['order_no']])->delete(); - $this->queue->message($total, $count, "完成清理已取消的订单 {$item['order_no']}", 1); - }); - } catch (\Exception $exception) { - $this->queue->error($exception->getMessage()); - } - } -} \ No newline at end of file diff --git a/app/data/command/UserAgent.php b/app/data/command/UserAgent.php deleted file mode 100644 index a2aaca7bf..000000000 --- a/app/data/command/UserAgent.php +++ /dev/null @@ -1,79 +0,0 @@ -setName('xdata:UserAgent'); - $this->addArgument('uuid', Argument::OPTIONAL, '目标用户', ''); - $this->addArgument('puid', Argument::OPTIONAL, '上级代理', ''); - $this->setDescription('重新设置用户上级代理, 参数:UUID PUID'); - } - - /** - * @param Input $input - * @param Output $output - * @return void - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function execute(Input $input, Output $output) - { - [$uuid, $puid] = [$input->getArgument('uuid'), $input->getArgument('puid')]; - if (empty($uuid)) $this->setQueueError("参数UID无效,请传入正确的参数!"); - if (empty($puid)) $this->setQueueError("参数PID无效,请传入正确的参数!"); - - // 检查当前用户资料 - $user = DataUser::mk()->where(['id' => $uuid])->find(); - if (empty($user)) $this->setQueueError("读取用户数据失败!"); - - // 检查上级代理用户 - $parant = DataUser::mk()->where(['id' => $puid])->find(); - if (empty($parant)) $this->setQueueError('读取代理数据失败!'); - - // 检查异常关系处理 - if (stripos($parant['path'], "-{$user['id']}-")) { - $this->setQueueError('不能把下级设置为代理!'); - } - - // 更新自己的代理关系 - $path1 = rtrim($parant['path'] ?: '-', '-') . "-{$parant['id']}-"; - DataUser::mk()->where(['id' => $user['id']])->update([ - 'path' => $path1, 'layer' => substr_count($path1, '-'), - 'pid0' => $parant['id'], 'pid1' => $parant['id'], 'pid2' => $parant['pid1'], - ]); - UserUpgradeService::instance()->upgrade($user['id'], true); - $this->setQueueMessage(1, 1, "更新指定用户[{$user['id']}]代理绑定成功!"); - - // 更新下级的代理关系 - $path2 = "{$user['path']}{$user['id']}-"; - [$total, $count] = [DataUser::mk()->whereLike('path', "{$path2}%")->count(), 0]; - foreach (DataUser::mk()->whereLike('path', "{$path2}%")->order('layer desc')->select() as $vo) { - $this->setQueueMessage($total, ++$count, "开始更新下级用户[{$vo['id']}]代理绑定!"); - // 更新下级用户代理数据 - $path3 = preg_replace("#^{$path2}#", "{$path1}{$user['id']}-", $vo['path']); - $attrs = array_reverse(str2arr($path3, '-')); - DataUser::mk()->where(['id' => $vo['id']])->update([ - 'path' => $path3, 'layer' => substr_count($path3, '-'), - 'pid0' => $attrs[0] ?? 0, 'pid1' => $attrs[0] ?? 0, 'pid2' => $attrs[1] ?? 0, - ]); - $this->setQueueMessage($total, $count, "完成更新下级用户[{$vo['id']}]代理绑定!", 1); - } - } -} \ No newline at end of file diff --git a/app/data/command/UserAmount.php b/app/data/command/UserAmount.php deleted file mode 100644 index ba7127a30..000000000 --- a/app/data/command/UserAmount.php +++ /dev/null @@ -1,46 +0,0 @@ -setName('xdata:UserAmount'); - $this->setDescription('批量重新计算余额返利'); - } - - /** - * @param Input $input - * @param Output $output - * @return void - * @throws Exception - */ - protected function execute(Input $input, Output $output) - { - [$total, $count, $error] = [DataUser::mk()->count(), 0, 0]; - foreach (DataUser::mk()->field('id')->cursor() as $user) try { - $this->queue->message($total, ++$count, "刷新用户 [{$user['id']}] 余额及返利开始"); - UserRebateService::instance()->amount($user['id']); - UserBalanceService::instance()->amount($user['id']); - $this->queue->message($total, $count, "刷新用户 [{$user['id']}] 余额及返利完成", 1); - } catch (\Exception $exception) { - $error++; - $this->queue->message($total, $count, "刷新用户 [{$user['id']}] 余额及返利失败, {$exception->getMessage()}", 1); - } - $this->setQueueSuccess("此次共处理 {$total} 个刷新操作, 其中有 {$error} 个刷新失败。"); - } -} \ No newline at end of file diff --git a/app/data/command/UserTransfer.php b/app/data/command/UserTransfer.php deleted file mode 100644 index 1eeb41792..000000000 --- a/app/data/command/UserTransfer.php +++ /dev/null @@ -1,262 +0,0 @@ -setName('xdata:UserTransfer'); - $this->setDescription('批量执行线上打款操作'); - } - - /** - * 执行微信提现操作 - * @param Input $input - * @param Output $output - * @return void - * @throws \think\admin\Exception - */ - protected function execute(Input $input, Output $output) - { - $map = [['type', 'in', ['wechat_banks', 'wechat_wallet']], ['status', 'in', [3, 4]]]; - [$total, $count, $error] = [DataUserTransfer::mk()->where($map)->count(), 0, 0]; - foreach (DataUserTransfer::mk()->where($map)->cursor() as $vo) try { - $this->queue->message($total, ++$count, "开始处理订单 {$vo['code']} 提现"); - if ($vo['status'] === 3) { - $this->queue->message($total, $count, "尝试处理订单 {$vo['code']} 打款", 1); - if ($vo['type'] === 'wechat_banks') { - [$config, $result] = $this->createTransferBank($vo); - } else { - [$config, $result] = $this->createTransferWallet($vo); - } - if ($result['return_code'] === 'SUCCESS' && $result['result_code'] === 'SUCCESS') { - DataUserTransfer::mk()->where(['code' => $vo['code']])->update([ - 'status' => 4, - 'appid' => $config['appid'], - 'openid' => $config['openid'], - 'trade_no' => $result['partner_trade_no'], - 'trade_time' => $result['payment_time'] ?? date('Y-m-d H:i:s'), - 'change_time' => date('Y-m-d H:i:s'), - 'change_desc' => '创建微信提现成功', - ]); - } else { - DataUserTransfer::mk()->where(['code' => $vo['code']])->update([ - 'change_time' => date('Y-m-d H:i:s'), 'change_desc' => $result['err_code_des'] ?? '线上提现失败', - ]); - } - } elseif ($vo['status'] === 4) { - $this->queue->message($total, $count, "刷新提现订单 {$vo['code']} 状态", 1); - if ($vo['type'] === 'wechat_banks') { - $this->queryTransferBank($vo); - } else { - $this->queryTransferWallet($vo); - } - } - } catch (\Exception $exception) { - $error++; - $this->queue->message($total, $count, "处理提现订单 {$vo['code']} 失败, {$exception->getMessage()}", 1); - DataUserTransfer::mk()->where(['code' => $vo['code']])->update([ - 'change_time' => date('Y-m-d H:i:s'), 'change_desc' => $exception->getMessage(), - ]); - } - $this->setQueueSuccess("此次共处理 {$total} 笔提现操作, 其中有 {$error} 笔处理失败。"); - } - - /** - * 尝试提现转账到银行卡 - * @param array $item - * @return array [config, result] - * @throws \WeChat\Exceptions\InvalidDecryptException - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function createTransferBank(array $item): array - { - $config = $this->getConfig($item['uuid']); - return [$config, TransfersBank::instance($config)->create([ - 'partner_trade_no' => $item['code'], - 'enc_bank_no' => $item['bank_code'], - 'enc_true_name' => $item['bank_user'], - 'bank_code' => $item['bank_wseq'], - 'amount' => intval($item['amount'] - $item['charge_amount']) * 100, - 'desc' => '微信银行卡提现', - ])]; - } - - /** - * 获取微信提现参数 - * @param int $uuid - * @return array - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function getConfig(int $uuid): array - { - $data = sysdata('TransferWxpay'); - if (empty($data)) throw new Exception('未配置微信提现商户'); - // 商户证书文件处理 - $local = LocalStorage::instance(); - if (!$local->has($file1 = "{$data['wechat_mch_id']}_key.pem", true)) { - $local->set($file1, $data['wechat_mch_key_text'], true); - } - if (!$local->has($file2 = "{$data['wechat_mch_id']}_cert.pem", true)) { - $local->set($file2, $data['wechat_mch_cert_text'], true); - } - // 获取用户支付信息 - $result = $this->getWechatInfo($uuid, $data['wechat_type']); - if (empty($result)) throw new Exception('无法读取打款数据'); - return [ - 'appid' => $result[0], - 'openid' => $result[1], - 'mch_id' => $data['wechat_mch_id'], - 'mch_key' => $data['wechat_mch_key'], - 'ssl_key' => $local->path($file1), - 'ssl_cer' => $local->path($file2), - 'cache_path' => $this->app->getRootPath() . 'runtime' . DIRECTORY_SEPARATOR . 'wechat', - ]; - } - - /** - * 根据配置获取用户OPENID - * @param int $uuid - * @param string $type - * @return mixed|null - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function getWechatInfo(int $uuid, string $type): ?array - { - $user = DataUser::mk()->where(['id' => $uuid])->find(); - if (empty($user)) return null; - $appid1 = sysconf('data.wxapp_appid'); - if (strtolower(sysconf('wechat.type')) === 'api') { - $appid2 = sysconf('wechat.appid'); - } else { - $appid2 = sysconf('wechat.thr_appid'); - } - if ($type === 'normal') { - if (!empty($user['openid1'])) return [$appid1, $user['openid1']]; - if (!empty($user['openid2'])) return [$appid2, $user['openid2']]; - } - if ($type === 'wxapp' && !empty($user['openid1'])) { - return [$appid1, $user['openid1']]; - } - if ($type === 'wechat' && !empty($user['openid2'])) { - return [$appid2, $user['openid2']]; - } - return null; - } - - /** - * 尝试提现转账到微信钱包 - * @param array $item - * @return array [config, result] - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function createTransferWallet(array $item): array - { - $config = $this->getConfig($item['uuid']); - return [$config, Transfers::instance($config)->create([ - 'openid' => $config['openid'], - 'amount' => intval($item['amount'] - $item['charge_amount']) * 100, - 'partner_trade_no' => $item['code'], - 'spbill_create_ip' => '127.0.0.1', - 'check_name' => 'NO_CHECK', - 'desc' => '微信余额提现', - ])]; - } - - /** - * 查询更新提现打款状态 - * @param array $item - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function queryTransferBank(array $item) - { - $config = $this->getConfig($item['uuid']); - [$config['appid'], $config['openid']] = [$item['appid'], $item['openid']]; - $result = TransfersBank::instance($config)->query($item['trade_no']); - if ($result['return_code'] === 'SUCCESS' && $result['result_code'] === 'SUCCESS') { - if ($result['status'] === 'SUCCESS') { - DataUserTransfer::mk()->where(['code' => $item['code']])->update([ - 'status' => 5, - 'appid' => $config['appid'], - 'openid' => $config['openid'], - 'trade_time' => $result['pay_succ_time'] ?: date('Y-m-d H:i:s'), - 'change_time' => date('Y-m-d H:i:s'), - 'change_desc' => '微信提现打款成功', - ]); - } - if (in_array($result['status'], ['FAILED', 'BANK_FAIL'])) { - DataUserTransfer::mk()->where(['code' => $item['code']])->update([ - 'status' => 0, - 'change_time' => date('Y-m-d H:i:s'), - 'change_desc' => '微信提现打款失败', - ]); - // 刷新用户可提现余额 - UserRebateService::instance()->amount($item['uuid']); - } - } - } - - /** - * 查询更新提现打款状态 - * @param array $item - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function queryTransferWallet(array $item) - { - $config = $this->getConfig($item['uuid']); - [$config['appid'], $config['openid']] = [$item['appid'], $item['openid']]; - $result = Transfers::instance($config)->query($item['trade_no']); - if ($result['return_code'] === 'SUCCESS' && $result['result_code'] === 'SUCCESS') { - DataUserTransfer::mk()->where(['code' => $item['code']])->update([ - 'status' => 5, - 'appid' => $config['appid'], - 'openid' => $config['openid'], - 'trade_time' => $result['payment_time'], - 'change_time' => date('Y-m-d H:i:s'), - 'change_desc' => '微信提现打款成功', - ]); - } - } -} \ No newline at end of file diff --git a/app/data/command/UserUpgrade.php b/app/data/command/UserUpgrade.php deleted file mode 100644 index 613e0e598..000000000 --- a/app/data/command/UserUpgrade.php +++ /dev/null @@ -1,47 +0,0 @@ -setName('xdata:UserUpgrade'); - $this->setDescription('批量重新计算用户等级'); - } - - /** - * @param Input $input - * @param Output $output - * @return void - * @throws Exception - */ - protected function execute(Input $input, Output $output) - { - try { - [$total, $count] = [DataUser::mk()->count(), 0]; - foreach (DataUser::mk()->field('id')->cursor() as $user) { - $this->queue->message($total, ++$count, "正在计算用户 [{$user['id']}] 的等级"); - UserUpgradeService::instance()->upgrade($user['id']); - $this->queue->message($total, $count, "完成计算用户 [{$user['id']}] 的等级", 1); - } - $this->setQueueSuccess("此次共重新计算 {$total} 个用户等级。"); - } catch (Exception $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->setQueueError($exception->getMessage()); - } - } -} \ No newline at end of file diff --git a/app/data/controller/api/Auth.php b/app/data/controller/api/Auth.php deleted file mode 100644 index 6433a8fb7..000000000 --- a/app/data/controller/api/Auth.php +++ /dev/null @@ -1,95 +0,0 @@ -type = $this->request->request('api'); - $this->type = $this->type ?: $this->request->header('api-name'); - $this->type = $this->type ?: $this->request->header('api-type'); - // 检查接口类型 - if (empty($this->type)) { - $this->error("未获取到接口类型字段!"); - } - if (!isset(UserAdminService::TYPES[$this->type])) { - $this->error("接口类型[{$this->type}]未定义!"); - } - // 获取用户数据 - $this->user = $this->getUser(); - $this->uuid = $this->user['id'] ?? ''; - if (empty($this->uuid)) { - $this->error('用户登录失败!', '{-null-}', 401); - } - } - - /** - * 获取用户数据 - * @return array - */ - protected function getUser(): array - { - try { - if (empty($this->uuid)) { - $token = input('token') ?: $this->request->header('api-token'); - if (empty($token)) $this->error('登录认证TOKEN不能为空!'); - [$state, $info, $this->uuid] = UserTokenService::instance()->check($this->type, $token); - if (empty($state)) $this->error($info, '{-null-}', 401); - } - return UserAdminService::instance()->get($this->uuid, $this->type); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error($exception->getMessage()); - } - } - - /** - * 显示用户禁用提示 - */ - protected function checkUserStatus() - { - if (empty($this->user['status'])) { - $this->error('账户已被冻结!'); - } - } -} \ No newline at end of file diff --git a/app/data/controller/api/Data.php b/app/data/controller/api/Data.php deleted file mode 100644 index a5b589ee8..000000000 --- a/app/data/controller/api/Data.php +++ /dev/null @@ -1,53 +0,0 @@ -_vali(['name.require' => '数据名称不能为空!']); - $this->success('获取数据对象', sysdata($data['name'])); - } - - /** - * 获取轮播图片数据 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getSlider() - { - $data = sysdata(input('keys', 'slider')); - $this->success('获取轮播图片', $data); - } - - /** - * 获取系统通知数据 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getNotify() - { - $model = BaseUserMessage::mQuery()->where(['status' => 1, 'deleted' => 0]); - $result = $model->equal('id')->order('sort desc,id desc')->page(true, false, false, 20); - if (($id = input('id')) > 0) BaseUserMessage::mk()->where(['id' => $id])->inc('num_read')->update([]); - $this->success('获取系统通知', $result); - } -} \ No newline at end of file diff --git a/app/data/controller/api/Goods.php b/app/data/controller/api/Goods.php deleted file mode 100644 index 4e62aea9e..000000000 --- a/app/data/controller/api/Goods.php +++ /dev/null @@ -1,61 +0,0 @@ -success('获取分类成功', GoodsService::instance()->getCateTree()); - } - - /** - * 获取标签数据 - */ - public function getMark() - { - $this->success('获取标签成功', GoodsService::instance()->getMarkData()); - } - - /** - * 获取商品数据 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getGoods() - { - // 更新访问统计 - $map = $this->_vali(['code.default' => '']); - if ($map['code']) ShopGoods::mk()->where($map)->inc('num_read')->update([]); - // 商品数据处理 - $query = ShopGoods::mQuery()->like('name,marks,cateids,payment')->equal('code,vip_entry'); - $result = $query->where(['deleted' => 0, 'status' => 1])->order('sort desc,id desc')->page(true, false, false, 10); - if (count($result['list']) > 0) GoodsService::instance()->bindData($result['list']); - $this->success('获取商品数据', $result); - } - - /** - * 获取配送区域 - */ - public function getRegion() - { - $this->success('获取区域成功', ExpressService::instance()->region(3, 1)); - } -} \ No newline at end of file diff --git a/app/data/controller/api/Login.php b/app/data/controller/api/Login.php deleted file mode 100644 index 54b289529..000000000 --- a/app/data/controller/api/Login.php +++ /dev/null @@ -1,111 +0,0 @@ -type = $this->request->request('api'); - $this->type = $this->type ?: $this->request->header('api-name'); - $this->type = $this->type ?: $this->request->header('api-type'); - $this->type = $this->type ?: UserAdminService::API_TYPE_WAP; - if (empty(UserAdminService::TYPES[$this->type])) { - $this->error("接口支付[{$this->type}]未定义规则!"); - } - } - - /** - * 用户登录接口 - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function in() - { - $data = $this->_vali([ - 'phone.mobile' => '手机号码格式错误!', - 'phone.require' => '手机号码不能为空!', - 'password.require' => '登录密码不能为空!', - ]); - $map = ['deleted' => 0, 'phone' => $data['phone']]; - $user = DataUser::mk()->where($map)->find(); - if (empty($user)) $this->error('该手机号还没有注册哦!'); - if (empty($user['status'])) $this->error('该用户账号状态异常!'); - if (md5($data['password']) === $user['password']) { - $this->success('手机登录成功!', UserAdminService::instance()->set($map, [], $this->type, true)); - } else { - $this->error('账号登录失败,请稍候再试!'); - } - } - - /** - * 用户统一注册入口 - * @throws \think\admin\Exception - * @throws \think\db\exception\DbException - */ - public function register() - { - $data = $this->_vali([ - 'region_province.default' => '', - 'region_city.default' => '', - 'region_area.default' => '', - 'username.default' => '', - 'phone.mobile' => '手机号码格式错误!', - 'phone.require' => '手机号码不能为空!', - // 'verify.require' => '验证码不能为空!', - 'password.require' => '登录密码不能为空!', - ]); - // if (MessageService::instance()->checkVerifyCode($data['verify'], $data['phone'])) { - // @验证码验证能完 - // } else { - // $this->error('验证失败!'); - // } - $map = ['phone' => $data['phone'], 'deleted' => 0]; - if (DataUser::mk()->where($map)->count() > 0) { - $this->error('手机号已注册,请使用其它手机号!'); - } - $data['password'] = md5($data['password']); - $user = UserAdminService::instance()->set($map, $data, $this->type, true); - empty($user) ? $this->error('手机注册失败!') : $this->success('用户注册成功!', $user); - } - - /** - * 发送短信验证码 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function sendsms() - { - $data = $this->_vali([ - 'phone.mobile' => '手机号格式错误!', - 'phone.require' => '手机号不能为空!', - 'secure.require' => '安全码不能为空!', - ]); - if ($data['secure'] !== sysconf('zt.secure_code')) $this->error('接口安全码错误!'); - [$state, $message, $data] = MessageService::instance()->sendVerifyCode($data['phone']); - $state ? $this->success($message, $data) : $this->error($message, $data); - } -} \ No newline at end of file diff --git a/app/data/controller/api/News.php b/app/data/controller/api/News.php deleted file mode 100644 index e16ffaf46..000000000 --- a/app/data/controller/api/News.php +++ /dev/null @@ -1,69 +0,0 @@ -like('name'); - $query->where(['status' => 1, 'deleted' => 0])->withoutField('sort,status,deleted'); - $this->success('获取文章标签', $query->order('sort desc,id desc')->page(false, false)); - } - - /** - * 获取文章内容列表 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getItem() - { - if ($code = input('code', '')) { - DataNewsItem::mk()->where(['code' => $code])->inc('num_read')->update([]); - if (($uuid = input('uuid', 0)) > 0) { - $data = ['uuid' => $uuid, 'code' => $code, 'type' => 3, 'status' => 2]; - DataNewsXCollect::mk()->where($data)->delete(); - DataNewsXCollect::mk()->insert($data); - } - } - $query = DataNewsItem::mQuery()->like('name,mark')->equal('id,code'); - $query->where(['deleted' => 0, 'status' => 1])->withoutField('sort,status,deleted'); - $result = $query->order('sort desc,id desc')->page(true, false, false, 15); - NewsService::instance()->buildData($result['list'], input('uuid', 0)); - $this->success('获取文章内容', $result); - } - - /** - * 获取文章评论 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getComment() - { - $map = $this->_vali(['code.require' => '文章不能为空!']); - $query = DataNewsXCollect::mQuery()->where(['type' => 4, 'status' => 2]); - $result = $query->where($map)->order('id desc')->page(true, false, false, 15); - NewsService::instance()->buildListByUidAndCode($result['list']); - $this->success('获取评论成功', $result); - } - -} \ No newline at end of file diff --git a/app/data/controller/api/Notify.php b/app/data/controller/api/Notify.php deleted file mode 100644 index 14510e13d..000000000 --- a/app/data/controller/api/Notify.php +++ /dev/null @@ -1,76 +0,0 @@ -notify(); - } else { - return 'success'; - } - } - - /** - * 支付宝支付通知 - * @param string $scene 支付场景 - * @param string $param 支付参数 - * @return string - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function alipay(string $scene = 'order', string $param = ''): string - { - if (strtolower($scene) === 'order') { - return AlipayPaymentService::instance($param)->notify(); - } else { - return 'success'; - } - } - - /** - * 汇聚支付通知 - * @param string $scene 支付场景 - * @param string $param 支付参数 - * @return string - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function joinpay(string $scene = 'order', string $param = ''): string - { - if (strtolower($scene) === 'order') { - return JoinpayPaymentService::instance($param)->notify(); - } else { - return 'success'; - } - } -} \ No newline at end of file diff --git a/app/data/controller/api/Wechat.php b/app/data/controller/api/Wechat.php deleted file mode 100644 index c21868157..000000000 --- a/app/data/controller/api/Wechat.php +++ /dev/null @@ -1,137 +0,0 @@ - - * - * - * 授权模式支持两种模块,参数 mode=0 时为静默授权,mode=1 时为完整授权 - * 注意:回跳地址默认从 Header 中的 http_referer 获取,也可以传 source 参数 - */ -class Wechat extends Controller -{ - - /** - * 接口认证类型 - * @var string - */ - private $type = UserAdminService::API_TYPE_WECHAT; - - /** - * 唯一绑定字段 - * @var string - */ - private $field; - - /** - * 控制器初始化 - * @return $this - */ - protected function initialize(): Wechat - { - if (empty(UserAdminService::TYPES[$this->type]['auth'])) { - $this->error("接口类型[{$this->type}]没有定义规则"); - } else { - $this->field = UserAdminService::TYPES[$this->type]['auth']; - } - return $this; - } - - /** - * 获取 JSSDK 签名 - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function jssdk() - { - $url = input('source') ?: $this->request->server('http_referer'); - $this->success('获取签名参数', WechatService::instance()->getWebJssdkSign($url)); - } - - /** - * 加载网页授权数据 - * @return Response - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function oauth(): Response - { - $source = input('source') ?: $this->request->server('http_referer'); - [$mode, $script, $wechat] = [input('mode', 1), [], WechatService::instance()]; - $result = $wechat->getWebOauthInfo($source ?: $this->request->url(true), $mode, false); - if (empty($result['openid'])) { - $script[] = 'alert("Wechat WebOauth failed.")'; - } else { - $data = $result['fansinfo'] ?? []; - $data[$this->field] = $data['openid']; - $data['base_sex'] = ['未知', '男', '女'][$data['sex']] ?? '未知'; - if (isset($result['unionid'])) $data['unionid'] = $result['unionid']; - if (isset($data['headimgurl'])) $data['headimg'] = $data['headimgurl']; - $map = UserAdminService::instance()->getUserUniMap($this->field, $data[$this->field], $data['unionid'] ?? ''); - $result['userinfo'] = UserAdminService::instance()->set($map, array_merge($map, $data), $this->type, true); - $script[] = "window.WeChatOpenid='{$result['openid']}'"; - $script[] = 'window.WeChatFansInfo=' . json_encode($result['fansinfo'], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); - $script[] = 'window.WeChatUserInfo=' . json_encode($result['userinfo'], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); - } - $script[] = ''; - return Response::create(join(";\n", $script))->contentType('application/x-javascript'); - } - - /** - * 网页授权测试 - * 使用网页直接访问此链接 - * @return string - */ - public function otest(): string - { - return << - - - 微信网页授权测试 - - - - - -
当前链接
-
{$this->request->scheme()}://{$this->request->host()}/data/api.wechat/oauth?mode=1
- -
粉丝数据
-
待网页授权,加载粉丝数据...
- -
用户数据
-
待网页授权,加载用户数据...
- - - - - -EOL; - } -} \ No newline at end of file diff --git a/app/data/controller/api/Wxapp.php b/app/data/controller/api/Wxapp.php deleted file mode 100644 index 485d21114..000000000 --- a/app/data/controller/api/Wxapp.php +++ /dev/null @@ -1,194 +0,0 @@ -config = [ - 'appid' => sysconf('data.wxapp_appid'), - 'appsecret' => sysconf('data.wxapp_appkey'), - 'cache_path' => $this->app->getRootPath() . 'runtime' . DIRECTORY_SEPARATOR . 'wechat', - ]; - if (empty(UserAdminService::TYPES[$this->type]['auth'])) { - $this->error("接口类型[{$this->type}]没有定义规则"); - } else { - $this->field = UserAdminService::TYPES[$this->type]['auth']; - } - } - - /** - * 授权Code换取会话信息 - * @throws \think\admin\Exception - * @throws \think\db\exception\DbException - */ - public function session() - { - $input = $this->_vali(['code.require' => '登录凭证CODE不能为空!']); - [$openid, $unionid, $session] = $this->_getSessionKey($input['code']); - $map = UserAdminService::instance()->getUserUniMap($this->field, $openid, $unionid); - $data = [$this->field => $openid, 'session_key' => $session]; - if (!empty($unionid)) $data['unionid'] = $unionid; - $this->success('授权换取成功!', UserAdminService::instance()->set($map, $data, $this->type, true)); - } - - /** - * 小程序数据解密 - */ - public function decode() - { - try { - $input = $this->_vali([ - 'iv.require' => '解密向量不能为空!', - 'code.require' => '授权CODE不能为空!', - 'encrypted.require' => '加密内容不能为空!', - ]); - [$openid, $unionid, $input['session_key']] = $this->_getSessionKey($input['code']); - $result = Crypt::instance($this->config)->decode($input['iv'], $input['session_key'], $input['encrypted']); - if (is_array($result) && isset($result['avatarUrl']) && isset($result['nickName'])) { - $data = [$this->field => $openid, 'nickname' => $result['nickName'], 'headimg' => $result['avatarUrl']]; - $data['base_sex'] = ['-', '男', '女'][$result['gender']] ?? '-'; - if (!empty($unionid)) $data['unionid'] = $unionid; - $map = UserAdminService::instance()->getUserUniMap($this->field, $openid, $unionid); - $this->success('数据解密成功!', UserAdminService::instance()->set($map, $data, $this->type, true)); - } elseif (is_array($result)) { - $this->success('数据解密成功!', $result); - } else { - $this->error('数据处理失败,请稍候再试!'); - } - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error("数据处理失败,{$exception->getMessage()}"); - } - } - - /** - * 授权CODE换取会话信息 - * @param string $code 换取授权CODE - * @return array [openid, sessionkey] - */ - private function _getSessionKey(string $code): array - { - try { - $cache = $this->app->cache->get($code, []); - if (isset($cache['openid']) && isset($cache['session_key'])) { - return [$cache['openid'], $cache['unionid'] ?? '', $cache['session_key']]; - } - $result = Crypt::instance($this->config)->session($code); - if (isset($result['openid']) && isset($result['session_key'])) { - $this->app->cache->set($code, $result, 60); - return [$result['openid'], $result['unionid'] ?? '', $result['session_key']]; - } elseif (isset($result['errmsg'])) { - $this->error($result['errmsg']); - } else { - $this->error("授权换取失败,请稍候再试!"); - } - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error("授权换取失败,{$exception->getMessage()}"); - } - } - - /** - * 获取小程序码 - */ - public function qrcode(): Response - { - try { - $data = $this->_vali([ - 'size.default' => 430, - 'type.default' => 'base64', - 'path.require' => '跳转路径不能为空!', - ]); - $result = Qrcode::instance($this->config)->createMiniPath($data['path'], $data['size']); - if ($data['type'] === 'base64') { - $this->success('生成小程序码成功!', [ - 'base64' => 'data:image/png;base64,' . base64_encode($result), - ]); - } else { - return response($result)->contentType('image/png'); - } - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error($exception->getMessage()); - } - } - - /** - * 获取直播列表 - */ - public function getLiveList() - { - try { - $data = $this->_vali(['start.default' => 0, 'limit.default' => 10]); - $list = Live::instance($this->config)->getLiveList($data['start'], $data['limit']); - $this->success('获取直播列表成功!', $list); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error($exception->getMessage()); - } - } - - /** - * 获取回放源视频 - */ - public function getLiveInfo() - { - try { - $data = $this->_vali([ - 'start.default' => 0, - 'limit.default' => 10, - 'action.default' => 'get_replay', - 'room_id.require' => '直播间不能为空', - ]); - $result = Live::instance($this->config)->getLiveInfo($data); - $this->success('获取回放视频成功!', $result); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error($exception->getMessage()); - } - } -} \ No newline at end of file diff --git a/app/data/controller/api/auth/Address.php b/app/data/controller/api/auth/Address.php deleted file mode 100644 index bea040978..000000000 --- a/app/data/controller/api/auth/Address.php +++ /dev/null @@ -1,142 +0,0 @@ -_vali([ - 'uuid.value' => $this->uuid, - 'type.default' => 0, - 'code.default' => '', - 'idcode.default' => '', // 身份证号码 - 'idimg1.default' => '', // 身份证正面 - 'idimg2.default' => '', // 身份证反面 - 'type.in:0,1' => '地址状态不在范围!', - 'name.require' => '收货姓名不能为空!', - 'phone.mobile' => '收货手机格式错误!', - 'phone.require' => '收货手机不能为空!', - 'province.require' => '地址省份不能为空!', - 'city.require' => '地址城市不能为空!', - 'area.require' => '地址区域不能为空!', - 'address.require' => '详情地址不能为空!', - 'deleted.value' => 0, - ]); - if (empty($data['code'])) { - unset($data['code']); - $count = DataUserAddress::mk()->where($data)->count(); - if ($count > 0) $this->error('抱歉,该地址已经存在!'); - $data['code'] = CodeExtend::uniqidDate(20, 'A'); - if (DataUserAddress::mk()->insert($data) === false) { - $this->error('添加地址失败!'); - } - } else { - $map = ['uuid' => $this->uuid, 'code' => $data['code']]; - $addr = DataUserAddress::mk()->where($map)->find(); - if (empty($addr)) $this->error('修改地址不存在!'); - DataUserAddress::mk()->where($map)->update($data); - } - // 去除其它默认选项 - if (isset($data['type']) && $data['type'] > 0) { - $map = [['uuid', '=', $this->uuid], ['code', '<>', $data['code']]]; - DataUserAddress::mk()->where($map)->update(['type' => 0]); - } - $this->success('地址保存成功!', $this->_getAddress($data['code'])); - } - - /** - * 获取收货地址 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function get() - { - $query = DataUserAddress::mQuery()->withoutField('deleted'); - $query->equal('code')->where(['uuid' => $this->uuid, 'deleted' => 0]); - $result = $query->order('type desc,id desc')->page(false, false, false, 15); - $this->success('获取地址数据!', $result); - } - - /** - * 修改地址状态 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function state() - { - $data = $this->_vali([ - 'uuid.value' => $this->uuid, - 'type.in:0,1' => '地址状态不在范围!', - 'type.require' => '地址状态不能为空!', - 'code.require' => '地址编号不能为空!', - ]); - // 检查地址是否存在 - $map = ['uuid' => $data['uuid'], 'code' => $data['code']]; - if (DataUserAddress::mk()->where($map)->count() < 1) { - $this->error('修改的地址不存在!'); - } - // 更新默认地址状态 - $data['type'] = intval($data['type']); - DataUserAddress::mk()->where($map)->update(['type' => $data['type']]); - // 去除其它默认选项 - if ($data['type'] > 0) { - $map = [['uuid', '=', $this->uuid], ['code', '<>', $data['code']]]; - DataUserAddress::mk()->where($map)->update(['type' => 0]); - } - $this->success('默认设置成功!', $this->_getAddress($data['code'])); - } - - /** - * 删除收货地址 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function remove() - { - $map = $this->_vali([ - 'uuid.value' => $this->uuid, - 'code.require' => '地址不能为空!', - ]); - $data = DataUserAddress::mk()->where($map)->find(); - if (empty($data)) $this->error('需要删除的地址不存在!'); - if ($data->save(['deleted' => 1]) !== false) { - $this->success('删除地址成功!'); - } else { - $this->error('删除地址失败!'); - } - } - - /** - * 获取指定的地址 - * @param string $code - * @return null|array - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function _getAddress(string $code): array - { - $map = ['code' => $code, 'uuid' => $this->uuid, 'deleted' => 0]; - $data = DataUserAddress::mk()->withoutField('deleted')->where($map)->find(); - return empty($data) ? [] : $data->toArray(); - } -} \ No newline at end of file diff --git a/app/data/controller/api/auth/Balance.php b/app/data/controller/api/auth/Balance.php deleted file mode 100644 index d4892a3a2..000000000 --- a/app/data/controller/api/auth/Balance.php +++ /dev/null @@ -1,27 +0,0 @@ -withoutField('deleted,create_by'); - $query->where(['uuid' => $this->uuid, 'deleted' => 0])->like('create_at#date'); - $this->success('获取数据成功', $query->order('id desc')->page(true, false, false, 10)); - } -} \ No newline at end of file diff --git a/app/data/controller/api/auth/Center.php b/app/data/controller/api/auth/Center.php deleted file mode 100644 index e209cc843..000000000 --- a/app/data/controller/api/auth/Center.php +++ /dev/null @@ -1,152 +0,0 @@ -_vali([ - 'headimg.default' => '', - 'username.default' => '', - 'base_age.default' => '', - 'base_sex.default' => '', - 'base_height.default' => '', - 'base_weight.default' => '', - 'base_birthday.default' => '', - ]); - foreach ($data as $key => $vo) if ($vo === '') unset($data[$key]); - if (empty($data)) $this->error('没有修改的数据!'); - if (DataUser::mk()->where(['id' => $this->uuid])->update($data) !== false) { - $this->success('更新资料成功!', $this->getUser()); - } else { - $this->error('更新资料失败!'); - } - } - - /** - * 获取用户资料 - */ - public function get() - { - $this->success('获取用户资料', $this->getUser()); - } - - /** - * Base64 图片上传 - */ - public function image() - { - try { - $data = $this->_vali(['base64.require' => '图片内容不为空!']); - if (preg_match('|^data:image/(.*?);base64,|i', $data['base64'])) { - [$ext, $img] = explode('|||', preg_replace('|^data:image/(.*?);base64,|i', '$1|||', $data['base64'])); - $info = Storage::instance()->set(Storage::name($img, $ext ?: 'png', 'image/'), base64_decode($img)); - $this->success('图片上传成功!', ['url' => $info['url']]); - } else { - $this->error('解析内容失败!'); - } - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error($exception->getMessage()); - } - } - - /** - * 二进制文件上传 - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function upload() - { - $file = $this->request->file('file'); - if (empty($file)) $this->error('文件上传异常!'); - $extension = strtolower($file->getOriginalExtension()); - if (in_array($extension, ['php', 'sh'])) $this->error('禁止上传此类文件!'); - $bina = file_get_contents($file->getRealPath()); - $name = Storage::name($file->getPathname(), $extension, '', 'md5_file'); - $info = Storage::instance()->set($name, $bina, false, $file->getOriginalName()); - if (is_array($info) && isset($info['url'])) { - $this->success('文件上传成功!', $info); - } else { - $this->error('文件上传失败!'); - } - } - - /** - * 获取用户等级 - */ - public function levels() - { - $levels = UserUpgradeService::instance()->levels(); - foreach ($levels as &$level) { - $level['prizes'] = []; - foreach (str2arr($level['rebate_rule']) as $code) { - $level['prizes'][$code] = RebateService::instance()->name($code); - } - } - $this->success('获取用户等级', array_values($levels)); - } - - /** - * 获取我邀请的朋友 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getFrom() - { - $map = []; - $map[] = ['deleted', '=', 0]; - $map[] = ['path', 'like', "%-{$this->uuid}-%"]; - // 查询邀请的朋友 - $query = $this->_query(DataUser::class); - $query->like('nickname|username#nickname')->equal('vip_code,pids,pid1,id#uuid'); - $query->field('id,pid0,pid1,pid2,pids,username,nickname,headimg,order_amount_total,teams_amount_total,teams_amount_direct,teams_amount_indirect,teams_users_total,teams_users_direct,teams_users_indirect,rebate_total,rebate_used,rebate_lock,create_at'); - $result = $query->where($map)->order('id desc')->page(true, false, false, 15); - // 统计当前用户所有下属数 - $total = DataUser::mk()->where($map)->count(); - // 统计当前用户本月下属数 - $map[] = ['create_at', 'like', date('Y-m-%')]; - $month = DataUser::mk()->where($map)->count(); - // 返回结果列表数据及统计 - $result['total'] = ['user_total' => $total, 'user_month' => $month]; - $this->success('获取我邀请的朋友', $result); - } - - /** - * 绑定用户邀请人 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function bindFrom() - { - $data = $this->_vali(['from.require' => '邀请人不能为空']); - [$state, $message] = UserUpgradeService::instance()->bindAgent($this->uuid, $data['from'], 0); - if ($state) { - $this->success($message, UserAdminService::instance()->total($this->uuid)); - } else { - $this->error($message, UserAdminService::instance()->total($this->uuid)); - } - } -} \ No newline at end of file diff --git a/app/data/controller/api/auth/News.php b/app/data/controller/api/auth/News.php deleted file mode 100644 index 6f9ad3807..000000000 --- a/app/data/controller/api/auth/News.php +++ /dev/null @@ -1,215 +0,0 @@ -_vali([ - 'uuid.value' => $this->uuid, - 'type.value' => 4, - 'status.value' => 1, - 'code.require' => '文章不能为空!', - 'reply.require' => '评论不能为空!', - ]); - if (DataNewsXCollect::mk()->insert($data) !== false) { - NewsService::instance()->syncNewsTotal($data['code']); - $this->success('添加评论成功!'); - } else { - $this->error('添加评论失败!'); - } - } - - /** - * 获取我的评论 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getComment() - { - $query = DataNewsXCollect::mQuery()->where(['uuid' => $this->uuid, 'type' => 4]); - $result = $query->whereIn('status', [1, 2])->order('id desc')->page(true, false); - NewsService::instance()->buildListByUidAndCode($result); - $this->success('获取评论列表成功', $result); - } - - /** - * 删除内容评论 - */ - public function delComment() - { - $data = $this->_vali([ - 'uuid.value' => $this->uuid, - 'type.value' => 4, - 'id.require' => '评论编号不能为空!', - 'code.require' => '文章编号不能为空!', - ]); - if (DataNewsXCollect::mk()->where($data)->delete() !== false) { - $this->success('评论删除成功!'); - } else { - $this->error('认证删除失败!'); - } - } - - /** - * 添加内容收藏 - * @throws \think\db\exception\DbException - */ - public function addCollect() - { - $data = $this->_vali([ - 'uuid.value' => $this->uuid, - 'type.value' => 1, - 'status.value' => 2, - 'code.require' => '文章编号不能为空!', - ]); - if (DataNewsXCollect::mk()->where($data)->count() > 0) { - $this->success('您已收藏!'); - } - if (DataNewsXCollect::mk()->insert($data) !== false) { - NewsService::instance()->syncNewsTotal($data['code']); - $this->success('收藏成功!'); - } else { - $this->error('收藏失败!'); - } - } - - /** - * 取消收藏文章 - * @throws \think\db\exception\DbException - */ - public function delCollect() - { - $data = $this->_vali([ - 'uuid.value' => $this->uuid, - 'type.value' => 1, - 'code.require' => '文章编号不能为空!', - ]); - if (DataNewsXCollect::mk()->where($data)->delete() !== false) { - NewsService::instance()->syncNewsTotal($data['code']); - $this->success('取消收藏成功!'); - } else { - $this->error('取消收藏失败!'); - } - } - - /** - * 获取用户收藏的资讯 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getCollect() - { - $map = ['uuid' => $this->uuid, 'type' => 1]; - $query = DataNewsXCollect::mQuery()->where($map); - $result = $query->order('id desc')->page(true, false, false, 15); - NewsService::instance()->buildListByUidAndCode($result['list']); - $this->success('获取收藏记录成功!', $result); - } - - /** - * 添加内容点赞 - * @throws \think\db\exception\DbException - */ - public function addLike() - { - $data = $this->_vali([ - 'uuid.value' => $this->uuid, - 'type.value' => 2, - 'status.value' => 2, - 'code.require' => '文章编号不能为空!', - ]); - if (DataNewsXCollect::mk()->where($data)->count() > 0) { - $this->success('您已点赞!'); - } - if (DataNewsXCollect::mk()->insert($data) !== false) { - NewsService::instance()->syncNewsTotal($data['code']); - $this->success('点赞成功!'); - } else { - $this->error('点赞失败!'); - } - } - - /** - * 取消内容点赞 - * @throws \think\db\exception\DbException - */ - public function delLike() - { - $data = $this->_vali([ - 'uuid.value' => $this->uuid, - 'type.value' => 2, - 'code.require' => '文章编号不能为空!', - ]); - if (DataNewsXCollect::mk()->where($data)->delete() !== false) { - NewsService::instance()->syncNewsTotal($data['code']); - $this->success('取消点赞成功!'); - } else { - $this->error('取消点赞失败!'); - } - } - - /** - * 获取用户收藏的资讯 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getLike() - { - $query = DataNewsXCollect::mQuery(); - $query->where(['uuid' => $this->uuid, 'type' => 2, 'status' => 2]); - $result = $query->order('id desc')->page(true, false, false, 15); - NewsService::instance()->buildListByUidAndCode($result['list']); - $this->success('获取点赞记录成功!', $result); - } - - /** - * 添加用户的浏览历史 - * @throws \think\db\exception\DbException - */ - public function addHistory() - { - $data = $this->_vali([ - 'uuid.value' => $this->uuid, - 'type.value' => 2, - 'status.value' => 2, - 'code.require' => '文章编号不能为空!', - ]); - DataNewsXCollect::mk()->where($data)->delete(); - DataNewsXCollect::mk()->insert($data); - $this->success('添加浏览历史成功!'); - } - - /** - * 获取用户的浏览历史 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getHistory() - { - $query = DataNewsXCollect::mQuery(); - $query->where(['uuid' => $this->uuid, 'type' => 3, 'status' => 2]); - $result = $query->order('id desc')->page(true, false, false, 15); - NewsService::instance()->buildListByUidAndCode($result['list']); - $this->success('获取浏览历史成功!', $result); - } -} \ No newline at end of file diff --git a/app/data/controller/api/auth/Order.php b/app/data/controller/api/auth/Order.php deleted file mode 100644 index e62c265a9..000000000 --- a/app/data/controller/api/auth/Order.php +++ /dev/null @@ -1,493 +0,0 @@ -user['status'])) { - $this->error('账户已被冻结,不能操作订单数据哦!'); - } - } - - /** - * 获取订单列表 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function get() - { - $map = ['uuid' => $this->uuid, 'deleted_status' => 0]; - $query = ShopOrder::mQuery()->in('status')->equal('order_no'); - $result = $query->where($map)->order('id desc')->page(true, false, false, 20); - if (count($result['list']) > 0) OrderService::instance()->buildData($result['list']); - $this->success('获取订单数据成功!', $result); - } - - /** - * 用户创建订单 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function add() - { - // 检查用户状态 - $this->checkUserStatus(); - // 商品规则 - $rules = $this->request->post('items', ''); - if (empty($rules)) $this->error('商品不能为空'); - // 订单数据 - [$items, $order, $truckType, $allowPayments] = [[], [], -1, null]; - $order['uuid'] = $this->uuid; - $order['order_no'] = CodeExtend::uniqidDate(18, 'N'); - // 代理处理 - $order['puid1'] = input('from', $this->user['pid1']); - if ($order['puid1'] == $this->uuid) $order['puid1'] = 0; - if ($order['puid1'] > 0) { - $map = ['id' => $order['puid1'], 'status' => 1]; - $order['puid2'] = DataUser::mk()->where($map)->value('pid2'); - if (is_null($order['puid2'])) $this->error('代理异常'); - } - // 订单商品处理 - foreach (explode('||', $rules) as $rule) { - [$code, $spec, $count] = explode('@', $rule); - // 商品信息检查 - $goodsInfo = ShopGoods::mk()->where(['code' => $code, 'status' => 1, 'deleted' => 0])->find(); - $goodsItem = ShopGoodsItem::mk()->where(['status' => 1, 'goods_code' => $code, 'goods_spec' => $spec])->find(); - if (empty($goodsInfo) || empty($goodsItem)) $this->error('商品查询异常'); - // 商品类型检查 - if ($truckType < 0) $truckType = $goodsInfo['truck_type']; - if ($truckType !== $goodsInfo['truck_type']) $this->error('不能混合下单'); - // 限制购买数量 - if (isset($goods['limit_max_num']) && $goods['limit_max_num'] > 0) { - $map = [['a.uuid', '=', $this->uuid], ['a.status', 'in', [2, 3, 4, 5]], ['b.goods_code', '=', $goods['code']]]; - $buys = ShopOrder::mk()->alias('a')->join('store_order_item b', 'a.order_no=b.order_no')->where($map)->sum('b.stock_sales'); - if ($buys + $count > $goods['limit_max_num']) $this->error('超过限购数量'); - } - // 限制购买身份 - if ($goodsInfo['limit_low_vip'] > $this->user['vip_code']) $this->error('用户等级不够'); - // 商品库存检查 - if ($goodsItem['stock_sales'] + $count > $goodsItem['stock_total']) $this->error('商品库存不足'); - // 支付支付处理 - $_allowPayments = []; - foreach (str2arr($goodsInfo['payment']) as $code) { - if (is_null($allowPayments) || in_array($code, $allowPayments)) $_allowPayments[] = $code; - } - if (empty($_allowPayments)) { - $this->error('订单无法统一支付'); - } else { - $allowPayments = $_allowPayments; - } - // 商品折扣处理 - [$discountId, $discountRate] = OrderService::instance()->discount($goodsInfo['discount_id'], $this->user['vip_code']); - // 订单详情处理 - $items[] = [ - 'uuid' => $order['uuid'], - 'order_no' => $order['order_no'], - // 商品信息字段 - 'goods_name' => $goodsInfo['name'], - 'goods_cover' => $goodsInfo['cover'], - 'goods_payment' => $goodsInfo['payment'], - 'goods_sku' => $goodsItem['goods_sku'], - 'goods_code' => $goodsItem['goods_code'], - 'goods_spec' => $goodsItem['goods_spec'], - // 库存数量处理 - 'stock_sales' => $count, - // 快递发货数据 - 'truck_type' => $goodsInfo['truck_type'], - 'truck_code' => $goodsInfo['truck_code'], - 'truck_number' => $goodsInfo['rebate_type'] > 0 ? $goodsItem['number_express'] * $count : 0, - // 商品费用字段 - 'price_market' => $goodsItem['price_market'], - 'price_selling' => $goodsItem['price_selling'], - 'total_market' => $goodsItem['price_market'] * $count, - 'total_selling' => $goodsItem['price_selling'] * $count, - // 奖励金额积分 - 'reward_balance' => $goodsItem['reward_balance'] * $count, - 'reward_integral' => $goodsItem['reward_integral'] * $count, - // 绑定用户等级 - 'vip_name' => $this->user['vip_name'], - 'vip_code' => $this->user['vip_code'], - // 是否入会礼包 - 'vip_entry' => $goodsInfo['vip_entry'], - 'vip_upgrade' => $goodsInfo['vip_upgrade'], - // 是否参与返利 - 'rebate_type' => $goodsInfo['rebate_type'], - 'rebate_amount' => $goodsInfo['rebate_type'] > 0 ? $goodsItem['price_selling'] * $count : 0, - // 等级优惠方案 - 'discount_id' => $discountId, - 'discount_rate' => $discountRate, - 'discount_amount' => $discountRate * $goodsItem['price_selling'] * $count / 100, - ]; - } - try { - $order['payment_allow'] = arr2str($allowPayments); - $order['rebate_amount'] = array_sum(array_column($items, 'rebate_amount')); - $order['reward_balance'] = array_sum(array_column($items, 'reward_balance')); - - // 订单发货类型 - $order['status'] = $truckType ? 1 : 2; - $order['truck_type'] = $truckType; - // 统计商品数量 - $order['number_goods'] = array_sum(array_column($items, 'stock_sales')); - $order['number_express'] = array_sum(array_column($items, 'truck_number')); - // 统计商品金额 - $order['amount_goods'] = array_sum(array_column($items, 'total_selling')); - // 优惠后的金额 - $order['amount_discount'] = array_sum(array_column($items, 'discount_amount')); - // 订单随机免减 - $order['amount_reduct'] = OrderService::instance()->getReduct(); - if ($order['amount_reduct'] > $order['amount_goods']) { - $order['amount_reduct'] = $order['amount_goods']; - } - // 统计订单金额 - $order['amount_real'] = $order['amount_discount'] - $order['amount_reduct']; - $order['amount_total'] = $order['amount_goods']; - // 写入商品数据 - $this->app->db->transaction(function () use ($order, $items) { - ShopOrder::mk()->insert($order); - ShopOrderItem::mk()->insertAll($items); - }); - // 同步商品库存销量 - foreach (array_unique(array_column($items, 'goods_code')) as $code) { - GoodsService::instance()->stock($code); - } - // 触发订单创建事件 - $this->app->event->trigger('ShopOrderCreate', $order['order_no']); - // 组装订单商品数据 - $order['items'] = $items; - // 返回处理成功数据 - $this->success('商品下单成功', $order); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error("商品下单失败,{$exception->getMessage()}"); - } - } - - /** - * 获取用户折扣 - */ - public function discount() - { - $data = $this->_vali(['discount.require' => '折扣编号不能为空!']); - [, $rate] = OrderService::instance()->discount(intval($data['discount']), $this->user['vip_code']); - $this->success('获取用户折扣', ['rate' => $rate]); - } - - /** - * 模拟计算订单运费 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function express() - { - $data = $this->_vali([ - 'uuid.value' => $this->uuid, - 'code.require' => '地址不能为空', - 'order_no.require' => '单号不能为空', - ]); - - // 用户收货地址 - $map = ['uuid' => $this->uuid, 'code' => $data['code']]; - $addr = DataUserAddress::mk()->where($map)->find(); - if (empty($addr)) $this->error('收货地址异常'); - - // 订单状态检查 - $map = ['uuid' => $this->uuid, 'order_no' => $data['order_no']]; - $tCount = ShopOrderItem::mk()->where($map)->sum('truck_number'); - - // 根据地址计算运费 - $map = ['status' => 1, 'deleted' => 0, 'order_no' => $data['order_no']]; - $tCode = ShopOrderItem::mk()->where($map)->column('truck_code'); - [$amount, , , $remark] = ExpressService::instance()->amount($tCode, $addr['province'], $addr['city'], $tCount); - $this->success('计算运费成功', ['amount' => $amount, 'remark' => $remark]); - } - - /** - * 订单信息完成 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function perfect() - { - $data = $this->_vali([ - 'uuid.value' => $this->uuid, - 'code.require' => '地址不能为空', - 'order_no.require' => '单号不能为空', - ]); - - // 用户收货地址 - $map = ['uuid' => $this->uuid, 'code' => $data['code'], 'deleted' => 0]; - $addr = DataUserAddress::mk()->where($map)->find(); - if (empty($addr)) $this->error('收货地址异常'); - - // 订单状态检查 - $map1 = ['uuid' => $this->uuid, 'order_no' => $data['order_no']]; - $order = ShopOrder::mk()->where($map1)->whereIn('status', [1, 2])->find(); - if (empty($order)) $this->error('不能修改地址'); - if (empty($order['truck_type'])) $this->success('无需快递配送', ['order_no' => $order['order_no']]); - - // 根据地址计算运费 - $map2 = ['status' => 1, 'deleted' => 0, 'order_no' => $data['order_no']]; - $tCount = ShopOrderItem::mk()->where($map1)->sum('truck_number'); - $tCodes = ShopOrderItem::mk()->where($map2)->column('truck_code'); - [$amount, $tCount, $tCode, $remark] = ExpressService::instance()->amount($tCodes, $addr['province'], $addr['city'], $tCount); - - // 创建订单发货信息 - $express = [ - 'template_code' => $tCode, 'template_count' => $tCount, 'uuid' => $this->uuid, - 'template_remark' => $remark, 'template_amount' => $amount, 'status' => 1, - ]; - $express['order_no'] = $data['order_no']; - $express['address_code'] = $data['code']; - $express['address_datetime'] = date('Y-m-d H:i:s'); - - // 收货人信息 - $express['address_name'] = $addr['name']; - $express['address_phone'] = $addr['phone']; - $express['address_idcode'] = $addr['idcode']; - $express['address_idimg1'] = $addr['idimg1']; - $express['address_idimg2'] = $addr['idimg2']; - - // 收货地址信息 - $express['address_province'] = $addr['province']; - $express['address_city'] = $addr['city']; - $express['address_area'] = $addr['area']; - $express['address_content'] = $addr['address']; - - ShopOrderSend::mUpdate($express, 'order_no'); - data_save(ShopOrderSend::class, $express, 'order_no'); - // 组装更新订单数据 - $update = ['status' => 2, 'amount_express' => $express['template_amount']]; - // 重新计算订单金额 - $update['amount_real'] = $order['amount_discount'] + $amount - $order['amount_reduct']; - $update['amount_total'] = $order['amount_goods'] + $amount; - // 支付金额不能为零 - if ($update['amount_real'] <= 0) $update['amount_real'] = 0.00; - if ($update['amount_total'] <= 0) $update['amount_total'] = 0.00; - // 更新用户订单数据 - $map = ['uuid' => $this->uuid, 'order_no' => $data['order_no']]; - if (ShopOrder::mk()->where($map)->update($update) !== false) { - // 触发订单确认事件 - $this->app->event->trigger('ShopOrderPerfect', $order['order_no']); - // 返回处理成功数据 - $this->success('订单确认成功', ['order_no' => $order['order_no']]); - } else { - $this->error('订单确认失败'); - } - } - - /** - * 获取支付支付数据 - */ - public function channel() - { - $data = $this->_vali(['uuid.value' => $this->uuid, 'order_no.require' => '单号不能为空']); - $payments = ShopOrder::mk()->where($data)->value('payment_allow'); - if (empty($payments)) $this->error('获取订单支付参数失败'); - // 读取支付通道配置 - $query = BaseUserPayment::mk()->where(['status' => 1, 'deleted' => 0]); - $query->whereIn('code', str2arr($payments))->whereIn('type', PaymentService::getTypeApi($this->type)); - $result = $query->order('sort desc,id desc')->column('type,code,name,cover,content,remark', 'code'); - foreach ($result as &$vo) $vo['content'] = ['voucher_qrcode' => json_decode($vo['content'])->voucher_qrcode ?? '']; - $this->success('获取支付参数数据', array_values($result)); - } - - /** - * 获取订单支付状态 - * @throws \think\db\exception\DbException - */ - public function payment() - { - $data = $this->_vali([ - 'uuid.value' => $this->uuid, - 'order_no.require' => '单号不能为空', - 'order_remark.default' => '', - 'payment_code.require' => '支付不能为空', - 'payment_back.default' => '', # 支付回跳地址 - 'payment_image.default' => '', # 支付凭证图片 - ]); - [$map, $order] = $this->getOrderData(); - if ($order['status'] !== 2) $this->error('不能发起支付'); - if ($order['payment_status'] > 0) $this->error('已经完成支付'); - // 更新订单备注 - if (!empty($data['order_remark'])) { - ShopOrder::mk()->where($map)->update([ - 'order_remark' => $data['order_remark'], - ]); - } - // 自动处理用户字段 - $openid = ''; - if (in_array($this->type, [UserAdminService::API_TYPE_WXAPP, UserAdminService::API_TYPE_WECHAT])) { - $openid = $this->user[UserAdminService::TYPES[$this->type]['auth']] ?? ''; - if (empty($openid)) $this->error("发起支付失败"); - } - try { - // 返回订单数据及支付发起参数 - $type = $order['amount_real'] <= 0 ? 'empty' : $data['payment_code']; - $param = PaymentService::instance($type)->create($openid, $order['order_no'], $order['amount_real'], '商城订单支付', '', $data['payment_back'], $data['payment_image']); - $this->success('获取支付参数', ['order' => ShopOrder::mk()->where($map)->find() ?: new \stdClass(), 'param' => $param]); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error($exception->getMessage()); - } - } - - /** - * 主动取消未支付的订单 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function cancel() - { - [$map, $order] = $this->getOrderData(); - if (in_array($order['status'], [1, 2, 3])) { - $result = ShopOrder::mk()->where($map)->update([ - 'status' => 0, - 'cancel_status' => 1, - 'cancel_remark' => '用户主动取消订单', - 'cancel_datetime' => date('Y-m-d H:i:s'), - ]); - if ($result !== false && OrderService::instance()->stock($order['order_no'])) { - // 触发订单取消事件 - $this->app->event->trigger('ShopOrderCancel', $order['order_no']); - // 返回处理成功数据 - $this->success('订单取消成功'); - } else { - $this->error('订单取消失败'); - } - } else { - $this->error('订单不可取消'); - } - } - - /** - * 用户主动删除已取消的订单 - * @throws \think\db\exception\DbException - */ - public function remove() - { - [$map, $order] = $this->getOrderData(); - if (empty($order)) $this->error('读取订单失败'); - if (in_array($order['status'], [0])) { - $result = ShopOrder::mk()->where($map)->update([ - 'status' => 0, - 'deleted_status' => 1, - 'deleted_remark' => '用户主动删除订单', - 'deleted_datetime' => date('Y-m-d H:i:s'), - ]); - if ($result !== false) { - // 触发订单删除事件 - $this->app->event->trigger('ShopOrderRemove', $order['order_no']); - // 返回处理成功数据 - $this->success('订单删除成功'); - } else { - $this->error('订单删除失败'); - } - } else { - $this->error('订单不可删除'); - } - } - - /** - * 订单确认收货 - * @throws \think\db\exception\DbException - */ - public function confirm() - { - [$map, $order] = $this->getOrderData(); - if (in_array($order['status'], [5])) { - if (ShopOrder::mk()->where($map)->update(['status' => 6]) !== false) { - // 触发订单确认事件 - $this->app->event->trigger('ShopOrderConfirm', $order['order_no']); - // 返回处理成功数据 - $this->success('订单确认成功'); - } else { - $this->error('订单确认失败'); - } - } else { - $this->error('订单确认失败'); - } - } - - /** - * 获取输入订单 - * @return array [map, order] - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function getOrderData(): array - { - $map = $this->_vali([ - 'uuid.value' => $this->uuid, - 'order_no.require' => '单号不能为空', - ]); - $order = ShopOrder::mk()->where($map)->find(); - if (empty($order)) $this->error('读取订单失败'); - return [$map, $order]; - } - - /** - * 订单状态统计 - */ - public function total() - { - $data = ['t0' => 0, 't1' => 0, 't2' => 0, 't3' => 0, 't4' => 0, 't5' => 0, 't6' => 0]; - $query = ShopOrder::mk()->where(['uuid' => $this->uuid, 'deleted_status' => 0]); - foreach ($query->field('status,count(1) count')->group('status')->cursor() as $item) { - $data["t{$item['status']}"] = $item['count']; - } - $this->success('获取订单统计', $data); - } - - /** - * 物流追踪查询 - */ - public function track() - { - try { - $data = $this->_vali(['code.require' => '快递不能为空', 'number.require' => '单号不能为空']); - $result = ExpressService::instance()->query($data['code'], $data['number']); - empty($result['code']) ? $this->error($result['info']) : $this->success('快递追踪信息', $result); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error($exception->getMessage()); - } - } -} \ No newline at end of file diff --git a/app/data/controller/api/auth/Rebate.php b/app/data/controller/api/auth/Rebate.php deleted file mode 100644 index 87188fd8c..000000000 --- a/app/data/controller/api/auth/Rebate.php +++ /dev/null @@ -1,58 +0,0 @@ - $this->uuid], substr($date, 0, 4)]; - $query = DataUserRebate::mQuery()->where($map)->equal('type,status')->whereLike('date', "{$date}%"); - $this->success('获取返利统计', array_merge($query->order('id desc')->page(true, false, false, 10), [ - 'total' => [ - '年度' => DataUserRebate::mQuery()->where($map)->equal('type,status')->whereLike('date', "{$year}%")->db()->sum('amount'), - '月度' => DataUserRebate::mQuery()->where($map)->equal('type,status')->whereLike('date', "{$date}%")->db()->sum('amount'), - ], - ])); - } - - /** - * 获取我的奖励 - */ - public function prize() - { - [$map, $data] = [['number' => $this->user['vip_code']], []]; - $prizes = DataUserRebate::mk()->group('name')->column('name'); - $rebate = BaseUserUpgrade::mk()->where($map)->value('rebate_rule', ''); - $codemap = array_merge($prizes, str2arr($rebate)); - foreach (RebateService::PRIZES as $prize) { - if (in_array($prize['code'], $codemap)) $data[] = $prize; - } - $this->success('获取我的奖励', $data); - } - - /** - * 获取奖励配置 - */ - public function prizes() - { - $this->success('获取系统奖励', array_values(RebateService::PRIZES)); - } -} \ No newline at end of file diff --git a/app/data/controller/api/auth/Transfer.php b/app/data/controller/api/auth/Transfer.php deleted file mode 100644 index f3d727f3e..000000000 --- a/app/data/controller/api/auth/Transfer.php +++ /dev/null @@ -1,162 +0,0 @@ -checkUserStatus(); - // 接收输入数据 - $data = $this->_vali([ - 'type.require' => '提现方式不能为空!', - 'amount.require' => '提现金额不能为空!', - 'remark.default' => '用户提交提现申请!', - ]); - $state = UserTransferService::instance()->config('status'); - if (empty($state)) $this->error('提现还没有开启!'); - $transfers = UserTransferService::instance()->config('transfer'); - if (empty($transfers[$data['type']]['state'])) $this->error('提现方式已停用!'); - // 提现数据补充 - $data['uuid'] = $this->uuid; - $data['date'] = date('Y-m-d'); - $data['code'] = CodeExtend::uniqidDate(20, 'T'); - // 提现状态处理 - if (empty($transfers[$data['type']]['state']['audit'])) { - $data['status'] = 1; - $data['audit_status'] = 0; - } else { - $data['status'] = 3; - $data['audit_status'] = 1; - $data['audit_remark'] = '提现免审核'; - $data['audit_datetime'] = date('Y-m-d H:i:s'); - } - // 扣除手续费 - $chargeRate = floatval(UserTransferService::instance()->config('charge')); - $data['charge_rate'] = $chargeRate; - $data['charge_amount'] = $chargeRate * $data['amount'] / 100; - // 检查可提现余额 - [$total, $count] = UserRebateService::instance()->amount($this->uuid); - if ($total - $count < $data['amount']) $this->error('可提现余额不足!'); - // 提现方式处理 - if (in_array($data['type'], ['alipay_account'])) { - $data = array_merge($data, $this->_vali([ - 'alipay_user.require' => '开户姓名不能为空!', - 'alipay_code.require' => '支付账号不能为空!', - ])); - } elseif (in_array($data['type'], ['wechat_qrcode', 'alipay_qrcode'])) { - $data = array_merge($data, $this->_vali([ - 'qrcode.require' => '收款码不能为空!', - ])); - } elseif (in_array($data['type'], ['wechat_banks', 'transfer_banks'])) { - $data = array_merge($data, $this->_vali([ - 'bank_wseq.require' => '银行编号不能为空!', - 'bank_name.require' => '银行名称不能为空!', - 'bank_user.require' => '开户账号不能为空!', - 'bank_bran.require' => '银行分行不能为空!', - 'bank_code.require' => '银行卡号不能为空!', - ])); - } elseif (!in_array($data['type'], ['wechat_wallet'])) { - $this->error('转账方式不存在!'); - } - // 当日提现次数限制 - $map = ['uuid' => $this->uuid, 'type' => $data['type'], 'date' => $data['date']]; - $count = DataUserTransfer::mk()->where($map)->count(); - if ($count >= $transfers[$data['type']]['dayNumber']) $this->error("当日提现次数受限"); - // 提现金额范围控制 - if ($transfers[$data['type']]['minAmount'] > $data['amount']) { - $this->error("不能少于{$transfers[$data['type']]['minAmount']}元"); - } - if ($transfers[$data['type']]['maxAmount'] < $data['amount']) { - $this->error("不能大于{$transfers[$data['type']]['maxAmount']}元"); - } - // 写入用户提现数据 - if (DataUserTransfer::mk()->insert($data) !== false) { - UserRebateService::instance()->amount($this->uuid); - $this->success('提现申请成功'); - } else { - $this->error('提现申请失败'); - } - } - - /** - * 用户提现记录 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function get() - { - $query = DataUserTransfer::mQuery()->where(['uuid' => $this->uuid]); - $result = $query->like('date,code')->in('status')->order('id desc')->page(true, false, false, 10); - // 统计历史数据 - $map = [['uuid', '=', $this->uuid], ['status', '>', 0]]; - [$total, $count, $locks] = UserRebateService::instance()->amount($this->uuid); - $this->success('获取提现成功', array_merge($result, [ - 'total' => [ - '锁定' => $locks, - '可提' => $total - $count, - '上月' => DataUserTransfer::mk()->where($map)->whereLike('date', date("Y-m-%", strtotime('-1 month')))->sum('amount'), - '本月' => DataUserTransfer::mk()->where($map)->whereLike('date', date("Y-m-%"))->sum('amount'), - '全年' => DataUserTransfer::mk()->where($map)->whereLike('date', date("Y-%"))->sum('amount'), - ], - ])); - } - - /** - * 用户取消提现 - */ - public function cancel() - { - $data = $this->_vali(['uuid.value' => $this->uuid, 'code.require' => '单号不能为空!']); - DataUserTransfer::mk()->where($data)->whereIn('status', [1, 2, 3])->update([ - 'status' => 0, 'change_time' => date("Y-m-d H:i:s"), 'change_desc' => '用户主动取消提现', - ]); - UserRebateService::instance()->amount($this->uuid); - $this->success('取消提现成功'); - } - - /** - * 用户确认提现 - */ - public function confirm() - { - $data = $this->_vali(['uuid.value' => $this->uuid, 'code.require' => '单号不能为空!']); - DataUserTransfer::mk()->where($data)->whereIn('status', [4])->update([ - 'status' => 5, 'change_time' => date("Y-m-d H:i:s"), 'change_desc' => '用户主动确认收款', - ]); - UserRebateService::instance()->amount($this->uuid); - $this->success('确认收款成功'); - } - - /** - * 获取用户提现配置 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function config() - { - $data = UserTransferService::instance()->config(); - $data['banks'] = UserTransferService::instance()->banks(); - $this->success('获取用户提现配置', $data); - } -} \ No newline at end of file diff --git a/app/data/controller/base/Config.php b/app/data/controller/base/Config.php deleted file mode 100644 index 708fc4cbf..000000000 --- a/app/data/controller/base/Config.php +++ /dev/null @@ -1,153 +0,0 @@ - '关于我们', - '用户协议' => '用户协议', - ]; - - /** - * 微信小程序配置 - * @auth true - * @menu true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function wxapp() - { - $this->title = '微信小程序配置'; - $this->__sysconf('wxapp'); - } - - /** - * 邀请二维码设置 - * @auth true - * @menu true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function cropper() - { - $this->title = '邀请二维码设置'; - $this->skey = 'cropper'; - $this->__sysdata('cropper'); - } - - /** - * 内容页面管理 - * @auth true - * @menu true - */ - public function pageHome() - { - $this->title = '内容页面管理'; - $this->fetch('page_home'); - } - - /** - * 内容页面编辑 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function pageEdit() - { - $this->skey = input('type') ?: $this->pageTypes[0]; - $this->title = '编辑' . $this->pageTypes[$this->skey] ?? ''; - $this->__sysdata('page_form', 'javascript:history.back()'); - } - - /** - * 首页推荐位管理 - * @menu true - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function iconHome() - { - $this->skey = 'IconHome'; - $this->title = '首页推荐位管理'; - $this->__sysdata('slider'); - } - - /** - * 首页轮播图片 - * @menu true - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function sliderHome() - { - $this->skey = 'SliderHome'; - $this->title = '首页轮播图片'; - $this->__sysdata('slider'); - } - - /** - * 显示并保存配置 - * @param string $template 模板文件名称 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function __sysconf(string $template) - { - if ($this->request->isGet()) { - $this->fetch($template); - } - if ($this->request->isPost()) { - $data = $this->request->post(); - foreach ($data as $k => $v) sysconf($k, $v); - $this->success('配置保存成功!'); - } - } - - /** - * 显示并保存数据 - * @param string $template 模板文件 - * @param string $history 跳转处理 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function __sysdata(string $template, $history = '') - { - if ($this->request->isGet()) { - $this->data = sysdata($this->skey); - $this->fetch($template); - } - if ($this->request->isPost()) { - if (is_string(input('data'))) { - $data = json_decode(input('data'), true) ?: []; - } else { - $data = $this->request->post(); - } - if (sysdata($this->skey, $data) !== false) { - $this->success('内容保存成功!', $history); - } else { - $this->error('内容保存失败,请稍候再试!'); - } - } - } -} \ No newline at end of file diff --git a/app/data/controller/base/Discount.php b/app/data/controller/base/Discount.php deleted file mode 100644 index d6eea1406..000000000 --- a/app/data/controller/base/Discount.php +++ /dev/null @@ -1,107 +0,0 @@ -title = '折扣方案管理'; - $query = BaseUserDiscount::mQuery(); - $query->where(['deleted' => 0])->order('sort desc,id desc')->page(); - } - - /** - * 数据列表处理 - * @param array $data - */ - protected function _page_filter(array &$data) - { - foreach ($data as &$vo) { - $vo['items'] = json_decode($vo['items'], true); - } - } - - /** - * 添加折扣方案 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function add() - { - BaseUserDiscount::mForm('form'); - } - - /** - * 编辑折扣方案 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function edit() - { - BaseUserDiscount::mForm('form'); - } - - /** - * 表单数据处理 - * @param array $vo - */ - protected function _form_filter(array &$vo) - { - if ($this->request->isPost()) { - $rule = []; - foreach ($vo as $k => $v) if (stripos($k, '_level_') !== false) { - [, $level] = explode('_level_', $k); - $rule[] = ['level' => $level, 'discount' => $v]; - } - $vo['items'] = json_encode($rule, JSON_UNESCAPED_UNICODE); - } else { - $this->levels = UserUpgradeService::instance()->levels(); - if (empty($this->levels)) $this->error('未配置用户等级!'); - if (!empty($vo['items'])) foreach (json_decode($vo['items'], true) as $item) { - $vo["_level_{$item['level']}"] = $item['discount']; - } - } - } - - /** - * 修改折扣方案状态 - * @auth true - * @throws \think\db\exception\DbException - */ - public function state() - { - BaseUserDiscount::mSave(); - } - - /** - * 删除折扣方案配置 - * @auth true - * @throws \think\db\exception\DbException - */ - public function remove() - { - BaseUserDiscount::mDelete(); - } -} \ No newline at end of file diff --git a/app/data/controller/base/Message.php b/app/data/controller/base/Message.php deleted file mode 100644 index 505d14074..000000000 --- a/app/data/controller/base/Message.php +++ /dev/null @@ -1,80 +0,0 @@ -title = '系统通知管理'; - $query = BaseUserMessage::mQuery(); - $query->like('name')->equal('status')->dateBetween('create_at'); - $query->where(['deleted' => 0])->order('sort desc,id desc')->page(); - } - - /** - * 添加系统通知 - * @auth true - */ - public function add() - { - BaseUserMessage::mForm('form'); - } - - /** - * 编辑系统通知 - * @auth true - */ - public function edit() - { - BaseUserMessage::mForm('form'); - } - - /** - * 表单结果处理 - * @param boolean $state - */ - protected function _form_result(bool $state) - { - if ($state) { - $this->success('内容保存成功!', 'javascript:history.back()'); - } - } - - /** - * 修改通知状态 - * @auth true - */ - public function state() - { - BaseUserMessage::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } - - /** - * 删除系统通知 - * @auth true - */ - public function remove() - { - BaseUserMessage::mDelete(); - } -} \ No newline at end of file diff --git a/app/data/controller/base/Payment.php b/app/data/controller/base/Payment.php deleted file mode 100644 index 2cd2ed7ab..000000000 --- a/app/data/controller/base/Payment.php +++ /dev/null @@ -1,118 +0,0 @@ -title = '支付通道管理'; - $query = BaseUserPayment::mQuery(); - $query->where(['deleted' => 0])->order('sort desc,id desc'); - $query->like('name,code')->equal('type,status')->dateBetween('create_at')->page(); - } - - /** - * 添加支付通道 - * @auth true - */ - public function add() - { - $this->title = '添加支付通道'; - BaseUserPayment::mForm('form'); - } - - /** - * 编辑支付通道 - * @auth true - */ - public function edit() - { - $this->title = '编辑支付通道'; - BaseUserPayment::mForm('form'); - } - - /** - * 数据表单处理 - * @param array $data - */ - protected function _form_filter(array &$data) - { - if (empty($data['code'])) { - $data['code'] = CodeExtend::uniqidNumber(20, 'M'); - } - if ($this->request->isGet()) { - $this->payments = []; - foreach ($this->types as $k => $vo) { - $allow = []; - foreach ($vo['bind'] as $api) if (isset(UserAdminService::TYPES[$api])) { - $allow[$api] = UserAdminService::TYPES[$api]['name']; - } - if (empty($allow)) continue; - $this->payments[$k] = array_merge($vo, ['allow' => join('、', $allow)]); - } - $data['content'] = json_decode($data['content'] ?? '[]', true) ?: []; - } else { - if (empty($data['type'])) $this->error('请选择支付通道并配置参数!'); - if (empty($data['cover'])) $this->error('请上传支付方式图标!'); - $data['content'] = json_encode($this->request->post() ?: [], JSON_UNESCAPED_UNICODE); - } - } - - /** - * 表单结果处理 - * @param boolean $state - */ - protected function _form_result(bool $state) - { - if ($state) { - $this->success('支付通道保存成功!', 'javascript:history.back()'); - } - } - - /** - * 修改通道状态 - * @auth true - */ - public function state() - { - BaseUserPayment::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } - - /** - * 删除支付通道 - * @auth true - */ - public function remove() - { - BaseUserPayment::mDelete(); - } -} \ No newline at end of file diff --git a/app/data/controller/base/Upgrade.php b/app/data/controller/base/Upgrade.php deleted file mode 100644 index badf84688..000000000 --- a/app/data/controller/base/Upgrade.php +++ /dev/null @@ -1,165 +0,0 @@ -title = '用户等级管理'; - BaseUserUpgrade::mQuery()->order('number asc')->page(); - } - - /** - * 数据列表处理 - * @param array $data - */ - protected function _page_filter(array &$data) - { - foreach ($data as &$vo) { - $vo['rebate_rule'] = str2arr($vo['rebate_rule']); - foreach ($vo['rebate_rule'] as &$v) { - $v = RebateService::instance()->name($v); - } - } - } - - /** - * 添加用户等级 - * @auth true - */ - public function add() - { - BaseUserUpgrade::mForm('form'); - } - - /** - * 编辑用户等级 - * @auth true - */ - public function edit() - { - BaseUserUpgrade::mForm('form'); - } - - /** - * 表单数据处理 - * @param array $vo - */ - protected function _form_filter(array &$vo) - { - if ($this->request->isGet()) { - $this->prizes = RebateService::PRIZES; - if (!isset($vo['number'])) { - $vo['number'] = BaseUserUpgrade::mk()->order('number desc')->value('number', -1) + 1; - } - $vo['rebate_rule'] = str2arr($vo['rebate_rule'] ?? ''); - } else { - $vo['utime'] = time(); - $vo['rebate_rule'] = arr2str($vo['rebate_rule'] ?? []); - // 用户升级条件开关 - $vo['goods_vip_status'] = isset($vo['goods_vip_status']) ? 1 : 0; - $vo['teams_users_status'] = isset($vo['teams_users_status']) ? 1 : 0; - $vo['teams_direct_status'] = isset($vo['teams_direct_status']) ? 1 : 0; - $vo['teams_indirect_status'] = isset($vo['teams_indirect_status']) ? 1 : 0; - $vo['order_amount_status'] = isset($vo['order_amount_status']) ? 1 : 0; - // 根据数量判断状态 - $vo['teams_users_status'] = intval($vo['teams_users_status'] && $vo['teams_users_number'] > 0); - $vo['teams_direct_status'] = intval($vo['teams_direct_status'] && $vo['teams_direct_number'] > 0); - $vo['teams_indirect_status'] = intval($vo['teams_indirect_status'] && $vo['teams_indirect_number'] > 0); - $vo['order_amount_status'] = intval($vo['order_amount_status'] && $vo['order_amount_number'] > 0); - // 检查升级条件配置 - $count = 0; - foreach ($vo as $k => $v) if (is_numeric(stripos($k, '_status'))) $count += $v; - if (empty($count) && $vo['number'] > 0) $this->error('升级条件不能为空!'); - } - } - - /** - * 表单结果处理 - * @param boolean $state - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function _form_result(bool $state) - { - if ($state) { - if (input('old_number', 100) <= input('number', 0)) { - $order = 'number asc,utime asc'; - } else { - $order = 'number asc,utime desc'; - } - foreach (BaseUserUpgrade::mk()->order($order)->select() as $number => $upgrade) { - $upgrade->save(['number' => $number]); - } - } - } - - /** - * 重算用户等级 - * @auth true - */ - public function sync() - { - $this->_queue('重新计算所有用户等级', 'xdata:UserUpgrade'); - } - - /** - * 修改等级状态 - * @auth true - */ - public function state() - { - BaseUserUpgrade::mSave(); - } - - /** - * 删除用户等级 - * @auth true - */ - public function remove() - { - BaseUserUpgrade::mDelete(); - } - - /** - * 状态变更处理 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _save_result() - { - $this->_form_result(true); - } - - /** - * 删除结果处理 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _delete_result() - { - $this->_form_result(true); - } -} \ No newline at end of file diff --git a/app/data/controller/base/postage/Company.php b/app/data/controller/base/postage/Company.php deleted file mode 100644 index c16f85b90..000000000 --- a/app/data/controller/base/postage/Company.php +++ /dev/null @@ -1,102 +0,0 @@ -title = '快递公司管理'; - - // 加载对应数据 - $map = ['deleted' => 0]; - $this->type = input('get.type', 'index'); - if ($this->type === 'index') $map['status'] = 1; - if ($this->type === 'recycle') $map['status'] = 0; - - // 列表显示分页 - $query = BasePostageCompany::mQuery(); - $query->like('name,code')->equal('status')->dateBetween('craete_at'); - $query->where($map)->order('sort desc,id desc')->page(); - } - - /** - * 添加快递公司 - * @auth true - */ - public function add() - { - $this->title = '添加快递公司'; - BasePostageCompany::mForm('form'); - } - - /** - * 编辑快递公司 - * @auth true - */ - public function edit() - { - $this->title = '编辑快递公司'; - BasePostageCompany::mForm('form'); - } - - /** - * 修改快递公司状态 - * @auth true - */ - public function state() - { - BasePostageCompany::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } - - /** - * 删除快递公司 - * @auth true - */ - public function remove() - { - BasePostageCompany::mDelete(); - } - - /** - * 同步快递公司 - * @auth true - */ - public function sync() - { - try { - $result = ExpressService::instance()->company(); - if (empty($result['code'])) $this->error($result['info']); - foreach ($result['data'] as $vo) data_save(BasePostageCompany::class, [ - 'code_1' => $vo['code_1'], 'code_2' => $vo['code_2'], - 'code_3' => $vo['code_3'], 'name' => $vo['title'], 'deleted' => 0, - ], 'code_1'); - $this->success('同步快递公司成功!'); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error('同步快递公司数据失败!'); - } - } -} \ No newline at end of file diff --git a/app/data/controller/base/postage/Template.php b/app/data/controller/base/postage/Template.php deleted file mode 100644 index 2c9b58339..000000000 --- a/app/data/controller/base/postage/Template.php +++ /dev/null @@ -1,117 +0,0 @@ -title = '快递邮费模板'; - $query = BasePostageTemplate::mQuery(); - $query->like('code,name')->equal('status')->dateBetween('create_at'); - $query->where(['deleted' => 0])->order('sort desc,id desc')->page(); - } - - /** - * 配送区域管理 - * @auth true - */ - public function region() - { - if ($this->request->isGet()) { - $this->title = '配送区域管理'; - $this->citys = ExpressService::instance()->region(3, null); - $this->fetch('form_region'); - } else { - $data = $this->_vali(['nos.default' => '', 'oks.default' => '']); - if ($data['nos']) BasePostageRegion::mk()->whereIn('id', str2arr($data['nos']))->update(['status' => 0]); - if ($data['oks']) BasePostageRegion::mk()->whereIn('id', str2arr($data['oks']))->update(['status' => 1]); - $this->success('修改配送区域成功!', 'javascript:history.back()'); - } - } - - /** - * 添加配送邮费模板 - * @auth true - */ - public function add() - { - $this->title = '添加配送邮费模板'; - BasePostageTemplate::mForm('form', 'code'); - } - - /** - * 编辑配送邮费模板 - * @auth true - */ - public function edit() - { - $this->title = '编辑配送邮费模板'; - BasePostageTemplate::mForm('form', 'code'); - } - - /** - * 表单数据处理 - * @param array $data - */ - protected function _form_filter(array &$data) - { - if (empty($data['code'])) { - $data['code'] = CodeExtend::uniqidDate(12, 'T'); - } - if ($this->request->isGet()) { - $this->citys = ExpressService::instance()->region(2, 1); - } - } - - /** - * 表单结果处理 - * @param boolean $result - */ - protected function _form_result(bool $result) - { - if ($result && $this->request->isPost()) { - $this->success('邮费模板保存成功!', 'javascript:history.back()'); - } - } - - /** - * 启用或禁用邮费模板 - * @auth true - */ - public function state() - { - BasePostageTemplate::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ]), 'code'); - } - - /** - * 删除邮费模板 - * @auth true - */ - public function remove() - { - BasePostageTemplate::mDelete('code'); - } -} \ No newline at end of file diff --git a/app/data/controller/news/Item.php b/app/data/controller/news/Item.php deleted file mode 100644 index d2db1f3a2..000000000 --- a/app/data/controller/news/Item.php +++ /dev/null @@ -1,129 +0,0 @@ -title = '文章内容管理'; - $query = DataNewsItem::mQuery(); - $query->like('mark,name')->dateBetween('create_at'); - $query->where(['deleted' => 0])->order('sort desc,id desc')->page(); - } - - /** - * 文章内容选择器 - * @login true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function select() - { - $query = DataNewsItem::mQuery(); - $query->equal('status')->like('name')->dateBetween('create_at'); - $query->where(['deleted' => 0])->order('sort desc,id desc')->page(); - } - - /** - * 列表数据处理 - * @param array $data - */ - protected function _page_filter(array &$data) - { - NewsService::instance()->buildData($data); - } - - /** - * 添加文章内容 - * @auth true - */ - public function add() - { - $this->title = '添加文章内容'; - DataNewsItem::mForm('form'); - } - - /** - * 编辑文章内容 - * @auth true - */ - public function edit() - { - $this->title = '编辑文章内容'; - DataNewsItem::mForm('form'); - } - - /** - * 表单数据处理 - * @param array $data - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _form_filter(array &$data) - { - if (empty($data['code'])) { - $data['code'] = CodeExtend::uniqidNumber(20, 'A'); - } - if ($this->request->isGet()) { - $model = DataNewsMark::mk()->where(['status' => 1, 'deleted' => 0]); - $this->marks = $model->order('sort desc,id desc')->select()->toArray(); - $data['mark'] = str2arr($data['mark'] ?? ''); - } else { - $data['mark'] = arr2str($data['mark'] ?? []); - } - } - - /** - * 表单结果处理 - * @param boolean $state - */ - protected function _form_result(bool $state) - { - if ($state) { - $this->success('文章内容保存成功!', 'javascript:history.back()'); - } - } - - /** - * 修改文章状态 - * @auth true - */ - public function state() - { - DataNewsItem::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } - - /** - * 删除文章内容 - * @auth true - */ - public function remove() - { - DataNewsItem::mDelete(); - } -} \ No newline at end of file diff --git a/app/data/controller/news/Mark.php b/app/data/controller/news/Mark.php deleted file mode 100644 index f678555bb..000000000 --- a/app/data/controller/news/Mark.php +++ /dev/null @@ -1,68 +0,0 @@ -title = '文章标签管理'; - $query = DataNewsMark::mQuery(); - $query->like('name')->equal('status')->dateBetween('create_at'); - $query->where(['deleted' => 0])->order('sort desc,id desc')->page(); - } - - /** - * 添加文章标签 - * @auth true - */ - public function add() - { - DataNewsMark::mForm('form'); - } - - /** - * 编辑文章标签 - * @auth true - */ - public function edit() - { - DataNewsMark::mForm('form'); - } - - /** - * 修改文章标签状态 - * @auth true - */ - public function state() - { - DataNewsMark::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } - - /** - * 删除文章标签 - * @auth true - */ - public function remove() - { - DataNewsMark::mDelete(); - } -} \ No newline at end of file diff --git a/app/data/controller/shop/Cate.php b/app/data/controller/shop/Cate.php deleted file mode 100644 index f72df9133..000000000 --- a/app/data/controller/shop/Cate.php +++ /dev/null @@ -1,101 +0,0 @@ -title = "商品分类管理"; - $query = ShopGoodsCate::mQuery()->like('name')->dateBetween('create_at'); - $query->equal('status')->where(['deleted' => 0])->order('sort desc,id desc')->page(false); - } - - /** - * 列表数据处理 - * @param array $data - */ - protected function _index_page_filter(array &$data) - { - foreach ($data as &$vo) { - $vo['ids'] = join(',', DataExtend::getArrSubIds($data, $vo['id'])); - } - $data = DataExtend::arr2table($data); - } - - /** - * 添加商品分类 - * @auth true - */ - public function add() - { - ShopGoodsCate::mForm('form'); - } - - /** - * 编辑商品分类 - * @auth true - */ - public function edit() - { - ShopGoodsCate::mForm('form'); - } - - /** - * 表单数据处理 - * @param array $data - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _form_filter(array &$data) - { - if ($this->request->isGet()) { - $data['pid'] = intval($data['pid'] ?? input('pid', '0')); - $cates = ShopGoodsCate::mk()->where(['deleted' => 0])->order('sort desc,id desc')->select()->toArray(); - $this->cates = DataExtend::arr2table(array_merge($cates, [['id' => '0', 'pid' => '-1', 'name' => '顶部分类']])); - if (isset($data['id'])) foreach ($this->cates as $cate) if ($cate['id'] === $data['id']) $data = $cate; - foreach ($this->cates as $key => $cate) if ((isset($data['spt']) && $data['spt'] <= $cate['spt'])) { - unset($this->cates[$key]); - } - } - } - - /** - * 修改商品分类状态 - * @auth true - */ - public function state() - { - ShopGoodsCate::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } - - /** - * 删除商品分类 - * @auth true - */ - public function remove() - { - ShopGoodsCate::mDelete(); - } -} \ No newline at end of file diff --git a/app/data/controller/shop/Goods.php b/app/data/controller/shop/Goods.php deleted file mode 100644 index 18dca8aee..000000000 --- a/app/data/controller/shop/Goods.php +++ /dev/null @@ -1,258 +0,0 @@ -title = '商品数据管理'; - - $query = ShopGoods::mQuery(); - // 加载对应数据 - $this->type = $this->request->get('type', 'index'); - if ($this->type === 'index') $query->where(['deleted' => 0]); - elseif ($this->type === 'recycle') $query->where(['deleted' => 1]); - else $this->error("无法加载 {$this->type} 数据列表!"); - - // 列表排序并显示 - $query->like('code,name')->like('marks,cateids', ','); - $query->equal('status,vip_entry,truck_type,rebate_type')->order('sort desc,id desc')->page(); - } - - /** - * 商品选择器 - * @login true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function select() - { - $query = ShopGoods::mQuery(); - $query->equal('status')->like('code,name,marks')->in('cateids'); - $query->where(['deleted' => 0])->order('sort desc,id desc')->page(); - } - - /** - * 数据列表处理 - * @param array $data - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _page_filter(array &$data) - { - $this->marks = GoodsService::instance()->getMarkData(); - $this->cates = GoodsService::instance()->getCateTree('arr2table'); - GoodsService::instance()->bindData($data, false); - } - - /** - * 添加商品数据 - * @auth true - */ - public function add() - { - $this->mode = 'add'; - $this->title = '添加商品数据'; - ShopGoods::mForm('form', 'code'); - } - - /** - * 编辑商品数据 - * @auth true - */ - public function edit() - { - $this->mode = 'edit'; - $this->title = '编辑商品数据'; - ShopGoods::mForm('form', 'code'); - } - - /** - * 复制编辑商品 - * @auth true - */ - public function copy() - { - $this->mode = 'copy'; - $this->title = '复制编辑商品'; - ShopGoods::mForm('form', 'code'); - } - - /** - * 表单数据处理 - * @param array $data - */ - protected function _copy_form_filter(array &$data) - { - if ($this->request->isPost()) { - $data['code'] = CodeExtend::uniqidNumber(20, 'G'); - } - } - - /** - * 表单数据处理 - * @param array $data - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _form_filter(array &$data) - { - if (empty($data['code'])) { - $data['code'] = CodeExtend::uniqidNumber(20, 'G'); - } - if ($this->request->isGet()) { - $data['marks'] = str2arr($data['marks'] ?? ''); - $data['payment'] = str2arr($data['payment'] ?? ''); - $data['cateids'] = str2arr($data['cateids'] ?? ''); - // 其他表单数据 - $this->marks = GoodsService::instance()->getMarkData(); - $this->cates = GoodsService::instance()->getCateData(); - $this->trucks = ExpressService::instance()->templates(); - $this->upgrades = UserUpgradeService::instance()->levels(); - $this->payments = BaseUserPayment::mk()->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->column('type,code,name', 'code'); - $this->discounts = BaseUserDiscount::mk()->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->column('id,name,items', 'id'); - // 商品规格处理 - $fields = 'goods_sku `sku`,goods_code,goods_spec `key`,price_selling `selling`,price_market `market`,number_virtual `virtual`,number_express `express`,reward_balance `balance`,reward_integral `integral`,status'; - $data['data_items'] = json_encode(ShopGoodsItem::mk()->where(['goods_code' => $data['code']])->column($fields, 'goods_spec'), JSON_UNESCAPED_UNICODE); - } elseif ($this->request->isPost()) { - if (empty($data['cover'])) $this->error('商品图片不能为空!'); - if (empty($data['slider'])) $this->error('轮播图片不能为空!'); - if (empty($data['payment'])) $this->error('支付方式不能为空!'); - // 商品规格保存 - [$data['price_market'], $data['price_selling']] = [0, 0]; - [$count, $items] = [0, array_column(json_decode($data['data_items'], true), 0)]; - foreach ($items as $item) if ($item['status'] > 0) { - if ($data['price_market'] === 0 || $data['price_market'] > $item['market']) $data['price_market'] = $item['market']; - if ($data['price_selling'] === 0 || $data['price_selling'] > $item['selling']) $data['price_selling'] = $item['selling']; - $count++; - } - if (empty($count)) $this->error('无效的的商品价格信息!'); - $data['marks'] = arr2str($data['marks'] ?? []); - $data['payment'] = arr2str($data['payment'] ?? []); - ShopGoodsItem::mk()->where(['goods_code' => $data['code']])->update(['status' => 0]); - foreach ($items as $item) data_save(ShopGoodsItem::class, [ - 'goods_sku' => $item['sku'], - 'goods_spec' => $item['key'], - 'goods_code' => $data['code'], - 'price_market' => $item['market'], - 'price_selling' => $item['selling'], - 'number_virtual' => $item['virtual'], - 'number_express' => $item['express'], - 'reward_balance' => $item['balance'], - 'reward_integral' => $item['integral'], - 'status' => $item['status'] ? 1 : 0, - ], 'goods_spec', [ - 'goods_code' => $data['code'], - ]); - } - } - - /** - * 表单结果处理 - * @param boolean $result - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _form_result(bool $result) - { - if ($result && $this->request->isPost()) { - GoodsService::instance()->stock(input('code')); - $this->success('商品编辑成功!', 'javascript:history.back()'); - } - } - - /** - * 商品库存入库 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function stock() - { - $map = $this->_vali(['code.require' => '商品编号不能为空哦!']); - if ($this->request->isGet()) { - $list = ShopGoods::mk()->where($map)->select()->toArray(); - if (empty($list)) $this->error('无效的商品数据,请稍候再试!'); - [$this->vo] = GoodsService::instance()->bindData($list); - $this->fetch(); - } else { - [$data, $post, $batch] = [[], $this->request->post(), CodeExtend::uniqidDate(12, 'B')]; - if (isset($post['goods_code']) && is_array($post['goods_code'])) { - foreach (array_keys($post['goods_code']) as $key) { - if ($post['goods_stock'][$key] > 0) $data[] = [ - 'batch_no' => $batch, - 'goods_code' => $post['goods_code'][$key], - 'goods_spec' => $post['goods_spec'][$key], - 'goods_stock' => $post['goods_stock'][$key], - ]; - } - if (!empty($data)) { - ShopGoodsStock::mk()->insertAll($data); - GoodsService::instance()->stock($map['code']); - $this->success('商品数据入库成功!'); - } - } - $this->error('没有需要商品入库的数据!'); - } - } - - /** - * 商品上下架 - * @auth true - */ - public function state() - { - ShopGoods::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ]), 'code'); - } - - /** - * 删除商品数据 - * @auth true - */ - public function remove() - { - ShopGoods::mSave($this->_vali([ - 'deleted.in:0,1' => '状态值范围异常!', - 'deleted.require' => '状态值不能为空!', - ]), 'code'); - } -} \ No newline at end of file diff --git a/app/data/controller/shop/Mark.php b/app/data/controller/shop/Mark.php deleted file mode 100644 index e438f9427..000000000 --- a/app/data/controller/shop/Mark.php +++ /dev/null @@ -1,77 +0,0 @@ -title = '商品标签管理'; - $query = ShopGoodsMark::mQuery(); - $query->like('name')->dateBetween('create_at'); - $query->equal('status')->order('sort desc,id desc')->page(); - } - - /** - * 商品标签选择 - * @login true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function select() - { - ShopGoodsMark::mQuery()->order('sort desc,id desc')->page(); - } - - /** - * 添加商品标签 - * @auth true - */ - public function add() - { - ShopGoodsMark::mForm('form'); - } - - /** - * 编辑商品标签 - * @auth true - */ - public function edit() - { - ShopGoodsMark::mForm('form'); - } - - /** - * 修改商品标签状态 - * @auth true - */ - public function state() - { - ShopGoodsMark::mSave(); - } - - /** - * 删除商品标签 - * @auth true - */ - public function remove() - { - ShopGoodsMark::mDelete(); - } -} \ No newline at end of file diff --git a/app/data/controller/shop/Order.php b/app/data/controller/shop/Order.php deleted file mode 100644 index 692646f21..000000000 --- a/app/data/controller/shop/Order.php +++ /dev/null @@ -1,188 +0,0 @@ -payments = PaymentService::getTypeAll(); - } - - /** - * 订单数据管理 - * @auth true - * @menu true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function index() - { - $this->title = '订单数据管理'; - // 状态数据统计 - $this->total = ['t0' => 0, 't1' => 0, 't2' => 0, 't3' => 0, 't4' => 0, 't5' => 0, 't6' => 0, 'ta' => 0]; - foreach (ShopOrder::mk()->field('status,count(1) total')->group('status')->cursor() as $vo) { - [$this->total["t{$vo['status']}"] = $vo['total'], $this->total["ta"] += $vo['total']]; - } - - // 订单列表查询 - $query = ShopOrder::mQuery(); - $query->like('order_no,truck_name,truck_phone,truck_province|truck_area|truck_address#address,truck_send_no,truck_send_name'); - $query->equal('status,payment_type,payment_status')->dateBetween('create_at,payment_datetime,cancel_datetime,truck_datetime,truck_send_datetime'); - - // 发货信息搜索 - $db = ShopOrderSend::mQuery()->like('address_name#truck_address_name,address_phone#truck_address_phone,address_province|address_city|address_area|address_content#truck_address_content')->db(); - if ($db->getOptions('where')) $query->whereRaw("order_no in {$db->field('order_no')->buildSql()}"); - - // 用户搜索查询 - $db = DataUser::mQuery()->like('phone#user_phone,nickname#user_nickname')->db(); - if ($db->getOptions('where')) $query->whereRaw("uuid in {$db->field('id')->buildSql()}"); - - // 代理搜索查询 - $db = DataUser::mQuery()->like('phone#from_phone,nickname#from_nickname')->db(); - if ($db->getOptions('where')) $query->whereRaw("puid1 in {$db->field('id')->buildSql()}"); - - // 列表选项卡 - if (is_numeric($this->type = trim(input('type', 'ta'), 't'))) { - $query->where(['status' => $this->type]); - } - - // 分页排序处理 - $query->where(['deleted_status' => 0])->order('id desc')->page(); - } - - /** - * 订单列表处理 - * @param array $data - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _index_page_filter(array &$data) - { - UserAdminService::instance()->buildByUid($data); - UserAdminService::instance()->buildByUid($data, 'puid1', 'from'); - OrderService::instance()->buildData($data); - foreach ($data as &$vo) $vo['payment_name'] = PaymentService::name($vo['payment_type']); - } - - /** - * 单据凭证支付审核 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function audit() - { - if ($this->request->isGet()) { - ShopOrder::mForm('', 'order_no'); - } else { - $data = $this->_vali([ - 'order_no.require' => '订单单号不能为空!', - 'status.in:0,1' => '审核状态数值异常!', - 'status.require' => '审核状态不能为空!', - 'remark.default' => '', - ]); - if (empty($data['status'])) { - $data['status'] = 0; - $data['cancel_status'] = 1; - $data['cancel_remark'] = $data['remark'] ?: '后台审核驳回并取消订单'; - $data['cancel_datetime'] = date('Y-m-d H:i:s'); - } else { - $data['status'] = 4; - $data['payment_code'] = CodeExtend::uniqidDate(20, 'T'); - $data['payment_status'] = 1; - $data['payment_remark'] = $data['remark'] ?: '后台审核支付凭证通过'; - $data['payment_datetime'] = date('Y-m-d H:i:s'); - } - $order = ShopOrder::mk()->where(['order_no' => $data['order_no']])->find(); - if (empty($order) || $order['status'] !== 3) $this->error('不允许操作审核!'); - // 无需发货时的处理 - if ($data['status'] === 4 && empty($order['truck_type'])) $data['status'] = 6; - // 更新订单支付状态 - $map = ['status' => 3, 'order_no' => $data['order_no']]; - if (ShopOrder::mk()->strict(false)->where($map)->update($data) !== false) { - if (in_array($data['status'], [4, 5, 6])) { - $this->app->event->trigger('ShopOrderPayment', $data['order_no']); - $this->success('订单审核通过成功!'); - } else { - $this->app->event->trigger('ShopOrderCancel'); - OrderService::instance()->stock($data['order_no']); - $this->success('审核驳回并取消成功!'); - } - } else { - $this->error('订单审核失败!'); - } - } - } - - /** - * 清理订单数据 - * @auth true - */ - public function clean() - { - $this->_queue('定时清理无效订单数据', "xdata:OrderClean", 0, [], 0, 60); - } - - /** - * 取消未支付的订单 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function cancel() - { - $map = $this->_vali(['order_no.require' => '订单号不能为空!',]); - $order = ShopOrder::mk()->where($map)->find(); - if (empty($order)) $this->error('订单查询异常!'); - if (!in_array($order['status'], [1, 2, 3])) $this->error('订单不能取消!'); - try { - $result = $order->save([ - 'status' => 0, - 'cancel_status' => 1, - 'cancel_remark' => '后台取消未支付的订单', - 'cancel_datetime' => date('Y-m-d H:i:s'), - ]); - if ($result !== false) { - OrderService::instance()->stock($order['order_no']); - $this->app->event->trigger('ShopOrderCancel', $order['order_no']); - $this->success('取消未支付的订单成功!'); - } else { - $this->error('取消支付的订单失败!'); - } - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error($exception->getMessage()); - } - } -} \ No newline at end of file diff --git a/app/data/controller/shop/Send.php b/app/data/controller/shop/Send.php deleted file mode 100644 index 53ac78c8e..000000000 --- a/app/data/controller/shop/Send.php +++ /dev/null @@ -1,161 +0,0 @@ -title = '订单发货管理'; - // 发货地址数据 - $this->address = sysdata('ordersend'); - // 状态数据统计 - $this->total = ['t0' => 0, 't1' => 0, 't2' => 0, 'ta' => 0]; - $db = ShopOrder::mk()->whereIn('status', [4, 5, 6])->where(['truck_type' => 1]); - $query = ShopOrderSend::mk()->whereRaw("order_no in {$db->field('order_no')->buildSql()}"); - foreach ($query->fieldRaw('status,count(1) total')->group('status')->cursor() as $vo) { - $this->total["t{$vo['status']}"] = $vo['total']; - $this->total["ta"] += $vo['total']; - } - - // 订单列表查询 - $query = ShopOrderSend::mQuery(); - $query->dateBetween('address_datetime,send_datetime')->equal('status')->like('send_number#truck_number,order_no'); - $query->like('address_phone,address_name,address_province|address_city|address_area|address_content#address_content'); - - // 用户搜索查询 - $db = DataUser::mQuery()->like('phone#user_phone,nickname#user_nickname')->db(); - if ($db->getOptions('where')) $query->whereRaw("uuid in {$db->field('id')->buildSql()}"); - - // 订单搜索查询 - $db = ShopOrder::mk()->whereIn('status', [4, 5, 6])->where(['truck_type' => 1]); - $query->whereRaw("order_no in {$db->field('order_no')->buildSql()}"); - - // 列表选项卡状态 - if (is_numeric($this->type = trim(input('type', 'ta'), 't'))) { - $query->where(['status' => $this->type]); - } - - // 列表排序显示 - $query->order('id desc')->page(); - } - - /** - * 订单列表处理 - * @param array $data - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _index_page_filter(array &$data) - { - OrderService::instance()->buildData($data, false); - $orders = array_unique(array_column($data, 'order_no')); - $orderList = ShopOrder::mk()->whereIn('order_no', $orders)->column('*', 'order_no'); - foreach ($data as &$vo) $vo['order'] = $orderList[$vo['order_no']] ?? []; - } - - /** - * 快递发货地址 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function config() - { - if ($this->request->isGet()) { - $this->vo = sysdata('ordersend'); - $this->fetch(); - } else { - sysdata('ordersend', $this->request->post()); - $this->success('发货地址保存成功'); - } - } - - /** - * 修改快递管理 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function truck() - { - if ($this->request->isGet()) { - $query = BasePostageCompany::mk()->where(['deleted' => 0, 'status' => 1]); - $this->items = $query->order('sort desc,id desc')->select()->toArray(); - } - ShopOrderSend::mForm('truck_form', 'order_no'); - } - - /** - * 快递表单处理 - * @param array $vo - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _truck_form_filter(array &$vo) - { - if ($this->request->isPost()) { - $map = ['order_no' => $vo['order_no']]; - $order = ShopOrder::mk()->where($map)->find(); - if (empty($order)) $this->error('订单查询异常,请稍候再试!'); - - // 配送快递公司填写 - $map = ['code_1|code_2|code_3' => $vo['company_code']]; - $company = BasePostageCompany::mk()->where($map)->find(); - if (empty($company)) $this->error('配送快递公司异常,请重新选择快递公司!'); - - $vo['status'] = 2; - $vo['company_name'] = $company['name']; - $vo['send_datetime'] = $vo['send_datetime'] ?? date('Y-m-d H:i:s'); - if ($order['status'] === 3) { - $map = ['order_no' => $vo['order_no']]; - // 更新订单发货状态 - ShopOrder::mk()->where($map)->update(['status' => 4]); - } - } - } - - /** - * 快递追踪查询 - * @auth true - */ - public function query() - { - try { - $data = $this->_vali(['code.require' => '快递不能为空!', 'number.require' => '单号不能为空!']); - $this->result = ExpressService::instance()->query($data['code'], $data['number']); - if (empty($this->result['code'])) $this->error($this->result['info']); - $this->fetch('truck_query'); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error($exception->getMessage()); - } - } -} \ No newline at end of file diff --git a/app/data/controller/total/Portal.php b/app/data/controller/total/Portal.php deleted file mode 100644 index 91ae5a173..000000000 --- a/app/data/controller/total/Portal.php +++ /dev/null @@ -1,57 +0,0 @@ -usersTotal = DataUser::mk()->cache(true, 60)->count(); - $this->goodsTotal = ShopGoods::mk()->cache(true, 60)->where(['deleted' => 0])->count(); - $this->orderTotal = ShopOrder::mk()->cache(true, 60)->whereRaw('status >= 4')->count(); - $this->amountTotal = ShopOrder::mk()->cache(true, 60)->whereRaw('status >= 4')->sum('amount_total'); - // 近十天的用户及交易趋势 - $this->days = $this->app->cache->get('portals', []); - if (empty($this->days)) { - for ($i = 15; $i >= 0; $i--) { - $date = date('Y-m-d', strtotime("-{$i}days")); - $this->days[] = [ - '当天日期' => date('m-d', strtotime("-{$i}days")), - '增加用户' => DataUser::mk()->whereLike('create_at', "{$date}%")->count(), - '订单数量' => ShopOrder::mk()->whereLike('create_at', "{$date}%")->whereRaw('status>=4')->count(), - '订单金额' => ShopOrder::mk()->whereLike('create_at', "{$date}%")->whereRaw('status>=4')->sum('amount_total'), - '返利金额' => DataUserRebate::mk()->whereLike('create_at', "{$date}%")->sum('amount'), - '剩余余额' => DataUserBalance::mk()->whereRaw("create_at<='{$date} 23:59:59' and deleted=0")->sum('amount'), - '充值余额' => DataUserBalance::mk()->whereLike('create_at', "{$date}%")->whereRaw('amount>0 and deleted=0')->sum('amount'), - '消费余额' => DataUserBalance::mk()->whereLike('create_at', "{$date}%")->whereRaw('amount<0 and deleted=0')->sum('amount'), - ]; - } - $this->app->cache->set('portals', $this->days, 60); - } - // 会员级别分布统计 - $levels = BaseUserUpgrade::mk()->where(['status' => 1])->order('number asc')->column('number code,name,0 count', 'number'); - foreach (DataUser::mk()->field('count(1) count,vip_code level')->group('vip_code')->cursor() as $vo) { - $levels[$vo['level']]['count'] = isset($levels[$vo['level']]) ? $vo['count'] : 0; - } - $this->levels = array_values($levels); - $this->fetch(); - } -} \ No newline at end of file diff --git a/app/data/controller/user/Admin.php b/app/data/controller/user/Admin.php deleted file mode 100644 index afb400dbf..000000000 --- a/app/data/controller/user/Admin.php +++ /dev/null @@ -1,184 +0,0 @@ -levels()]; - $ts['ta'] = ['vip' => '', 'name' => '全部用户', 'count' => 0]; - foreach ($ls as $k => $v) $ts["t{$k}"] = ['vip' => $k, 'name' => $v['name'], 'count' => 0,]; - $ts['to'] = ['vip' => '', 'name' => '其他用户', 'count' => 0]; - // 等级分组统计 - foreach (DataUser::mk()->field('vip_code vip,count(1) count')->group('vip_code')->cursor() as $v) { - [$name, $count] = ["t{$v['vip']}", $v['count'], $ts['ta']['count'] += $v['count']]; - isset($ts[$name]) ? $ts[$name]['count'] += $count : $ts['to']['count'] += $count; - } - if (empty($ts['to']['count'])) unset($ts['to']); - $this->total = $ts; - - // 设置页面标题 - $this->title = '普通用户管理'; - - // 创建查询对象 - $query = DataUser::mQuery()->order('id desc'); - - // 数据筛选选项 - $this->type = ltrim(input('type', 'ta'), 't'); - if (is_numeric($this->type)) $query->where(['vip_code' => $this->type]); - elseif ($this->type === 'o') $query->whereNotIn('vip_code', array_keys($ls)); - - // 用户搜索查询 - $db = DataUser::mQuery()->equal('vip_code#from_vipcode')->like('phone#from_phone,username|nickname#from_username')->db(); - if ($db->getOptions('where')) $query->whereRaw("pid1 in {$db->field('id')->buildSql()}"); - - // 数据查询分页 - $query->like('phone,username|nickname#username')->equal('status,vip_code')->dateBetween('create_at')->page(); - } - - /** - * 数据列表处理 - * @param array $data - */ - protected function _page_filter(array &$data) - { - $this->upgrades = UserUpgradeService::instance()->levels(); - UserAdminService::instance()->buildByUid($data, 'pid1', 'from'); - } - - /** - * 用户团队关系 - * @auth true - * @menu true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function teams() - { - $this->title = '用户团队关系'; - $map = ['pid1' => input('from', 0)]; - DataUser::mQuery()->where($map)->page(false); - } - - /** - * 数据列表处理 - * @param array $data - */ - protected function _teams_page_filter(array &$data) - { - $uids = array_unique(array_column($data, 'id')); - $subCount = DataUser::mk()->whereIn('pid1', $uids)->group('pid1')->column('count(1) count', 'pid1'); - foreach ($data as &$vo) $vo['subCount'] = $subCount[$vo['id']] ?? 0; - } - - /** - * 永久绑定代理 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function forever() - { - $map = $this->_vali(['id.require' => '用户ID不能为空!']); - $user = DataUser::mk()->where($map)->find(); - if (empty($user) || empty($user['pid0'])) $this->error('用户不符合操作要求!'); - [$status, $message] = UserUpgradeService::instance()->bindAgent($user['id'], $user['pid0']); - $status && sysoplog('前端用户管理', "修改用户[{$map['id']}]的代理为永久状态"); - empty($status) ? $this->error($message) : $this->success($message); - } - - /** - * 设为总部用户 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function unbind() - { - $map = $this->_vali(['id.require' => '用户ID不能为空!']); - $user = DataUser::mk()->where($map)->find(); - if (empty($user)) $this->error('用户不符合操作要求!'); - // 修改指定用户代理数据 - $user->save(['pid0' => 0, 'pid1' => 0, 'pid2' => 0, 'pids' => 1, 'path' => '-', 'layer' => 1]); - // 刷新用户等级及上级等级 - UserUpgradeService::instance()->upgrade($user['id'], true); - sysoplog('前端用户管理', "设置用户[{$map['id']}]为总部用户"); - $this->success('设为总部用户成功!'); - } - - /** - * 绑定上级代理 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function parent() - { - if ($this->request->isGet()) { - $this->upgrades = UserUpgradeService::instance()->levels(); - $data = $this->_vali(['uuid.require' => '待操作UID不能为空!']); - - // 排除下级用户 - $path = DataUser::mk()->where(['id' => $data['uuid']])->value('path', '-'); - $subids = DataUser::mk()->whereLike('path', "{$path}{$data['uuid']}-%")->column('id'); - $query = DataUser::mQuery()->order('id desc')->whereNotIn('id', array_merge($subids, array_values($data))); - - // 用户搜索查询 - $db = DataUser::mQuery()->equal('vip_code#from_vipcode')->like('phone#from_phone,username|nickname#from_username')->db(); - if ($db->getOptions('where')) $query->whereRaw("pid1 in {$db->field('id')->buildSql()}"); - - // 数据查询分页 - $query->like('phone,username|nickname#username')->whereRaw('vip_code>0')->equal('status,vip_code')->dateBetween('create_at')->page(); - } else { - $data = $this->_vali(['pid.require' => '待绑定代理不能为空!', 'uuid.require' => '待操作用户不能为空!']); - [$status, $message] = UserUpgradeService::instance()->bindAgent($data['uuid'], $data['pid'], 2); - $status && sysoplog('前端用户管理', "修改用户[{$data['uuid']}]的代理为用户[{$data['pid']}]"); - empty($status) ? $this->error($message) : $this->success($message); - } - } - - /** - * 重算用户余额返利 - * @auth true - */ - public function sync() - { - $this->_queue('重新计算用户余额返利', 'xdata:UserAmount'); - } - - /** - * 修改用户状态 - * @auth true - */ - public function state() - { - DataUser::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } -} \ No newline at end of file diff --git a/app/data/controller/user/Balance.php b/app/data/controller/user/Balance.php deleted file mode 100644 index 971c7ba2f..000000000 --- a/app/data/controller/user/Balance.php +++ /dev/null @@ -1,135 +0,0 @@ -title = '余额充值记录'; - // 统计用户余额 - $this->balance = UserBalanceService::instance()->amount(0); - // 现有余额类型 - $this->names = DataUserBalance::mk()->group('name')->column('name'); - // 创建查询对象 - $query = DataUserBalance::mQuery()->equal('name,upgrade'); - // 用户搜索查询 - $db = DataUser::mQuery()->like('phone#user_phone,nickname#user_nickname')->db(); - if ($db->getOptions('where')) $query->whereRaw("uuid in {$db->field('id')->buildSql()}"); - // 数据查询分页 - $query->where(['deleted' => 0])->like('code,remark')->dateBetween('create_at')->order('id desc')->page(); - } - - /** - * 数据列表处理 - * @param array $data - */ - protected function _index_page_filter(array &$data) - { - UserAdminService::instance()->buildByUid($data); - $uids = array_unique(array_column($data, 'create_by')); - $users = SystemUser::mk()->whereIn('id', $uids)->column('username', 'id'); - $this->upgrades = UserUpgradeService::instance()->levels(); - foreach ($data as &$vo) { - $vo['upgradeinfo'] = $this->upgrades[$vo['upgrade']] ?? []; - $vo['create_byname'] = $users[$vo['create_by']] ?? ''; - } - } - - /** - * 添加余额充值 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function add() - { - $data = $this->_vali(['uuid.require' => '用户UID不能为空!']); - $this->user = DataUser::mk()->where(['id' => $data['uuid']])->find(); - if (empty($this->user)) $this->error('待充值的用户不存在!'); - DataUserBalance::mForm('form'); - } - - /** - * 表单数据处理 - * @param array $data - */ - protected function _form_filter(array &$data) - { - if (empty($data['code'])) { - $data['code'] = CodeExtend::uniqidDate('20', 'B'); - } - if ($this->request->isGet()) { - $this->upgrades = UserUpgradeService::instance()->levels(); - } - if ($this->request->isPost()) { - $data['create_by'] = AdminService::instance()->getUserId(); - if (empty(floatval($data['amount'])) && empty($data['upgrade'])) { - $this->error('金额为零并且没有升级行为!'); - } - } - } - - /** - * 表单结果处理 - * @param bool $state - * @param array $data - * @throws \think\db\exception\DbException - */ - protected function _form_result(bool $state, array $data) - { - if ($state && isset($data['uuid'])) { - UserBalanceService::instance()->amount($data['uuid']); - UserUpgradeService::instance()->upgrade($data['uuid']); - } - } - - /** - * 删除充值记录 - * @auth true - */ - public function remove() - { - DataUserBalance::mDelete('', [['code', 'like', 'B%']]); - } - - /** - * 删除结果处理 - * @param bool $state - * @throws \think\db\exception\DbException - */ - protected function _delete_result(bool $state) - { - if ($state) { - $map = [['id', 'in', str2arr(input('id', ''))]]; - foreach (DataUserBalance::mk()->where($map)->cursor() as $vo) { - UserBalanceService::instance()->amount($vo['uuid']); - UserUpgradeService::instance()->upgrade($vo['uuid']); - } - } - } -} \ No newline at end of file diff --git a/app/data/controller/user/Message.php b/app/data/controller/user/Message.php deleted file mode 100644 index f31655cdb..000000000 --- a/app/data/controller/user/Message.php +++ /dev/null @@ -1,61 +0,0 @@ -title = '短信发送管理'; - $query = DataUserMessage::mQuery(); - $query->equal('status')->like('phone,content'); - $query->dateBetween('create_at')->order('id desc')->page(); - } - - /** - * 短信接口配置 - * @auth true - * @menu true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function config() - { - if ($this->request->isGet()) { - $this->title = '短信接口配置'; - $this->result = MessageService::instance()->balance(); - $this->fetch(); - } else { - $data = $this->request->post(); - foreach ($data as $k => $v) sysconf($k, $v); - $this->success('配置保存成功!'); - } - } - - /** - * 删除短信记录 - * @auth true - */ - public function remove() - { - DataUserMessage::mDelete(); - } -} \ No newline at end of file diff --git a/app/data/controller/user/Rebate.php b/app/data/controller/user/Rebate.php deleted file mode 100644 index 30a330ce7..000000000 --- a/app/data/controller/user/Rebate.php +++ /dev/null @@ -1,93 +0,0 @@ -title = '用户返利管理'; - // 统计所有返利 - $this->types = RebateService::PRIZES; - $this->rebate = UserRebateService::instance()->amount(0); - // 创建查询对象 - $query = DataUserRebate::mQuery()->equal('type')->like('name,order_no'); - // 会员条件查询 - $db = $this->_query('DataUser')->like('nickname#order_nickname,phone#order_phone')->db(); - if ($db->getOptions('where')) $query->whereRaw("order_uuid in {$db->field('id')->buildSql()}"); - // 代理条件查询 - $db = $this->_query('DataUser')->like('nickname#agent_nickname,phone#agent_phone')->db(); - if ($db->getOptions('where')) $query->whereRaw("uuid in {$db->field('id')->buildSql()}"); - // 查询分页 - $query->dateBetween('create_at')->order('id desc')->page(); - } - - /** - * 商城订单列表处理 - * @param array $data - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _index_page_filter(array &$data) - { - $uids = array_merge(array_column($data, 'uuid'), array_column($data, 'order_uuid')); - $userItem = DataUser::mk()->whereIn('id', array_unique($uids))->select(); - $goodsItem = ShopOrderItem::mk()->whereIn('order_no', array_unique(array_column($data, 'order_no')))->select(); - foreach ($data as &$vo) { - $vo['type'] = RebateService::instance()->name($vo['type']); - [$vo['user'], $vo['agent'], $vo['list']] = [[], [], []]; - foreach ($userItem as $user) { - if ($user['id'] === $vo['uuid']) $vo['agent'] = $user; - if ($user['id'] === $vo['order_uuid']) $vo['user'] = $user; - } - foreach ($goodsItem as $goods) { - if ($goods['order_no'] === $vo['order_no']) { - $vo['list'][] = $goods; - } - } - } - } - - /** - * 用户返利配置 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function config() - { - $this->skey = 'RebateRule'; - $this->title = '用户返利配置'; - if ($this->request->isGet()) { - $this->data = sysdata($this->skey); - $this->levels = UserUpgradeService::instance()->levels(); - $this->fetch(); - } else { - sysdata($this->skey, $this->request->post()); - $this->success('奖励修改成功'); - } - } -} \ No newline at end of file diff --git a/app/data/controller/user/Transfer.php b/app/data/controller/user/Transfer.php deleted file mode 100644 index f371eb84c..000000000 --- a/app/data/controller/user/Transfer.php +++ /dev/null @@ -1,179 +0,0 @@ -types = UserTransferService::instance()->types(); - } - - /** - * 用户提现配置 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function config() - { - $this->skey = 'TransferRule'; - $this->title = '用户提现配置'; - $this->_sysdata(); - } - - /** - * 微信转账配置 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function payment() - { - $this->skey = 'TransferWxpay'; - $this->title = '微信提现配置'; - $this->_sysdata(); - } - - /** - * 配置数据处理 - * @param string $tpl 模板文件 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function _sysdata(string $tpl = '') - { - if ($this->request->isGet()) { - $this->data = sysdata($this->skey); - $this->fetch($tpl); - } else { - sysdata($this->skey, $this->request->post()); - $this->success('配置修改成功'); - } - } - - /** - * 用户提现管理 - * @menu true - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function index() - { - $this->title = '用户提现管理'; - $this->transfer = UserTransferService::instance()->amount(0); - // 创建查询对象 - $query = DataUserTransfer::mQuery()->order('id desc'); - // 用户条件搜索 - $db = DataUser::mQuery()->like('phone,username|nickname#nickname')->db(); - if ($db->getOptions('where')) $query->whereRaw("uuid in {$db->field('id')->buildSql()}"); - // 数据列表处理 - $query->equal('type,status')->dateBetween('create_at')->page(); - } - - /** - * 数据列表处理 - * @param array $data - */ - protected function _page_filter(array &$data) - { - UserAdminService::instance()->buildByUid($data); - foreach ($data as &$vo) { - $vo['type_name'] = UserTransferService::instance()->types($vo['type']); - } - } - - /** - * 提现审核操作 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function auditStatus() - { - $this->_audit(); - } - - /** - * 提现打款操作 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function auditPayment() - { - $this->_audit(); - } - - /** - * 提现审核打款 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function _audit() - { - if ($this->request->isGet()) { - DataUserTransfer::mForm('audit', 'code'); - } else { - $data = $this->_vali([ - 'code.require' => '打款单号不能为空!', - 'status.require' => '交易审核操作类型!', - 'status.in:0,1,2,3,4' => '交易审核操作类型!', - 'remark.default' => '', - ]); - $map = ['code' => $data['code']]; - $find = DataUserTransfer::mk()->where($map)->find(); - if (empty($find)) $this->error('不允许操作审核!'); - // 提现状态(0已拒绝, 1待审核, 2已审核, 3打款中, 4已打款, 5已收款) - if (in_array($data['status'], [0, 1, 2, 3])) { - $data['last_at'] = date('Y-m-d H:i:s'); - } elseif ($data['status'] == 4) { - $data['trade_no'] = CodeExtend::uniqidDate(20); - $data['trade_time'] = date('Y-m-d H:i:s'); - $data['change_time'] = date('Y-m-d H:i:s'); - $data['change_desc'] = ($data['remark'] ?: '线下打款成功') . ' By ' . AdminService::instance()->getUserName(); - } - if (DataUserTransfer::mk()->strict(false)->where($map)->update($data) !== false) { - $this->success('操作成功'); - } else { - $this->error('操作失败!'); - } - } - } - - /** - * 后台打款服务 - * @auth true - */ - public function sync() - { - $this->_queue('提现到微信余额定时处理', 'xdata:UserTransfer', 0, [], 0, 50); - } - -} \ No newline at end of file diff --git a/app/data/model/BasePostageCompany.php b/app/data/model/BasePostageCompany.php deleted file mode 100644 index 4e57ea05a..000000000 --- a/app/data/model/BasePostageCompany.php +++ /dev/null @@ -1,15 +0,0 @@ -where($map)->order('sort desc,id desc')->find(); - if (empty($template)) return [0, $truckCount, '', '邮费模板编码无效!']; - $rule = json_decode($template['normal'] ?: '[]', true) ?: []; - foreach (json_decode($template['content'] ?: '[]', true) ?: [] as $item) { - if (isset($item['city']) && is_array($item['city'])) foreach ($item['city'] as $city) { - if ($city['name'] === $provName && in_array($cityName, $city['subs'])) { - $rule = $item['rule']; - break 2; - } - } - } - [$firstNumber, $firstAmount] = [$rule['firstNumber'] ?: 0, $rule['firstAmount'] ?: 0]; - [$repeatNumber, $repeatAmount] = [$rule['repeatNumber'] ?: 0, $rule['repeatAmount'] ?: 0]; - if ($truckCount <= $firstNumber) { - return [$firstAmount, $truckCount, $template['code'], "首件计费,不超过{$firstNumber}件"]; - } else { - $amount = $repeatNumber > 0 ? $repeatAmount * ceil(($truckCount - $firstNumber) / $repeatNumber) : 0; - return [$firstAmount + $amount, $truckCount, $template['code'], "续件计费,超出{$firstNumber}件续件{$amount}元"]; - } - } - - - /** - * 获取快递模板数据 - * @return array - */ - public function templates(): array - { - $query = BasePostageTemplate::mk()->where(['status' => 1, 'deleted' => 0]); - return $query->order('sort desc,id desc')->column('code,name,normal,content', 'code'); - } - - /** - * 配送区域树型数据 - * @param integer $level 最大等级 - * @param null|integer $status 状态筛选 - * @return array - */ - public function region(int $level = 3, ?int $status = null): array - { - $query = BasePostageRegion::mk(); - if (is_numeric($level)) $query->where('level', '<=', $level); - if (is_numeric($status)) $query->where(['status' => $status]); - $items = DataExtend::arr2tree($query->column('id,pid,name,status', 'id'), 'id', 'pid', 'subs'); - // 排序子集为空的省份和城市 - foreach ($items as $ik => $item) { - foreach ($item['subs'] as $ck => $city) { - if (isset($city['subs']) && empty($city['subs'])) unset($items[$ik]['subs'][$ck]); - } - if (isset($item['subs']) && empty($item['subs'])) unset($items[$ik]); - } - return $items; - } - - /** - * 楚才开放平台快递查询 - * @param string $code 快递公司编号 - * @param string $number 快递配送单号 - * @return array - * @throws \think\admin\Exception - */ - public function query(string $code, string $number): array - { - return $this->_getInterface()->doRequest('api.auth.express/query', [ - 'type' => 'free', 'express' => $code, 'number' => $number, - ]); - } - - /** - * 楚才开放平台快递公司 - * @return array - * @throws \think\admin\Exception - */ - public function company(): array - { - return $this->_getInterface()->doRequest('api.auth.express/getCompany'); - } - - /** - * 获取楚才开放平台接口实例 - * @return InterfaceService - */ - private function _getInterface(): InterfaceService - { - $service = InterfaceService::instance(); - // 测试的账号及密钥随时可能会变更,请联系客服更新 - $service->getway('https://open.cuci.cc/user/'); - $service->setAuth("6998081316132228", "193fc1d9a2aac78475bc8dbeb9a5feb1"); - return $service; - } -} \ No newline at end of file diff --git a/app/data/service/GoodsService.php b/app/data/service/GoodsService.php deleted file mode 100644 index 69155029f..000000000 --- a/app/data/service/GoodsService.php +++ /dev/null @@ -1,138 +0,0 @@ - 1]; - return ShopGoodsMark::mk()->where($map)->order('sort desc,id desc')->column('name'); - } - - /** - * 获取分类数据 - * @param string $type 数据格式 arr2tree | arr2table - * @return array - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getCateTree(string $type = 'arr2tree'): array - { - $query = ShopGoodsCate::mk()->where(['deleted' => 0, 'status' => 1])->order('sort desc,id desc'); - return DataExtend::$type($query->withoutField('sort,status,deleted,create_at')->select()->toArray()); - } - - /** - * 获取分类数据 - * @param boolean $simple 简化数据 - * @return array - */ - public function getCateData(bool $simple = true): array - { - $cates = ShopGoodsCate::mk()->where(['status' => 1, 'deleted' => 0])->column('id,pid,name', 'id'); - foreach ($cates as $cate) if (isset($cates[$cate['pid']])) $cates[$cate['id']]['parent'] =& $cates[$cate['pid']]; - foreach ($cates as $key => $cate) { - $id = $cate['id']; - $cates[$id]['ids'][] = $cate['id']; - $cates[$id]['names'][] = $cate['name']; - while (isset($cate['parent']) && $cate = $cate['parent']) { - $cates[$id]['ids'][] = $cate['id']; - $cates[$id]['names'][] = $cate['name']; - } - $cates[$id]['ids'] = array_reverse($cates[$id]['ids']); - $cates[$id]['names'] = array_reverse($cates[$id]['names']); - if (isset($pky) && $simple && in_array($cates[$pky]['name'], $cates[$id]['names'])) { - unset($cates[$pky]); - } - $pky = $key; - } - return $cates; - } - - /** - * 更新商品库存数据 - * @param string $code - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function stock(string $code): bool - { - // 商品入库统计 - $query = ShopGoodsStock::mk()->field('goods_code,goods_spec,ifnull(sum(goods_stock),0) stock_total'); - $stockList = $query->where(['goods_code' => $code])->group('goods_code,goods_spec')->select()->toArray(); - // 商品销量统计 - $query = ShopOrder::mk()->alias('a')->field('b.goods_code,b.goods_spec,ifnull(sum(b.stock_sales),0) stock_sales'); - $query->leftJoin('shop_order_item b', 'a.order_no=b.order_no')->where("b.goods_code='{$code}' and a.status>0 and a.deleted_status<1"); - $salesList = $query->group('b.goods_code,b.goods_spec')->select()->toArray(); - // 组装更新数据 - $dataList = []; - foreach (array_merge($stockList, $salesList) as $vo) { - $key = "{$vo['goods_code']}@@{$vo['goods_spec']}"; - $dataList[$key] = isset($dataList[$key]) ? array_merge($dataList[$key], $vo) : $vo; - if (empty($dataList[$key]['stock_sales'])) $dataList[$key]['stock_sales'] = 0; - if (empty($dataList[$key]['stock_total'])) $dataList[$key]['stock_total'] = 0; - } - unset($salesList, $stockList); - // 更新商品规格销量及库存 - foreach ($dataList as $vo) { - $map = ['goods_code' => $code, 'goods_spec' => $vo['goods_spec']]; - $set = ['stock_total' => $vo['stock_total'], 'stock_sales' => $vo['stock_sales']]; - ShopGoodsItem::mk()->where($map)->update($set); - } - // 更新商品主体销量及库存 - ShopGoods::mk()->where(['code' => $code])->update([ - 'stock_total' => intval(array_sum(array_column($dataList, 'stock_total'))), - 'stock_sales' => intval(array_sum(array_column($dataList, 'stock_sales'))), - 'stock_virtual' => ShopGoodsItem::mk()->where(['goods_code' => $code])->sum('number_virtual'), - ]); - return true; - } - - /** - * 商品数据绑定 - * @param array $data 商品主数据 - * @param boolean $simple 简化数据 - * @return array - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function bindData(array &$data = [], bool $simple = true): array - { - [$cates, $codes] = [$this->getCateData(), array_unique(array_column($data, 'code'))]; - $marks = ShopGoodsMark::mk()->where(['status' => 1])->column('name'); - $items = ShopGoodsItem::mk()->whereIn('goods_code', $codes)->where(['status' => 1])->select()->toArray(); - foreach ($data as &$vo) { - [$vo['marks'], $vo['cateids'], $vo['cateinfo']] = [str2arr($vo['marks'], ',', $marks), str2arr($vo['cateids']), []]; - [$vo['slider'], $vo['specs'], $vo['items']] = [str2arr($vo['slider'], '|'), json_decode($vo['data_specs'], true), []]; - foreach ($cates as $cate) if (in_array($cate['id'], $vo['cateids'])) $vo['cateinfo'] = $cate; - foreach ($items as $item) if ($item['goods_code'] === $vo['code']) $vo['items'][] = $item; - if ($simple) unset($vo['marks'], $vo['sort'], $vo['status'], $vo['deleted'], $vo['data_items'], $vo['data_specs'], $vo['cateinfo']['parent']); - } - return $data; - } - -} \ No newline at end of file diff --git a/app/data/service/MessageService.php b/app/data/service/MessageService.php deleted file mode 100644 index d83b83a28..000000000 --- a/app/data/service/MessageService.php +++ /dev/null @@ -1,175 +0,0 @@ -_request('v2/balance', []); - return [$state, $message, $state ? $result['sumSms'] : 0]; - } - - /** - * 执行网络请求 - * @param string $url 接口请求地址 - * @param array $data 接口请求参数 - * @return array - */ - private function _request(string $url, array $data): array - { - $encode = md5(md5($this->password) . ($tkey = time())); - $option = ['headers' => ['Content-Type:application/json;charset=UTF-8']]; - $request = json_encode(array_merge($data, ['username' => $this->username, 'password' => $encode, 'tKey' => $tkey])); - $result = json_decode(http_post("https://api.mix2.zthysms.com/{$url}", $request, $option), true); - if (empty($result['code'])) { - return [0, '接口请求网络异常', []]; - } elseif (intval($result['code']) === 200) { - return [1, $this->_error($result['code']), $result]; - } else { - return [0, $this->_error($result['code']), $result]; - } - } - - /** - * 获取状态描述 - * @param integer $code - * @return string - */ - private function _error(int $code): string - { - $arrs = [ - 200 => '提交成功', - 4001 => '用户名错误', - 4002 => '密码不能为空', - 4003 => '短信内容不能为空', - 4004 => '手机号码错误', - 4006 => 'IP鉴权错误', - 4007 => '用户禁用', - 4008 => 'tKey错误', - 4009 => '密码错误', - 4011 => '请求错误', - 4013 => '定时时间错误', - 4014 => '模板错误', - 4015 => '扩展号错误', - 4019 => '用户类型错误', - 4023 => '签名错误', - 4025 => '模板变量内容为空', - 4026 => '手机号码数最大2000个', - 4027 => '模板变量内容最大200组', - 4029 => '请使用 POST 请求', - 4030 => 'Content-Type 请使用 application/json', - 4031 => '模板名称不能为空', - 4032 => '模板类型不正确', - 4034 => '模板内容不能为空', - 4035 => '模板名称已经存在', - 4036 => '添加模板信息失败', - 4037 => '模板名称最大20字符', - 4038 => '模板内容超过最大字符数', - 4040 => '模板内容缺少变量值或规则错误', - 4041 => '模板内容中变量规范错误', - 4042 => '模板变量个数超限', - 4044 => '接口24小时限制提交次数超限', - 9998 => 'JSON解析错误', - 9999 => '非法请求', - ]; - return $arrs[$code] ?? $code; - } - - /** - * 验证手机短信验证码 - * @param string $code 验证码 - * @param string $phone 手机号验证 - * @param string $tplcode - * @return boolean - */ - public function checkVerifyCode(string $code, string $phone, string $tplcode = 'zt.tplcode_register'): bool - { - $cache = $this->app->cache->get(md5("code-{$tplcode}-{$phone}"), []); - return is_array($cache) && isset($cache['code']) && $cache['code'] == $code; - } - - /** - * 验证手机短信验证码 - * @param string $phone 手机号码 - * @param integer $wait 等待时间 - * @param string $tplcode 模板编号 - * @return array - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function sendVerifyCode(string $phone, int $wait = 120, string $tplcode = 'zt.tplcode_register'): array - { - $content = sysconf($tplcode) ?: '您的短信验证码为{code},请在十分钟内完成操作!'; - $cache = $this->app->cache->get($ckey = md5("code-{$tplcode}-{$phone}"), []); - // 检查是否已经发送 - if (is_array($cache) && isset($cache['time']) && $cache['time'] > time() - $wait) { - $dtime = ($cache['time'] + $wait < time()) ? 0 : ($wait - time() + $cache['time']); - return [1, '短信验证码已经发送!', ['time' => $dtime]]; - } - // 生成新的验证码 - [$code, $time] = [rand(100000, 999999), time()]; - $this->app->cache->set($ckey, ['code' => $code, 'time' => $time], 600); - // 尝试发送短信内容 - [$state] = $this->send($phone, preg_replace_callback("|{(.*?)}|", function ($matches) use ($code) { - return $matches[1] === 'code' ? $code : $matches[1]; - }, $content)); - if ($state) return [1, '短信验证码发送成功!', [ - 'time' => ($time + $wait < time()) ? 0 : ($wait - time() + $time)], - ]; else { - $this->app->cache->delete($ckey); - return [0, '短信发送失败,请稍候再试!', []]; - } - } - - /** - * 发送自定义短信内容 - * @param string $phone - * @param string $content - * @return array - */ - public function send(string $phone, string $content): array - { - [$state, $message, $record] = $this->_request('v2/sendSms', ['mobile' => $phone, 'content' => $content]); - DataUserMessage::mk()->insert(['phone' => $phone, 'content' => $content, 'result' => $message, 'status' => $state ? 1 : 0]); - return [$state, $message, $record]; - } - - /** - * 短信服务初始化 - * @return MessageService - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function initialize(): MessageService - { - $this->username = sysconf('zt.username'); - $this->password = sysconf('zt.password'); - return $this; - } -} \ No newline at end of file diff --git a/app/data/service/NewsService.php b/app/data/service/NewsService.php deleted file mode 100644 index c19dcffd5..000000000 --- a/app/data/service/NewsService.php +++ /dev/null @@ -1,79 +0,0 @@ -field('type,count(1) count'); - foreach ($query->where(['code' => $code, 'status' => 2])->group('type')->cursor() as $item) { - $total[$item['type']] = $item['count']; - } - DataNewsItem::mk()->where(['code' => $code])->update([ - 'num_like' => $total[1] ?? 0, 'num_collect' => $total[2] ?? 0, 'num_comment' => $total[4] ?? 0, - ]); - } - - /** - * 根据code绑定列表数据 - * @param array $list 数据列表 - * @return array - */ - public function buildListByUidAndCode(array &$list = []): array - { - if (count($list) > 0) { - /*! 绑定文章内容 */ - $codes = array_unique(array_column($list, 'code')); - $colls = 'id,code,name,cover,mark,status,deleted,create_at,num_like,num_read,num_comment,num_collect'; - $items = DataNewsItem::mk()->whereIn('code', $codes)->column($colls, 'code'); - $marks = DataNewsMark::mk()->where(['status' => 1])->column('name'); - foreach ($items as &$vo) $vo['mark'] = str2arr($vo['mark'] ?: '', ',', $marks); - foreach ($list as &$vo) $vo['record'] = $items[$vo['code']] ?? []; - /*! 绑定用户数据 */ - $colls = 'id,phone,nickname,username,headimg,status'; - UserAdminService::instance()->buildByUid($list, 'uuid', 'user', $colls); - } - return $list; - } - - /** - * 获取列表状态 - * @param array $list 数据列表 - * @param integer $uuid 用户UID - * @return array - */ - public function buildData(array &$list, int $uuid = 0): array - { - if (count($list) > 0) { - [$code2, $code1] = [[], []]; - $marks = DataNewsMark::mk()->where(['status' => 1])->column('name'); - if ($uuid > 0) { - $map = [['uuid', '=', $uuid], ['code', 'in', array_unique(array_column($list, 'code'))]]; - $code1 = DataNewsXCollect::mk()->where($map)->where(['type' => 1])->column('code'); - $code2 = DataNewsXCollect::mk()->where($map)->where(['type' => 2])->column('code'); - } - foreach ($list as &$vo) { - $vo['mark'] = str2arr($vo['mark'] ?: '', ',', $marks); - $vo['my_like_state'] = in_array($vo['code'], $code2) ? 1 : 0; - $vo['my_coll_state'] = in_array($vo['code'], $code1) ? 1 : 0; - } - } - return $list; - } -} \ No newline at end of file diff --git a/app/data/service/OrderService.php b/app/data/service/OrderService.php deleted file mode 100644 index a55a26003..000000000 --- a/app/data/service/OrderService.php +++ /dev/null @@ -1,150 +0,0 @@ - $orderNo]; - $codes = ShopOrderItem::mk()->where($map)->column('goods_code'); - foreach (array_unique($codes) as $code) GoodsService::instance()->stock($code); - return true; - } - - /** - * 根据订单更新用户等级 - * @param string $orderNo - * @return array|null [USER, ORDER, ENTRY] - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function upgrade(string $orderNo): ?array - { - // 目标订单数据 - $map = [['order_no', '=', $orderNo], ['status', '>=', 4]]; - $order = ShopOrder::mk()->where($map)->find(); - if (empty($order)) return null; - // 订单用户数据 - $user = DataUser::mk()->where(['id' => $order['uuid']])->find(); - if (empty($user)) return null; - // 更新用户购买资格 - $entry = $this->vipEntry($order['uuid']); - // 尝试绑定代理用户 - if (empty($user['pids']) && ($order['puid1'] > 0 || $user['pid1'] > 0)) { - $puid1 = $order['puid1'] > 0 ? $order['puid1'] : $user['pid0']; - UserUpgradeService::instance()->bindAgent($user['id'], $puid1); - } - // 重置用户信息并绑定订单 - $user = DataUser::mk()->where(['id' => $order['uuid']])->find(); - if ($user['pid1'] > 0) { - ShopOrder::mk()->where(['order_no' => $orderNo])->update([ - 'puid1' => $user['pid1'], 'puid2' => $user['pid2'], - ]); - } - // 重新计算用户等级 - UserUpgradeService::instance()->upgrade($user['id'], true, $orderNo); - return [$user, $order, $entry]; - } - - /** - * 刷新用户入会礼包 - * @param integer $uuid 用户UID - * @return integer - */ - private function vipEntry(int $uuid): int - { - // 检查是否购买入会礼包 - $query = ShopOrder::mk()->alias('a')->join('shop_order_item b', 'a.order_no=b.order_no'); - $entry = $query->where("a.uuid={$uuid} and a.status>=4 and a.payment_status=1 and b.vip_entry>0")->count() ? 1 : 0; - // 用户最后支付时间 - $lastMap = [['uuid', '=', $uuid], ['status', '>=', 4], ['payment_status', '=', 1]]; - $lastDate = ShopOrder::mk()->where($lastMap)->order('payment_datetime desc')->value('payment_datetime'); - // 更新用户支付信息 - DataUser::mk()->where(['id' => $uuid])->update(['buy_vip_entry' => $entry, 'buy_last_date' => $lastDate]); - return $entry; - } - - /** - * 获取等级折扣比例 - * @param int $disId 折扣方案ID - * @param int $vipCode 等级序号 - * @param float $disRate 默认比例 - * @return array [方案编号, 折扣比例] - */ - public function discount(int $disId, int $vipCode, float $disRate = 100.00): array - { - if ($disId > 0) { - $map = ['id' => $disId, 'status' => 1, 'deleted' => 0]; - $discount = BaseUserDiscount::mk()->where($map)->value('items'); - $disitems = json_decode($discount ?: '[]', true) ?: []; - if (is_array($disitems) && count($disitems) > 0) foreach ($disitems as $vo) { - if ($vo['level'] == $vipCode) $disRate = floatval($vo['discount']); - } - } - return [$disId, $disRate]; - } - - /** - * 绑定订单详情数据 - * @param array $data - * @param boolean $from - * @return array - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function buildData(array &$data = [], bool $from = true): array - { - if (empty($data)) return $data; - // 关联发货信息 - $nobs = array_unique(array_column($data, 'order_no')); - $trucks = ShopOrderSend::mk()->whereIn('order_no', $nobs)->column('*', 'order_no'); - foreach ($trucks as &$item) unset($item['id'], $item['uuid'], $item['status'], $item['deleted'], $item['create_at']); - // 关联订单商品 - $query = ShopOrderItem::mk()->where(['status' => 1, 'deleted' => 0]); - $items = $query->withoutField('id,uuid,status,deleted,create_at')->whereIn('order_no', $nobs)->select()->toArray(); - // 关联用户数据 - $fields = 'phone,username,nickname,headimg,status,vip_code,vip_name'; - if ($data) UserAdminService::instance()->buildByUid($data, 'uuid', 'user', $fields); - if ($from) UserAdminService::instance()->buildByUid($data, 'puid1', 'from', $fields); - foreach ($data as &$vo) { - [$vo['sales'], $vo['truck'], $vo['items']] = [0, $trucks[$vo['order_no']] ?? [], []]; - foreach ($items as $it) if ($vo['order_no'] === $it['order_no']) { - $vo['sales'] += $it['stock_sales']; - $vo['items'][] = $it; - } - } - return $data; - } -} \ No newline at end of file diff --git a/app/data/service/PaymentService.php b/app/data/service/PaymentService.php deleted file mode 100644 index 266269479..000000000 --- a/app/data/service/PaymentService.php +++ /dev/null @@ -1,381 +0,0 @@ - [ - 'type' => 'EMPTY', - 'name' => '订单无需支付', - 'bind' => [], - ], - self::PAYMENT_BALANCE => [ - 'type' => 'BALANCE', - 'name' => '账号余额支付', - 'bind' => [ - UserAdminService::API_TYPE_WAP, UserAdminService::API_TYPE_WEB, - UserAdminService::API_TYPE_WXAPP, UserAdminService::API_TYPE_WECHAT, - UserAdminService::API_TYPE_IOSAPP, UserAdminService::API_TYPE_ANDROID, - ], - ], - self::PAYMENT_VOUCHER => [ - 'type' => 'VOUCHER', - 'name' => '单据凭证支付', - 'bind' => [ - UserAdminService::API_TYPE_WAP, UserAdminService::API_TYPE_WEB, - UserAdminService::API_TYPE_WXAPP, UserAdminService::API_TYPE_WECHAT, - UserAdminService::API_TYPE_IOSAPP, UserAdminService::API_TYPE_ANDROID, - ], - ], - self::PAYMENT_WECHAT_WAP => [ - 'type' => 'MWEB', - 'name' => '微信WAP支付', - 'bind' => [UserAdminService::API_TYPE_WAP], - ], - self::PAYMENT_WECHAT_APP => [ - 'type' => 'APP', - 'name' => '微信APP支付', - 'bind' => [UserAdminService::API_TYPE_IOSAPP, UserAdminService::API_TYPE_ANDROID], - ], - self::PAYMENT_WECHAT_XCX => [ - 'type' => 'JSAPI', - 'name' => '微信小程序支付', - 'bind' => [UserAdminService::API_TYPE_WXAPP], - ], - self::PAYMENT_WECHAT_GZH => [ - 'type' => 'JSAPI', - 'name' => '微信公众号支付', - 'bind' => [UserAdminService::API_TYPE_WECHAT], - ], - self::PAYMENT_WECHAT_QRC => [ - 'type' => 'NATIVE', - 'name' => '微信二维码支付', - 'bind' => [UserAdminService::API_TYPE_WEB], - ], - // 支付宝支持配置(不需要的直接注释) - self::PAYMENT_ALIPAY_WAP => [ - 'type' => '', - 'name' => '支付宝WAP支付', - 'bind' => [UserAdminService::API_TYPE_WAP], - ], - self::PAYMENT_ALIPAY_WEB => [ - 'type' => '', - 'name' => '支付宝WEB支付', - 'bind' => [UserAdminService::API_TYPE_WEB], - ], - self::PAYMENT_ALIAPY_APP => [ - 'type' => '', - 'name' => '支付宝APP支付', - 'bind' => [UserAdminService::API_TYPE_ANDROID, UserAdminService::API_TYPE_IOSAPP], - ], - // 汇聚支持配置(不需要的直接注释) - self::PAYMENT_JOINPAY_XCX => [ - 'type' => 'WEIXIN_XCX', - 'name' => '汇聚小程序支付', - 'bind' => [UserAdminService::API_TYPE_WXAPP], - ], - self::PAYMENT_JOINPAY_GZH => [ - 'type' => 'WEIXIN_GZH', - 'name' => '汇聚公众号支付', - 'bind' => [UserAdminService::API_TYPE_WECHAT], - ], - ]; - /** - * 支付服务对象 - * @var array - */ - protected static $driver = []; - /** - * 当前应用 - * @var App - */ - protected $app; - /** - * 支付参数编号 - * @var string - */ - protected $code; - /** - * 默认支付类型 - * @var string - */ - protected $type; - /** - * 当前支付参数 - * @var array - */ - protected $params; - - /** - * PaymentService constructor. - * @param App $app 当前应用对象 - * @param string $code 支付参数编号 - * @param string $type 支付类型代码 - * @param array $params 支付参数配置 - */ - public function __construct(App $app, string $code, string $type, array $params) - { - [$this->app, $this->code, $this->type, $this->params] = [$app, $code, $type, $params]; - if (method_exists($this, 'initialize')) $this->initialize(); - } - - /** - * 根据配置实例支付服务 - * @param string $code 支付配置编号 - * @return JoinpayPaymentService|WechatPaymentService|AlipayPaymentService|BalancePyamentService|VoucherPaymentService|EmptyPaymentService - * @throws \think\admin\Exception - */ - public static function instance(string $code): PaymentService - { - if ($code === 'empty') { - $vars = ['code' => 'empty', 'type' => 'empty', 'params' => []]; - return static::$driver[$code] = app()->make(EmptyPaymentService::class, $vars); - } - [, $type, $params] = self::config($code); - if (isset(static::$driver[$code])) return static::$driver[$code]; - $vars = ['code' => $code, 'type' => $type, 'params' => $params]; - // 实例化具体支付参数类型 - if (stripos($type, 'balance') === 0) { - return static::$driver[$code] = app()->make(BalancePyamentService::class, $vars); - } elseif (stripos($type, 'voucher') === 0) { - return static::$driver[$code] = app()->make(VoucherPaymentService::class, $vars); - } elseif (stripos($type, 'alipay_') === 0) { - return static::$driver[$code] = app()->make(AlipayPaymentService::class, $vars); - } elseif (stripos($type, 'wechat_') === 0) { - return static::$driver[$code] = app()->make(WechatPaymentService::class, $vars); - } elseif (stripos($type, 'joinpay_') === 0) { - return static::$driver[$code] = app()->make(JoinpayPaymentService::class, $vars); - } else { - throw new Exception(sprintf('支付驱动[%s]未定义', $type)); - } - } - - /** - * 获取支付配置参数 - * @param string $code - * @param array $payment - * @return array [code, type, params] - * @throws Exception - */ - public static function config(string $code, array $payment = []): array - { - try { - if (empty($payment)) { - $map = ['code' => $code, 'status' => 1, 'deleted' => 0]; - $payment = BaseUserPayment::mk()->where($map)->find(); - } - if (empty($payment)) { - throw new Exception("支付参数[#{$code}]禁用关闭"); - } - $params = @json_decode($payment['content'], true); - if (empty($params)) { - throw new Exception("支付参数[#{$code}]配置无效"); - } - if (empty(static::TYPES[$payment['type']])) { - throw new Exception("支付参数[@{$payment['type']}]匹配失败"); - } - return [$payment['code'], $payment['type'], $params]; - } catch (\Exception $exception) { - throw new Exception($exception->getMessage(), $exception->getCode()); - } - } - - /** - * 获取支付支付名称 - * @param string $type - * @return string - */ - public static function name(string $type): string - { - return self::TYPES[$type]['name'] ?? $type; - } - - /** - * 获取支付类型 - * @param array $types 默认返回支付 - * @return array - */ - public static function getTypeAll(array $types = []): array - { - $binds = array_keys(UserAdminService::TYPES); - foreach (self::TYPES as $k => $v) if (isset($v['bind'])) { - if (array_intersect($v['bind'], $binds)) $types[$k] = $v; - } - return $types; - } - - /** - * 筛选可用的支付类型 - * @param string $api 指定接口类型 - * @param array $types 默认返回支付 - * @return array - */ - public static function getTypeApi(string $api = '', array $types = []): array - { - foreach (self::TYPES as $type => $attr) { - if (in_array($api, $attr['bind'])) $types[] = $type; - } - return array_unique($types); - } - - /** - * 订单主动查询 - * @param string $orderNo - * @return array - */ - abstract public function query(string $orderNo): array; - - /** - * 支付通知处理 - * @return string - */ - abstract public function notify(): string; - - /** - * 创建支付订单 - * @param string $openid 用户OPENID - * @param string $orderNo 交易订单单号 - * @param string $paymentAmount 交易订单金额(元) - * @param string $paymentTitle 交易订单名称 - * @param string $paymentRemark 交易订单描述 - * @param string $paymentReturn 支付回跳地址 - * @param string $paymentImage 支付凭证图片 - * @return array - */ - abstract public function create(string $openid, string $orderNo, string $paymentAmount, string $paymentTitle, string $paymentRemark, string $paymentReturn = '', string $paymentImage = ''): array; - - /** - * 创建支付行为 - * @param string $orderNo 商户订单单号 - * @param string $paymentTitle 商户订单标题 - * @param string $paymentAmount 需要支付金额 - */ - protected function createPaymentAction(string $orderNo, string $paymentTitle, string $paymentAmount) - { - DataUserPayment::mk()->insert([ - 'payment_code' => $this->code, - 'payment_type' => $this->type, - 'order_no' => $orderNo, - 'order_name' => $paymentTitle, - 'order_amount' => $paymentAmount, - ]); - } - - /** - * 更新支付记录并更新订单 - * @param string $orderNo 商户订单单号 - * @param string $paymentTrade 平台交易单号 - * @param string $paymentAmount 实际到账金额 - * @param string $paymentRemark 平台支付备注 - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function updatePaymentAction(string $orderNo, string $paymentTrade, string $paymentAmount, string $paymentRemark = '在线支付'): bool - { - // 更新支付记录 - data_save(DataUserPayment::mk(), [ - 'order_no' => $orderNo, - 'payment_code' => $this->code, - 'payment_type' => $this->type, - 'payment_trade' => $paymentTrade, - 'payment_amount' => $paymentAmount, - 'payment_status' => 1, - 'payment_datatime' => date('Y-m-d H:i:s'), - ], 'order_no', [ - 'payment_code' => $this->code, - 'payment_type' => $this->type, - ]); - // 更新记录状态 - return $this->updateOrder($orderNo, $paymentTrade, $paymentAmount, $paymentRemark); - } - - /** - * 订单支付更新操作 - * @param string $orderNo 订单单号 - * @param string $paymentTrade 交易单号 - * @param string $paymentAmount 支付金额 - * @param string $paymentRemark 支付描述 - * @param string $paymentImage 支付凭证 - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function updateOrder(string $orderNo, string $paymentTrade, string $paymentAmount, string $paymentRemark = '在线支付', string $paymentImage = ''): bool - { - $map = ['status' => 2, 'order_no' => $orderNo, 'payment_status' => 0]; - $order = ShopOrder::mk()->where($map)->find(); - if (empty($order)) return false; - // 检查订单支付状态 - if ($this->type === self::PAYMENT_VOUCHER) { - $status = 3; # 凭证支付需要审核 - } elseif (empty($order['truck_type'])) { - $status = 6; # 虚拟订单直接完成 - } else { - $status = 4; # 实物订单需要发货 - } - // 更新订单支付状态 - $data = [ - 'status' => $status, - 'payment_type' => $this->type, - 'payment_code' => $this->code, - 'payment_trade' => $paymentTrade, - 'payment_image' => $paymentImage, - 'payment_amount' => $paymentAmount, - 'payment_remark' => $paymentRemark, - 'payment_status' => 1, - 'payment_datetime' => date('Y-m-d H:i:s'), - ]; - if (empty($data['payment_type'])) unset($data['payment_type']); - ShopOrder::mk()->where($map)->update($data); - // 触发订单更新事件 - if ($status >= 4) { - $this->app->event->trigger('ShopOrderPayment', $orderNo); - } - return true; - } -} \ No newline at end of file diff --git a/app/data/service/RebateService.php b/app/data/service/RebateService.php deleted file mode 100644 index 582b873a6..000000000 --- a/app/data/service/RebateService.php +++ /dev/null @@ -1,460 +0,0 @@ - ['code' => self::PRIZE_01, 'name' => '首推奖励', 'func' => '_prize01'], - self::PRIZE_02 => ['code' => self::PRIZE_02, 'name' => '复购奖励', 'func' => '_prize02'], - self::PRIZE_03 => ['code' => self::PRIZE_03, 'name' => '直属团队', 'func' => '_prize03'], - self::PRIZE_04 => ['code' => self::PRIZE_04, 'name' => '间接团队', 'func' => '_prize04'], - self::PRIZE_05 => ['code' => self::PRIZE_05, 'name' => '差额奖励', 'func' => '_prize05'], - self::PRIZE_06 => ['code' => self::PRIZE_06, 'name' => '管理奖励', 'func' => '_prize06'], - self::PRIZE_07 => ['code' => self::PRIZE_07, 'name' => '升级奖励', 'func' => '_prize07'], - self::PRIZE_08 => ['code' => self::PRIZE_08, 'name' => '平推返利', 'func' => '_prize08'], - ]; - - /** - * 用户数据 - * @var array - */ - protected $user; - - /** - * 订单数据 - * @var array - */ - protected $order; - - /** - * 奖励到账时机 - * @var integer - */ - protected $status; - - /** - * 推荐用户 - * @var array - */ - protected $from1; - protected $from2; - - /** - * 执行订单返利处理 - * @param string $orderNo - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function execute(string $orderNo) - { - // 获取订单数据 - $map = ['order_no' => $orderNo, 'payment_status' => 1]; - $this->order = ShopOrder::mk()->where($map)->find(); - if (empty($this->order)) throw new Exception('订单不存在'); - if ($this->order['payment_type'] === 'balance') return; - if ($this->order['amount_total'] <= 0) throw new Exception('订单金额为零'); - if ($this->order['rebate_amount'] <= 0) throw new Exception('订单返利为零'); - // 获取用户数据 - $map = ['id' => $this->order['uuid'], 'deleted' => 0]; - $this->user = DataUser::mk()->where($map)->find(); - if (empty($this->user)) throw new Exception('用户不存在'); - // 获取直接代理数据 - if ($this->order['puid1'] > 0) { - $this->from1 = DataUser::mk()->find($this->order['puid1']); - if (empty($this->from1)) throw new Exception('直接代理不存在'); - } - // 获取间接代理数据 - if ($this->order['puid2'] > 0) { - $this->from2 = DataUser::mk()->find($this->order['puid2']); - if (empty($this->from2)) throw new Exception('间接代理不存在'); - } - // 批量发放配置奖励 - foreach (self::PRIZES as $vo) if (method_exists($this, $vo['func'])) { - $this->app->log->notice("订单 {$orderNo} 开始发放 [{$vo['func']}] {$vo['name']}"); - $this->{$vo['func']}(); - $this->app->log->notice("订单 {$orderNo} 完成发放 [{$vo['func']}] {$vo['name']}"); - } - } - - /** - * 返利服务初始化 - * @return void - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function initialize() - { - // 返利奖励到账时机 - // settl_type 为 1 支付后立即到账 - // settl_type 为 2 确认后立即到账 - $this->status = $this->config('settl_type') > 1 ? 0 : 1; - } - - /** - * 获取配置数据 - * @param ?string $name 配置名称 - * @return array|string - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function config(?string $name = null) - { - static $data = []; - if (empty($data)) $data = sysdata('RebateRule'); - return is_null($name) ? $data : ($data[$name] ?? ''); - } - - /** - * 用户首推奖励 - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _prize01(): bool - { - if (empty($this->from1)) return false; - $map = ['order_uuid' => $this->user['id']]; - if (DataUserRebate::mk()->where($map)->count() > 0) return false; - if (!$this->checkPrizeStatus(self::PRIZE_01, $this->from1['vip_code'])) return false; - // 创建返利奖励记录 - $key = "{$this->from1['vip_code']}_{$this->user['vip_code']}"; - $map = ['type' => self::PRIZE_01, 'order_no' => $this->order['order_no'], 'order_uuid' => $this->order['uuid']]; - if ($this->config("frist_state_vip_{$key}") && DataUserRebate::mk()->where($map)->count() < 1) { - $value = $this->config("frist_value_vip_{$key}"); - if ($this->config("frist_type_vip_{$key}") == 1) { - $val = floatval($value ?: '0.00'); - $name = "{$this->name(self::PRIZE_01)},每单 {$val} 元"; - } else { - $val = floatval($value * $this->order['rebate_amount'] / 100); - $name = "{$this->name(self::PRIZE_01)},订单 {$value}%"; - } - // 写入返利记录 - $this->writeRabate($this->from1['id'], $map, $name, $val); - } - return true; - } - - - /** - * 用户复购奖励 - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _prize02(): bool - { - $map = []; - $map[] = ['order_uuid', '=', $this->user['id']]; - $map[] = ['order_no', '<>', $this->order['order_no']]; - if (DataUserRebate::mk()->where($map)->count() < 1) return false; - // 检查上级可否奖励 - if (empty($this->from1) || empty($this->from1['vip_code'])) return false; - if (!$this->checkPrizeStatus(self::PRIZE_02, $this->from1['vip_code'])) return false; - // 创建返利奖励记录 - $key = "vip_{$this->from1['vip_code']}_{$this->user['vip_code']}"; - $map = ['type' => self::PRIZE_02, 'order_no' => $this->order['order_no'], 'order_uuid' => $this->order['uuid']]; - if ($this->config("repeat_state_{$key}") && DataUserRebate::mk()->where($map)->count() < 1) { - $value = $this->config("repeat_value_{$key}"); - if ($this->config("repeat_type_{$key}") == 1) { - $val = floatval($value ?: '0.00'); - $name = "{$this->name(self::PRIZE_02)},每人 {$val} 元"; - } else { - $val = floatval($value * $this->order['rebate_amount'] / 100); - $name = "{$this->name(self::PRIZE_02)},订单 {$value}%"; - } - // 写入返利记录 - $this->writeRabate($this->from1['id'], $map, $name, $val); - } - return true; - } - - /** - * 用户直属团队 - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function _prize03(): bool - { - if (empty($this->from1)) return false; - if (!$this->checkPrizeStatus(self::PRIZE_03, $this->from1['vip_code'])) return false; - // 创建返利奖励记录 - $key = "{$this->user['vip_code']}"; - $map = ['type' => self::PRIZE_03, 'order_no' => $this->order['order_no'], 'order_uuid' => $this->order['uuid']]; - if ($this->config("direct_state_vip_{$key}") && DataUserRebate::mk()->where($map)->count() < 1) { - $value = $this->config("direct_value_vip_{$key}"); - if ($this->config("direct_type_vip_{$key}") == 1) { - $val = floatval($value ?: '0.00'); - $name = "{$this->name(self::PRIZE_03)},每人 {$val} 元"; - } else { - $val = floatval($value * $this->order['rebate_amount'] / 100); - $name = "{$this->name(self::PRIZE_03)},订单 {$value}%"; - } - // 写入返利记录 - $this->writeRabate($this->from1['id'], $map, $name, $val); - } - return true; - } - - /** - * 用户间接团队 - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function _prize04(): bool - { - if (empty($this->from2)) return false; - if (!$this->checkPrizeStatus(self::PRIZE_04, $this->from2['vip_code'])) return false; - $key = "{$this->user['vip_code']}"; - $map = ['type' => self::PRIZE_04, 'order_no' => $this->order['order_no'], 'order_uuid' => $this->order['uuid']]; - if ($this->config("indirect_state_vip_{$key}") && DataUserRebate::mk()->where($map)->count() < 1) { - $value = $this->config("indirect_value_vip_{$key}"); - if ($this->config("indirect_type_vip_{$key}") == 1) { - $val = floatval($value ?: '0.00'); - $name = "{$this->name(self::PRIZE_03)},每人 {$val} 元"; - } else { - $val = floatval($value * $this->order['rebate_amount'] / 100); - $name = "{$this->name(self::PRIZE_03)},订单 {$value}%"; - } - // 写入返利记录 - $this->writeRabate($this->from2['id'], $map, $name, $val); - } - return true; - } - - /** - * 用户差额奖励 - * @return false - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function _prize05(): bool - { - $puids = array_reverse(str2arr($this->user['path'], '-')); - if (empty($puids) || $this->order['amount_total'] <= 0) return false; - // 获取可以参与奖励的代理 - $vips = BaseUserUpgrade::mk()->whereLike('rebate_rule', '%,' . self::PRIZE_05 . ',%')->column('number'); - $users = DataUser::mk()->whereIn('vip_code', $vips)->whereIn('id', $puids)->orderField('id', $puids)->select()->toArray(); - if (empty($vips) || empty($users)) return true; - // 查询需要计算奖励的商品 - foreach (ShopOrderItem::mk()->where(['order_no' => $this->order['order_no']])->cursor() as $item) { - if ($item['discount_id'] > 0 && $item['rebate_type'] === 1) { - [$tVip, $tRate] = [$item['vip_code'], $item['discount_rate']]; - $map = ['id' => $item['discount_id'], 'status' => 1, 'deleted' => 0]; - $rules = json_decode(BaseUserDiscount::mk()->where($map)->value('items', '[]'), true); - foreach ($users as $user) if (isset($rules[$user['vip_code']]) && $user['vip_code'] > $tVip) { - if (($rule = $rules[$user['vip_code']]) && $tRate > $rule['discount']) { - $map = ['uuid' => $user['id'], 'type' => self::PRIZE_05, 'order_no' => $this->order['order_no']]; - if (DataUserRebate::mk()->where($map)->count() < 1) { - $dRate = ($rate = $tRate - $rule['discount']) / 100; - $name = "等级差额奖励{$tVip}#{$user['vip_code']}商品原价{$item['total_selling']}元的{$rate}%"; - $amount = $dRate * $item['total_selling']; - // 写入用户返利记录 - $this->writeRabate($user['id'], $map, $name, $amount); - } - [$tVip, $tRate] = [$user['vip_code'], $rule['discount']]; - } - } - } - } - return true; - } - - /** - * 用户管理奖励发放 - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function _prize06(): bool - { - $puids = array_reverse(str2arr($this->user['path'], '-')); - if (empty($puids) || $this->order['amount_total'] <= 0) return false; - // 记录用户原始等级 - $prevLevel = $this->user['vip_code']; - // 获取参与奖励的代理 - $vips = BaseUserUpgrade::mk()->whereLike('rebate_rule', '%,' . self::PRIZE_06 . ',%')->column('number'); - foreach (DataUser::mk()->whereIn('vip_code', $vips)->whereIn('id', $puids)->orderField('id', $puids)->cursor() as $user) { - if ($user['vip_code'] > $prevLevel) { - if (($amount = $this->_prize06amount($prevLevel + 1, $user['vip_code'])) > 0.00) { - $map = ['uuid' => $user['id'], 'type' => self::PRIZE_06, 'order_no' => $this->order['order_no']]; - if (DataUserRebate::mk()->where($map)->count() < 1) { - $name = "{$this->name(self::PRIZE_06)},[ VIP{$prevLevel} > VIP{$user['vip_code']} ] 每单 {$amount} 元"; - $this->writeRabate($user['id'], $map, $name, $amount); - } - } - $prevLevel = $user['vip_code']; - } - } - return true; - } - - /** - * 计算两等级之间的管理奖差异 - * @param integer $prevLevel 上个等级 - * @param integer $nextLevel 下个等级 - * @return float - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function _prize06amount(int $prevLevel, int $nextLevel): float - { - if ($this->config("manage_type_vip_{$nextLevel}") == 2) { - $amount = 0.00; - foreach (range($prevLevel, $nextLevel) as $level) { - [$state, $value] = [$this->config("manage_state_vip_{$level}"), $this->config("manage_value_vip_{$level}")]; - if ($state && $value > 0) $amount += $value; - } - return floatval($amount); - } elseif ($this->config("manage_state_vip_{$nextLevel}")) { - return floatval($this->config("manage_value_vip_{$nextLevel}")); - } else { - return floatval(0); - } - } - - /** - * 用户升级奖励发放 - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function _prize07(): bool - { - if (empty($this->from1)) return false; - if ($this->order['order_no'] !== $this->user['vip_order']) return false; - if (!$this->checkPrizeStatus(self::PRIZE_07, $this->from1['vip_code'])) return false; - // 创建返利奖励记录 - $vip = "{$this->user['vip_code']}"; - $map = ['type' => self::PRIZE_07, 'order_no' => $this->order['order_no'], 'order_uuid' => $this->order['uuid']]; - if ($this->config("upgrade_state_vip_{$vip}") && DataUserRebate::mk()->where($map)->count() < 1) { - $value = $this->config("upgrade_value_vip_{$vip}"); - if ($this->config("upgrade_type_vip_{$vip}") == 1) { - $val = floatval($value ?: '0.00'); - $name = "{$this->name(self::PRIZE_07)},每人 {$val} 元"; - } else { - $val = floatval($value * $this->order['rebate_amount'] / 100); - $name = "{$this->name(self::PRIZE_07)},订单 {$value}%"; - } - // 写入返利记录 - $this->writeRabate($this->from1['id'], $map, $name, $val); - } - return true; - } - - /** - * 用户平推奖励发放 - * @return boolean - */ - private function _prize08(): bool - { - if (empty($this->from1)) return false; - $map = ['vip_code' => $this->user['vip_code']]; - $uuids = array_reverse(str2arr(trim($this->user['path'], '-'), '-')); - $puids = DataUser::mk()->whereIn('id', $uuids)->orderField('id', $uuids)->where($map)->column('id'); - if (count($puids) < 2) return false; - - $this->app->db->transaction(function () use ($puids, $map) { - foreach ($puids as $key => $puid) { - // 最多两层 - if (($layer = $key + 1) > 2) break; - // 检查重复 - $map = ['uuid' => $puid, 'type' => self::PRIZE_08, 'order_no' => $this->order['order_no']]; - if (DataUserRebate::mk()->where($map)->count() < 1) { - // 返利比例 - $rate = $this->config("equal_value_vip_{$layer}_{$this->user['vip_code']}"); - // 返利金额 - $money = floatval($rate * $this->order['rebate_amount'] / 100); - $name = "{$this->name(self::PRIZE_08)}, 返回订单的 {$rate}%"; - // 写入返利 - $this->writeRabate($puid, $map, $name, $money); - } - } - }); - return true; - } - - /** - * 获取奖励名称 - * @param string $prize - * @return string - */ - public function name(string $prize): string - { - return self::PRIZES[$prize]['name'] ?? $prize; - } - - /** - * 检查等级是否有奖励 - * @param string $prize 奖励规则 - * @param integer $level 用户等级 - * @return boolean - */ - private function checkPrizeStatus(string $prize, int $level): bool - { - $query = BaseUserUpgrade::mk()->where(['number' => $level]); - return $query->whereLike('rebate_rule', "%,{$prize},%")->count() > 0; - } - - /** - * 写返利记录 - * @param int $uuid 奖励用户 - * @param array $map 查询条件 - * @param string $name 奖励名称 - * @param float $amount 奖励金额 - */ - private function writeRabate(int $uuid, array $map, string $name, float $amount) - { - DataUserRebate::mk()->insert(array_merge($map, [ - 'uuid' => $uuid, - 'date' => date('Y-m-d'), - 'code' => CodeExtend::uniqidDate(20, 'R'), - 'name' => $name, - 'amount' => $amount, - 'status' => $this->status, - 'order_no' => $this->order['order_no'], - 'order_uuid' => $this->order['uuid'], - 'order_amount' => $this->order['amount_total'], - ])); - // 刷新用户返利统计 - UserRebateService::instance()->amount($uuid); - } -} \ No newline at end of file diff --git a/app/data/service/UserAdminService.php b/app/data/service/UserAdminService.php deleted file mode 100644 index be69b25d9..000000000 --- a/app/data/service/UserAdminService.php +++ /dev/null @@ -1,145 +0,0 @@ - [ - 'name' => '手机浏览器', - 'auth' => 'phone', - ], - self::API_TYPE_WEB => [ - 'name' => '电脑浏览器', - 'auth' => 'phone', - ], - self::API_TYPE_WXAPP => [ - 'name' => '微信小程序', - 'auth' => 'openid1', - ], - self::API_TYPE_WECHAT => [ - 'name' => '微信服务号', - 'auth' => 'openid2', - ], - self::API_TYPE_IOSAPP => [ - 'name' => '苹果APP应用', - 'auth' => 'phone', - ], - self::API_TYPE_ANDROID => [ - 'name' => '安卓APP应用', - 'auth' => 'phone', - ], - ]; - - /** - * 更新用户用户参数 - * @param array $map 查询条件 - * @param array $data 更新数据 - * @param string $type 接口类型 - * @param boolean $force 强刷令牌 - * @return array - * @throws \think\admin\Exception - * @throws \think\db\exception\DbException - */ - public function set(array $map, array $data, string $type, bool $force = false): array - { - $user = DataUser::mk()->where($map)->where(['deleted' => 0])->find(); - // 更新或写入用户数据 - unset($data['id'], $data['deleted'], $data['create_at']); - if (empty($user)) ($user = DataUser::mk())->save($data); - elseif (!empty($data)) $user->save($data); - // 强行刷新用户认证令牌 - if ($force) UserTokenService::instance()->token($user['id'], $type); - // 返回当前用户资料数据 - return $this->get($user['id'], $type); - } - - /** - * 获取用户数据 - * @param integer $uuid 用户UID - * @param ?string $type 接口类型 - * @return array - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function get(int $uuid, ?string $type = null): array - { - $user = DataUser::mk()->where(['id' => $uuid, 'deleted' => 0])->find(); - if (empty($user)) throw new Exception('用户还没有注册!'); - if (!is_null($type)) { - $data = DataUserToken::mk()->where(['uuid' => $uuid, 'type' => $type])->find(); - if (empty($data)) { - [$state, $info, $data] = UserTokenService::instance()->token($uuid, $type); - if (empty($state) || empty($data)) throw new Exception($info); - } - $user['token'] = ['token' => $data['token'], 'expire' => $data['time']]; - } - unset($user['deleted'], $user['password']); - return $user->toArray(); - } - - /** - * 获取用户数据统计 - * @param int $uuid 用户UID - * @return array - */ - public function total(int $uuid): array - { - return ['my_invite' => DataUser::mk()->where(['pid1' => $uuid])->count()]; - } - - /** - * 获取用户查询条件 - * @param string $field 认证字段 - * @param string $openid 用户OPENID值 - * @param string $unionid 用户UNIONID值 - * @return array - */ - public function getUserUniMap(string $field, string $openid, string $unionid = ''): array - { - if (!empty($unionid)) { - [$map1, $map2] = [[['unionid', '=', $unionid]], [[$field, '=', $openid]]]; - if ($uuid = DataUser::mk()->whereOr([$map1, $map2])->value('id')) { - return ['id' => $uuid]; - } - } - return [$field => $openid]; - } - - /** - * 列表绑定用户数据 - * @param array $list 原数据列表 - * @param string $keys 用户UID字段 - * @param string $bind 绑定字段名称 - * @param string $cols 返回用户字段 - * @return array - */ - public function buildByUid(array &$list, string $keys = 'uuid', string $bind = 'user', string $cols = '*'): array - { - if (count($list) < 1) return $list; - $uids = array_unique(array_column($list, $keys)); - $users = DataUser::mk()->whereIn('id', $uids)->column($cols, 'id'); - foreach ($list as &$vo) $vo[$bind] = $users[$vo[$keys]] ?? []; - return $list; - } -} \ No newline at end of file diff --git a/app/data/service/UserBalanceService.php b/app/data/service/UserBalanceService.php deleted file mode 100644 index ab7b7c736..000000000 --- a/app/data/service/UserBalanceService.php +++ /dev/null @@ -1,66 +0,0 @@ -where([['status', '>=', 4], ['order_no', '=', $orderNo]])->find(); - if (empty($order)) throw new Exception('需处理的订单状态异常'); - - if ($order['reward_balance'] > 0) data_save(DataUserBalance::class, [ - 'uuid' => $order['uuid'], - 'code' => "CZ{$order['order_no']}", - 'name' => "订单余额充值", - 'remark' => "来自订单 {$order['order_no']} 的余额充值 {$order['reward_balance']} 元", - 'amount' => $order['reward_balance'], - ], 'code'); - - return $this->amount($order['uuid']); - } - - /** - * 同步刷新用户余额 - * @param int $uuid 用户UID - * @param array $nots 排除的订单 - * @return array [total, count] - */ - public function amount(int $uuid, array $nots = []): array - { - if ($uuid > 0) { - $total = abs(DataUserBalance::mk()->whereRaw("uuid='{$uuid}' and amount>0 and deleted=0")->sum('amount')); - $count = abs(DataUserBalance::mk()->whereRaw("uuid='{$uuid}' and amount<0 and deleted=0")->sum('amount')); - if (empty($nots)) { - DataUser::mk()->where(['id' => $uuid])->update(['balance_total' => $total, 'balance_used' => $count]); - } else { - $count -= DataUserBalance::mk()->whereRaw("uuid={$uuid}")->whereIn('code', $nots)->sum('amount'); - } - } else { - $total = abs(DataUserBalance::mk()->whereRaw("amount>0 and deleted=0")->sum('amount')); - $count = abs(DataUserBalance::mk()->whereRaw("amount<0 and deleted=0")->sum('amount')); - } - return [$total, $count]; - } -} \ No newline at end of file diff --git a/app/data/service/UserRebateService.php b/app/data/service/UserRebateService.php deleted file mode 100644 index 2c19e54ed..000000000 --- a/app/data/service/UserRebateService.php +++ /dev/null @@ -1,59 +0,0 @@ - 0) { - $count = DataUserTransfer::mk()->whereRaw("uuid='{$uuid}' and status>0")->sum('amount'); - $total = DataUserRebate::mk()->whereRaw("uuid='{$uuid}' and status=1 and deleted=0")->sum('amount'); - $locks = DataUserRebate::mk()->whereRaw("uuid='{$uuid}' and status=0 and deleted=0")->sum('amount'); - DataUser::mk()->where(['id' => $uuid])->update(['rebate_total' => $total, 'rebate_used' => $count, 'rebate_lock' => $locks]); - } else { - $count = DataUserTransfer::mk()->whereRaw("status>0")->sum('amount'); - $total = DataUserRebate::mk()->whereRaw("status=1 and deleted=0")->sum('amount'); - $locks = DataUserRebate::mk()->whereRaw("status=0 and deleted=0")->sum('amount'); - } - return [$total, $count, $locks]; - } - - /** - * 确认收货订单处理 - * @param string $orderNo - * @return array [status, message] - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function confirm(string $orderNo): array - { - $map = [['status', '>=', 4], ['order_no', '=', $orderNo]]; - $order = ShopOrder::mk()->where($map)->find(); - if (empty($order)) return [0, '需处理的订单状态异常!']; - $map = [['status', '=', 0], ['order_no', 'like', "{$orderNo}%"]]; - DataUserRebate::mk()->where($map)->update(['status' => 1]); - if (UserUpgradeService::instance()->upgrade($order['uuid'])) { - return [1, '重新计算用户金额成功!']; - } else { - return [0, '重新计算用户金额失败!']; - } - } -} \ No newline at end of file diff --git a/app/data/service/UserTokenService.php b/app/data/service/UserTokenService.php deleted file mode 100644 index f9f92e12d..000000000 --- a/app/data/service/UserTokenService.php +++ /dev/null @@ -1,96 +0,0 @@ - $type, 'token' => $token]; - $data = DataUserToken::mk()->where($map)->find(); - } - if (empty($data) || empty($data['uuid'])) { - return [0, '请重新登录,登录认证无效', 0, 0]; - } elseif ($token !== 'token' && $data['time'] < time()) { - return [0, '请重新登录,登录认证失效', 0, 0]; - } elseif ($token !== 'token' && $data['tokenv'] !== $this->_buildTokenVerify()) { - return [0, '请重新登录,客户端已更换', 0, 0]; - } else { - $this->expire($type, $token); - return [1, '登录验证成功', $data['uuid'], $data['time']]; - } - } - - /** - * 获取令牌的认证值 - * @return string - */ - private function _buildTokenVerify(): string - { - return md5($this->app->request->server('HTTP_USER_AGENT', '-')); - } - - /** - * 延期 TOKEN 有效时间 - * @param string $type 接口类型 - * @param string $token 授权令牌 - */ - public function expire(string $type, string $token) - { - $map = ['type' => $type, 'token' => $token]; - DataUserToken::mk()->where($map)->update([ - 'time' => time() + $this->expire, - ]); - } - - /** - * 生成新的用户令牌 - * @param int $uuid 授权用户 - * @param string $type 接口类型 - * @return array [创建状态, 状态描述, 令牌数据] - */ - public function token(int $uuid, string $type): array - { - // 清理无效认证数据 - $time = time(); - $map1 = [['token', '<>', 'token'], ['time', '<', $time]]; - $map2 = [['token', '<>', 'token'], ['type', '=', $type], ['uuid', '=', $uuid]]; - DataUserToken::mk()->whereOr([$map1, $map2])->delete(); - // 创建新的认证数据 - do $map = ['type' => $type, 'token' => md5(uniqid() . rand(100, 999))]; - while (DataUserToken::mk()->where($map)->count() > 0); - // 写入用户认证数据 - $data = array_merge($map, ['uuid' => $uuid, 'time' => $time + $this->expire, 'tokenv' => $this->_buildTokenVerify()]); - if (DataUserToken::mk()->insert($data) !== false) { - return [1, '刷新认证成功', $data]; - } else { - return [0, '刷新认证失败', []]; - } - } -} \ No newline at end of file diff --git a/app/data/service/UserTransferService.php b/app/data/service/UserTransferService.php deleted file mode 100644 index b287a3b8f..000000000 --- a/app/data/service/UserTransferService.php +++ /dev/null @@ -1,156 +0,0 @@ - '转账到我的微信零钱', - 'wechat_banks' => '转账到我的银行卡账户', - 'wechat_qrcode' => '线下转账到微信收款码', - 'alipay_qrcode' => '线下转账到支付宝收款码', - 'alipay_account' => '线下转账到支付宝账户', - 'transfer_banks' => '线下转账到银行卡账户', - ]; - - /** - * 微信提现银行 - * @var array - */ - protected $banks = [ - ['wseq' => '1002', 'name' => '工商银行'], - ['wseq' => '1005', 'name' => '农业银行'], - ['wseq' => '1003', 'name' => '建设银行'], - ['wseq' => '1026', 'name' => '中国银行'], - ['wseq' => '1020', 'name' => '交通银行'], - ['wseq' => '1001', 'name' => '招商银行'], - ['wseq' => '1066', 'name' => '邮储银行'], - ['wseq' => '1006', 'name' => '民生银行'], - ['wseq' => '1010', 'name' => '平安银行'], - ['wseq' => '1021', 'name' => '中信银行'], - ['wseq' => '1004', 'name' => '浦发银行'], - ['wseq' => '1009', 'name' => '兴业银行'], - ['wseq' => '1022', 'name' => '光大银行'], - ['wseq' => '1027', 'name' => '广发银行'], - ['wseq' => '1025', 'name' => '华夏银行'], - ['wseq' => '1056', 'name' => '宁波银行'], - ['wseq' => '4836', 'name' => '北京银行'], - ['wseq' => '1024', 'name' => '上海银行'], - ['wseq' => '1054', 'name' => '南京银行'], - - // '4755' => '长子县融汇村镇银行', - // '4216' => '长沙银行', - // '4051' => '浙江泰隆商业银行', - // '4753' => '中原银行', - // '4761' => '企业银行(中国)', - // '4036' => '顺德农商银行', - // '4752' => '衡水银行', - // '4756' => '长治银行', - // '4767' => '大同银行', - // '4115' => '河南省农村信用社', - // '4150' => '宁夏黄河农村商业银行', - // '4156' => '山西省农村信用社', - // '4166' => '安徽省农村信用社', - // '4157' => '甘肃省农村信用社', - // '4153' => '天津农村商业银行', - // '4113' => '广西壮族自治区农村信用社', - // '4108' => '陕西省农村信用社', - // '4076' => '深圳农村商业银行', - // '4052' => '宁波鄞州农村商业银行', - // '4764' => '浙江省农村信用社联合社', - // '4217' => '江苏省农村信用社联合社', - // '4072' => '江苏紫金农村商业银行股份有限公司', - // '4769' => '北京中关村银行股份有限公司', - // '4778' => '星展银行(中国)有限公司', - // '4766' => '枣庄银行股份有限公司', - // '4758' => '海口联合农村商业银行股份有限公司', - // '4763' => '南洋商业银行(中国)有限公司', - ]; - - /** - * 获取微信提现银行 - * @param string|null $wsea - * @return array|string - */ - public function banks(?string $wsea = null) - { - if (is_null($wsea)) return $this->banks; - foreach ($this->banks as $bank) if ($bank['wseq'] === $wsea) { - return $bank['name']; - } - return $wsea; - } - - /** - * 同步刷新用户返利 - * @param integer $uuid - * @return array [total, count, audit, locks] - */ - public function amount(int $uuid): array - { - if ($uuid > 0) { - $locks = abs(DataUserTransfer::mk()->whereRaw("uuid='{$uuid}' and status=3")->sum('amount')); - $total = abs(DataUserTransfer::mk()->whereRaw("uuid='{$uuid}' and status>=1")->sum('amount')); - $count = abs(DataUserTransfer::mk()->whereRaw("uuid='{$uuid}' and status>=4")->sum('amount')); - $audit = abs(DataUserTransfer::mk()->whereRaw("uuid='{$uuid}' and status>=1 and status<3")->sum('amount')); - } else { - $locks = abs(DataUserTransfer::mk()->whereRaw("status=3")->sum('amount')); - $total = abs(DataUserTransfer::mk()->whereRaw("status>=1")->sum('amount')); - $count = abs(DataUserTransfer::mk()->whereRaw("status>=4")->sum('amount')); - $audit = abs(DataUserTransfer::mk()->whereRaw("status>=1 and status<3")->sum('amount')); - } - return [$total, $count, $audit, $locks]; - } - - /** - * 获取转账类型 - * @param string|null $name - * @return array|string - */ - public function types(?string $name = null) - { - return is_null($name) ? $this->types : ($this->types[$name] ?? $name); - } - - /** - * 获取提现配置 - * @param ?string $name - * @return array|string - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function config(?string $name = null) - { - static $data = []; - if (empty($data)) $data = sysdata('TransferRule'); - return is_null($name) ? $data : ($data[$name] ?? ''); - } - - /** - * 获取转账配置 - * @param ?string $name - * @return array|string - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function payment(?string $name = null) - { - static $data = []; - if (empty($data)) $data = sysdata('TransferWxpay'); - return is_null($name) ? $data : ($data[$name] ?? ''); - } -} \ No newline at end of file diff --git a/app/data/service/UserUpgradeService.php b/app/data/service/UserUpgradeService.php deleted file mode 100644 index ad322613f..000000000 --- a/app/data/service/UserUpgradeService.php +++ /dev/null @@ -1,151 +0,0 @@ -where(['status' => 1]); - return $model->order('number asc')->column('*', 'number'); - } - - /** - * 尝试绑定上级代理 - * @param integer $uuid 用户UID - * @param integer $pid0 代理UID - * @param integer $mode 操作类型(0临时绑定, 1永久绑定, 2强行绑定) - * @return array - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function bindAgent(int $uuid, int $pid0 = 0, int $mode = 1): array - { - $user = DataUser::mk()->where(['id' => $uuid])->find(); - if (empty($user)) return [0, '查询用户资料失败']; - if ($user['pids'] && in_array($mode, [0, 1])) return [1, '已经绑定代理']; - // 检查代理用户 - if (empty($pid0)) $pid0 = $user['pid0']; - if (empty($pid0)) return [0, '绑定的代理不存在']; - if ($uuid == $pid0) return [0, '不能绑定自己为代理']; - // 检查代理资格 - $agent = DataUser::mk()->where(['id' => $pid0])->find(); - if (empty($agent['vip_code'])) return [0, '代理无推荐资格']; - if (strpos($agent['path'], "-{$uuid}-") !== false) return [0, '不能绑定下属']; - try { - $this->app->db->transaction(function () use ($user, $agent, $mode) { - // 更新用户代理 - $path1 = rtrim($agent['path'] ?: '-', '-') . "-{$agent['id']}-"; - $user->save(['pid0' => $agent['id'], 'pid1' => $agent['id'], 'pid2' => $agent['pid1'], 'pids' => $mode > 0 ? 1 : 0, 'path' => $path1, 'layer' => substr_count($path1, '-')]); - // 更新下级代理 - $path2 = "{$user['path']}{$user['id']}-"; - if (DataUser::mk()->whereLike('path', "{$path2}%")->count() > 0) { - foreach (DataUser::mk()->whereLike('path', "{$path2}%")->order('layer desc')->select() as $item) { - $attr = array_reverse(str2arr($path3 = preg_replace("#^{$path2}#", "{$path1}{$user['id']}-", $item['path']), '-')); - $item->save(['pid0' => $attr[0] ?? 0, 'pid1' => $attr[0] ?? 0, 'pid2' => $attr[1] ?? 0, 'path' => $path3, 'layer' => substr_count($path3, '-')]); - } - } - }); - $this->upgrade($user['id']); - return [1, '绑定代理成功']; - } catch (\Exception $exception) { - return [0, "绑定代理失败, {$exception->getMessage()}"]; - } - } - - /** - * 同步计算用户等级 - * @param integer $uuid 指定用户UID - * @param boolean $parent 同步计算上级 - * @param ?string $orderNo 升级触发订单 - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function upgrade(int $uuid, bool $parent = true, ?string $orderNo = null): bool - { - $user = DataUser::mk()->where(['id' => $uuid])->find(); - if (empty($user)) return true; - // 初始化等级参数 - $levels = $this->levels(); - [$vipName, $vipCode, $vipTeam] = [$levels[0]['name'] ?? '普通用户', 0, []]; - // 统计用户数据 - foreach ($levels as $key => $level) if ($level['upgrade_team'] === 1) $vipTeam[] = $key; - $orderAmount = ShopOrder::mk()->where("uuid={$uuid} and status>=4")->sum('amount_total'); - $teamsDirect = DataUser::mk()->where(['pid1' => $uuid])->whereIn('vip_code', $vipTeam)->count(); - $teamsIndirect = DataUser::mk()->where(['pid2' => $uuid])->whereIn('vip_code', $vipTeam)->count(); - $teamsUsers = $teamsDirect + $teamsIndirect; - // 动态计算用户等级 - foreach ($levels as $item) { - $l1 = empty($item['goods_vip_status']) || $user['buy_vip_entry'] > 0; - $l2 = empty($item['teams_users_status']) || $item['teams_users_number'] <= $teamsUsers; - $l3 = empty($item['order_amount_status']) || $item['order_amount_number'] <= $orderAmount; - $l4 = empty($item['teams_direct_status']) || $item['teams_direct_number'] <= $teamsDirect; - $l5 = empty($item['teams_indirect_status']) || $item['teams_indirect_number'] <= $teamsIndirect; - if ( - ($item['upgrade_type'] == 0 && ($l1 || $l2 || $l3 || $l4 || $l5)) /* 满足任何条件可以等级 */ - || - ($item['upgrade_type'] == 1 && ($l1 && $l2 && $l3 && $l4 && $l5)) /* 满足所有条件可以等级 */ - ) { - [$vipName, $vipCode] = [$item['name'], $item['number']]; - break; - } - } - // 购买入会商品升级 - $query = ShopOrderItem::mk()->alias('b')->join('shop_order a', 'b.order_no=a.order_no'); - $tmpCode = $query->whereRaw("a.uuid={$uuid} and a.payment_status=1 and a.status>=4 and b.vip_entry=1")->max('b.vip_upgrade'); - if ($tmpCode > $vipCode && isset($levels[$tmpCode])) { - [$vipName, $vipCode] = [$levels[$tmpCode]['name'], $levels[$tmpCode]['number']]; - } else { - $orderNo = null; - } - // 后台余额充值升级 - $tmpCode = DataUserBalance::mk()->where(['uuid' => $uuid, 'deleted' => 0])->max('upgrade'); - if ($tmpCode > $vipCode && isset($levels[$tmpCode])) { - [$vipName, $vipCode] = [$levels[$tmpCode]['name'], $levels[$tmpCode]['number']]; - } - // 统计用户订单金额 - $orderAmountTotal = ShopOrder::mk()->whereRaw("uuid={$uuid} and status>=4")->sum('amount_goods'); - $teamsAmountDirect = ShopOrder::mk()->whereRaw("puid1={$uuid} and status>=4")->sum('amount_goods'); - $teamsAmountIndirect = ShopOrder::mk()->whereRaw("puid2={$uuid} and status>=4")->sum('amount_goods'); - // 更新用户团队数据 - $data = [ - 'vip_name' => $vipName, - 'vip_code' => $vipCode, - 'teams_users_total' => $teamsUsers, - 'teams_users_direct' => $teamsDirect, - 'teams_users_indirect' => $teamsIndirect, - 'teams_amount_total' => $teamsAmountDirect + $teamsAmountIndirect, - 'teams_amount_direct' => $teamsAmountDirect, - 'teams_amount_indirect' => $teamsAmountIndirect, - 'order_amount_total' => $orderAmountTotal, - ]; - if (!empty($orderNo)) $data['vip_order'] = $orderNo; - if ($data['vip_code'] !== $user['vip_code']) $data['vip_datetime'] = date('Y-m-d H:i:s'); - DataUser::mk()->where(['id' => $uuid])->update($data); - // 用户升级事件 - if ($user['vip_code'] < $vipCode) $this->app->event->trigger('UserUpgradeLevel', [ - 'uuid' => $user['id'], 'order_no' => $orderNo, 'vip_code_old' => $user['vip_code'], 'vip_code_new' => $vipCode, - ]); - return !($parent && $user['pid1'] > 0) || $this->upgrade($user['pid1'], false); - } -} \ No newline at end of file diff --git a/app/data/service/payment/AlipayPaymentService.php b/app/data/service/payment/AlipayPaymentService.php deleted file mode 100644 index 447cd7a48..000000000 --- a/app/data/service/payment/AlipayPaymentService.php +++ /dev/null @@ -1,146 +0,0 @@ -type])) { - $tradeType = static::TYPES[$this->type]['type']; - } else { - throw new Exception(sprintf('支付类型[%s]未配置定义!', $this->type)); - } - $this->config['notify_url'] = sysuri("@data/api.notify/alipay/scene/order/param/{$this->code}", [], false, true); - if (in_array($tradeType, [static::PAYMENT_ALIPAY_WAP, static::PAYMENT_ALIPAY_WEB])) { - if (empty($paymentReturn)) { - throw new Exception('支付回跳地址不能为空!'); - } else { - $this->config['return_url'] = $paymentReturn; - } - } - if ($tradeType === static::PAYMENT_WECHAT_APP) { - $payment = App::instance($this->config); - } elseif ($tradeType === static::PAYMENT_ALIPAY_WAP) { - $payment = Wap::instance($this->config); - } elseif ($tradeType === static::PAYMENT_ALIPAY_WEB) { - $payment = Web::instance($this->config); - } else { - throw new Exception("支付类型[{$tradeType}]暂时不支持!"); - } - $data = ['out_trade_no' => $orderNo, 'total_amount' => $paymentAmount, 'subject' => $paymentTitle]; - if (!empty($paymentRemark)) $data['body'] = $paymentRemark; - $result = $payment->apply($data); - // 创建支付记录 - $this->createPaymentAction($orderNo, $paymentTitle, $paymentAmount); - // 返回支付参数 - return ['result' => $result]; - } catch (Exception $exception) { - throw $exception; - } catch (\Exception $exception) { - throw new Exception($exception->getMessage(), $exception->getCode()); - } - } - - /** - * 支付结果处理 - * @return string - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function notify(): string - { - $notify = App::instance($this->config)->notify(); - if (in_array($notify['trade_status'], ['TRADE_SUCCESS', 'TRADE_FINISHED'])) { - if ($this->updatePaymentAction($notify['out_trade_no'], $notify['trade_no'], $notify['total_amount'])) { - return 'success'; - } else { - return 'error'; - } - } else { - return 'success'; - } - } - - /** - * 查询订单数据 - * @param string $orderNo - * @return array - * @throws InvalidResponseException - * @throws LocalCacheException - */ - public function query(string $orderNo): array - { - return App::instance($this->config)->query($orderNo); - } - - /** - * 支付服务初始化 - * @return $this - */ - protected function initialize(): AlipayPaymentService - { - $this->config = [ - // 沙箱模式 - 'debug' => false, - // 签名类型(RSA|RSA2) - 'sign_type' => "RSA2", - // 应用ID - 'appid' => $this->params['alipay_appid'], - // 支付宝公钥 (1行填写,特别注意,这里是支付宝公钥,不是应用公钥,最好从开发者中心的网页上去复制) - 'public_key' => $this->_trimCertHeader($this->params['alipay_public_key']), - // 支付宝私钥 (1行填写) - 'private_key' => $this->_trimCertHeader($this->params['alipay_private_key']), - // 支付成功通知地址 - 'notify_url' => '', - // 网页支付回跳地址 - 'return_url' => '', - ]; - return $this; - } - - /** - * 去除证书内容前后缀 - * @param string $content - * @return string - */ - private function _trimCertHeader(string $content): string - { - return preg_replace(['/\s+/', '/-{5}.*?-{5}/'], '', $content); - } -} \ No newline at end of file diff --git a/app/data/service/payment/BalancePyamentService.php b/app/data/service/payment/BalancePyamentService.php deleted file mode 100644 index 0c05174da..000000000 --- a/app/data/service/payment/BalancePyamentService.php +++ /dev/null @@ -1,88 +0,0 @@ -where(['order_no' => $orderNo])->find(); - if (empty($order)) throw new Exception("订单不存在"); - if ($order['status'] !== 2) throw new Exception("不可发起支付"); - // 创建支付行为 - $this->createPaymentAction($orderNo, $paymentTitle, $paymentAmount); - // 检查能否支付 - [$total, $count] = UserBalanceService::instance()->amount($order['uuid'], [$orderNo]); - if ($paymentAmount > $total - $count) throw new Exception("可抵扣余额不足"); - try { - // 扣减用户余额 - $this->app->db->transaction(function () use ($order, $paymentAmount) { - // 更新订单余额 - ShopOrder::mk()->where(['order_no' => $order['order_no']])->update([ - 'payment_balance' => $paymentAmount, - ]); - // 扣除余额金额 - data_save(DataUserBalance::mk(), [ - 'uuid' => $order['uuid'], - 'code' => "KC{$order['order_no']}", - 'name' => "账户余额支付", - 'remark' => "支付订单 {$order['order_no']} 的扣除余额 {$paymentAmount} 元", - 'amount' => -$paymentAmount, - ], 'code'); - // 更新支付行为 - $this->updatePaymentAction($order['order_no'], CodeExtend::uniqidDate(20), $paymentAmount, '账户余额支付'); - }); - // 刷新用户余额 - UserBalanceService::instance()->amount($order['uuid']); - return ['code' => 1, 'info' => '余额支付完成']; - } catch (\Exception $exception) { - return ['code' => 0, 'info' => $exception->getMessage()]; - } - } -} \ No newline at end of file diff --git a/app/data/service/payment/EmptyPaymentService.php b/app/data/service/payment/EmptyPaymentService.php deleted file mode 100644 index 5d27087b5..000000000 --- a/app/data/service/payment/EmptyPaymentService.php +++ /dev/null @@ -1,63 +0,0 @@ -where(['order_no' => $orderNo])->find(); - if (empty($order)) throw new Exception("订单不存在"); - if ($order['status'] !== 2) throw new Exception("不可发起支付"); - // 创建支付行为 - $this->createPaymentAction($orderNo, $paymentTitle, $paymentAmount); - // 更新支付行为 - $this->updatePaymentAction($orderNo, CodeExtend::uniqidDate(20), $paymentAmount, '无需支付'); - return ['code' => 1, 'info' => '订单无需支付']; - } -} \ No newline at end of file diff --git a/app/data/service/payment/JoinpayPaymentService.php b/app/data/service/payment/JoinpayPaymentService.php deleted file mode 100644 index 23ff1efd8..000000000 --- a/app/data/service/payment/JoinpayPaymentService.php +++ /dev/null @@ -1,171 +0,0 @@ -type])) { - $tradeType = static::TYPES[$this->type]['type']; - } else { - throw new Exception(sprintf('支付类型[%s]未配置定义!', $this->type)); - } - $data = [ - 'p0_Version' => '1.0', - 'p1_MerchantNo' => $this->mchid, - 'p2_OrderNo' => $orderNo, - 'p3_Amount' => $paymentAmount, - 'p4_Cur' => '1', - 'p5_ProductName' => $paymentTitle, - 'p6_ProductDesc' => $paymentRemark, - 'p9_NotifyUrl' => sysuri("@data/api.notify/joinpay/scene/order/param/{$this->code}", [], false, true), - 'q1_FrpCode' => $tradeType ?? '', - 'q5_OpenId' => $openid, - 'q7_AppId' => $this->appid, - 'qa_TradeMerchantNo' => $this->trade, - ]; - if (empty($data['q5_OpenId'])) unset($data['q5_OpenId']); - $this->uri = 'https://www.joinpay.com/trade/uniPayApi.action'; - $result = $this->_doReuest($data); - if (is_array($result) && isset($result['ra_Code']) && intval($result['ra_Code']) === 100) { - // 创建支付记录 - $this->createPaymentAction($orderNo, $paymentTitle, $paymentAmount); - // 返回支付参数 - return json_decode($result['rc_Result'], true); - } elseif (is_array($result) && isset($result['rb_CodeMsg'])) { - throw new Exception($result['rb_CodeMsg']); - } else { - throw new Exception('获取预支付码失败!'); - } - } catch (Exception $exception) { - throw $exception; - } catch (\Exception $exception) { - throw new Exception($exception->getMessage(), $exception->getCode()); - } - } - - /** - * 执行数据请求 - * @param array $data - * @return array - */ - private function _doReuest(array $data = []): array - { - $data['hmac'] = $this->_doSign($data); - return json_decode(HttpExtend::post($this->uri, $data), true); - } - - /** - * 请求数据签名 - * @param array $data - * @return string - */ - private function _doSign(array $data): string - { - ksort($data); - unset($data['hmac']); - return md5(join('', $data) . $this->mchkey); - } - - /** - * 查询订单数据 - * @param string $orderNo - * @return array - */ - public function query(string $orderNo): array - { - $this->uri = 'https://www.joinpay.com/trade/queryOrder.action'; - return $this->_doReuest(['p1_MerchantNo' => $this->mchid, 'p2_OrderNo' => $orderNo]); - } - - /** - * 支付结果处理 - * @return string - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function notify(): string - { - $notify = $this->app->request->get(); - foreach ($notify as &$item) $item = urldecode($item); - if (empty($notify['hmac']) || $notify['hmac'] !== $this->_doSign($notify)) { - return 'error'; - } - if (isset($notify['r6_Status']) && intval($notify['r6_Status']) === 100) { - if ($this->updatePaymentAction($notify['r2_OrderNo'], $notify['r9_BankTrxNo'], $notify['r3_Amount'])) { - return 'success'; - } else { - return 'error'; - } - } else { - return 'success'; - } - } - - /** - * 汇聚支付服务初始化 - * @return JoinpayPaymentService - */ - protected function initialize(): JoinpayPaymentService - { - $this->appid = $this->params['joinpay_appid']; - $this->trade = $this->params['joinpay_trade']; - $this->mchid = $this->params['joinpay_mch_id']; - $this->mchkey = $this->params['joinpay_mch_key']; - return $this; - } -} \ No newline at end of file diff --git a/app/data/service/payment/VoucherPaymentService.php b/app/data/service/payment/VoucherPaymentService.php deleted file mode 100644 index 862ca9532..000000000 --- a/app/data/service/payment/VoucherPaymentService.php +++ /dev/null @@ -1,60 +0,0 @@ -where(['order_no' => $orderNo])->find(); - if (empty($order)) throw new Exception("订单不存在"); - if ($order['status'] !== 2) throw new Exception("不可发起支付"); - if (empty($paymentImage)) throw new Exception('支付凭证不能为空'); - $this->updateOrder($orderNo, CodeExtend::uniqidDate(20), $paymentAmount, '单据凭证支付', $paymentImage); - return ['code' => 1, 'info' => '支付凭证上传成功!']; - } -} \ No newline at end of file diff --git a/app/data/service/payment/WechatPaymentService.php b/app/data/service/payment/WechatPaymentService.php deleted file mode 100644 index 9bcdb8ebd..000000000 --- a/app/data/service/payment/WechatPaymentService.php +++ /dev/null @@ -1,126 +0,0 @@ -type])) { - $tradeType = static::TYPES[$this->type]['type']; - } else { - throw new Exception(sprintf('支付类型[%s]未配置定义!', $this->type)); - } - $body = empty($paymentRemark) ? $paymentTitle : ($paymentTitle . '-' . $paymentRemark); - $data = [ - 'body' => $body, - 'openid' => $openid, - 'attach' => $this->code, - 'out_trade_no' => $orderNo, - 'trade_type' => $tradeType ?: '', - 'total_fee' => $paymentAmount * 100, - 'notify_url' => sysuri("@data/api.notify/wxpay/scene/order/param/{$this->code}", [], false, true), - 'spbill_create_ip' => $this->app->request->ip(), - ]; - if (empty($data['openid'])) unset($data['openid']); - $info = $this->payment->create($data); - if ($info['return_code'] === 'SUCCESS' && $info['result_code'] === 'SUCCESS') { - // 创建支付记录 - $this->createPaymentAction($orderNo, $paymentTitle, $paymentAmount); - // 返回支付参数 - return $this->payment->jsapiParams($info['prepay_id']); - } - throw new Exception($info['err_code_des'] ?? '获取预支付码失败!'); - } catch (Exception $exception) { - throw $exception; - } catch (\Exception $exception) { - throw new Exception($exception->getMessage(), $exception->getCode()); - } - } - - /** - * 查询微信支付订单 - * @param string $orderNo 订单单号 - * @return array - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function query(string $orderNo): array - { - $result = $this->payment->query(['out_trade_no' => $orderNo]); - if (isset($result['return_code']) && isset($result['result_code']) && isset($result['attach'])) { - if ($result['return_code'] === 'SUCCESS' && $result['result_code'] === 'SUCCESS') { - $this->updatePaymentAction($result['out_trade_no'], $result['cash_fee'] / 100, $result['transaction_id']); - } - } - return $result; - } - - /** - * 支付结果处理 - * @return string - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function notify(): string - { - $notify = $this->payment->getNotify(); - if ($notify['result_code'] == 'SUCCESS' && $notify['return_code'] == 'SUCCESS') { - if ($this->updatePaymentAction($notify['out_trade_no'], $notify['transaction_id'], $notify['cash_fee'] / 100)) { - return $this->payment->getNotifySuccessReply(); - } else { - return 'error'; - } - } else { - return $this->payment->getNotifySuccessReply(); - } - } - - /** - * 微信支付服务初始化 - * @return WechatPaymentService - */ - protected function initialize(): WechatPaymentService - { - $this->payment = Order::instance([ - 'appid' => $this->params['wechat_appid'], - 'mch_id' => $this->params['wechat_mch_id'], - 'mch_key' => $this->params['wechat_mch_key'], - 'cache_path' => $this->app->getRootPath() . 'runtime' . DIRECTORY_SEPARATOR . 'wechat', - ]); - return $this; - } -} \ No newline at end of file diff --git a/app/data/sys.php b/app/data/sys.php deleted file mode 100644 index 14bd49f19..000000000 --- a/app/data/sys.php +++ /dev/null @@ -1,59 +0,0 @@ -request->isCli()) { - // 动态注册操作指令 - Console::starting(function (Console $console) { - $console->addCommand(OrderClean::class); - $console->addCommand(UserAgent::class); - $console->addCommand(UserAmount::class); - $console->addCommand(UserUpgrade::class); - $console->addCommand(UserTransfer::class); - }); -} else { - // 注册订单支付处理事件 - $app->event->listen('ShopOrderPayment', function ($orderNo) use ($app) { - $app->log->notice("订单 {$orderNo} 支付事件,执行用户升级行为"); - OrderService::instance()->upgrade($orderNo); - - $app->log->notice("订单 {$orderNo} 支付事件,执行用户返利行为"); - RebateService::instance()->execute($orderNo); - - $app->log->notice("订单 {$orderNo} 支付事件,执行发放余额行为"); - UserBalanceService::instance()->confirm($orderNo); - }); - - // 注册订单确认支付事件 - $app->event->listen('ShopOrderConfirm', function ($orderNo) use ($app) { - $app->log->notice("订单 {$orderNo} 确认事件,执行返利确认行为"); - UserRebateService::instance()->confirm($orderNo); - }); -} - -if (!function_exists('show_goods_spec')) { - /** - * 商品规格过滤显示 - * @param string $spec 原规格内容 - * @return string - */ - function show_goods_spec(string $spec): string - { - $specs = []; - foreach (explode(';;', $spec) as $sp) { - $specs[] = explode('::', $sp)[1]; - } - return join(' ', $specs); - } -} \ No newline at end of file diff --git a/app/data/view/base/config/cropper.html b/app/data/view/base/config/cropper.html deleted file mode 100644 index fb0281699..000000000 --- a/app/data/view/base/config/cropper.html +++ /dev/null @@ -1,66 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="content"} -
-
-
-

1. 上传邀请码的背景图片( 支持 PNG 和 JPG 格式 )

-

2. 选择需要绘制二维码的区域,生成相对图片坐标参数

-

3. 保存位置数据,下次可直接显示

-
-
-
- img -
-
- - -
-
- -
- -
- - -{/block} \ No newline at end of file diff --git a/app/data/view/base/config/page_form.html b/app/data/view/base/config/page_form.html deleted file mode 100644 index ad3c1961b..000000000 --- a/app/data/view/base/config/page_form.html +++ /dev/null @@ -1,37 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name='content'} -
-
- - - -
- 页面名称 - Page Content - -
- -
- -
- - -
-
- -
- - -{/block} \ No newline at end of file diff --git a/app/data/view/base/config/page_home.html b/app/data/view/base/config/page_home.html deleted file mode 100644 index 1151fe2c5..000000000 --- a/app/data/view/base/config/page_home.html +++ /dev/null @@ -1,25 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name='content'} -
- {foreach $pageTypes as $key=>$type} -
- -
-
-
编辑页面内容
-
{$type|default=''}
-
- -
- -
-
编辑页面内容
-
{$type|default=''}
-
- - -
- {/foreach} -
-{/block} \ No newline at end of file diff --git a/app/data/view/base/config/slider.html b/app/data/view/base/config/slider.html deleted file mode 100644 index cb0597833..000000000 --- a/app/data/view/base/config/slider.html +++ /dev/null @@ -1,124 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="content"} -
-
-
- {$title|default='图片数据管理'} ( 建议上传图片尺寸为 690px 250px ) -
-
-
- -
-
-
- -
-
-
-
- -
-
-
- -
- - -
-
- - - - - - -{/block} \ No newline at end of file diff --git a/app/data/view/base/config/wxapp.html b/app/data/view/base/config/wxapp.html deleted file mode 100644 index c3078f69b..000000000 --- a/app/data/view/base/config/wxapp.html +++ /dev/null @@ -1,30 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="content"} -
-
-
- {$title|default='小程序接口配置'} ( 微信公众号平台配置获取 ) -
-
- - - - - -
-
- -
-
-
-
-{/block} \ No newline at end of file diff --git a/app/data/view/base/discount/form.html b/app/data/view/base/discount/form.html deleted file mode 100644 index b8b746ca6..000000000 --- a/app/data/view/base/discount/form.html +++ /dev/null @@ -1,68 +0,0 @@ -
-
- - - -
- 用户等级折扣 - Discount Scheme - - - - - - - - - {foreach $levels as $level} - - - - - {/foreach} - -
用户等级原价比例 ( 0.00% - 100.00% )
- [ VIP{$level.number|default='0'} ] {$level.name|default=''} - - -
-
- - - -
- {notempty name='vo.id'}{/notempty} - -
- - -
-
- -
- - - - - - diff --git a/app/data/view/base/discount/index.html b/app/data/view/base/discount/index.html deleted file mode 100644 index 3240158da..000000000 --- a/app/data/view/base/discount/index.html +++ /dev/null @@ -1,74 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - -{/block} - -{block name='content'} -
- 特别注意:当用户等级删除或修改之后,此处折扣方案也需要重新配置! -
-
- - {notempty name='list'} - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - {/foreach} - -
- - - - 折扣方案等级折扣使用状态
- - - - {$vo.name|default=''} - {foreach $vo.items as $v} - - VIP{$v.level} : {$v.discount+0}% - - {/foreach} - - {if $vo.status eq 0}已禁用{elseif $vo.status eq 1}使用中{/if} - - - - 编 辑 - - - - 禁 用 - - 启 用 - - - - 删 除 - - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} \ No newline at end of file diff --git a/app/data/view/base/message/form.html b/app/data/view/base/message/form.html deleted file mode 100644 index aaf356b61..000000000 --- a/app/data/view/base/message/form.html +++ /dev/null @@ -1,38 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name='content'} -
-
- - - -
- 通知内容 - Notify Content - -
- -
- {notempty name='vo.id'}{/notempty} - {notempty name='vo.code'}{/notempty} - -
- - -
-
- -
- - -{/block} \ No newline at end of file diff --git a/app/data/view/base/message/index.html b/app/data/view/base/message/index.html deleted file mode 100644 index d5b7b9335..000000000 --- a/app/data/view/base/message/index.html +++ /dev/null @@ -1,71 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - - - - - - -{/block} - -{block name='content'} -
- {include file='base/message/index_search'} - - {notempty name='list'} - - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - - {/foreach} - -
- - - - 通知标题阅读次数通知状态创建时间
- - - - {$vo.name|default=''}已阅读 {$vo.num_read|default=''}{if $vo.status eq 0}已禁用{elseif $vo.status eq 1}已激活{/if}{$vo.create_at|format_datetime} - - - 编 辑 - - - - 禁 用 - - 激 活 - - - - 删 除 - - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} \ No newline at end of file diff --git a/app/data/view/base/message/index_search.html b/app/data/view/base/message/index_search.html deleted file mode 100644 index 4aedd9cad..000000000 --- a/app/data/view/base/message/index_search.html +++ /dev/null @@ -1,39 +0,0 @@ -
- 条件搜索 - - - -
diff --git a/app/data/view/base/payment/form.html b/app/data/view/base/payment/form.html deleted file mode 100644 index 9fc169b19..000000000 --- a/app/data/view/base/payment/form.html +++ /dev/null @@ -1,102 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name='content'} -
-
- -
- 支付方式图标 - Payment Image - -
- - - -
- 支付通道方式 - Payment Channel - -
- -
{include file='base/payment/form_wechat'}
-
{include file='base/payment/form_alipay'}
-
{include file='base/payment/form_joinpay'}
-
{include file='base/payment/form_voucher'}
- -
- 支付描述 - Payment Remark - -
- -
- {notempty name='vo.id'}{/notempty} - {notempty name='vo.code'}{/notempty} - -
- - -
- -
- -
-{/block} - -{block name='script'} - -{/block} \ No newline at end of file diff --git a/app/data/view/base/payment/form_alipay.html b/app/data/view/base/payment/form_alipay.html deleted file mode 100644 index 1ab814583..000000000 --- a/app/data/view/base/payment/form_alipay.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/data/view/base/payment/form_joinpay.html b/app/data/view/base/payment/form_joinpay.html deleted file mode 100644 index 10bed37c9..000000000 --- a/app/data/view/base/payment/form_joinpay.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/data/view/base/payment/form_voucher.html b/app/data/view/base/payment/form_voucher.html deleted file mode 100644 index 5166fba82..000000000 --- a/app/data/view/base/payment/form_voucher.html +++ /dev/null @@ -1,9 +0,0 @@ -
- 线下支付二维码 - Payment Qrcode Image - -
\ No newline at end of file diff --git a/app/data/view/base/payment/form_wechat.html b/app/data/view/base/payment/form_wechat.html deleted file mode 100644 index 3abd6cda0..000000000 --- a/app/data/view/base/payment/form_wechat.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/data/view/base/payment/index.html b/app/data/view/base/payment/index.html deleted file mode 100644 index 31db6d1c8..000000000 --- a/app/data/view/base/payment/index.html +++ /dev/null @@ -1,73 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - - - - - -{/block} - -{block name='content'} -
- {include file='base/payment/index_search'} - - {notempty name='list'} - - - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - - - {/foreach} - -
- - - - 支付名称支付编号支付方式使用状态创建时间
- - - - -
- {$vo.name|default=''} -
{$vo.code|default=''}{$types[$vo.type]['name']??$vo.type}{if $vo.status eq 0}已禁用{elseif $vo.status eq 1}已激活{/if}{$vo.create_at|format_datetime} - - 编 辑 - - - - 禁 用 - - 激 活 - - - - 删 除 - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} \ No newline at end of file diff --git a/app/data/view/base/payment/index_search.html b/app/data/view/base/payment/index_search.html deleted file mode 100644 index d7432c781..000000000 --- a/app/data/view/base/payment/index_search.html +++ /dev/null @@ -1,60 +0,0 @@ -
- 条件搜索 - - -
- diff --git a/app/data/view/base/postage/company/form.html b/app/data/view/base/postage/company/form.html deleted file mode 100644 index 8028989fd..000000000 --- a/app/data/view/base/postage/company/form.html +++ /dev/null @@ -1,42 +0,0 @@ -
- -
- - - - - - - - - - -
- -
- {notempty name='vo.id'}{/notempty} - -
- - -
-
diff --git a/app/data/view/base/postage/company/index.html b/app/data/view/base/postage/company/index.html deleted file mode 100644 index b8ab1f33e..000000000 --- a/app/data/view/base/postage/company/index.html +++ /dev/null @@ -1,92 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - - - - - - - - - - - - - - - - - -{/block} - -{block name="content"} -
-
    - {foreach ['index'=>'快递公司','recycle'=>'回 收 站'] as $k=>$v} - {if isset($type) and $type eq $k} -
  • {$v}
  • - {else} -
  • {$v}
  • - {/if}{/foreach} -
-
- {include file='base/postage/company/index_search'} - - {notempty name='list'} - - - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - - - {/foreach} - -
- - - - 快递名称快递鸟接口编码快递100百度编码快递100接口编码创建时间
- - - - {$vo.name|default=''}{$vo.code_1|default='-'}{$vo.code_2|default='-'}{$vo.code_3|default='-'}{$vo.create_at|format_datetime} - - 编 辑 - - - - 禁 用 - - 激 活 - - - - 删 除 - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-
-{/block} \ No newline at end of file diff --git a/app/data/view/base/postage/company/index_search.html b/app/data/view/base/postage/company/index_search.html deleted file mode 100644 index 5d1865a21..000000000 --- a/app/data/view/base/postage/company/index_search.html +++ /dev/null @@ -1,31 +0,0 @@ -
- 条件搜索 - - -
\ No newline at end of file diff --git a/app/data/view/base/postage/template/form.html b/app/data/view/base/postage/template/form.html deleted file mode 100644 index 8db7437d6..000000000 --- a/app/data/view/base/postage/template/form.html +++ /dev/null @@ -1,338 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="content"} -
-
-
- -
- 配送区域计费规则 - Region - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
可配送区域首件(个)运费(元)续件(个)续费(元)
- 自定区域: -
- - {{ShowProvinceCityName(province)}} -
- 编辑 - 删除 -
- - - - - - - -
添加可配送区域和运费
- 默认区域: -
- - {{ShowProvinceCityName(province)}} -
-
- - - - - - - -
-
- -
- {notempty name='vo.code'}{/notempty} -
- -
-
-
- -
-
-
-
-
-
- 全选 - 取消 -
-
-
-
- - {{x.name}} - {{x.name}} -
-
-
-
-
-
-
- 全选 - 取消 - -
-
- -
-
-
-
-
- -
-
-
- - - - -{/block} diff --git a/app/data/view/base/postage/template/form_region.html b/app/data/view/base/postage/template/form_region.html deleted file mode 100644 index 668e779a7..000000000 --- a/app/data/view/base/postage/template/form_region.html +++ /dev/null @@ -1,132 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="content"} -
-
-
- 全国配送省份 - 全选 -
-
-
- -
-
-
- -
-
配送城市
-
-
- -
-
-
- -
-
配送区域
-
-
- -
-
-
- -
-
- - -
-
- - - - -{/block} \ No newline at end of file diff --git a/app/data/view/base/postage/template/index.html b/app/data/view/base/postage/template/index.html deleted file mode 100644 index 505045cbb..000000000 --- a/app/data/view/base/postage/template/index.html +++ /dev/null @@ -1,70 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - - - - - -{/block} - -{block name="content"} -
-
- {include file='base/postage/template/index_search'} - - {notempty name='list'} - - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - - {/foreach} - -
- - - - 模板编号模板名称使用状态创建时间
- - - - {$vo.code|default=''}{$vo.name|default=''}{if $vo.status eq 0}已禁用{elseif $vo.status eq 1}已激活{/if}{$vo.create_at|format_datetime} - - 编 辑 - - - - 禁 用 - - 激 活 - - - - 删 除 - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-
-{/block} \ No newline at end of file diff --git a/app/data/view/base/postage/template/index_search.html b/app/data/view/base/postage/template/index_search.html deleted file mode 100644 index c5e21e9ab..000000000 --- a/app/data/view/base/postage/template/index_search.html +++ /dev/null @@ -1,46 +0,0 @@ -
- 条件搜索 - - -
- diff --git a/app/data/view/base/upgrade/form.html b/app/data/view/base/upgrade/form.html deleted file mode 100644 index 592cbb8ba..000000000 --- a/app/data/view/base/upgrade/form.html +++ /dev/null @@ -1,175 +0,0 @@ - - -
-
- -
- 用户等级 -
-
- 等级序号Serial - -
- -
-
- -
-
-
- 升级规则 -
- {php}$vo['upgrade_type'] = $vo['upgrade_type'] ?? 1;{/php} - {foreach [1=>'达成所有升级条件',0=>'达成任何升级条件'] as $k => $v} - {if isset($vo.upgrade_type) and $vo.upgrade_type eq $k} - - {else} - - {/if}{/foreach} -
-
-
-
-
- 团队计数 -
- {php}$vo['upgrade_team'] = $vo['upgrade_team'] ?? 1;{/php} - {foreach [1=>'参与团队人数统计',0=>'不参与团队人数统计'] as $k => $v} - {if isset($vo.upgrade_team) and $vo.upgrade_team eq $k} - - {else} - - {/if}{/foreach} -
-
-
-
- -
- 升级条件 -
-
- -
-
- -
-
- -
-
- -
-
- -
-
默认等级,无需配置升级规则
-
-
- -
- 发放奖利 -
- {foreach $prizes as $prize}{if isset($vo.rebate_rule) && is_array($vo.rebate_rule) && in_array($prize.code, $vo.rebate_rule)} - - {else} - - {/if}{/foreach} -
-
- -
- 等级描述 - -
- -
- {if isset($vo.id)}{/if} - {if isset($vo.number)}{/if} - -
- - -
-
- - -
diff --git a/app/data/view/base/upgrade/index.html b/app/data/view/base/upgrade/index.html deleted file mode 100644 index 4b20f1fcb..000000000 --- a/app/data/view/base/upgrade/index.html +++ /dev/null @@ -1,77 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - - - - - -{/block} - -{block name='content'} -
- 特别注意:用户等级配置不能随意修改或删除,会影响系统结算与用户升级! -
- -
- - {notempty name='list'} - - - - - - - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - - - - - - - {/foreach} - -
- - 用户等级团队计数升级规则入会礼包团队总数直属团队间接团队订单金额奖利规则使用状态
- - [ VIP{$vo.number} ] {$vo.name|default=''}{if $vo.upgrade_team>0} {else} - {/if}{if $vo.upgrade_type eq 1}全部完成{else}任何条件{/if}{if $vo.goods_vip_status>0} {else} - {/if}{if $vo.teams_users_status>0} {$vo.teams_users_number} 人 {else} - {/if}{if $vo.teams_direct_status>0} {$vo.teams_direct_number} 人 {else} - {/if}{if $vo.teams_indirect_status>0} {$vo.teams_indirect_number} 人 {else} - {/if}{if $vo.order_amount_status>0} {$vo.order_amount_number+0} 元 {else} - {/if}{foreach $vo.rebate_rule as $v}{$v}{/foreach}{if $vo.status eq 0}已禁用{elseif $vo.status eq 1}使用中{/if} - - 编 辑 - - - - 禁 用 - - 启 用 - - - - 删 除 - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} \ No newline at end of file diff --git a/app/data/view/news/item/form.html b/app/data/view/news/item/form.html deleted file mode 100644 index 37f8bf7db..000000000 --- a/app/data/view/news/item/form.html +++ /dev/null @@ -1,67 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name='content'} -
-
- {notempty name='marks'} -
- 文章标签 - Mark Name -
- {foreach $marks as $tag}{if isset($vo.mark) && is_array($vo.mark) && in_array($tag.name, $vo.mark)} - - {else} - - {/if}{/foreach} -
-
- {/notempty} - -
- 文章封面 - Conver Image - -
- - - - - -
- 富文本内容 - Article Content - -
- -
- {notempty name='vo.id'}{/notempty} - {notempty name='vo.code'}{/notempty} - -
- - -
-
- -
- - -{/block} \ No newline at end of file diff --git a/app/data/view/news/item/index.html b/app/data/view/news/item/index.html deleted file mode 100644 index 79238b03e..000000000 --- a/app/data/view/news/item/index.html +++ /dev/null @@ -1,78 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - - - - - - - - - -{/block} - -{block name='content'} -
- {include file='news/item/index_search'} - - {notempty name='list'} - - - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - - - {/foreach} - -
- - - - 文章编号文章名称搜索标签文章状态创建时间
- - - - {$vo.code|default=''}{$vo.name|default=''}{notempty name='vo.mark'}{foreach $vo.mark as $tag}{$tag}{/foreach}{/notempty}
{if $vo.status eq 0}已禁用{elseif $vo.status eq 1}已激活{/if}{$vo.create_at|format_datetime} - - - 编 辑 - - - - 禁 用 - - - - 激 活 - - - - 删 除 - - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} \ No newline at end of file diff --git a/app/data/view/news/item/index_search.html b/app/data/view/news/item/index_search.html deleted file mode 100644 index f0dd9bd05..000000000 --- a/app/data/view/news/item/index_search.html +++ /dev/null @@ -1,46 +0,0 @@ -
- 条件搜索 - - -
- \ No newline at end of file diff --git a/app/data/view/news/item/select.html b/app/data/view/news/item/select.html deleted file mode 100644 index b7863d227..000000000 --- a/app/data/view/news/item/select.html +++ /dev/null @@ -1,42 +0,0 @@ -{extend name="../../admin/view/full"} - -{block name='content'} -
- {include file='news/item/select_search'} - - {notempty name='list'} - - - - - - - - - {/notempty} - - {foreach $list as $key => $vo} - - - - - - - {/foreach} - -
文章标题文章状态创建时间
{$vo.name|default=''}{if $vo.status eq 0}已禁用{elseif $vo.status eq 1}已激活{/if}{$vo.create_at|format_datetime}选择文章
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} - -{block name='script'} - -{/block} diff --git a/app/data/view/news/item/select_search.html b/app/data/view/news/item/select_search.html deleted file mode 100644 index 5f4a324fe..000000000 --- a/app/data/view/news/item/select_search.html +++ /dev/null @@ -1,36 +0,0 @@ -
- 条件搜索 - -
\ No newline at end of file diff --git a/app/data/view/news/mark/form.html b/app/data/view/news/mark/form.html deleted file mode 100644 index 812b44d52..000000000 --- a/app/data/view/news/mark/form.html +++ /dev/null @@ -1,26 +0,0 @@ -
-
- - -
- 标签描述 - Mark Remark - -
-
- -
- {notempty name='vo.id'}{/notempty} - -
- - -
-
\ No newline at end of file diff --git a/app/data/view/news/mark/index.html b/app/data/view/news/mark/index.html deleted file mode 100644 index b52f35236..000000000 --- a/app/data/view/news/mark/index.html +++ /dev/null @@ -1,67 +0,0 @@ -{extend name="../../admin/view/full"} - -{block name='content'} -
- {include file='news/mark/index_search'} - - {notempty name='list'} - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - {/foreach} - -
- - - - 标签名称标签状态创建时间
- - - - {$vo.name|default=''}{if $vo.status eq 0}已禁用{elseif $vo.status eq 1}已激活{/if}{$vo.create_at|format_datetime} - - 编 辑 - - - - 禁 用 - - - - 激 活 - - - - 删 除 - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} - -
- -
- -
-{/block} - -{block name='script'} - -{/block} diff --git a/app/data/view/news/mark/index_search.html b/app/data/view/news/mark/index_search.html deleted file mode 100644 index ca8e7d609..000000000 --- a/app/data/view/news/mark/index_search.html +++ /dev/null @@ -1,38 +0,0 @@ -
- 条件搜索 - -
- diff --git a/app/data/view/shop/cate/form.html b/app/data/view/shop/cate/form.html deleted file mode 100644 index 7b0cdaec5..000000000 --- a/app/data/view/shop/cate/form.html +++ /dev/null @@ -1,44 +0,0 @@ -
-
- - -
- 商品分类图标 - Category Icon - - 可选,请上传商品分类图标,需要是 http 可访问的图片资源链接 -
- -
-
- {notempty name='vo.id'}{/notempty} -
- - -
- -
diff --git a/app/data/view/shop/cate/index.html b/app/data/view/shop/cate/index.html deleted file mode 100644 index ad79d4483..000000000 --- a/app/data/view/shop/cate/index.html +++ /dev/null @@ -1,73 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - - - - - -{/block} - -{block name="content"} -
- {notempty name='list'} - - - - - - - - - - - {foreach $list as $key=>$vo} - - - - - - - - - {/foreach} - -
- - - -
- - - - {$vo.spl|raw}{$vo.name}{$vo.remark|default=''}{eq name='vo.status' value='0'}已禁用{else}已激活{/eq} - - - 添 加 - - - - 编 辑 - - - - 激 活 - - - - 禁 用 - - - - 删 除 - - -
- {$pagehtml|raw|default=''} - {else} - 没有记录哦 - {/notempty} -
-{/block} diff --git a/app/data/view/shop/goods/form.html b/app/data/view/shop/goods/form.html deleted file mode 100644 index e6c8e1ece..000000000 --- a/app/data/view/shop/goods/form.html +++ /dev/null @@ -1,475 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="content"} -{include file='shop/goods/formstyle'} -
-
- - -
- 商品标签 - Mark Name -
- {foreach $marks as $mark}{if isset($vo.marks) && is_array($vo.marks) && in_array($mark, $vo.marks)} - - {else} - - {/if}{/foreach} -
-
- - - - - - - -
- 支付方式 - Goods Payment -
- {foreach $payments as $payment}{if isset($vo.payment) && is_array($vo.payment) && in_array($payment.code, $vo.payment)} - - {else} - - {/if}{/foreach} -
-
- - - - - - - - -
- 商品封面及轮播图片 - Cover and Carousel Pictures - - - - - - - - - - - -
商品封面轮播图片
- - - - - -
-
- -
-
-
- 商品返利配置 -
- {foreach ['非返利商品,其代理不会获得奖励','是返利商品,其代理将会获得奖励'] as $k => $v} - {if (isset($vo.rebate_type) and $vo.rebate_type eq $k) or (empty($vo.rebate_type) and $k eq 0)} - - {else} - - {/if}{/foreach} -
-
-
- 入会礼包配置 -
- {foreach ['非入会礼包,购买后不会升级等级','是入会礼包,购买后升级会员等级'] as $k=>$v} - {if (isset($vo.vip_entry) and $vo.vip_entry eq $k) or (empty($vo.vip_entry) and $k eq 0)} - - {else} - - {/if}{/foreach} -
-
- -
- 升级用户等级 - -
- -
- -
-
- 物流配送发货类型 -
- {foreach ['虚拟商品,无需物流配送','实物商品,需要物流配送'] as $k=>$v} - {if (isset($vo.truck_type) and $vo.truck_type eq $k) or (empty($vo.truck_type) and $k eq 0)} - - {else} - - {/if}{/foreach} -
-
- -
- 用户购买折扣方案 - -
- - -
- 限制最低购买等级 - -
- -
- 商品限购数量 - -
-
-
- -
- 商品规格及商品SKU绑定(规格填写后不允许再次修改) - -
- 增加规则分组 -

请完成属性修改后再编辑下面的规格信息,否则规格数据会丢失!

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
商品SKU 市场价格 销售价格 奖励余额 奖励积分 虚拟销量 快递计件 销售状态
- - - - - - - - - - - - - - - -
-

请注意商品的SKU尽量不要重复,也不能产生订单后再修改,否则会造成订单数据无法关联!

- -
- - - -
- 商品富文本详情 - -
- -
- {notempty name='vo.code'}{/notempty} - -
- - -
-
-
-{/block} - -{block name='script'} - - -{/block} \ No newline at end of file diff --git a/app/data/view/shop/goods/formstyle.html b/app/data/view/shop/goods/formstyle.html deleted file mode 100644 index 9ca2a9afe..000000000 --- a/app/data/view/shop/goods/formstyle.html +++ /dev/null @@ -1,96 +0,0 @@ - \ No newline at end of file diff --git a/app/data/view/shop/goods/index.html b/app/data/view/shop/goods/index.html deleted file mode 100644 index df9d2b48a..000000000 --- a/app/data/view/shop/goods/index.html +++ /dev/null @@ -1,139 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - - -{if isset($type) and $type eq 'index'} - - - -{else} - - - -{/if} - - - - -{/block} - -{block name="content"} -
-
    - {foreach ['index'=>'商品管理','recycle'=>'回 收 站'] as $k=>$v} - {if isset($type) and $type eq $k} -
  • {$v}
  • - {else} -
  • {$v}
  • - {/if}{/foreach} -
-
- {include file='shop/goods/index_search'} - - {notempty name='list'} - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - {/foreach} - -
- - - - 商品信息商品状态
- - - - - {notempty name='vo.cover'} -
- {/notempty} -
-
商品名称:{$vo.name|default='--'}
-
商品编号:{$vo.code|default='--'}
-
-
-
- {notempty name='vo.marks'}{foreach $vo.marks as $mark} - {$mark} - {/foreach}{/notempty} -
-
- {notempty name='vo.cateinfo'} - {:join('', $vo.cateinfo.names)} - {/notempty} -
-
- 累计库存 {$vo.stock_total} 件,剩余库存 {$vo.stock_total-$vo.stock_sales} 件 ( 已销售 {$vo.stock_sales} 件 ) -
- {eq name='vo.status' value='0'}已下架{else}销售中{/eq} - {eq name='vo.vip_entry' value='0'}非入会礼包{else}是入会礼包{/eq} - {eq name='vo.truck_type' value='0'}无需发货{else}需要发货{/eq} - {eq name='vo.rebate_type' value='0'}非返利商品{else}是返利商品{/eq} -
-
- - - 复 制 - - - - 编 辑 - - 编 辑 - - - {if isset($type) and $type eq 'index'} - {if isset($vo.status) and $vo.status eq 1} - - 下 架 - - 下 架 - - {else} - - 上 架 - - 上 架 - - {/if} - - 入 库 - - 入 库 - - - 删 除 - - {else} - - 恢 复 - - {/if} -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
- -
-{/block} \ No newline at end of file diff --git a/app/data/view/shop/goods/index_search.html b/app/data/view/shop/goods/index_search.html deleted file mode 100644 index c09ecc2ff..000000000 --- a/app/data/view/shop/goods/index_search.html +++ /dev/null @@ -1,116 +0,0 @@ -
- 条件搜索 - -
diff --git a/app/data/view/shop/goods/select.html b/app/data/view/shop/goods/select.html deleted file mode 100644 index c0c4656a3..000000000 --- a/app/data/view/shop/goods/select.html +++ /dev/null @@ -1,49 +0,0 @@ -{extend name="../../admin/view/full"} - -{block name="content"} -
- {include file='shop/goods/select_search'} - - {notempty name='list'} - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - {/foreach} - -
商品信息商品状态
- {notempty name='vo.cover'} -
- {/notempty} -
- 商品编号:{$vo.code|default='--'}
- 商品名称:{$vo.name|default='--'}
-
-
- 销售状态:{if $vo.status eq 0}已下架{else}销售中{/if}
- 剩余库存 {$vo.stock_total-$vo.stock_sales} 件 ( 已销售 {$vo.stock_sales} 件 )
-
选择商品
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} - -{block name='script'} - -{/block} diff --git a/app/data/view/shop/goods/select_search.html b/app/data/view/shop/goods/select_search.html deleted file mode 100644 index d5afd6c9c..000000000 --- a/app/data/view/shop/goods/select_search.html +++ /dev/null @@ -1,36 +0,0 @@ -
- 条件搜索 - -
diff --git a/app/data/view/shop/goods/stock.html b/app/data/view/shop/goods/stock.html deleted file mode 100644 index 6c1b1f2f5..000000000 --- a/app/data/view/shop/goods/stock.html +++ /dev/null @@ -1,100 +0,0 @@ -
-
- -
- 商品编号 - Goods Code -
{$vo.code|default=''}
-
- -
- 商品名称 - Goods Name -
{$vo.name|default=''}
-
- -
-
- 库存数据 - Goods Stock Data - - - - - - - - - - - - - - - - - - - - - - - -
商品规格市场价格销售价格库存统计总销统计库存剩余 - 入库数量 -
-
- - - - - - - - - - - - {foreach $vo.items as $goods} - - - - - - - - - - {/foreach} - -
{$goods.goods_spec|show_goods_spec}¥{$goods.price_market+0}¥{$goods.price_selling+0}{$goods.stock_total|default=0}{$goods.stock_sales|default=0}{$goods.stock_total-$goods.stock_sales} - - - -
-
-
-
-
- -
-
- - -
-
- - diff --git a/app/data/view/shop/mark/form.html b/app/data/view/shop/mark/form.html deleted file mode 100644 index 7544521d4..000000000 --- a/app/data/view/shop/mark/form.html +++ /dev/null @@ -1,26 +0,0 @@ -
-
- - -
- 标签描述 - Mark Remark - -
-
- -
- {notempty name='vo.id'}{/notempty} - -
- - -
-
\ No newline at end of file diff --git a/app/data/view/shop/mark/index.html b/app/data/view/shop/mark/index.html deleted file mode 100644 index df3e016d4..000000000 --- a/app/data/view/shop/mark/index.html +++ /dev/null @@ -1,70 +0,0 @@ -{extend name="../../admin/view/full"} - -{block name='content'} -
- {include file='shop/mark/index_search'} - - {notempty name='list'} - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - {/foreach} - -
- - - - 标签名称标签状态创建时间
- - - - {$vo.name|default=''}{if $vo.status eq 0}已禁用{elseif $vo.status eq 1}已激活{/if}{$vo.create_at|format_datetime} - - - 编 辑 - - - - 禁 用 - - - - 激 活 - - - - 删 除 - - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} - - -
- -
- -
-{/block} - -{block name='script'} - -{/block} \ No newline at end of file diff --git a/app/data/view/shop/mark/index_search.html b/app/data/view/shop/mark/index_search.html deleted file mode 100644 index 447a835af..000000000 --- a/app/data/view/shop/mark/index_search.html +++ /dev/null @@ -1,37 +0,0 @@ -
- 条件搜索 - -
\ No newline at end of file diff --git a/app/data/view/shop/mark/select.html b/app/data/view/shop/mark/select.html deleted file mode 100644 index 72a431b84..000000000 --- a/app/data/view/shop/mark/select.html +++ /dev/null @@ -1,40 +0,0 @@ -{extend name="../../admin/view/full"} - -{block name='content'} -
- - {notempty name='list'} - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - {/foreach} - -
标签名称标签状态
{$vo.title|default=''}{if $vo.status eq 0}已禁用{elseif $vo.status eq 1}已激活{/if}选 择
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} - -{block name='script'} - -{/block} \ No newline at end of file diff --git a/app/data/view/shop/order/audit.html b/app/data/view/shop/order/audit.html deleted file mode 100644 index ea00154fc..000000000 --- a/app/data/view/shop/order/audit.html +++ /dev/null @@ -1,47 +0,0 @@ -
- -
- -
- - 支付单证凭证 - {$vo.order_no} - 订单需要支付 {$vo.amount_real+0} 元 - -
- img -
-
- -
- 审核操作类型 - Audit type -
- {php} $status = 0; {/php} - {foreach [1 => '审核通过并完成订单支付', 0 => '驳回审核并取消订单'] as $k => $v} - {if $k eq $status} - - {else} - - {/if}{/foreach} -
-
- - - - -
- {notempty name='vo.id'}{/notempty} - {notempty name='vo.order_no'}{/notempty} - -
- - -
-
- -
diff --git a/app/data/view/shop/order/index.html b/app/data/view/shop/order/index.html deleted file mode 100644 index 54fe222bf..000000000 --- a/app/data/view/shop/order/index.html +++ /dev/null @@ -1,144 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - -{/block} - -{block name="content"} -
-
    - {php}$types = ['ta' => '全部订单', 't2' => '等待支付', 't3' => '等待审核', 't4' => '等待发货', 't5' => '等待收货', 't6' => '已经完成', 't0' => '已经取消'];{/php} - {foreach $types as $k=>$v}{if isset($type) and 't'.$type eq $k} -
  • {$v}{$total[$k]??0}
  • - {else} -
  • {$v}{$total[$k]??0}
  • - {/if}{/foreach} -
-
- {include file='shop/order/index_search'} - - {notempty name='list'} - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - {/foreach} - -
- - 用户信息订单信息发货信息商品信息
- - -
- -
-
-
推荐用户:{$vo.from.nickname|default='--'}[ VIP{$vo.from.vip_code} ] {$vo.from.vip_name}
-
推荐手机:{$vo.from.phone|default='--'}
-
- -
没有代理
- -
-
-
-
- 用户昵称:{$vo.user.nickname|default='--'}[ VIP{$vo.user.vip_code} ] {$vo.user.vip_name}
- 用户手机:{$vo.user.phone|default='--'}
-
-
-
- {eq name='vo.status' value='0'}已经取消{/eq} - {eq name='vo.status' value='1'}预购订单{/eq} - {eq name='vo.status' value='2'}等待待付款{/eq} - {eq name='vo.status' value='3'}等待审核{/eq} - {eq name='vo.status' value='4'}等待发货{/eq} - {eq name='vo.status' value='5'}已经发货{/eq} - {eq name='vo.status' value='6'}已经完成{/eq} -
-
- 订单单号:{$vo.order_no|default=''} - - 凭证审核 - -
-
- 订单总计:{$vo.amount_total+0} 元 - {if $vo.amount_express>0}(含运费 {$vo.amount_express+0} 元{else}(包邮{/if}, 随减 {$vo.amount_reduct+0} 元) - 已支付 {$vo.payment_amount+0} 元 -
-
下单时间:{$vo.create_at|format_datetime}
- -
- 支付时间:{$vo.payment_datetime|format_datetime} - {notempty name='vo.payment_name'} - - ({$vo.payment_name|default='-'}) - - ({$vo.payment_name|default='-'}) - - {/notempty} -
- - 支付状态:还未支付 - -
-
- {empty name='vo.truck_type'} - 无需发货 - {else} -
收货信息:{$vo.truck.address_name|default='--'}{$vo.truck.address_phone|default=''}
-
收货地址:{$vo.truck.address_province|default='--'}{$vo.truck.address_city|default=''}{$vo.truck.address_area|default=''}{$vo.truck.address_content|default=''}
-
发货状态:未发货{$vo.truck.company_name|default='--'} - {$vo.truck.send_number|default='--'} - - - - 填写发货 - - 修改发货 - - - - 取消订单 - -
-
发货时间:{$vo.truck.send_datetime|default='--'}
- {/empty} -
- {foreach $vo.items as $g} -
- {if $g.vip_entry > 0 and $g.vip_upgrade > $g.vip_code} - [ VIP{$g.vip_code} VIP{$g.vip_upgrade} ] - {else} - [ VIP{$g.vip_code} ] - {/if} - {if $g.discount_rate < 100.00} - 享{$g.discount_rate+0}%折扣 x - {/if} - {$g.stock_sales|default=0}件 x {$g.price_selling+0}元 - {$g.goods_name|default=''} ( {$g.goods_spec|show_goods_spec} ) -
- {/foreach} -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-
-{/block} diff --git a/app/data/view/shop/order/index_search.html b/app/data/view/shop/order/index_search.html deleted file mode 100644 index 7d60e23a0..000000000 --- a/app/data/view/shop/order/index_search.html +++ /dev/null @@ -1,158 +0,0 @@ -
- 条件搜索 - -
- - \ No newline at end of file diff --git a/app/data/view/shop/send/config.html b/app/data/view/shop/send/config.html deleted file mode 100644 index b092baf6f..000000000 --- a/app/data/view/shop/send/config.html +++ /dev/null @@ -1,43 +0,0 @@ -
-
- - - - - -
- 发货所在区域 -
- - - -
-
- - -
- -
- -
- - -
- - -
\ No newline at end of file diff --git a/app/data/view/shop/send/index.html b/app/data/view/shop/send/index.html deleted file mode 100644 index d9e558aba..000000000 --- a/app/data/view/shop/send/index.html +++ /dev/null @@ -1,84 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - -发货地址管理 - -{/block} - -{block name="content"} -
-
    - {foreach ['ta'=>'全部订单','t1'=>'等待发货','t2'=>'已经发货','t0'=>'已经取消'] as $k => $v} - {if isset($type) and 't'.$type eq $k} -
  • {$v}{$total[$k]??0}
  • - {else} -
  • {$v}{$total[$k]??0}
  • - {/if}{/foreach} -
-
- {include file='shop/send/index_search'} - - {notempty name='list'} - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - {/foreach} - -
- - 用户信息收货信息发货状态
- - -
-
-
用户昵称:{$vo.user.nickname|default='-'}[ VIP{$vo.user.vip_code} ] {$vo.user.vip_name}
-
用户手机:{$vo.user.phone|default='-'}
-
订单单号:{$vo.order_no|default='-'}
-
-
- {notempty name='vo.address_idcode'} -
身份证号:{$vo.address_idcode|default='-'}
- {/notempty} -
收货姓名:{$vo.address_name|default='-'}{$vo.address_phone}
-
收货地址:{$vo.address_province|default='-'}{$vo.address_city}{$vo.address_area}{$vo.address_content}
-
提交时间:{$vo.address_datetime|format_datetime}
-
- {if empty($vo.send_datetime)} - 未发货 - {else} - {$vo.company_name|default='-'} - {$vo.send_number|default='-'} -
{$vo.send_datetime|format_datetime} 发货!
- {/if} -
- - 填写发货 - - 修改发货 - -
- - {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} - -
-
-{/block} diff --git a/app/data/view/shop/send/index_search.html b/app/data/view/shop/send/index_search.html deleted file mode 100644 index 4afeaf6d0..000000000 --- a/app/data/view/shop/send/index_search.html +++ /dev/null @@ -1,124 +0,0 @@ -
- 条件搜索 - -
- - \ No newline at end of file diff --git a/app/data/view/shop/send/truck_form.html b/app/data/view/shop/send/truck_form.html deleted file mode 100644 index ab08c954f..000000000 --- a/app/data/view/shop/send/truck_form.html +++ /dev/null @@ -1,94 +0,0 @@ -
-
-
- 收货信息 -
- - - - -
- 收货所在区域 - (原区域:{$vo.address_province|default='--'} - {$vo.address_city|default=''} - {$vo.address_area|default=''} ) -
- - - -
-
- - -
-
- -
- - 快递信息 - 快递跟踪 - - - - - - -
-
- -
- {notempty name='vo.order_no'}{/notempty} - {notempty name='vo.send_datetime'}{/notempty} - -
- - -
- - -
\ No newline at end of file diff --git a/app/data/view/shop/send/truck_query.html b/app/data/view/shop/send/truck_query.html deleted file mode 100644 index e0e436f82..000000000 --- a/app/data/view/shop/send/truck_query.html +++ /dev/null @@ -1,17 +0,0 @@ -
- {empty name='result.data'} -
还没有快递记录哦!
- {else} -
    - {foreach $result.data as $key=>$vo} -
  • - {if $key eq 0 }{else}{/if} -
    - {$vo.time|format_datetime|default='--'} -

    {$vo.context|default='--'}

    -
    -
  • - {/foreach} -
- {/empty} -
\ No newline at end of file diff --git a/app/data/view/total/portal/index.html b/app/data/view/total/portal/index.html deleted file mode 100644 index 56b708546..000000000 --- a/app/data/view/total/portal/index.html +++ /dev/null @@ -1,303 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name='content'} -
-
-
-
-
商品总量
-
{$goodsTotal|default='0'}
-
当前商品总数量
-
- -
-
-
-
用户总量
-
{$usersTotal|default='0'}
-
当前用户总数量
-
- -
-
-
-
订单总量
-
{$orderTotal|default='0'}
-
已付款订单总数
-
- -
-
-
-
交易金额
-
{$amountTotal|default='0'}
-
已成交金额总数
-
- -
-
-
- -
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - -{/block} diff --git a/app/data/view/user/admin/index.html b/app/data/view/user/admin/index.html deleted file mode 100644 index bc518fa5f..000000000 --- a/app/data/view/user/admin/index.html +++ /dev/null @@ -1,157 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - - - - - -{/block} - -{block name="content"} -
-
    - {foreach $total as $k=>$v}{if isset($type) and 't'.$type eq $k} -
  • - {if is_numeric($v.vip)}[VIP{$v.vip}]{/if} - {$v.name}{$v.count|default=0} -
  • - {else} -
  • - {if is_numeric($v.vip)}[VIP{$v.vip}]{/if} - {$v.name}{$v.count|default=0} -
  • - {/if}{/foreach} -
-
- {include file='user/admin/index_search'} - - {notempty name='list'} - - - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - - - {/foreach} - -
- - 用户信息代理信息余额统计返利统计团队统计用户状态
- - -
-
-
- {notempty name='vo.username'} - 用户姓名:{$vo.username|default='-'} - {else} - 用户昵称:{$vo.nickname|default='-'} - {/notempty} -
-
用户手机:{$vo.phone|default='-'}
-
用户等级:[ VIP{$vo.vip_code} ] {$vo.vip_name}
-
-
- {notempty name='vo.from'} -
-
-
- {notempty name='vo.from.username'} - 用户姓名:{$vo.from.username|default='-'} - {else} - 用户昵称:{$vo.from.nickname|default='-'} - {/notempty} -
-
用户手机:{$vo.from.phone|default='-'}
-
用户等级:[ VIP{$vo.from.vip_code} ] {$vo.from.vip_name}
-
- {else} -
没有代理
- {/notempty} -
-
累计充值 {$vo.balance_total+0}
-
已经交易 {$vo.balance_used+0}
-
可用余额 {:round($vo.balance_total-$vo.balance_used,2)+0}
-
-
累计返利 {$vo.rebate_total+0}+{$vo.rebate_lock+0}
-
已经提现 {$vo.rebate_used+0}
-
剩余提现 {:round($vo.rebate_total-$vo.rebate_used,2)+0}
-
-
全部团队 {$vo.teams_users_total} 人 ( 业绩 {$vo.teams_amount_total+0} 元 )
-
直属团队 {$vo.teams_users_direct} 人 ( 业绩 {$vo.teams_amount_direct+0} 元 )
-
间接团队 {$vo.teams_users_indirect} 人 ( 业绩 {$vo.teams_amount_indirect+0} 元 )
-
-
注册时间:{$vo.create_at|format_datetime}
-
- 代理关联: - 永久绑定 - - 更改绑定 - - - {notempty name='vo.pid0'} - 临时绑定 - - 改为永久 - - {else} - 没有绑定 - - 设置绑定 - - {/notempty} - - - 设为总部 - -
-
- 用户状态: - {if $vo.status eq 0}已冻结{elseif $vo.status eq 1}已激活{/if} - {if $vo.buy_vip_entry}已入会{else}未入会{/if} - 累计交易 {$vo.order_amount_total+0} -
-
- - - 修改上级 - - - - 充 值 - - - - 冻 结 - - - - 解 冻 - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-
-{/block} diff --git a/app/data/view/user/admin/index_search.html b/app/data/view/user/admin/index_search.html deleted file mode 100644 index 653061ec2..000000000 --- a/app/data/view/user/admin/index_search.html +++ /dev/null @@ -1,120 +0,0 @@ -
- 条件搜索 - - -
- - diff --git a/app/data/view/user/admin/parent.html b/app/data/view/user/admin/parent.html deleted file mode 100644 index 961ebf608..000000000 --- a/app/data/view/user/admin/parent.html +++ /dev/null @@ -1,87 +0,0 @@ -{extend name="../../admin/view/full"} - -{block name="content"} -
- {include file='user/admin/parent_search'} - - {notempty name='list'} - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - {/foreach} - -
用户信息注册时间
-
-
-
- {notempty name='vo.username'} - 姓名:{$vo.username|default='-'} - {else} - 昵称:{$vo.nickname|default='-'} - {/notempty} - [ VIP{$vo.vip_code} ] {$vo.vip_name} -
-
手机:{$vo.phone|default='-'}
-
-
- {notempty name='vo.from'} -
-
- - 永久 - - 临时 - -
-
-
- {notempty name='vo.from.username'} - 姓名:{$vo.from.username|default='-'} - {else} - 昵称:{$vo.from.nickname|default='-'} - {/notempty} - [ VIP{$vo.from.vip_code} ] {$vo.from.vip_name} -
-
手机:{$vo.from.phone|default='-'}
-
- {else} -
没有代理
- {/notempty} -
- 使用状态:{if $vo.status eq 0}已冻结{elseif $vo.status eq 1}已激活{/if}
- 注册时间:{$vo.create_at|format_datetime} -
- - 选择绑定 - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} - -{block name='script'} - -{/block} diff --git a/app/data/view/user/admin/parent_search.html b/app/data/view/user/admin/parent_search.html deleted file mode 100644 index 1148139b9..000000000 --- a/app/data/view/user/admin/parent_search.html +++ /dev/null @@ -1,75 +0,0 @@ -
- 条件搜索 - - -
diff --git a/app/data/view/user/admin/teams.html b/app/data/view/user/admin/teams.html deleted file mode 100644 index a30351732..000000000 --- a/app/data/view/user/admin/teams.html +++ /dev/null @@ -1,51 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="content"} -
-
- -
-{/block} diff --git a/app/data/view/user/balance/form.html b/app/data/view/user/balance/form.html deleted file mode 100644 index 112a05f46..000000000 --- a/app/data/view/user/balance/form.html +++ /dev/null @@ -1,87 +0,0 @@ -
-
- -
- 用户资料 -
-
-
-
-
-
-
- - -
-
-
- - - - - - - -
- 升级用户等级 - Upgrade - - 请选择目标升级等级,当用户低于当前等级时会进行用户升级操作 -
- -
- 余额充值备注 - Remark - -
- -
- -
- - {notempty name='vo.id'}{/notempty} - -
- - -
-
- - - - \ No newline at end of file diff --git a/app/data/view/user/balance/index.html b/app/data/view/user/balance/index.html deleted file mode 100644 index 54beec17f..000000000 --- a/app/data/view/user/balance/index.html +++ /dev/null @@ -1,68 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - -{/block} - -{block name="content"} -
- 余额统计:累计已充值余额 {$balance.0|default=0.00} 元,已使用 {$balance.1|default=0.00} 元,剩余可使用 {$balance.0-$balance.1} 元。 -
-
- {include file='user/balance/index_search'} - - {notempty name='list'} - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - {/foreach} - -
- - 用户信息充值金额充值描述
- - -
-
-
用户昵称:{$vo.user.nickname|default='--'}
-
用户手机:{$vo.user.phone|default='--'}
-
用户等级:[ VIP{$vo.user.vip_code} ] {$vo.user.vip_name}
-
-
-
交易金额:{if $vo.amount>=0}{$vo.amount+0}{else}{$vo.amount+0}{/if} 元
-
升级等级:{if $vo.upgrade>0}升级到 [ VIP{$vo.upgrade} ] {$vo.upgradeinfo.name|default=''}{else}不进行用户升级{/if}
-
操作时间:{$vo.create_at|format_datetime}
-
-
充值名称:{$vo.name|default='-'}
-
充值单号:{$vo.code|default='-'}
- -
充值备注:{$vo.remark}
- -
充值备注:未填写充值记录的备注内容
- -
- - 删 除 - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} \ No newline at end of file diff --git a/app/data/view/user/balance/index_search.html b/app/data/view/user/balance/index_search.html deleted file mode 100644 index 43af7987a..000000000 --- a/app/data/view/user/balance/index_search.html +++ /dev/null @@ -1,69 +0,0 @@ -
- 条件搜索 - - -
\ No newline at end of file diff --git a/app/data/view/user/message/config.html b/app/data/view/user/message/config.html deleted file mode 100644 index 73e7973c6..000000000 --- a/app/data/view/user/message/config.html +++ /dev/null @@ -1,58 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="content"} -
- 注意:短信接口配置的参数不能随意修改,会影响到用户注册发送短信通知功能,若有需要调整请联系客服! -
-
-
- -
- - - - - - - - - - - -
- -
- -
- -
-
- -
-{/block} \ No newline at end of file diff --git a/app/data/view/user/message/index.html b/app/data/view/user/message/index.html deleted file mode 100644 index 3d6954316..000000000 --- a/app/data/view/user/message/index.html +++ /dev/null @@ -1,52 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - -{/block} - -{block name="content"} -
- {include file='user/message/index_search'} - - {notempty name='list'} - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - {/foreach} - -
- - 目标手机短信内容执行结果发送时间
- - {$vo.phone|default=''}{$vo.content|default=''} - {if $vo.status eq 0}失败{/if} - {if $vo.status eq 1}成功{/if} - {$vo.result|default=''} - {$vo.create_at|default=''}
- - 删 除 - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} \ No newline at end of file diff --git a/app/data/view/user/message/index_search.html b/app/data/view/user/message/index_search.html deleted file mode 100644 index 3e7f2d55a..000000000 --- a/app/data/view/user/message/index_search.html +++ /dev/null @@ -1,45 +0,0 @@ -
- 条件搜索 - - -
\ No newline at end of file diff --git a/app/data/view/user/rebate/config.html b/app/data/view/user/rebate/config.html deleted file mode 100644 index 210b8bac7..000000000 --- a/app/data/view/user/rebate/config.html +++ /dev/null @@ -1,310 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name='content'} -
-
-
- - -
-
-
-
- 结算到账 -
- {php} $data['settl_type'] = $data['settl_type'] ?? 1; {/php} - {foreach [1 => '支付后立即到账', 2 => '确认收货后到账'] as $key => $val}{if $data.settl_type eq $key} - - {else} - - {/if}{/foreach} -
-
-
-
-
- 团队结算 -
- {php} $data['teams_type'] = $data['teams_type'] ?? 1; {/php} - {foreach [1 => '实时结算'] as $key=>$val}{if $data.teams_type eq $key} - - {else} - - {/if}{/foreach} -
-
-
-
-
- - -
-
- 平推奖励 -
-
- {foreach $levels as $level} -
-
- - {php} $key = 'equal_state_vip_'.$level['number']; {/php} - - {php} $data[$key] = $data[$key] ?? 0; {/php} - {if isset($data[$key]) and $data[$key] eq 1} - - {else} - - {/if} - -
-
- - -
-
-
-
- {/foreach} -
-
-
-
- -
-
-
    - {foreach $levels as $level} -
  • [ VIP{$level.number|default=0} ] {$level.name|default=''}
  • - {/foreach} -
-
- {foreach $levels as $level} -
- - - - - {foreach $levels as $l} - - - - - {/foreach} -
- {$level.name} {$l.name} - -
-
-
- - {php} $key = 'frist_state_vip_'.$level['number'].'_'.$l['number']; {/php} - - {php} $data[$key] = $data[$key] ?? 0; {/php} - {if isset($data[$key]) and $data[$key] eq 1} - - {else} - - {/if} - -
- {php} $key = 'frist_type_vip_'.$level['number'].'_'.$l['number']; {/php} - - {php} $data[$key] = $data[$key] ?? 1; {/php} - {foreach [1 => '奖励固定金额 / 每单',2 => '按订单参与的返利金额比例'] as $k => $v} - {if isset($data[$key]) and $data[$key] eq $k} - - {else} - - {/if}{/foreach} - -
-
-
-
-
- - {php} $key = 'repeat_state_vip_'.$level['number'].'_'.$l['number']; {/php} - - {php} $data[$key] = $data[$key] ?? 0; {/php} - {if isset($data[$key]) and $data[$key] eq 1} - - {else} - - {/if} - -
- {php} $key = 'repeat_type_vip_'.$level['number'].'_'.$l['number']; {/php} - {php} $data[$key] = $data[$key] ?? 1; {/php} - {foreach [1 => '奖励固定金额 / 每单', 2 => '按订单参与的返利金额比例'] as $k => $v} - {if isset($data[$key]) and $data[$key] eq $k} - - {else} - - {/if}{/foreach} - -
-
-
-
-
-
-
-
-
- - {php} $key = 'direct_state_vip_'.$level['number']; {/php} - - {php} $data[$key] = $data[$key] ?? 0; {/php} - {if isset($data[$key]) and $data[$key] eq 1} - - {else} - - {/if} - -
- {php} $key = 'direct_type_vip_'.$level['number']; {/php} - {php} $data[$key] = $data[$key] ?? 1; {/php} - {foreach [1 => '奖励固定金额 / 每单',2 => '按订单参与的返利金额比例'] as $k => $v} - {if isset($data[$key]) and $data[$key] eq $k} - - {else} - - {/if}{/foreach} - -
-
-
-
-
- - {php} $key = 'indirect_state_vip_'.$level['number']; {/php} - - {php} $data[$key] = $data[$key] ?? 0; {/php} - {if isset($data[$key]) and $data[$key] eq 1} - - {else} - - {/if} - -
- {php} $key = 'indirect_type_vip_'.$level['number']; {/php} - {php} $data[$key] = $data[$key] ?? 1; {/php} - {foreach [1 => '奖励固定金额 / 每单',2 => '按订单参与的返利金额比例'] as $k => $v} - {if isset($data[$key]) and $data[$key] eq $k} - - {else} - - {/if}{/foreach} - -
-
-
-
-
-
-
- - {php} $key = 'upgrade_state_vip_'.$level['number']; {/php} - - {php} $data[$key] = $data[$key] ?? 0; {/php} - {if isset($data[$key]) and $data[$key] eq 1} - - {else} - - {/if} - -
- {php} $key = 'upgrade_type_vip_'.$level['number'].'_'.$l['number']; {/php} - - {php} $data[$key] = $data[$key] ?? 1; {/php} - {foreach [1 => '奖励固定金额 / 每单',2 => '按订单参与的返利金额比例'] as $k => $v} - {if isset($data[$key]) and $data[$key] eq $k} - - {else} - - {/if}{/foreach} - -
-
-
-
-
- - {php} $key = 'manage_state_vip_'.$level['number']; {/php} - - {php} $data[$key] = $data[$key] ?? 0; {/php} - {if isset($data[$key]) and $data[$key] eq 1} - - {else} - - {/if} - -
- {php} $key = 'manage_type_vip_'.$level['number']; {/php} - {php} $data[$key] = $data[$key] ?? 1; {/php} - {foreach [1 => '不累计未发管理奖金额', 2 => '累计未发放管理奖金'] as $k => $v} - {if isset($data[$key]) and $data[$key] eq $k} - - {else} - - {/if}{/foreach} - -
-
-
-
-
-
- {/foreach} -
-
-
- -
- - -
- -
-
- - -
-{/block} \ No newline at end of file diff --git a/app/data/view/user/rebate/index.html b/app/data/view/user/rebate/index.html deleted file mode 100644 index 969e697bd..000000000 --- a/app/data/view/user/rebate/index.html +++ /dev/null @@ -1,92 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - -用户返利配置 - -{/block} - -{block name="content"} -
- 返利统计:累计已产生返利 {$rebate.0+$rebate.2} 元 ( 含未到账 {$rebate.2|default='0.00'} 元 ),累计已提现 {$total.1|default=0.00} 元。 -
-
- {include file='user/rebate/index_search'} - - {notempty name='list'} - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - {/foreach} - -
- - 代理用户交易用户订单信息商品信息
- - - {notempty name='vo.agent.headimg'} -
- {/notempty} -
- 代理昵称:{$vo.agent.nickname|default='--'}
- 代理手机:{$vo.agent.phone|default='--'}
- 代理等级:[ VIP{$vo.agent.vip_code|default=0} ] {$vo.agent.vip_name|default=''} -
-
- {notempty name='vo.user.headimg'} -
- {/notempty} -
- 用户昵称:{$vo.user.nickname|default='--'}
- 用户手机:{$vo.user.phone|default='--'}
- 用户等级:[ VIP{$vo.user.vip_code|default=0} ] {$vo.user.vip_name|default=''} -
-
- {if $vo.type eq '管理奖励'} - {$vo.type|default=''} - {elseif $vo.type eq '首推奖励'} - {$vo.type|default=''} - {elseif $vo.type eq '复购奖励'} - {$vo.type|default=''} - {elseif $vo.type eq '直属团队'} - {$vo.type|default=''} - {elseif $vo.type eq '间接团队'} - {$vo.type|default=''} - {elseif $vo.type eq '差额奖励'} - {$vo.type|default=''} - {elseif $vo.type eq '升级奖励'} - {$vo.type|default=''} - {else} - {$vo.type|default=''} - {/if} -
-
返利时间:{$vo.create_at|format_datetime}
-
返利描述:{$vo.name|default='-'} {empty name='vo.status'}未到账{else}已到账{/empty}
-
订单 {$vo.order_no|default='--'} 交易 {$vo.order_amount+0} 元返利 {$vo.amount+0}
-
-
- {foreach $vo.list as $g} -
{$g.goods_name|default=''} x {$g.stock_sales|default=0}
- {/foreach} -
- - {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} - -
-{/block} \ No newline at end of file diff --git a/app/data/view/user/rebate/index_search.html b/app/data/view/user/rebate/index_search.html deleted file mode 100644 index 0332cc579..000000000 --- a/app/data/view/user/rebate/index_search.html +++ /dev/null @@ -1,64 +0,0 @@ -
- 条件搜索 - - -
diff --git a/app/data/view/user/transfer/audit.html b/app/data/view/user/transfer/audit.html deleted file mode 100644 index 2e206e5f0..000000000 --- a/app/data/view/user/transfer/audit.html +++ /dev/null @@ -1,130 +0,0 @@ -
- -
- -
- - - - -
- - {in name='vo.type' value='wechat_qrcode,alipay_qrcode'} -
- 付款二维码 -
-
- {/in} - - - {in name='vo.type' value='alipay_account'} -
- - -
- {/in} - - - {in name='vo.type' value='transfer_banks,wechat_banks'} -
- - - - -
- {/in} - -
- 审核操作类型 - - - - - - - - - - {if $vo.status eq 1} - {php} $types = [0=>'拒绝提现', 1=>'等待审核', 2=>'审核通过']; {/php} - {/if} - - {if $vo.status eq 2} - - {php} $types = [2=>'审核通过', 3=>'自动打款']; {/php} - - {php} $types = [2=>'审核通过', 3=>'准备打款', 4=>'已经打款']; {/php} - - {/if} - - {if $vo.status eq 3} - - {php} $types = [3=>'正在打款']; {/php} - - {php} $types = [3=>'准备打款', 4=>'已经打款']; {/php} - - {/if} - - {if $vo.status eq 4} - {php} $types =[4=>'已经打款']; {/php} - {/if} - -
- {foreach($types as $k => $v)}{if $k eq $vo.status} - - {else} - - {/if}{/foreach} -
-
- -
- -
- -
- -
- {notempty name='vo.id'}{/notempty} - -
- - -
- -
- - diff --git a/app/data/view/user/transfer/config.html b/app/data/view/user/transfer/config.html deleted file mode 100644 index 1563b8278..000000000 --- a/app/data/view/user/transfer/config.html +++ /dev/null @@ -1,135 +0,0 @@ - - -
-
- -
- 用户提现状态 - Transfer Status -
- {php} $data['status'] = $data['status'] ?? 0; {/php} - {foreach ['关闭返利提现', '开启返利提现'] as $k => $v} - {if $data.status eq $k} - - {else} - - {/if}{/foreach} -
-
- - - -
- 提现方式状态配置 - Transfer Types - - - - - - - - - - - - - - {foreach $types as $k => $t} - - - - - - - - - - {/foreach} - -
提现转账方式是否需要审核图 标单笔最小金额( 元 )单笔最大金额( 元 )每日限提现次数
- {php} $key = 'transfer['.$k.']["state"]'; {/php} - - {if isset($data['transfer'][$k]['state']) and $data['transfer'][$k]['state'] eq 1} - - {else} - - {/if} - - {php} $key = 'transfer['.$k.']["audit"]'; {/php} - - {if isset($data['transfer'][$k]['audit']) and $data['transfer'][$k]['audit'] eq 1} - - {else} - - {/if} - {php} $key = 'transfer['.$k.'][title]'; {/php} - - - {php} $key = 'transfer['.$k.'][image]'; {/php} - - - - - - - - - -
-
- -
- 用户提现描述内容 - Transfer Remark - -
- -
- -
- -
- - -
- - -
\ No newline at end of file diff --git a/app/data/view/user/transfer/index.html b/app/data/view/user/transfer/index.html deleted file mode 100644 index 96673970a..000000000 --- a/app/data/view/user/transfer/index.html +++ /dev/null @@ -1,122 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - -用户提现配置 - - - -微信转账配置 - - - -后台打款服务 - -{/block} - -{block name="content"} -
- - 提现统计:已产生提现累计 {$transfer.0|default=0.00} 元( 含待转账 {$transfer.3|default='0.00'} 元,含待审核 {$transfer.2|default='0.00'} 元 ),累计已提现 {$transfer.1|default=0.00} 元。 -
-
- {include file='user/transfer/index_search'} - - {notempty name='list'} - - - - - - - - - - - {/notempty} - - {foreach $list as $key => $vo} - - - - - - - - - {/foreach} - -
- - 提现用户提现订单提现通道处理记录
- - -
-
-
- - 用户姓名:{$vo.user.username|default='-'} - - 用户昵称:{$vo.user.nickname|default='-'} - - [ VIP{$vo.user.vip_code} ] {$vo.user.vip_name} -
-
用户手机:{$vo.user.phone|default='-'}
-
剩余可提现 {$vo.user.rebate_total-$vo.user.rebate_used} 元 已提现 {$vo.user.rebate_used+0} 元 待到账 {$vo.user.rebate_lock+0}
-
-
- {eq name='vo.status' value='0'}已失败{/eq} - {eq name='vo.status' value='1'}待审核{/eq} - {eq name='vo.status' value='2'}已审核{/eq} - {eq name='vo.status' value='3'}待打款{/eq} - {eq name='vo.status' value='4'}已打款{/eq} - {eq name='vo.status' value='5'}已完成{/eq} -
- 提现金额:{$vo.amount+0} 元 - {if $vo.charge_amount>0} ( 含手续费 {$vo.charge_amount+0} 元 ){/if} -
提现单号:{$vo.code|default='--'}
-
提现方式:{$vo.type_name|default='-'}
-
提现描述:{$vo.remark|default='-'}
-
-
- - {in name='vo.type' value='wechat_banks,transfer_banks'} -
开户银行:{$vo.bank_name|default='-'}
-
开户分行:{$vo.bank_bran|default=''}
-
账户姓名:{$vo.bank_user|default=''}
-
银行卡号:{$vo.bank_code|default=''}
- {/in} - - {in name='vo.type' value='wechat_qrcode,alipay_qrcode'} -
- {/in} - - {in name='vo.type' value='alipay_account'} -
支付宝姓名:{$vo.alipay_user|default='-'}
-
支付宝账号:{$vo.alipay_code|default=''}
- {/in} - - {in name='vo.type' value='wechat_wallet'} -
提现到微信钱包零钱
- {/in} -
- 申请时间:{$vo.create_at|format_datetime}
- 最后处理:{$vo.change_time|format_datetime}
- 交易时间:{$vo.trade_time|format_datetime}
- 交易描述:{$vo.change_desc|default='--'}
-
- - {if auth('auditStatus') and $vo.status eq 1} - 提现审核 - {/if} - - {if auth('auditPayment') and in_array($vo.status, [2,3,4])} - 提现打款 - {/if} - -
- - {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} - -
-{/block} diff --git a/app/data/view/user/transfer/index_search.html b/app/data/view/user/transfer/index_search.html deleted file mode 100644 index 5670d2829..000000000 --- a/app/data/view/user/transfer/index_search.html +++ /dev/null @@ -1,63 +0,0 @@ -
- 条件搜索 - - - - -
\ No newline at end of file diff --git a/app/data/view/user/transfer/payment.html b/app/data/view/user/transfer/payment.html deleted file mode 100644 index aae968861..000000000 --- a/app/data/view/user/transfer/payment.html +++ /dev/null @@ -1,54 +0,0 @@ -
-
- -
- 绑定公众号 - Bind WeChat Type -
- {php} $data['wechat_type'] = $data['wechat_type'] ?? 'normal'; {/php} - {foreach ['normal'=>'兼容模式', 'wxapp'=>'微信小程序', 'wechat'=>'微信服务号'] as $k=>$v} - {if $k eq $data.wechat_type} - - {else} - - {/if}{/foreach} -
- 请选择正确的转账通道,以决定用户 OPENID 字段,兼容模式会自动选择通道 -
- - - - - - - - - -
- -
- -
- - -
-
- \ No newline at end of file diff --git a/app/index/controller/Index.php b/app/index/controller/Index.php deleted file mode 100644 index 61827d2e1..000000000 --- a/app/index/controller/Index.php +++ /dev/null @@ -1,31 +0,0 @@ -redirect(sysuri('admin/login/index')); - } -} \ No newline at end of file diff --git a/app/wechat/command/Auto.php b/app/wechat/command/Auto.php deleted file mode 100644 index 2a316a176..000000000 --- a/app/wechat/command/Auto.php +++ /dev/null @@ -1,149 +0,0 @@ -setName('xadmin:fansmsg'); - $this->addArgument('openid', Argument::OPTIONAL, 'wechat user openid', ''); - $this->addArgument('autocode', Argument::OPTIONAL, 'wechat auto message', ''); - $this->setDescription('Wechat Users Push AutoMessage for ThinkAdmin'); - } - - /** - * @param Input $input - * @param Output $output - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function execute(Input $input, Output $output) - { - $code = $input->getArgument('autocode'); - $this->openid = $input->getArgument('openid'); - if (empty($code)) $this->setQueueError("Message Code cannot be empty"); - if (empty($this->openid)) $this->setQueueError("Wechat Openid cannot be empty"); - - // 查询微信消息对象 - $map = ['code' => $code, 'status' => 1]; - $data = WechatAuto::mk()->where($map)->find(); - if (empty($data)) $this->setQueueError("Message Data Query failed"); - - // 发送微信客服消息 - $this->buildMessage($data->toArray()); - } - - /** - * 关键字处理 - * @param array $data - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function buildMessage(array $data) - { - $type = strtolower($data['type']); - $result = [0, '待发送的消息不符合规则']; - if ($type === 'text' && !empty($data['content'])) { - $result = $this->sendMessage('text', ['content' => $data['content']]); - } - if ($type === 'voice' && !empty($data['voice_url'])) { - if ($mediaId = MediaService::instance()->upload($data['voice_url'], 'voice')) { - $result = $this->sendMessage('voice', ['media_id' => $mediaId]); - } - } - if ($type === 'image' && !empty($data['image_url'])) { - if ($mediaId = MediaService::instance()->upload($data['image_url'], 'image')) { - $result = $this->sendMessage('image', ['media_id' => $mediaId]); - } - } - if ($type === 'news') { - [$item, $news] = [MediaService::instance()->news($data['news_id']), []]; - if (isset($item['articles']) && is_array($item['articles'])) { - $host = sysconf('base.site_host') ?: true; - foreach ($item['articles'] as $vo) if (empty($news)) array_push($news, [ - 'url' => url("@wechat/api.view/item/id/{$vo['id']}", [], false, $host)->build(), - 'title' => $vo['title'], 'picurl' => $vo['local_url'], 'description' => $vo['digest'], - ]); - $result = $this->sendMessage('news', ['articles' => $news]); - } - } - if ($type === 'music' && !empty($data['music_url']) && !empty($data['music_title']) && !empty($data['music_desc'])) { - $mediaId = $data['music_image'] ? MediaService::instance()->upload($data['music_image'], 'image') : ''; - $result = $this->sendMessage('music', [ - 'hqmusicurl' => $data['music_url'], 'musicurl' => $data['music_url'], - 'description' => $data['music_desc'], 'title' => $data['music_title'], 'thumb_media_id' => $mediaId, - ]); - } - if ($type === 'video' && !empty($data['video_url']) && !empty($data['video_desc']) && !empty($data['video_title'])) { - $video = ['title' => $data['video_title'], 'introduction' => $data['video_desc']]; - if ($mediaId = MediaService::instance()->upload($data['video_url'], 'video', $video)) { - $result = $this->sendMessage('video', ['media_id' => $mediaId, 'title' => $data['video_title'], 'description' => $data['video_desc']]); - } - } - if (empty($result[0])) { - $this->setQueueError($result[1]); - } else { - $this->setQueueSuccess($result[1]); - } - } - - /** - * 推送客服消息 - * @param string $type 消息类型 - * @param array $data 消息对象 - * @return array - */ - private function sendMessage(string $type, array $data): array - { - try { - WechatService::WeChatCustom()->send([ - $type => $data, 'touser' => $this->openid, 'msgtype' => $type, - ]); - return [1, '向微信用户推送消息成功']; - } catch (\Exception $exception) { - return [0, $exception->getMessage()]; - } - } -} \ No newline at end of file diff --git a/app/wechat/command/Fans.php b/app/wechat/command/Fans.php deleted file mode 100644 index 2efd62e13..000000000 --- a/app/wechat/command/Fans.php +++ /dev/null @@ -1,153 +0,0 @@ -setName('xadmin:fansall'); - $this->setDescription('Wechat Users Data Synchronize for ThinkAdmin'); - } - - /** - * 任务执行处理 - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function handle() - { - $message = $this->_list(); - $message .= $this->_tags(); - $message .= $this->_black(); - $this->setQueueSuccess($message); - } - - /** - * 同步微信粉丝列表 - * @param string $next - * @param integer $done - * @return string - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _list(string $next = '', int $done = 0): string - { - $appid = WechatService::instance()->getAppid(); - $this->output->comment('开始获取微信用户数据'); - while (is_string($next)) { - $result = WechatService::WeChatUser()->getUserList($next); - if (is_array($result) && !empty($result['data']['openid'])) { - foreach (array_chunk($result['data']['openid'], 100) as $openids) { - $info = WechatService::WeChatUser()->getBatchUserInfo($openids); - if (is_array($info) && !empty($info['user_info_list'])) { - foreach ($info['user_info_list'] as $user) if (isset($user['nickname'])) { - $this->queue->message($result['total'], ++$done, "-> {$user['openid']} {$user['nickname']}"); - FansService::instance()->set($user, $appid); - } - } - } - $next = $result['total'] > $done ? $result['next_openid'] : null; - } else { - $next = null; - } - } - $this->output->comment($done > 0 ? '微信用户数据获取完成' : '未获取到微信用户数据'); - $this->output->newLine(); - return "共获取 {$done} 个用户数据"; - } - - /** - * 同步粉丝黑名单列表 - * @param string $next - * @param integer $done - * @return string - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - */ - public function _black(string $next = '', int $done = 0): string - { - $wechat = WechatService::WeChatUser(); - $this->setQueueProgress("开始更新黑名单的微信用户"); - while (!is_null($next) && is_array($result = $wechat->getBlackList($next)) && !empty($result['data']['openid'])) { - foreach (array_chunk($result['data']['openid'], 100) as $chunk) { - $done += count($chunk); - $map = [['is_black', '=', 0], ['openid', 'in', $chunk]]; - WechatFans::mk()->where($map)->update(['is_black' => 1]); - } - $next = $result['total'] > $done ? $result['next_openid'] : null; - } - $this->setQueueProgress('完成更新黑名单的微信用户', null, -1); - $this->output->newLine(); - if (empty($result['total'])) { - return ', 其中黑名单 0 人'; - } else { - return ", 其中黑名单 {$result['total']} 人"; - } - } - - /** - * 同步粉丝标签列表 - * @param integer $done - * @return string - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function _tags(int $done = 0): string - { - $appid = WechatService::instance()->getAppid(); - $this->output->comment('开始获取微信用户标签数据'); - if (is_array($list = WechatService::WeChatTags()->getTags()) && !empty($list['tags'])) { - $count = count($list['tags']); - foreach ($list['tags'] as &$tag) { - $tag['appid'] = $appid; - $this->queue->message($count, ++$done, "-> {$tag['name']}"); - } - WechatFansTags::mk()->where(['appid' => $appid])->delete(); - WechatFansTags::mk()->insertAll($list['tags']); - } - $this->output->comment($done > 0 ? '微信用户标签数据获取完成' : '未获取到微信用户标签数据'); - $this->output->newLine(); - return ", 获取到 {$done} 个标签"; - } -} \ No newline at end of file diff --git a/app/wechat/controller/Auto.php b/app/wechat/controller/Auto.php deleted file mode 100644 index 11ea37bd1..000000000 --- a/app/wechat/controller/Auto.php +++ /dev/null @@ -1,136 +0,0 @@ - '文字', 'news' => '图文', - 'image' => '图片', 'music' => '音乐', - 'video' => '视频', 'voice' => '语音', - ]; - - /** - * 关注自动回复 - * @auth true - * @menu true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function index() - { - $this->title = '关注自动回复'; - $query = WechatAuto::mQuery()->like('code,type'); - $query->equal('status')->dateBetween('create_at')->order('time asc')->page(); - } - - /** - * 列表数据处理 - * @param array $data - */ - protected function _index_page_filter(array &$data) - { - foreach ($data as &$vo) { - $vo['type'] = $this->types[$vo['type']] ?? $vo['type']; - } - } - - /** - * 添加自动回复 - * @auth true - */ - public function add() - { - $this->title = '添加自动回复'; - WechatAuto::mForm('form'); - } - - /** - * 编辑自动回复 - * @auth true - */ - public function edit() - { - $this->title = '编辑自动回复'; - WechatAuto::mForm('form'); - } - - /** - * 添加数据处理 - * @param array $data - */ - protected function _form_filter(array &$data) - { - if (empty($data['code'])) { - $data['code'] = CodeExtend::uniqidNumber(18, 'AM'); - } - if ($this->request->isGet()) { - $public = dirname($this->request->basefile(true)); - $this->defaultImage = "{$public}/static/theme/img/image.png"; - } else { - $data['content'] = strip_tags($data['content'] ?? '', ''); - } - } - - /** - * 表单结果处理 - * @param boolean $result - */ - protected function _form_result(bool $result) - { - if ($result !== false) { - $this->success('恭喜, 关键字保存成功!', 'javascript:history.back()'); - } else { - $this->error('关键字保存失败, 请稍候再试!'); - } - } - - /** - * 修改规则状态 - * @auth true - */ - public function state() - { - WechatAuto::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } - - /** - * 删除自动回复 - * @auth true - */ - public function remove() - { - WechatAuto::mDelete(); - } -} \ No newline at end of file diff --git a/app/wechat/controller/Config.php b/app/wechat/controller/Config.php deleted file mode 100644 index b0be9e3a4..000000000 --- a/app/wechat/controller/Config.php +++ /dev/null @@ -1,157 +0,0 @@ -_applyFormToken(); - $this->thrNotify = sysuri('wechat/api.push/index', [], false, true); - if ($this->request->isGet()) { - try { - $source = enbase64url(sysuri('admin/index/index', [], false, true) . '#' . $this->request->url()); - $this->authurl = "https://open.cuci.cc/service/api.push/auth?source={$source}"; - if (input('?appid') && input('?appkey')) { - sysconf('wechat.type', 'thr'); - sysconf('wechat.thr_appid', input('appid')); - sysconf('wechat.thr_appkey', input('appkey')); - WechatService::ThinkServiceConfig()->setApiNotifyUri($this->thrNotify); - } - $this->wechat = WechatService::ThinkServiceConfig()->getConfig(); - } catch (\Exception $exception) { - $this->wechat = []; - $this->message = $exception->getMessage(); - } - $this->geoip = $this->app->cache->get('mygeoip', ''); - if (empty($this->geoip)) { - $this->geoip = gethostbyname($this->request->host()); - $this->app->cache->set('mygeoip', $this->geoip, 360); - } - $this->title = '微信授权配置'; - $this->fetch(); - } else { - foreach ($this->request->post() as $k => $v) sysconf($k, $v); - if ($this->request->post('wechat.type') === 'thr') { - try { - WechatService::ThinkServiceConfig()->setApiNotifyUri($this->thrNotify); - } catch (\Exception $exception) { - $this->error($exception->getMessage()); - } - } - sysoplog('微信授权配置', '修改微信授权配置成功'); - $location = url('wechat/config/options')->build() . '?uniqid=' . uniqid(); - $this->success('微信授权修改成功!', sysuri('admin/index/index') . "#{$location}"); - } - } - - /** - * 微信授权测试 - * @auth true - */ - public function options_test() - { - $this->fetch(); - } - - /** - * 微信支付配置 - * @auth true - * @menu true - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function payment() - { - if ($this->request->isGet()) { - $this->title = '微信支付配置'; - $local = LocalStorage::instance(); - $this->mch_ssl_cer = sysconf('wechat.mch_ssl_cer'); - $this->mch_ssl_key = sysconf('wechat.mch_ssl_key'); - $this->mch_ssl_p12 = sysconf('wechat.mch_ssl_p12'); - if (!$local->has($this->mch_ssl_cer, true)) $this->mch_ssl_cer = ''; - if (!$local->has($this->mch_ssl_key, true)) $this->mch_ssl_key = ''; - if (!$local->has($this->mch_ssl_p12, true)) $this->mch_ssl_p12 = ''; - $this->fetch(); - } else { - $this->error('抱歉,数据提交地址错误!'); - } - } - - /** - * 微信支付测试 - * @auth true - */ - public function payment_test() - { - $this->fetch(); - } - - /** - * 微信支付修改 - * @auth true - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function payment_save() - { - if ($this->request->isPost()) { - if ($this->request->post('wechat.mch_ssl_type') === 'p12') { - if (!LocalStorage::instance()->has(input('wechat.mch_ssl_p12', '-'), true)) { - $this->error('商户证书 P12 证书不能为空!'); - } - $content = LocalStorage::instance()->get(input('wechat.mch_ssl_p12', '-'), true); - if (!openssl_pkcs12_read($content, $certs, input('wechat.mch_id'))) { - $this->error('商户账号与 P12 证书不匹配!'); - } - } elseif ($this->request->post('wechat.mch_ssl_type') === 'pem') { - if (!LocalStorage::instance()->has(input('wechat.mch_ssl_key', '-'), true)) { - $this->error('商户证书 KEY 不能为空!'); - } - if (!LocalStorage::instance()->has(input('wechat.mch_ssl_cer', '-'), true)) { - $this->error('商户证书 CERT 不能为空!'); - } - } - foreach ($this->request->post() as $k => $v) sysconf($k, $v); - sysoplog('微信授权配置', '修改微信支付配置成功'); - $this->success('微信支付配置成功!'); - } else { - $this->error('抱歉,访问方式错误!'); - } - } -} diff --git a/app/wechat/controller/Fans.php b/app/wechat/controller/Fans.php deleted file mode 100644 index 489fbccc4..000000000 --- a/app/wechat/controller/Fans.php +++ /dev/null @@ -1,126 +0,0 @@ -layTable(function () { - $this->title = '微信用户管理'; - }, function (QueryHelper $query) { - $query->where(['appid' => WechatService::instance()->getAppid()]); - $query->like('nickname')->equal('subscribe,is_black')->dateBetween('subscribe_at'); - }); - } - - /** - * 列表数据处理 - * @param array $data - */ - protected function _index_page_filter(array &$data) - { - foreach ($data as &$vo) $vo['subscribe_at'] = format_datetime($vo['subscribe_at']); - } - - /** - * 同步用户数据 - * @auth true - */ - public function sync() - { - sysoplog('微信授权配置', '创建粉丝用户同步任务'); - $this->_queue('同步微信用户数据', "xadmin:fansall"); - } - - /** - * 黑名单列表操作 - * @auth true - */ - public function black() - { - try { - $data = $this->_vali([ - 'black.require' => '操作类型不能为空!', - 'openid.require' => '操作用户不能为空!', - ]); - foreach (array_chunk(str2arr($data['openid']), 20) as $openids) { - if ($data['black']) { - WechatService::WeChatUser()->batchBlackList($openids); - WechatFans::mk()->whereIn('openid', $openids)->update(['is_black' => 1]); - } else { - WechatService::WeChatUser()->batchUnblackList($openids); - WechatFans::mk()->whereIn('openid', $openids)->update(['is_black' => 0]); - } - } - if (empty($data['black'])) { - $this->success('移出黑名单成功!'); - } else { - $this->success('拉入黑名单成功!'); - } - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error("黑名单操作失败,请稍候再试!
{$exception->getMessage()}"); - } - } - - /** - * 删除用户信息 - * @auth true - */ - public function remove() - { - WechatFans::mDelete(); - } - - /** - * 清空用户数据 - * @auth true - */ - public function truncate() - { - try { - WechatFans::mQuery()->empty(); - WechatFans::mQuery()->empty(); - $this->success('清空用户数据成功!'); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error("清空用户数据失败,{$exception->getMessage()}"); - } - } -} diff --git a/app/wechat/controller/Keys.php b/app/wechat/controller/Keys.php deleted file mode 100644 index ea5d54064..000000000 --- a/app/wechat/controller/Keys.php +++ /dev/null @@ -1,179 +0,0 @@ - '文字', 'news' => '图文', 'image' => '图片', 'music' => '音乐', - 'video' => '视频', 'voice' => '语音', 'customservice' => '转客服', - ]; - - /** - * 回复规则管理 - * @auth true - * @menu true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function index() - { - // 关键字二维码生成 - if ($this->request->get('action') === 'qrc') try { - $wechat = WechatService::WeChatQrcode(); - $result = $wechat->create($this->request->get('keys', '')); - $this->success('生成二维码成功!', "javascript:$.previewImage('{$wechat->url($result['ticket'])}')"); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - $this->error("生成二维码失败,请稍候再试!
{$exception->getMessage()}"); - } - // 数据列表分页处理 - $this->title = '回复规则管理'; - $query = WechatKeys::mQuery()->whereNotIn('keys', ['subscribe', 'default']); - $query->equal('status')->like('keys,type')->dateBetween('create_at')->order('sort desc,id desc')->page(); - } - - /** - * 列表数据处理 - * @param array $data - */ - protected function _index_page_filter(array &$data) - { - foreach ($data as &$vo) { - $vo['type'] = $this->types[$vo['type']] ?? $vo['type']; - $vo['qrc'] = sysuri('wechat/keys/index') . "?action=qrc&keys={$vo['keys']}"; - } - } - - /** - * 添加回复规则 - * @auth true - */ - public function add() - { - $this->_applyFormToken(); - $this->title = '添加回复规则'; - WechatKeys::mForm('form'); - } - - /** - * 编辑回复规则 - * @auth true - */ - public function edit() - { - $this->_applyFormToken(); - $this->title = '编辑回复规则'; - WechatKeys::mForm('form'); - } - - /** - * 修改规则状态 - * @auth true - */ - public function state() - { - $this->_applyFormToken(); - WechatKeys::mSave($this->_vali([ - 'status.in:0,1' => '状态值范围异常!', - 'status.require' => '状态值不能为空!', - ])); - } - - /** - * 删除回复规则 - * @auth true - */ - public function remove() - { - $this->_applyFormToken(); - WechatKeys::mDelete(); - } - - /** - * 配置订阅回复 - * @auth true - * @menu true - */ - public function subscribe() - { - $this->_applyFormToken(); - $this->title = '编辑订阅回复规则'; - WechatKeys::mForm('form', 'keys', [], ['keys' => 'subscribe']); - } - - /** - * 配置默认回复 - * @auth true - * @menu true - */ - public function defaults() - { - $this->_applyFormToken(); - $this->title = '编辑默认回复规则'; - WechatKeys::mForm('form', 'keys', [], ['keys' => 'default']); - } - - /** - * 添加数据处理 - * @param array $data - */ - protected function _form_filter(array &$data) - { - if ($this->request->isPost()) { - $map = [['keys', '=', $data['keys']], ['id', '<>', $data['id'] ?? 0]]; - if (WechatKeys::mk()->where($map)->count() > 0) { - $this->error('该关键字已经存在!'); - } - $data['content'] = strip_tags($data['content'] ?? '', '
'); - } elseif ($this->request->isGet()) { - $public = dirname($this->request->basefile(true)); - $this->defaultImage = "{$public}/static/theme/img/image.png"; - } - } - - /** - * 表单结果处理 - * @param boolean $result - */ - protected function _form_result(bool $result) - { - if ($result !== false) { - $iskeys = in_array(input('keys'), ['subscribe', 'default']); - $location = $iskeys ? 'javascript:$.form.reload()' : 'javascript:history.back()'; - $this->success('恭喜, 关键字保存成功!', $location); - } else { - $this->error('关键字保存失败, 请稍候再试!'); - } - } -} diff --git a/app/wechat/controller/Menu.php b/app/wechat/controller/Menu.php deleted file mode 100644 index 9d72981f3..000000000 --- a/app/wechat/controller/Menu.php +++ /dev/null @@ -1,168 +0,0 @@ - '匹配规则', - 'view' => '跳转网页', - 'miniprogram' => '打开小程序', - 'customservice' => '转多客服', - 'scancode_push' => '扫码推事件', - 'scancode_waitmsg' => '扫码推事件且弹出“消息接收中”提示框', - 'pic_sysphoto' => '弹出系统拍照发图', - 'pic_photo_or_album' => '弹出拍照或者相册发图', - 'pic_weixin' => '弹出微信相册发图器', - 'location_select' => '弹出地理位置选择器', - ]; - - /** - * 微信菜单管理 - * @auth true - * @menu true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function index() - { - if ($this->request->get('output') === 'json') { - $map = [['keys', 'notin', ['subscribe', 'default']], ['status', '=', 1]]; - $result = $this->app->db->name('WechatKeys')->where($map)->order('sort desc,id desc')->select(); - $this->success('获取数据成功!', ['menudata' => sysdata($this->ckey), 'keysdata' => $result->toArray()]); - } else { - $this->title = '微信菜单定制'; - $this->fetch(); - } - } - - /** - * 取消微信菜单 - * @auth true - */ - public function cancel() - { - try { - WechatService::WeChatMenu()->delete(); - $this->success('菜单取消成功,重新订阅可立即生效!'); - } catch (HttpResponseException $exception) { - sysoplog('微信管理', '取消微信菜单成功'); - throw $exception; - } catch (\Exception $exception) { - $this->error("菜单取消失败,请稍候再试!
{$exception->getMessage()}"); - } - } - - /** - * 编辑微信菜单 - * @auth true - */ - public function push() - { - if ($this->request->isPost()) { - $data = $this->request->post('data'); - if (empty($data)) try { - WechatService::WeChatMenu()->delete(); - sysoplog('微信菜单管理', '删除微信菜单成功'); - $this->success('删除微信菜单成功!', ''); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - sysoplog('微信菜单管理', "删除微信菜单失败:{$exception->getMessage()}"); - $this->error("删除微信菜单失败,请稍候再试!
{$exception->getMessage()}"); - } else try { - sysdata($this->ckey, $this->_buildMenuData(json_decode($data, true))); - WechatService::WeChatMenu()->create(['button' => sysdata($this->ckey)]); - sysoplog('微信菜单管理', '发布微信菜单成功'); - $this->success('保存发布菜单成功!', ''); - } catch (HttpResponseException $exception) { - throw $exception; - } catch (\Exception $exception) { - sysoplog('微信菜单管理', "发布微信菜单失败:{$exception->getMessage()}"); - $this->error("微信菜单发布失败,请稍候再试!
{$exception->getMessage()}"); - } - } - } - - /** - * 菜单数据处理 - * @param array $list - * @return array - */ - private function _buildMenuData(array $list): array - { - foreach ($list as $key => &$item) { - if (empty($item['sub_button'])) { - $item = $this->_buildMenuDataItem($item); - } else { - $button = ['name' => $item['name'], 'sub_button' => []]; - foreach ($item['sub_button'] as &$sub) { - $button['sub_button'][] = $this->_buildMenuDataItem($sub); - } - $item = $button; - } - } - return $list; - } - - /** - * 单个微信菜单数据处理 - * @param array $item - * @return array - */ - private function _buildMenuDataItem(array $item): array - { - switch (strtolower($item['type'])) { - case 'pic_weixin': - case 'pic_sysphoto': - case 'scancode_push': - case 'location_select': - case 'scancode_waitmsg': - case 'pic_photo_or_album': - return ['name' => $item['name'], 'type' => $item['type'], 'key' => $item['key'] ?? $item['type']]; - case 'click': - if (empty($item['key'])) $this->error('匹配规则存在空的选项'); - return ['name' => $item['name'], 'type' => $item['type'], 'key' => $item['key']]; - case 'view': - return ['name' => $item['name'], 'type' => $item['type'], 'url' => $item['url']]; - case 'miniprogram': - return ['name' => $item['name'], 'type' => $item['type'], 'url' => $item['url'], 'appid' => $item['appid'], 'pagepath' => $item['pagepath']]; - default: - return []; - } - } -} \ No newline at end of file diff --git a/app/wechat/controller/News.php b/app/wechat/controller/News.php deleted file mode 100644 index 9646bedf7..000000000 --- a/app/wechat/controller/News.php +++ /dev/null @@ -1,155 +0,0 @@ -title = '微信图文列表'; - WechatNews::mQuery()->where(['is_deleted' => 0])->order('id desc')->page(); - } - - /** - * 图文列表数据处理 - * @param array $data - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function _page_filter(array &$data) - { - foreach ($data as &$vo) { - $vo = MediaService::instance()->news($vo['id']); - } - } - - /** - * 图文选择器 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function select() - { - $this->index(); - } - - /** - * 添加微信图文 - * @auth true - */ - public function add() - { - if ($this->request->isGet()) { - $this->title = '新建图文'; - $this->fetch('form'); - } else { - $update = [ - 'create_by' => AdminService::instance()->getUserId(), - 'article_id' => $this->_buildArticle($this->request->post('data', [])), - ]; - if (WechatNews::mk()->insert($update) !== false) { - $this->success('图文添加成功!', 'javascript:history.back()'); - } else { - $this->error('图文添加失败,请稍候再试!'); - } - } - } - - /** - * 编辑微信图文 - * @auth true - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function edit() - { - $this->id = $this->request->get('id'); - if (empty($this->id)) $this->error('参数错误,请稍候再试!'); - if ($this->request->isGet()) { - if ($this->request->get('output') === 'json') { - $this->success('获取数据成功!', MediaService::instance()->news($this->id)); - } else { - $this->title = '编辑图文'; - $this->fetch('form'); - } - } else { - $ids = $this->_buildArticle($this->request->post('data', [])); - [$map, $data] = [['id' => $this->id], ['article_id' => $ids]]; - if (WechatNews::mk()->where($map)->update($data) !== false) { - $this->success('更新成功!', 'javascript:history.back()'); - } else { - $this->error('更新失败,请稍候再试!'); - } - } - } - - /** - * 删除微信图文 - * auth true - */ - public function remove() - { - WechatNews::mDelete(); - } - - /** - * 图文更新操作 - * @param array $data - * @return string - */ - private function _buildArticle(array $data): string - { - $ids = []; - foreach ($data as $vo) { - if (empty($vo['digest'])) { - $vo['digest'] = mb_substr(strip_tags(str_replace(["\s", ' '], '', $vo['content'])), 0, 120); - } - $vo['create_at'] = date('Y-m-d H:i:s'); - if (empty($vo['id'])) { - $result = $id = WechatNewsArticle::mk()->insertGetId($vo); - } else { - $id = intval($vo['id']); - $result = WechatNewsArticle::mk()->where('id', $id)->update($vo); - } - if ($result !== false) array_push($ids, $id); - } - return join(',', $ids); - } -} \ No newline at end of file diff --git a/app/wechat/controller/api/Js.php b/app/wechat/controller/api/Js.php deleted file mode 100644 index 17cc55ef4..000000000 --- a/app/wechat/controller/api/Js.php +++ /dev/null @@ -1,103 +0,0 @@ -request->get('mode', 1); - $source = $this->request->server('http_referer') ?: $this->request->url(true); - $userinfo = WechatService::instance()->getWebOauthInfo($source, $mode, false); - if (empty($userinfo['openid'])) { - $content = 'alert("Wechat webOauth failed.")'; - } else { - $this->openid = $userinfo['openid']; - $this->params = json_encode(WechatService::instance()->getWebJssdkSign($source)); - $this->fansinfo = json_encode($userinfo['fansinfo'] ?? [], JSON_UNESCAPED_UNICODE); - // 生成数据授权令牌 - $this->token = uniqid('oauth') . rand(10000, 99999); - $this->app->cache->set($this->openid, $this->token, 3600); - // 生成前端JS变量代码 - $content = $this->_buildContent(); - } - return Response::create($content)->contentType('application/x-javascript'); - } - - /** - * 给指定地址创建签名参数 - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function sdk() - { - $data = $this->_vali(['url.require' => '签名地址不能为空!']); - $this->success('获取签名参数', WechatService::instance()->getWebJssdkSign($data['url'])); - } - - /** - * 生成授权内容 - * @return string - */ - private function _buildContent(): string - { - return <<fansinfo}; - wx.config({$this->params}); - wx.ready(function(){ - wx.hideOptionMenu(); - wx.hideAllNonBaseMenuItem(); - }); -} -EOF; - } -} diff --git a/app/wechat/controller/api/Login.php b/app/wechat/controller/api/Login.php deleted file mode 100644 index 49757be30..000000000 --- a/app/wechat/controller/api/Login.php +++ /dev/null @@ -1,108 +0,0 @@ -prefix . md5(uniqid('t', true) . rand(10000, 99999)); - $text = url('wechat/api.login/oauth', [], false, true) . "?code={$code}&mode={$mode}"; - // 生成二维码并返回结果 - $qrcode = new \Endroid\QrCode\QrCode(); - $qrcode->setText($text)->setSize(300)->setPadding(20); - $content = base64_encode($qrcode->setImageType('png')->get()); - $this->success('获取二维码成功', ['code' => $code, 'image' => "data:image/png;base64,{$content}"]); - } - - /** - * 微信授权结果处理 - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function oauth() - { - $this->code = input('code', ''); - $this->mode = input('mode', '0'); - if (stripos($this->code, $this->prefix) === 0) { - $this->url = $this->request->url(true); - $this->fans = WechatService::instance()->getWebOauthInfo($this->url, $this->mode); - if (is_array($this->fans) && isset($this->fans['openid'])) { - $this->fans['token'] = md5(uniqid('t', true) . rand(10000, 99999)); - $this->app->cache->set("wxlogin{$this->code}", $this->fans, $this->expire); - $this->app->cache->set($this->fans['openid'], $this->fans['token'], $this->expire); - $this->message = '授权成功'; - $this->fetch('success'); - } else { - $this->message = '授权失败'; - $this->fetch('failed'); - } - } else { - $this->message = '授权失败'; - $this->fetch('failed'); - } - } - - /** - * 获取授权信息 - * 用定时器请求这个接口 - * @throws \think\exception\HttpResponseException - */ - public function query() - { - $this->code = input('code', ''); - if (stripos($this->code, $this->prefix) === 0) { - $this->ckey = "wxlogin{$this->code}"; - $this->fans = $this->app->cache->get($this->ckey, new \stdClass()); - $this->success('获取授权信息', $this->fans); - } else { - $this->error("授权CODE不能为空!"); - } - } -} \ No newline at end of file diff --git a/app/wechat/controller/api/Push.php b/app/wechat/controller/api/Push.php deleted file mode 100644 index 54f7b9c9b..000000000 --- a/app/wechat/controller/api/Push.php +++ /dev/null @@ -1,336 +0,0 @@ -request->ip(); - } - - /** - * 消息推送处理接口 - * @return string - */ - public function index(): string - { - try { - if (WechatService::instance()->getType() === 'thr') { - $this->forceJson = true; // 直接返回JSON数据到SERVICE - $this->forceCustom = false; // 直接使用客服消息模式推送 - $this->appid = $this->request->post('appid', '', null); - $this->openid = $this->request->post('openid', '', null); - $this->encrypt = boolval($this->request->post('encrypt', 0)); - $this->receive = $this->_arrayChangeKeyCase(json_decode(input('params', '[]'), true)); - if (empty($this->appid) || empty($this->openid) || empty($this->receive)) { - throw new \think\admin\Exception('微信API实例缺失必要参数[appid,openid,receive]'); - } - } else { - $this->forceJson = false; // 直接返回JSON对象数据 - $this->forceCustom = false; // 直接使用客服消息推送 - $this->appid = WechatService::instance()->getAppid(); - $this->wechat = WechatService::WeChatReceive(); - $this->openid = $this->wechat->getOpenid(); - $this->encrypt = $this->wechat->isEncrypt(); - $this->receive = $this->_arrayChangeKeyCase($this->wechat->getReceive()); - } - $this->fromOpenid = $this->receive['tousername']; - // 消息类型:text, event, image, voice, shortvideo, location, link - if (method_exists($this, ($method = $this->receive['msgtype']))) { - if (is_string($result = $this->$method())) return $result; - } else { - $this->app->log->notice("The {$method} event pushed by wechat was not handled. from {$this->openid}"); - } - } catch (\Exception $exception) { - $this->app->log->error("{$exception->getFile()}:{$exception->getLine()} [{$exception->getCode()}] {$exception->getMessage()}"); - } - return 'success'; - } - - /** - * 文件消息处理 - * @return boolean|string - * @throws \WeChat\Exceptions\InvalidDecryptException - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function text() - { - return $this->_keys("WechatKeys#keys#{$this->receive['content']}", false, $this->forceCustom); - } - - /** - * 事件消息处理 - * @return boolean|string - * @throws \WeChat\Exceptions\InvalidDecryptException - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - protected function event() - { - switch (strtolower($this->receive['event'])) { - case 'unsubscribe': - $this->app->event->trigger('WechatFansUnSubscribe', $this->openid); - return $this->_setUserInfo(false); - case 'subscribe': - [$this->app->event->trigger('WechatFansSubscribe', $this->openid), $this->_setUserInfo(true)]; - if (isset($this->receive['eventkey']) && is_string($this->receive['eventkey'])) { - if (($key = preg_replace('/^qrscene_/i', '', $this->receive['eventkey']))) { - return $this->_keys("WechatKeys#keys#{$key}", false, true); - } - } - return $this->_keys('WechatKeys#keys#subscribe', true, $this->forceCustom); - case 'scan': - case 'click': - if (empty($this->receive['eventkey'])) return false; - return $this->_keys("WechatKeys#keys#{$this->receive['eventkey']}", false, $this->forceCustom); - case 'scancode_push': - case 'scancode_waitmsg': - if (empty($this->receive['scancodeinfo']['scanresult'])) return false; - return $this->_keys("WechatKeys#keys#{$this->receive['scancodeinfo']['scanresult']}", false, $this->forceCustom); - case 'view': - case 'location': - default: - return false; - } - } - - /** - * 关键字处理 - * @param string $rule 关键字规则 - * @param boolean $last 重复回复消息处理 - * @param boolean $custom 是否使用客服消息发送 - * @return boolean|string - * @throws \WeChat\Exceptions\InvalidDecryptException - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function _keys(string $rule, bool $last = false, bool $custom = false) - { - if (is_numeric(stripos($rule, '#reply#text:'))) { - [, $content] = explode('#reply#text:', $rule); - return $this->_buildMessage('text', ['Content' => $content]); - } - [$table, $field, $value] = explode('#', $rule . '##'); - $data = $this->app->db->name($table)->where([$field => $value])->find(); - if (empty($data['type']) || (array_key_exists('status', $data) && empty($data['status']))) { - return $last ? false : $this->_keys('WechatKeys#keys#default', true, $custom); - } - switch (strtolower($data['type'])) { - case 'keys': - $content = empty($data['content']) ? $data['name'] : $data['content']; - return $this->_keys("WechatKeys#keys#{$content}", $last, $custom); - case 'text': - return $this->_sendMessage('text', ['content' => $data['content']], $custom); - case 'customservice': - return $this->_sendMessage('customservice', ['content' => $data['content']], false); - case 'voice': - if (empty($data['voice_url']) || !($mediaId = MediaService::instance()->upload($data['voice_url'], 'voice'))) return false; - return $this->_sendMessage('voice', ['media_id' => $mediaId], $custom); - case 'image': - if (empty($data['image_url']) || !($mediaId = MediaService::instance()->upload($data['image_url'], 'image'))) return false; - return $this->_sendMessage('image', ['media_id' => $mediaId], $custom); - case 'news': - [$news, $articles] = [MediaService::instance()->news($data['news_id']), []]; - if (empty($news['articles'])) return false; - foreach ($news['articles'] as $vo) array_push($articles, [ - 'url' => url("@wechat/api.view/item/id/{$vo['id']}", [], false, true)->build(), - 'title' => $vo['title'], 'picurl' => $vo['local_url'], 'description' => $vo['digest'], - ]); - return $this->_sendMessage('news', ['articles' => $articles], $custom); - case 'music': - if (empty($data['music_url']) || empty($data['music_title']) || empty($data['music_desc'])) return false; - $mediaId = $data['music_image'] ? MediaService::instance()->upload($data['music_image'], 'image') : ''; - return $this->_sendMessage('music', [ - 'hqmusicurl' => $data['music_url'], 'musicurl' => $data['music_url'], - 'description' => $data['music_desc'], 'title' => $data['music_title'], 'thumb_media_id' => $mediaId, - ], $custom); - case 'video': - if (empty($data['video_url']) || empty($data['video_desc']) || empty($data['video_title'])) return false; - $video = ['title' => $data['video_title'], 'introduction' => $data['video_desc']]; - if (!($mediaId = MediaService::instance()->upload($data['video_url'], 'video', $video))) return false; - return $this->_sendMessage('video', ['media_id' => $mediaId, 'title' => $data['video_title'], 'description' => $data['video_desc']], $custom); - default: - return false; - } - } - - /** - * 发送消息到微信 - * @param string $type 消息类型(text|image|voice|video|music|news|mpnews|wxcard) - * @param array $data 消息内容数据对象 - * @param boolean $custom 是否使用客服消息发送 - * @return string|void - * @throws \WeChat\Exceptions\InvalidDecryptException - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - */ - private function _sendMessage(string $type, array $data, bool $custom = false) - { - if ($custom) { - WechatService::WeChatCustom()->send(['touser' => $this->openid, 'msgtype' => $type, $type => $data]); - } else switch (strtolower($type)) { - case 'text': // 发送文本消息 - return $this->_buildMessage($type, ['Content' => $data['content']]); - case 'news': // 发送图文消息 - foreach ($data['articles'] as &$v) { - $v = ['PicUrl' => $v['picurl'], 'Title' => $v['title'], 'Description' => $v['description'], 'Url' => $v['url']]; - } - return $this->_buildMessage($type, ['Articles' => $data['articles'], 'ArticleCount' => count($data['articles'])]); - case 'image': // 发送图片消息 - return $this->_buildMessage($type, ['Image' => ['MediaId' => $data['media_id']]]); - case 'voice': // 发送语言消息 - return $this->_buildMessage($type, ['Voice' => ['MediaId' => $data['media_id']]]); - case 'video': // 发送视频消息 - return $this->_buildMessage($type, ['Video' => ['Title' => $data['title'], 'Description' => $data['description'], 'MediaId' => $data['media_id']]]); - case 'music': // 发送音乐消息 - return $this->_buildMessage($type, ['Music' => ['Title' => $data['title'], 'Description' => $data['description'], 'MusicUrl' => $data['musicurl'], 'HQMusicUrl' => $data['musicurl'], 'ThumbMediaId' => $data['thumb_media_id']]]); - case 'customservice': // 转交客服消息 - if ($data['content']) $this->_sendMessage('text', $data, true); - return $this->_buildMessage('transfer_customer_service', []); - default: - return 'success'; - } - } - - /** - * 消息数据生成 - * @param mixed $type 消息类型 - * @param array $data 消息内容 - * @return string - * @throws \WeChat\Exceptions\InvalidDecryptException - */ - private function _buildMessage(string $type, array $data = []): string - { - $data = array_merge($data, ['ToUserName' => $this->openid, 'FromUserName' => $this->fromOpenid, 'CreateTime' => time(), 'MsgType' => $type]); - return $this->forceJson ? json_encode($data, JSON_UNESCAPED_UNICODE) : WechatService::WeChatReceive()->reply($data, true, $this->encrypt); - } - - /** - * 同步粉丝状态 - * @param boolean $state 订阅状态 - * @return boolean - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - private function _setUserInfo(bool $state): bool - { - if ($state) { - try { - $user = WechatService::WeChatUser()->getUserInfo($this->openid); - return FansService::instance()->set(array_merge($user, ['subscribe' => 1, 'appid' => $this->appid])); - } catch (\Exception $exception) { - $this->app->log->error(__METHOD__ . " {$this->openid} get userinfo faild. {$exception->getMessage()}"); - return false; - } - } else { - return FansService::instance()->set(['subscribe' => 0, 'openid' => $this->openid, 'appid' => $this->appid]); - } - } - - /** - * 数组健值全部转小写 - * @param array $data - * @return array - */ - private function _arrayChangeKeyCase(array $data): array - { - $data = array_change_key_case($data, CASE_LOWER); - foreach ($data as $key => $vo) if (is_array($vo)) { - $data[$key] = $this->_arrayChangeKeyCase($vo); - } - return $data; - } - -} diff --git a/app/wechat/controller/api/Test.php b/app/wechat/controller/api/Test.php deleted file mode 100644 index 5780c16a9..000000000 --- a/app/wechat/controller/api/Test.php +++ /dev/null @@ -1,255 +0,0 @@ -url = sysuri('wechat/api.test/jsapi', [], false, true); - return $this->_buildQrcResponse($this->url); - } - - /** - * 显示网页授权二维码 - * @return Response - * @throws \Endroid\QrCode\Exceptions\ImageFunctionFailedException - * @throws \Endroid\QrCode\Exceptions\ImageFunctionUnknownException - * @throws \Endroid\QrCode\Exceptions\ImageTypeInvalidException - */ - public function oauthQrc(): Response - { - $this->url = sysuri('wechat/api.test/oauth', [], false, true); - return $this->_buildQrcResponse($this->url); - } - - /** - * 显示网页授权二维码 - * @return Response - * @throws \Endroid\QrCode\Exceptions\ImageFunctionFailedException - * @throws \Endroid\QrCode\Exceptions\ImageFunctionUnknownException - * @throws \Endroid\QrCode\Exceptions\ImageTypeInvalidException - */ - public function jssdkQrc(): Response - { - $this->url = sysuri('wechat/api.test/jssdk', [], false, true); - return $this->_buildQrcResponse($this->url); - } - - /** - * 微信扫码支付模式一二维码显示 - * @return Response - * @throws \Endroid\QrCode\Exceptions\ImageFunctionFailedException - * @throws \Endroid\QrCode\Exceptions\ImageFunctionUnknownException - * @throws \Endroid\QrCode\Exceptions\ImageTypeInvalidException - */ - public function scanOneQrc(): Response - { - $pay = WechatService::WePayOrder(); - return $this->_buildQrcResponse($pay->qrcParams('8888888')); - } - - /** - * 扫码支付模式二测试二维码 - * @return Response - * @throws \Endroid\QrCode\Exceptions\ImageFunctionFailedException - * @throws \Endroid\QrCode\Exceptions\ImageFunctionUnknownException - * @throws \Endroid\QrCode\Exceptions\ImageTypeInvalidException - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - */ - public function scanTwoQrc(): Response - { - $result = WechatService::WePayOrder()->create([ - 'body' => '测试商品', - 'total_fee' => '1', - 'trade_type' => 'NATIVE', - 'notify_url' => sysuri('wechat/api.test/notify', [], false, true), - 'out_trade_no' => CodeExtend::uniqidNumber(18), - 'spbill_create_ip' => $this->request->ip(), - ]); - return $this->_buildQrcResponse($result['code_url']); - } - - /** - * 网页授权测试 - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function oauth() - { - $this->url = $this->request->url(true); - $this->fans = WechatService::instance()->getWebOauthInfo($this->url, 1); - $this->fetch(); - } - - /** - * JSSDK测试 - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function jssdk() - { - $this->options = WechatService::instance()->getWebJssdkSign(); - $this->fetch(); - } - - /** - * 微信扫码支付模式一通知处理 - * -- 注意,需要在微信商户配置支付通知地址 - * @return string - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - */ - public function scanOneNotify(): string - { - $pay = WechatService::WePayOrder(); - $notify = $pay->getNotify(); - p('======= 来自扫码支付1的数据 ======'); - p($notify); - // 微信统一下单处理 - $options = [ - 'body' => "测试商品,产品ID:{$notify['product_id']}", - 'total_fee' => '1', - 'trade_type' => 'NATIVE', - 'notify_url' => sysuri('wechat/api.test/notify', [], false, true), - 'out_trade_no' => CodeExtend::uniqidDate(18), - 'spbill_create_ip' => $this->request->ip(), - ]; - p('======= 来自扫码支付1统一下单结果 ======'); - p($order = $pay->create($options)); - // 回复XML文本 - $result = [ - 'return_code' => 'SUCCESS', - 'return_msg' => '处理成功', - 'appid' => $notify['appid'], - 'mch_id' => $notify['mch_id'], - 'nonce_str' => Tools::createNoncestr(), - 'prepay_id' => $order['prepay_id'], - 'result_code' => 'SUCCESS', - ]; - $result['sign'] = $pay->getPaySign($result); - p('======= 来自扫码支付1返回的结果 ======'); - p($result); - return Tools::arr2xml($result); - } - - /** - * 微信JSAPI支付测试 - * @return string - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - * @throws \WeChat\Exceptions\InvalidResponseException - */ - public function jsapi(): string - { - $this->url = $this->request->url(true); - $this->pay = WechatService::WePayOrder(); - $user = WechatService::instance()->getWebOauthInfo($this->url); - if (empty($user['openid'])) return '

网页授权获取OPENID失败!

'; - // 生成预支付码 - $result = $this->pay->create([ - 'body' => '测试商品', - 'openid' => $user['openid'], - 'total_fee' => '1', - 'trade_type' => 'JSAPI', - 'notify_url' => sysuri('wechat/api.test/notify', [], false, true), - 'out_trade_no' => CodeExtend::uniqidDate(18), - 'spbill_create_ip' => $this->request->ip(), - ]); - // 数据参数格式化 - $resultJson = var_export($result, true); - $optionJson = json_encode($this->pay->jsapiParams($result['prepay_id']), JSON_UNESCAPED_UNICODE); - $configJson = json_encode(WechatService::instance()->getWebJssdkSign(), JSON_UNESCAPED_UNICODE); - return << - 当前用户OPENID: {$user['openid']} - \n\n--- 创建微信预支付码结果 ---\n {$resultJson} - \n\n--- JSAPI 及 H5 支付参数 ---\n {$optionJson} - - - - -HTML; - } - - /** - * 支付通知接收处理 - * @return string - * @throws \WeChat\Exceptions\InvalidResponseException - */ - public function notify(): string - { - $wechat = WechatService::WePayOrder(); - p($wechat->getNotify()); - return 'SUCCESS'; - } - - /** - * 创建二维码响应对应 - * @param string $url 二维码内容 - * @return Response - * @throws \Endroid\QrCode\Exceptions\ImageFunctionFailedException - * @throws \Endroid\QrCode\Exceptions\ImageFunctionUnknownException - * @throws \Endroid\QrCode\Exceptions\ImageTypeInvalidException - */ - private function _buildQrcResponse(string $url): Response - { - $qrCode = new \Endroid\QrCode\QrCode(); - $qrCode->setText($url)->setSize(300)->setPadding(20)->setImageType('png'); - return response($qrCode->get(), 200, ['Content-Type' => 'image/png']); - } - -} diff --git a/app/wechat/controller/api/View.php b/app/wechat/controller/api/View.php deleted file mode 100644 index fc58891bd..000000000 --- a/app/wechat/controller/api/View.php +++ /dev/null @@ -1,109 +0,0 @@ -id = $id ?: input('id', 0); - $this->news = MediaService::instance()->news($this->id); - $this->fetch(); - } - - /** - * 文章内容展示 - * @param string|integer $id 文章ID编号 - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function item($id = 0) - { - $map = ['id' => $id ?: input('id', 0)]; - WechatNewsArticle::mk()->where($map)->update([ - 'read_num' => $this->app->db->raw('read_num+1'), - ]); - $this->info = WechatNewsArticle::mk()->where($map)->find(); - $this->fetch(); - } - - /** - * 文本展示 - */ - public function text() - { - $this->content = strip_tags(input('content', ''), '
'); - $this->fetch(); - } - - /** - * 图片展示 - */ - public function image() - { - $this->content = strip_tags(input('content', ''), ''); - $this->fetch(); - } - - /** - * 视频展示 - */ - public function video() - { - $this->url = strip_tags(input('url', ''), ''); - $this->title = strip_tags(input('title', ''), ''); - $this->fetch(); - } - - /** - * 语音展示 - */ - public function voice() - { - $this->url = strip_tags(input('url', ''), ''); - $this->fetch(); - } - - /** - * 音乐展示 - */ - public function music() - { - $this->url = strip_tags(input('url', ''), ''); - $this->desc = strip_tags(input('desc', ''), ''); - $this->title = strip_tags(input('title', ''), ''); - $this->fetch(); - } -} diff --git a/app/wechat/model/WechatAuto.php b/app/wechat/model/WechatAuto.php deleted file mode 100644 index 945ad3810..000000000 --- a/app/wechat/model/WechatAuto.php +++ /dev/null @@ -1,28 +0,0 @@ -where(['status' => 1])->order('time asc')->cursor() as $vo) { - [$name, $time] = ["推送客服消息 {$vo['code']}#{$openid}", $this->parseTimeString($vo['time'])]; - QueueService::instance()->register($name, "xadmin:fansmsg {$openid} {$vo['code']}", $time, []); - } - } - - /** - * 解析配置时间格式 - * @param string $time - * @return int - */ - private function parseTimeString(string $time): int - { - if (preg_match('|^.*?(\d{2}).*?(\d{2}).*?(\d{2}).*?$|', $time, $vars)) { - return intval($vars[1]) * 3600 * intval($vars[2]) * 60 + intval($vars[3]); - } else { - return 0; - } - } -} \ No newline at end of file diff --git a/app/wechat/service/FansService.php b/app/wechat/service/FansService.php deleted file mode 100644 index 1a65108dc..000000000 --- a/app/wechat/service/FansService.php +++ /dev/null @@ -1,66 +0,0 @@ -app->event->trigger('WechatFansUpdate', $user); - return !!data_save(WechatFans::class, $user, 'openid'); - } - - /** - * 获取粉丝信息 - * @param string $openid - * @return array - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function get(string $openid): array - { - $user = WechatFans::mk()->where(['openid' => $openid])->find(); - return empty($user) ? [] : $user->toArray(); - } -} diff --git a/app/wechat/service/MediaService.php b/app/wechat/service/MediaService.php deleted file mode 100644 index 45e7a9653..000000000 --- a/app/wechat/service/MediaService.php +++ /dev/null @@ -1,97 +0,0 @@ - $id, 'is_deleted' => 0]; - $data = WechatNews::mk()->where($map1)->where($map)->find(); - if (empty($data)) return []; - // 文章内容编号 - $data['articles'] = []; - $aids = $data['articleids'] = str2arr($data['article_id']); - if (empty($data['articleids'])) return $data->toArray(); - // 文章内容集合 - $query = WechatNewsArticle::mk()->whereIn('id', $aids)->orderField('id', $aids); - $data['articles'] = $query->withoutField('create_by,create_at')->select()->toArray(); - return $data->toArray(); - } - - /** - * 上传图片永久素材 - * @param string $url 文件地址 - * @param string $type 文件类型 - * @param array $video 视频信息 - * @return string media_id - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function upload(string $url, string $type = 'image', array $video = []): string - { - $map = ['md5' => md5($url), 'appid' => WechatService::instance()->getAppid()]; - if (($mediaId = WechatMedia::mk()->where($map)->value('media_id'))) return $mediaId; - $result = WechatService::WeChatMedia()->addMaterial(self::buildCurlFile($url), $type, $video); - data_save(WechatMedia::class, [ - 'local_url' => $url, 'md5' => $map['md5'], 'type' => $type, 'appid' => $map['appid'], - 'media_url' => $result['url'] ?? '', 'media_id' => $result['media_id'], - ], 'type', $map); - return $result['media_id']; - } - - /** - * 创建 CURL 文件对象 - * @param string $local 文件路径或网络地址 - * @return MyCurlFile - * @throws \WeChat\Exceptions\LocalCacheException - */ - private function buildCurlFile(string $local): MyCurlFile - { - if (file_exists($local)) { - return new MyCurlFile($local); - } else { - return new MyCurlFile(Storage::down($local)['file']); - } - } -} diff --git a/app/wechat/service/WechatService.php b/app/wechat/service/WechatService.php deleted file mode 100644 index 09e6b5e70..000000000 --- a/app/wechat/service/WechatService.php +++ /dev/null @@ -1,289 +0,0 @@ -getConfig()); - } else { - throw new Exception("抱歉,接口模式无法实例 {$class} 对象!"); - } - } else { - [$appid, $appkey] = [sysconf('wechat.thr_appid'), sysconf('wechat.thr_appkey')]; - $data = ['class' => $name, 'appid' => $appid, 'time' => time(), 'nostr' => uniqid()]; - $data['sign'] = md5("{$data['class']}#{$appid}#{$appkey}#{$data['time']}#{$data['nostr']}"); - // 创建远程连接,默认使用 JSON-RPC 方式调用接口 - $token = enbase64url(json_encode($data, JSON_UNESCAPED_UNICODE)); - return new JsonRpcClient("https://open.cuci.cc/service/api.client/jsonrpc?not_init_session=1&token={$token}"); - } - } - - /** - * 解析调用对象名称 - * @param string $name - * @return array - */ - private static function parseName(string $name): array - { - foreach (['WeChat', 'WeMini', 'WeOpen', 'WePay', 'ThinkService'] as $type) { - if (strpos($name, $type) === 0) { - [, $base] = explode($type, $name); - return [$type, $base, "\\{$type}\\{$base}"]; - } - } - return ['-', '-', $name]; - } - - /** - * 获取当前微信APPID - * @return string - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getAppid(): string - { - if ($this->getType() === 'api') { - return sysconf('wechat.appid'); - } else { - return sysconf('wechat.thr_appid'); - } - } - - /** - * 获取接口授权模式 - * @return string - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getType(): string - { - $type = strtolower(sysconf('wechat.type')); - if (in_array($type, ['api', 'thr'])) return $type; - throw new Exception('请在后台配置微信对接授权模式'); - } - - /** - * 获取公众号配置参数 - * @return array - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getConfig(): array - { - $options = [ - 'appid' => $this->getAppid(), - 'token' => sysconf('wechat.token'), - 'appsecret' => sysconf('wechat.appsecret'), - 'encodingaeskey' => sysconf('wechat.encodingaeskey'), - 'mch_id' => sysconf('wechat.mch_id'), - 'mch_key' => sysconf('wechat.mch_key'), - 'cache_path' => $this->app->getRuntimePath() . 'wechat', - ]; - $local = LocalStorage::instance(); - switch (strtolower(sysconf('wechat.mch_ssl_type'))) { - case 'p12': - $options['ssl_p12'] = $local->path(sysconf('wechat.mch_ssl_p12'), true); - break; - case 'pem': - $options['ssl_key'] = $local->path(sysconf('wechat.mch_ssl_key'), true); - $options['ssl_cer'] = $local->path(sysconf('wechat.mch_ssl_cer'), true); - break; - } - return $options; - } - - /** - * 通过网页授权获取粉丝信息 - * @param string $source 回跳URL地址 - * @param integer $isfull 获取资料模式 - * @param boolean $redirect 是否直接跳转 - * @return array - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getWebOauthInfo(string $source, int $isfull = 0, bool $redirect = true): array - { - $appid = $this->getAppid(); - $openid = $this->app->session->get("{$appid}_openid"); - $userinfo = $this->app->session->get("{$appid}_fansinfo"); - if ((empty($isfull) && !empty($openid)) || (!empty($isfull) && !empty($openid) && !empty($userinfo))) { - empty($userinfo) || FansService::instance()->set($userinfo, $appid); - return ['openid' => $openid, 'fansinfo' => $userinfo]; - } - if ($this->getType() === 'api') { - // 解析 GET 参数 - parse_str(parse_url($source, PHP_URL_QUERY), $params); - $getVars = [ - 'code' => $params['code'] ?? input('code', ''), - 'rcode' => $params['rcode'] ?? input('rcode', ''), - 'state' => $params['state'] ?? input('state', ''), - ]; - $wechat = static::WeChatOauth(); - if ($getVars['state'] !== $appid || empty($getVars['code'])) { - $params['rcode'] = enbase64url($source); - $location = strstr("{$source}?", '?', true) . '?' . http_build_query($params); - $oauthurl = $wechat->getOauthRedirect($location, $appid, $isfull ? 'snsapi_userinfo' : 'snsapi_base'); - throw new HttpResponseException($redirect ? redirect($oauthurl, 301) : response("location.href='{$oauthurl}'")); - } elseif (($token = $wechat->getOauthAccessToken($getVars['code'])) && isset($token['openid'])) { - $this->app->session->set("{$appid}_openid", $openid = $token['openid']); - if ($isfull && isset($token['access_token'])) { - $userinfo = $wechat->getUserInfo($token['access_token'], $openid); - $this->app->session->set("{$appid}_fansinfo", $userinfo); - empty($userinfo) || FansService::instance()->set($userinfo, $appid); - } - } - if ($getVars['rcode']) { - $location = debase64url($getVars['rcode']); - throw new HttpResponseException($redirect ? redirect($location, 301) : response("location.href='{$location}'")); - } elseif ((empty($isfull) && !empty($openid)) || (!empty($isfull) && !empty($openid) && !empty($userinfo))) { - return ['openid' => $openid, 'fansinfo' => $userinfo]; - } else { - throw new Exception('Query params [rcode] not find.'); - } - } else { - $result = static::ThinkServiceConfig()->oauth($this->app->session->getId(), $source, $isfull); - $this->app->session->set("{$appid}_openid", $openid = $result['openid']); - $this->app->session->set("{$appid}_fansinfo", $userinfo = $result['fans']); - if ((empty($isfull) && !empty($openid)) || (!empty($isfull) && !empty($openid) && !empty($userinfo))) { - empty($userinfo) || FansService::instance()->set($userinfo, $appid); - return ['openid' => $openid, 'fansinfo' => $userinfo]; - } - if ($redirect) { - throw new HttpResponseException(redirect($result['url'], 301)); - } else { - throw new HttpResponseException(response("location.href='{$result['url']}'")); - } - } - } - - /** - * 获取微信网页JSSDK签名参数 - * @param null|string $location 签名地址 - * @return array - * @throws \WeChat\Exceptions\InvalidResponseException - * @throws \WeChat\Exceptions\LocalCacheException - * @throws \think\admin\Exception - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - */ - public function getWebJssdkSign(?string $location = null): array - { - $location = $location ?: $this->app->request->url(true); - if ($this->getType() === 'api') { - return static::WeChatScript()->getJsSign($location); - } else { - return static::ThinkServiceConfig()->jsSign($location); - } - } -} \ No newline at end of file diff --git a/app/wechat/sys.php b/app/wechat/sys.php deleted file mode 100644 index 4c3069a15..000000000 --- a/app/wechat/sys.php +++ /dev/null @@ -1,30 +0,0 @@ -request->isCli()) { - Console::starting(function (Console $console) { - $console->addCommands([Fans::class, Auto::class]); - }); -} else { - app()->event->listen('WechatFansSubscribe', function ($openid) { - AutoService::instance()->register($openid); - }); -} \ No newline at end of file diff --git a/app/wechat/view/api/login/failed.html b/app/wechat/view/api/login/failed.html deleted file mode 100644 index edf4d3b81..000000000 --- a/app/wechat/view/api/login/failed.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - 扫码登录失败 - - - - - - - -
-
- img -
{$message|default='授权失败'}
-
-
- - \ No newline at end of file diff --git a/app/wechat/view/api/login/success.html b/app/wechat/view/api/login/success.html deleted file mode 100644 index b520132c1..000000000 --- a/app/wechat/view/api/login/success.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - 扫码登录成功 - - - - - - - -
-
- img -
{$message|default='授权成功'}
-
-
-

授权时间:{:date('Y年m月d日H:i')}

-
-
- - \ No newline at end of file diff --git a/app/wechat/view/api/test/jssdk.html b/app/wechat/view/api/test/jssdk.html deleted file mode 100644 index 9a4b1d38f..000000000 --- a/app/wechat/view/api/test/jssdk.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - JSSDK 功能测试 - - - - - - - -
-

JSSDK 功能测试

-
- -
- -
- - - - - - - - diff --git a/app/wechat/view/api/test/oauth.html b/app/wechat/view/api/test/oauth.html deleted file mode 100644 index 880fb53cb..000000000 --- a/app/wechat/view/api/test/oauth.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - 微信网页授权测试 - - - - - - - -{if empty($fans.fansinfo)} -
- 操作失败 -
-

通过网页授权获取用户资料失败,请检查权限再试!

-

- 重新获取(刷新) -

-
-
-{else} -
- img -

{$fans.fansinfo.nickname}

-
-
- 用户标识 -
-
OPENID
-

{$fans.fansinfo.openid}

-
UNIONID
-

{$fans.fansinfo.unionid|default='未获取到'}

-
-
-
- 详细资料 -
-
性别
-

{:[1=>'男',2=>'女'][$fans.fansinfo.sex]??'未知'}

-
系统语言
-

{$fans.fansinfo.language}

-
所在区域
-

{$fans.fansinfo.country} - {$fans.fansinfo.province} - {$fans.fansinfo.city}

- {if isset($fans.fansinfo.privilege.0)} -
设备网络
-

{$fans.fansinfo.privilege.0|default='未获取到网络信息'}

- {/if} -
-
-{/if} - - \ No newline at end of file diff --git a/app/wechat/view/api/view/image.html b/app/wechat/view/api/view/image.html deleted file mode 100644 index 8dfe6226c..000000000 --- a/app/wechat/view/api/view/image.html +++ /dev/null @@ -1,28 +0,0 @@ -{extend name='api/view/main'} - -{block name='content'} -
{:date('H:i')}
-
- -
img
-
-{/block} - -{block name='style'} - -{/block} \ No newline at end of file diff --git a/app/wechat/view/api/view/item.html b/app/wechat/view/api/view/item.html deleted file mode 100644 index 6a76feaa3..000000000 --- a/app/wechat/view/api/view/item.html +++ /dev/null @@ -1,72 +0,0 @@ -{extend name='api/view/main'} - -{block name='title'}{/block} - -{block name='content'} -
- {notempty name='info'} -

{$info.title|default=''}

-

- {$info.author} - {:date('Y年m月d日',strtotime($info.create_at))} -

- {if $info.show_cover_pic and $info.local_url}img{/if} -
{$info.content|raw}
-
阅读 {$info.read_num}
- {else} -

404

访问资源不存在哦!
- {/notempty} -
-{/block} - -{block name='style'} - -{/block} \ No newline at end of file diff --git a/app/wechat/view/api/view/main.html b/app/wechat/view/api/view/main.html deleted file mode 100644 index a35e7df14..000000000 --- a/app/wechat/view/api/view/main.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - {block name='title'}{/block} - - - - - - - - - - {block name='style'}{/block} - - -{block name='content'}{/block} - \ No newline at end of file diff --git a/app/wechat/view/api/view/music.html b/app/wechat/view/api/view/music.html deleted file mode 100644 index 95e4d0a73..000000000 --- a/app/wechat/view/api/view/music.html +++ /dev/null @@ -1,78 +0,0 @@ -{extend name='api/view/main'} - -{block name='content'} -
{:date('H:i')}
-
- -
-
-
{$title|default=''}
-
{$desc|default=''}
-
- -
-
- - -{/block} - -{block name='style'} - -{/block} \ No newline at end of file diff --git a/app/wechat/view/api/view/news.html b/app/wechat/view/api/view/news.html deleted file mode 100644 index a6d11b939..000000000 --- a/app/wechat/view/api/view/news.html +++ /dev/null @@ -1,147 +0,0 @@ -{extend name='api/view/main'} - -{block name='content'} -
{:date('H:i')}
-
- {notempty name='news.articles'} {foreach $news.articles as $k => $v} {if $k < 1} - - {if $v.title}{$v.title}{/if} - - {else} -
- - {$v.title} - - {/if} {/foreach} {else} -

404

访问资源不存在哦!
- {/notempty} -
- -{/block} - -{block name='style'} - - -{/block} \ No newline at end of file diff --git a/app/wechat/view/api/view/text.html b/app/wechat/view/api/view/text.html deleted file mode 100644 index ddae68acc..000000000 --- a/app/wechat/view/api/view/text.html +++ /dev/null @@ -1,9 +0,0 @@ -{extend name='api/view/main'} - -{block name='content'} -
{:date('H:i')}
-
- -
{$content|raw|default=''}
-
-{/block} \ No newline at end of file diff --git a/app/wechat/view/api/view/video.html b/app/wechat/view/api/view/video.html deleted file mode 100644 index bea97033e..000000000 --- a/app/wechat/view/api/view/video.html +++ /dev/null @@ -1,44 +0,0 @@ -{extend name='api/view/main'} - -{block name='content'} -
{:date('H:i')}
-
-
-
{$title|default=''}
-
{:date('m月d日')}
- -
-
-{/block} - -{block name='style'} - - -{/block} \ No newline at end of file diff --git a/app/wechat/view/api/view/voice.html b/app/wechat/view/api/view/voice.html deleted file mode 100644 index 12b3a8038..000000000 --- a/app/wechat/view/api/view/voice.html +++ /dev/null @@ -1,45 +0,0 @@ -{extend name='api/view/main'} - -{block name='content'} -
{:date('H:i')}
-
- -
- - - -
-
- -{/block} - -{block name='style'} - -{/block} \ No newline at end of file diff --git a/app/wechat/view/auto/form.html b/app/wechat/view/auto/form.html deleted file mode 100644 index 395db4bce..000000000 --- a/app/wechat/view/auto/form.html +++ /dev/null @@ -1,265 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="style"} - -{/block} - -{block name="content"} -
-
-
公众号
-
-
-
-
-
-
编辑关键字
-
-
- -
- - -
-
-
- -
- {foreach ['1'=>'启用','0'=>'禁用'] as $k=>$v} - - {/foreach} -
-
- -
- -
- {foreach $types as $k=>$v} - - {/foreach} -
-
- -
- -
- -
-
- -
- -
- - 选择图文 -
-
- -
- -
- - -

文件最大2Mb,支持bmp/png/jpeg/jpg/gif格式

- img -
-
- -
- -
- - -

文件最大2Mb,播放长度不超过60s,mp3/wma/wav/amr格式

-
-
- -
- -
- -
-
- -
- -
- - -
-
- -
- -
- -
-
- -
- -
- - -

文件最大64KB,只支持JPG格式

-
-
- -
- -
- -
-
- -
- -
- - -

文件最大10MB,只支持MP4格式

-
-
- -
- -
- -
-
- -
- -
- {if isset($vo['id'])}{/if} - {if isset($vo['code'])}{/if} - - - -
-
-
-
-
-
-{/block} - -{block name="script"} - -{/block} \ No newline at end of file diff --git a/app/wechat/view/auto/index.html b/app/wechat/view/auto/index.html deleted file mode 100644 index adb3563b8..000000000 --- a/app/wechat/view/auto/index.html +++ /dev/null @@ -1,86 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - - - - - -{/block} - -{block name='content'} -
- 特别注意:关注自动回复使用微信客服消息接口发送,因此多图文只能发送每组图文的第一篇文章,另外还需要开启系统任务功能。 -
- -
- {include file='auto/index_search'} - - {notempty name='list'} - - - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - - - {/foreach} - -
- - 消息编号延迟时间消息类型预览添加时间状态
- - {$vo.code}{$vo.time}{$vo.type} - {if $vo.type eq '音乐'} - 预览 - {elseif in_array($vo.type,['文字','转客服'])} - 预览 - {elseif $vo.type eq '图片'} - 预览 - {elseif $vo.type eq '图文'} - 预览 - {elseif $vo.type eq '视频'} - 预览 - {elseif $vo.type eq '语音'} - 预览 - {else} {$vo.content} {/if} - {$vo.create_at|format_datetime}{if $vo.status eq 0}已禁用{elseif $vo.status eq 1}已激活{/if} - - - 编 辑 - - - - 禁 用 - - 激 活 - - - - 删 除 - - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} \ No newline at end of file diff --git a/app/wechat/view/auto/index_search.html b/app/wechat/view/auto/index_search.html deleted file mode 100644 index 8d1a6a108..000000000 --- a/app/wechat/view/auto/index_search.html +++ /dev/null @@ -1,54 +0,0 @@ -
- 条件搜索 - - -
- diff --git a/app/wechat/view/config/options.html b/app/wechat/view/config/options.html deleted file mode 100644 index 1b1f3ed3f..000000000 --- a/app/wechat/view/config/options.html +++ /dev/null @@ -1,39 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - -{/block} - -{block name="content"} -
-
- {foreach ['api'=>'微信公众平台直接模式','thr'=>'微信开放平台授权模式'] as $k=>$v} - - {/foreach} -

请选择微信对接方式,其中微信开放平台授权模式是需要微信开放平台支持,还需要搭建微信授权服务!

-
-
-
-
-
{include file='config/options_form_api'}
-
{include file='config/options_form_thr'}
-
-
-{/block} - -{block name='script'} - -{/block} diff --git a/app/wechat/view/config/options_form_api.html b/app/wechat/view/config/options_form_api.html deleted file mode 100644 index 775e4af34..000000000 --- a/app/wechat/view/config/options_form_api.html +++ /dev/null @@ -1,66 +0,0 @@ -
- -
-
- 使用微信公众平台直接模式时,需要在微信公众号平台配置授权IP及网页授权域名,将公众号平台获取到的参数填写到下面。 -
-
- -
- -
- -
- -

公众号平台与系统对接认证Token,请优先填写此参数并保存,然后再在微信公众号平台操作对接。

-
-
- -
- -
- -

公众号APPID是所有接口必要参数,可以在公众号平台 [ 开发 > 基本配置 ] 页面获取。

-
-
- -
- -
- -

公众号应用密钥是所有接口必要参数,可以在公众号平台 [ 开发 > 基本配置 ] 页面授权后获取。

-
-
- -
- -
- -

若开启了消息加密时必需填写,消息加密密钥必需填写并保持与公众号平台一致。

-
-
- -
- -
- - -

公众号服务平台消息推送接口及服务器授权IP地址,需在公众号接口开发处配置。

-
-
- -
- -
- - -
- -
-
\ No newline at end of file diff --git a/app/wechat/view/config/options_form_thr.html b/app/wechat/view/config/options_form_thr.html deleted file mode 100644 index edc185a57..000000000 --- a/app/wechat/view/config/options_form_thr.html +++ /dev/null @@ -1,74 +0,0 @@ -
- -
-
- 使用微信开放平台授权模式时,需要使用楚才开放平台的 微信授权 服务,接口需要使用 YarJsonRpc 通信。 -
-
- -
- - -
- -
-
-
-
-
-

微信昵称:{$wechat.user_nickname|default='-'}

-

微信类型:{$wechat.service_type|default='-'} / {$wechat.service_verify == '未认证' ? '未认证' : '已认证'}

-

注册公司:{$wechat.user_company|default='-'}

-

授权绑定:{$wechat.create_at|format_datetime}

-
-
-
-
- - -
- -
- -

点击链接将跳转到微信第三方平台进行公众号授权。

- {if !empty($message)}

{$message|default=''}

{/if} -
-
- -
- -
- -

众号 appid 通过微信第三方授权自动获取. 若没有值请进行微信第三方授权。

-
-
- -
- -
- -
-
- -
- -
- -

公众号绑定服务平台接口通知 URL, 公众号消息接收与回复等。

-
-
-
- -
- - -
- -
-
\ No newline at end of file diff --git a/app/wechat/view/config/options_test.html b/app/wechat/view/config/options_test.html deleted file mode 100644 index 9ae3e40dd..000000000 --- a/app/wechat/view/config/options_test.html +++ /dev/null @@ -1,21 +0,0 @@ -
-
-
-
- img -

OAUTH 网页授权

-
-
- img -

JSSDK 接口签名

-
-
-
-
- - diff --git a/app/wechat/view/config/payment.html b/app/wechat/view/config/payment.html deleted file mode 100644 index 9680b931a..000000000 --- a/app/wechat/view/config/payment.html +++ /dev/null @@ -1,102 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - -{/block} - -{block name="content"} -
-
-
- -
-
- 微信商户参数配置,此处交易的商户号需要与微信公众号对接的公众号 APPID 匹配。 -
-
- -
-
- -
- -

微信商户账号,需要在微信商户平台获取,MCH_ID 与 APPID 匹配

-
-
- -
- -
- -

微信商户密钥,需要在微信商户平台操作设置操作密码并获取商户接口密钥

-
-
- -
- -
- -
- {foreach ['none'=>'暂不使用证书', 'pem'=>'上传 PEM 证书', 'p12'=>'上传 P12 证书'] as $k=>$v} - - {/foreach} -
-

请选择需要上传证书类型,P12 或 PEM 二选一,证书需要从微信商户平台获取

-
- - -

微信商户支付 P12 证书,实现订单退款、打款、发红包等支出功能都使用证书

-
-
- - - - -

微信商户支付 PEM 双向证书,实现订单退款、打款、发红包等支出功能都使用证书

-
-
-
- -
-
- -
- -
-
-
-
-{/block} - -{block name="script"} - -{/block} diff --git a/app/wechat/view/config/payment_test.html b/app/wechat/view/config/payment_test.html deleted file mode 100644 index 758b7ced9..000000000 --- a/app/wechat/view/config/payment_test.html +++ /dev/null @@ -1,40 +0,0 @@ -
-
-
-
-

微信开放平台授权

-

JSSDK 签名测试需要在开放平台配置当前的授权域名:{:request()->host()}

-
-
-

公众号平台域名授权

-

网页授权及 JSSDK 签名都需要在公众号平台授权域名:{:request()->host()}

-
-
-

微信商户支付测试配置

-

JSAPI 支付测试需要在微信商户平台配置支付目录:{:sysuri('wechat/api.test/index',[],'',true)}

-

扫码支付①需要在微信商户平台配置支付通知地址:{:url('wechat/api.test/scanOneNotify',[],'',true)}

-
-
-
-
- img -

微信 JSAPI 支付

-
-
- img -

微信扫码支付①

-
-
- img -

微信扫码支付②

-
-
-
-
- - diff --git a/app/wechat/view/fans/index.html b/app/wechat/view/fans/index.html deleted file mode 100644 index 3dfa588fe..000000000 --- a/app/wechat/view/fans/index.html +++ /dev/null @@ -1,82 +0,0 @@ -{extend name="../../admin/view/table"} - -{block name="button"} - - - - - - - - - - - - -{/block} - -{block name="content"} -
- {include file='fans/index_search'} -
-
-{/block} - -{block name='script'} - - - - - - -{/block} \ No newline at end of file diff --git a/app/wechat/view/fans/index_search.html b/app/wechat/view/fans/index_search.html deleted file mode 100644 index f0ae4783a..000000000 --- a/app/wechat/view/fans/index_search.html +++ /dev/null @@ -1,80 +0,0 @@ -
- 条件搜索 - -
- - \ No newline at end of file diff --git a/app/wechat/view/keys/form.html b/app/wechat/view/keys/form.html deleted file mode 100644 index ad8700e52..000000000 --- a/app/wechat/view/keys/form.html +++ /dev/null @@ -1,265 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="style"} - -{/block} - -{block name="content"} -
-
-
公众号
-
-
-
-
-
-
编辑关键字
-
- -
- -
- -
-
- - - -
- -
- {foreach ['1'=>'启用','0'=>'禁用'] as $k=>$v} - - {/foreach} -
-
- -
- -
- {foreach $types as $k=>$v} - - {/foreach} -
-
- -
- -
- -
-
- -
- -
- - 选择图文 -
-
- -
- -
- - -

文件最大2Mb,支持bmp/png/jpeg/jpg/gif格式

- img -
-
- -
- -
- - -

文件最大2Mb,播放长度不超过60s,mp3/wma/wav/amr格式

-
-
- -
- -
- -
-
- -
- -
- - -
-
- -
- -
- -
-
- -
- -
- - -

文件最大64KB,只支持JPG格式

-
-
- -
- -
- -
-
- -
- -
- - -

文件最大10MB,只支持MP4格式

-
-
- -
- -
- -
-
- -
-
- - - - - {if isset($vo['id'])}{/if} -
-
-
-
-
-
-{/block} - -{block name="script"} - -{/block} \ No newline at end of file diff --git a/app/wechat/view/keys/index.html b/app/wechat/view/keys/index.html deleted file mode 100644 index 1ec6cb9a7..000000000 --- a/app/wechat/view/keys/index.html +++ /dev/null @@ -1,91 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - - - - - - - -{/block} - -{block name='content'} -
- {include file='keys/index_search'} - - {notempty name='list'} - - - - - - - - - - - - - {/notempty} - - {foreach $list as $key=>$vo} - - - - - - - - - - - {/foreach} - -
- - - - 关键字类型预览添加时间状态
- - - - - {notempty name='vo.qrc'} - - {/notempty} - {$vo.keys} - {$vo.type} - {if $vo.type eq '音乐'} - 预览 - {elseif in_array($vo.type,['文字','转客服'])} - 预览 - {elseif $vo.type eq '图片'} - 预览 - {elseif $vo.type eq '图文'} - 预览 - {elseif $vo.type eq '视频'} - 预览 - {elseif $vo.type eq '语音'} - 预览 - {else} {$vo.content} {/if} - {$vo.create_at|format_datetime}{if $vo.status eq 0}已禁用{elseif $vo.status eq 1}已激活{/if} - - - 编 辑 - - - - 禁 用 - - 激 活 - - - - 删 除 - - -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} \ No newline at end of file diff --git a/app/wechat/view/keys/index_search.html b/app/wechat/view/keys/index_search.html deleted file mode 100644 index 180c0fc85..000000000 --- a/app/wechat/view/keys/index_search.html +++ /dev/null @@ -1,49 +0,0 @@ -
- 条件搜索 - - -
- diff --git a/app/wechat/view/menu/index.html b/app/wechat/view/menu/index.html deleted file mode 100644 index d4a7e4fb4..000000000 --- a/app/wechat/view/menu/index.html +++ /dev/null @@ -1,200 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name='content'} - - - - -{/block} \ No newline at end of file diff --git a/app/wechat/view/news/form.html b/app/wechat/view/news/form.html deleted file mode 100644 index 2d7c2fc32..000000000 --- a/app/wechat/view/news/form.html +++ /dev/null @@ -1,209 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="style"}{include file='news/formstyle'}{/block} - -{block name='content'} -
-
-
-
-
- - - - -
-
-
-
- - - - -
-
- -
-
-
-
-
- - -
- 图文封面大图片 -
-
- -
-
- -
- -
-
-

封面大图片建议尺寸 900像素 * 500像素

-
-
- 图文文章内容 - -
- - -
- - -
-
-
-
-
- -{/block} - - -{block name='script'} - -{/block} \ No newline at end of file diff --git a/app/wechat/view/news/formstyle.html b/app/wechat/view/news/formstyle.html deleted file mode 100644 index f934580be..000000000 --- a/app/wechat/view/news/formstyle.html +++ /dev/null @@ -1,87 +0,0 @@ - \ No newline at end of file diff --git a/app/wechat/view/news/index.html b/app/wechat/view/news/index.html deleted file mode 100644 index 009acd281..000000000 --- a/app/wechat/view/news/index.html +++ /dev/null @@ -1,158 +0,0 @@ -{extend name="../../admin/view/main"} - -{block name="button"} - -{if auth('add')} - -{/if} - -{/block} - -{block name='content'} -
-
- {foreach $list as $vo} -
-
- 预览 - 编辑 - 删除 -
- {foreach $vo.articles as $k => $v} - {if $k < 1} -
- {if $v.title}

{$v.title}

{/if} -
-
- {else} -
- {$v.title} -
-
-
- {/if}{/foreach} -
- {/foreach} -
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -
-{/block} - -{block name='script'} - -{/block} - -{block name="style"} - -{/block} diff --git a/app/wechat/view/news/select.html b/app/wechat/view/news/select.html deleted file mode 100644 index ba61a7cd2..000000000 --- a/app/wechat/view/news/select.html +++ /dev/null @@ -1,146 +0,0 @@ -{extend name="../../admin/view/index/index"} - -{block name='style'} - -{/block} - -{block name="body"} -
- {foreach $list as $vo} -
- {foreach $vo.articles as $k => $v}{if $k < 1} -
- {if $v.title}

{$v.title}

{/if} -
-
- {else} -
-
{$v.title}
-
-
-
- {/if}{/foreach} -
- {/foreach} -
-{empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} -{/block} - -{block name="script"} - -{/block} \ No newline at end of file diff --git a/build.cmd b/build.cmd deleted file mode 100644 index c7d15da73..000000000 --- a/build.cmd +++ /dev/null @@ -1 +0,0 @@ -composer update --profile --prefer-dist --no-dev --optimize-autoloader \ No newline at end of file diff --git a/composer.json b/composer.json deleted file mode 100644 index c541eaa93..000000000 --- a/composer.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "project", - "name": "zoujingli/thinkadmin", - "license": "MIT", - "homepage": "https://thinkadmin.top", - "description": "Application Development Framework", - "keywords": [ - "ThinkAdmin", - "ThinkLibrary" - ], - "authors": [ - { - "name": "Anyon", - "email": "zoujingli@qq.com" - } - ], - "minimum-stability": "stable", - "require": { - "php": ">=7.1.0", - "ext-gd": "*", - "ext-xml": "*", - "ext-json": "*", - "ext-curl": "*", - "ext-iconv": "*", - "ext-openssl": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "endroid/qr-code": "^1.9", - "topthink/framework": "^6.0", - "topthink/think-view": "^1.0", - "zoujingli/ip2region": "^1.0", - "zoujingli/think-library": "6.0.x-dev", - "zoujingli/wechat-developer": "^1.2" - }, - "autoload": { - "psr-0": { - "": "extend" - }, - "psr-4": { - "app\\": "app" - } - }, - "scripts": { - "post-autoload-dump": [ - "@php think service:discover", - "@php think vendor:publish" - ] - } -} diff --git a/config/app.php b/config/app.php deleted file mode 100644 index b8d1ad2c7..000000000 --- a/config/app.php +++ /dev/null @@ -1,44 +0,0 @@ - '', - // 应用快速访问 - 'app_express' => true, - // 是否启用路由 - 'with_route' => true, - // 超级用户账号 - 'super_user' => 'admin', - // 默认时区 - 'default_timezone' => 'Asia/Shanghai', - // 应用映射(自动多应用模式有效) - 'app_map' => [], - // 域名绑定(自动多应用模式有效) - 'domain_bind' => [], - // 禁止URL访问的应用列表(自动多应用模式有效) - 'deny_app_list' => [], - // 非调试模式时显示错误的消息 - 'error_message' => '页面错误!请稍后再试~', - // CORS 自动配置跨域 - 'cors_auto' => true, - // CORS 配置跨域域名 - 'cors_host' => [], - // CORS 授权请求方法 - 'cors_methods' => 'GET,PUT,POST,PATCH,DELETE', - // CORS 跨域头部字段 - 'cors_headers' => 'Api-Name,Api-Type,Api-Token,User-Form-Token,User-Token,Token', -]; \ No newline at end of file diff --git a/config/cache.php b/config/cache.php deleted file mode 100644 index 57211aaca..000000000 --- a/config/cache.php +++ /dev/null @@ -1,37 +0,0 @@ - 'file', - // 缓存连接配置 - 'stores' => [ - 'file' => [ - // 驱动方式 - 'type' => 'File', - // 缓存保存目录 - 'path' => '', - // 缓存名称前缀 - 'prefix' => '', - // 缓存有效期 0 表示永久缓存 - 'expire' => 0, - // 缓存标签前缀 - 'tag_prefix' => 'tag:', - // 序列化机制 - 'serialize' => [], - ], - ], -]; \ No newline at end of file diff --git a/config/cookie.php b/config/cookie.php deleted file mode 100644 index ce614e20e..000000000 --- a/config/cookie.php +++ /dev/null @@ -1,32 +0,0 @@ - 0, - // cookie 保存路径 - 'path' => '/', - // cookie 有效域名 - 'domain' => '', - // httponly 访问设置 - 'httponly' => true, - // 是否使用 setcookie - 'setcookie' => true, - // cookie 安全传输,只支持 https 协议 - 'secure' => app()->request->isSsl(), - // samesite 安全设置,支持 'strict' 'lax' 'none' - 'samesite' => app()->request->isSsl() ? 'none' : 'lax', -]; diff --git a/config/database.php b/config/database.php deleted file mode 100644 index d7c88a75d..000000000 --- a/config/database.php +++ /dev/null @@ -1,65 +0,0 @@ - 'mysql', - // 自定义时间查询规则 - 'time_query_rule' => [], - // 自动写入时间戳字段 - 'auto_timestamp' => true, - // 时间字段取出后的默认时间格式 - 'datetime_format' => 'Y-m-d H:i:s', - // 数据库连接配置信息 - 'connections' => [ - 'mysql' => [ - // 数据库类型 - 'type' => 'mysql', - // 服务器地址 - 'hostname' => '127.0.0.1', - // 数据库名 - 'database' => 'admin_v6', - // 用户名 - 'username' => 'admin_v6', - // 密码 - 'password' => 'FbYBHcWKr2', - // 端口 - 'hostport' => '3306', - // 数据库连接参数 - 'params' => [], - // 数据库编码默认采用 utf8 - 'charset' => 'utf8mb4', - // 数据库表前缀 - 'prefix' => '', - // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) - 'deploy' => 0, - // 数据库读写是否分离 主从式有效 - 'rw_separate' => false, - // 读写分离后 主服务器数量 - 'master_num' => 1, - // 指定从服务器序号 - 'slave_no' => '', - // 是否严格检查字段是否存在 - 'fields_strict' => true, - // 是否需要断线重连 - 'break_reconnect' => false, - // 监听SQL执行日志 - 'trigger_sql' => true, - // 开启字段类型缓存 - 'fields_cache' => !app()->isDebug(), - ], - ], -]; diff --git a/config/filesystem.php b/config/filesystem.php deleted file mode 100644 index 70a02aa87..000000000 --- a/config/filesystem.php +++ /dev/null @@ -1,37 +0,0 @@ - 'local', - // 磁盘列表 - 'disks' => [ - 'local' => [ - 'type' => 'local', - 'root' => app()->getRootPath() . 'runtime' . DIRECTORY_SEPARATOR . 'storage', - ], - 'public' => [ - // 磁盘类型 - 'type' => 'local', - // 磁盘路径 - 'root' => app()->getRootPath() . 'public' . DIRECTORY_SEPARATOR . 'storage', - // 磁盘路径对应的外部URL路径 - 'url' => '/storage', - // 可见性 - 'visibility' => 'public', - ], - ], -]; \ No newline at end of file diff --git a/config/lang.php b/config/lang.php deleted file mode 100644 index 606bb2348..000000000 --- a/config/lang.php +++ /dev/null @@ -1,38 +0,0 @@ - 'zh-cn', - // 允许的语言列表 - 'allow_lang_list' => ['zh-cn'], - // 转义为对应语言包名称 - 'accept_language' => [ - 'zh-hans-cn' => 'zh-cn', - ], - // 多语言自动侦测变量名 - 'detect_var' => 'lang', - // 多语言 Cookie 变量 - 'cookie_var' => 'lang', - // 多语言 Header 变量 - 'header_var' => 'lang', - // 使用 Cookie 记录 - 'use_cookie' => true, - // 是否支持语言分组 - 'allow_group' => false, - // 扩展语言包 - 'extend_list' => [], -]; \ No newline at end of file diff --git a/config/log.php b/config/log.php deleted file mode 100644 index dccf36b26..000000000 --- a/config/log.php +++ /dev/null @@ -1,57 +0,0 @@ - 'file', - // 日志记录级别 - 'level' => [], - // 日志类型记录的通道 - 'type_channel' => [], - // 关闭全局日志写入 - 'close' => false, - // 全局日志处理 支持闭包 - 'processor' => null, - // 日志通道列表 - 'channels' => [ - 'file' => [ - // 日志记录方式 - 'type' => 'File', - // 日志保存目录 - 'path' => '', - // 单文件日志写入 - 'single' => true, - // 独立日志级别 - 'apart_level' => true, - // 每个文件大小 ( 10兆 ) - 'file_size' => 10485760, - // 日志日期格式 - 'time_format' => 'Y-m-d H:i:s', - // 最大日志文件数量 - 'max_files' => 100, - // 使用JSON格式记录 - 'json' => false, - // 日志处理 - 'processor' => null, - // 关闭通道日志写入 - 'close' => false, - // 日志输出格式化 - 'format' => '[%s][%s] %s', - // 是否实时写入 - 'realtime_write' => false, - ], - ], -]; \ No newline at end of file diff --git a/config/route.php b/config/route.php deleted file mode 100644 index fa3574f6f..000000000 --- a/config/route.php +++ /dev/null @@ -1,58 +0,0 @@ - '/', - // URL伪静态后缀 - 'url_html_suffix' => 'html', - // URL普通方式参数 用于自动生成 - 'url_common_param' => true, - // 是否开启路由延迟解析 - 'url_lazy_route' => false, - // 是否强制使用路由 - 'url_route_must' => false, - // 合并路由规则 - 'route_rule_merge' => true, - // 路由是否完全匹配 - 'route_complete_match' => true, - // 访问控制器层名称 - 'controller_layer' => 'controller', - // 空控制器名 - 'empty_controller' => 'Error', - // 是否使用控制器后缀 - 'controller_suffix' => false, - // 默认的路由变量规则 - 'default_route_pattern' => '[\w\.]+', - // 是否开启请求缓存 true 自动缓存 支持设置请求缓存规则 - 'request_cache' => false, - // 请求缓存有效期 - 'request_cache_expire' => null, - // 全局请求缓存排除规则 - 'request_cache_except' => [], - // 默认应用 - 'default_app' => 'index', - // 默认控制器名 - 'default_controller' => 'Index', - // 默认操作名 - 'default_action' => 'index', - // 操作方法后缀 - 'action_suffix' => '', - // 默认JSONP格式返回的处理方法 - 'default_jsonp_handler' => 'jsonpReturn', - // 默认JSONP处理方法 - 'var_jsonp_handler' => 'callback', -]; \ No newline at end of file diff --git a/config/session.php b/config/session.php deleted file mode 100644 index afc087975..000000000 --- a/config/session.php +++ /dev/null @@ -1,28 +0,0 @@ - 'PHPSESSID', - // 驱动方式 - 'type' => 'file', - // 存储连接 - 'store' => null, - // 过期时间 - 'expire' => 7200, - // 文件前缀 - 'prefix' => '', -]; \ No newline at end of file diff --git a/config/view.php b/config/view.php deleted file mode 100644 index 0e361db4b..000000000 --- a/config/view.php +++ /dev/null @@ -1,48 +0,0 @@ - 'Think', - // 默认模板渲染规则 1.解析为小写+下划线 2.全部转换小写 3.保持操作方法 - 'auto_rule' => 1, - // 模板目录名 - 'view_dir_name' => 'view', - // 模板后缀 - 'view_suffix' => 'html', - // 模板文件名分隔符 - 'view_depr' => DIRECTORY_SEPARATOR, - // 模板缓存配置 - 'tpl_cache' => !app()->isDebug(), - // 模板引擎标签开始标记 - 'tpl_begin' => '{', - // 模板引擎标签结束标记 - 'tpl_end' => '}', - // 标签库标签开始标记 - 'taglib_begin' => '{', - // 标签库标签结束标记 - 'taglib_end' => '}', - // 去除HTML空格换行 - 'strip_space' => true, - // 标签默认过滤输出方法 - 'default_filter' => 'htmlentities=###,ENT_QUOTES', - // 定义模板替换字符串 - 'tpl_replace_string' => [ - '__APP__' => rtrim(url('@')->build(), '\\/'), - '__ROOT__' => rtrim(dirname(request()->basefile()), '\\/'), - '__FULL__' => rtrim(dirname(request()->basefile(true)), '\\/'), - ], -]; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..c303736ea --- /dev/null +++ b/index.html @@ -0,0 +1,27 @@ + + + + + + Layout Demo + + + + + + + + + + + + + + + +
+ +
+ + + \ No newline at end of file diff --git a/license b/license deleted file mode 100644 index 867758ab8..000000000 --- a/license +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 邹景立 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/outer/framework.html b/outer/framework.html new file mode 100644 index 000000000..beb50e0fd --- /dev/null +++ b/outer/framework.html @@ -0,0 +1,329 @@ + + + + + Layout Demo + + + + + + + + +
+ + +
+
    +
  • +
    menu item 1
    +
  • +
  • + +
  • +
  • +
  • +
    menu item 3 group
    +
      +
    • menu item 3-1
    • +
    • +
      menu item 3-2
      +
    • +
    +
  • +
  • +
  • +
    menu item 4
    +
  • +
  • +
    menu item 6
    +
  • +
+
+
+ + + +
+
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
首页
+
+ + + + + + + + \ No newline at end of file diff --git a/public/.htaccess b/public/.htaccess deleted file mode 100644 index f1adcc2fa..000000000 --- a/public/.htaccess +++ /dev/null @@ -1,8 +0,0 @@ - - Options +FollowSymlinks -Multiviews - RewriteEngine On - - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] - \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index d4f335434e5c1f64f395ac13e776ea2305105f31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16958 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 \ No newline at end of file diff --git a/public/robots.txt b/public/robots.txt deleted file mode 100644 index 6c4bd3c47..000000000 --- a/public/robots.txt +++ /dev/null @@ -1,4 +0,0 @@ -User-agent: * -Disallow: /data -Disallow: /admin -Disallow: /wechat diff --git a/public/router.php b/public/router.php deleted file mode 100644 index c9873a849..000000000 --- a/public/router.php +++ /dev/null @@ -1,22 +0,0 @@ - 0 ? rule.replace('{key}', array.join(',')) : ''; - })(elem.dataset.rule || '', []) || ''; - if (value.length < 1) return $.msg.tips('请选择需要更改的数据!'), false; - return value.split(';').forEach(function (item) { - data[item.split('#')[0]] = item.split('#')[1]; - }), data; - } - } - - /*! 消息组件实例 */ - $.msg = new function () { - var that = this; - this.idx = [], this.shade = [0.02, '#000']; - /*! 关闭消息框 */ - this.close = function (index) { - if (index !== null) return layer.close(index); - for (var i in this.idx) that.close(this.idx[i]); - this.idx = []; - }; - /*! 弹出警告框 */ - this.alert = function (msg, call) { - var idx = layer.alert(msg, {end: call, scrollbar: false}); - return that.idx.push(idx), idx; - }; - /*! 显示成功类型的消息 */ - this.success = function (msg, time, call) { - var idx = layer.msg(msg, {icon: 1, shade: this.shade, scrollbar: false, end: call, time: (time || 2) * 1000, shadeClose: true}); - return that.idx.push(idx), idx; - }; - /*! 显示失败类型的消息 */ - this.error = function (msg, time, call) { - var idx = layer.msg(msg, {icon: 2, shade: this.shade, scrollbar: false, time: (time || 3) * 1000, end: call, shadeClose: true}); - return that.idx.push(idx), idx; - }; - /*! 状态消息提示 */ - this.tips = function (msg, time, call) { - var idx = layer.msg(msg, {time: (time || 3) * 1000, shade: this.shade, end: call, shadeClose: true}); - return that.idx.push(idx), idx; - }; - /*! 显示加载提示 */ - this.loading = function (msg, call) { - var idx = msg ? layer.msg(msg, {icon: 16, scrollbar: false, shade: this.shade, time: 0, end: call}) : layer.load(2, {time: 0, scrollbar: false, shade: this.shade, end: call}); - return that.idx.push(idx), idx; - }; - /*! 页面加载层 */ - this.page = new function () { - this.$body = $('body>.think-page-loader'); - this.$main = $('.think-page-body+.think-page-loader'); - this.stat = function () { - return this.$body.is(':visible'); - }, this.show = function () { - this.stat() || this.$main.removeClass('layui-hide').show(); - }, this.hide = function () { - if (this.time) clearTimeout(this.time); - this.time = setTimeout(function () { - (that.page.time = 0) || that.page.$main.fadeOut(); - }, 200); - }; - }; - /*! 确认对话框 */ - this.confirm = function (msg, ok, no) { - return layer.confirm(msg, {title: '操作确认', btn: ['确认', '取消']}, function (idx) { - (typeof ok === 'function' && ok.call(this, idx)), that.close(idx); - }, function (idx) { - (typeof no === 'function' && no.call(this, idx)), that.close(idx); - }); - }; - /*! 自动处理JSON数据 */ - this.auto = function (ret, time) { - var url = ret.url || (typeof ret.data === 'string' ? ret.data : ''); - var msg = ret.msg || (typeof ret.info === 'string' ? ret.info : ''); - if (parseInt(ret.code) === 1 && time === 'false') { - return url ? (location.href = url) : $.form.reload(); - } - return (parseInt(ret.code) === 1) ? this.success(msg, time, function () { - (url ? (location.href = url) : $.form.reload()), that.close(null); - }) : this.error(msg, 3, function () { - url ? location.href = url : ''; - }); - }; - }; - - /*! 表单自动化组件 */ - $.form = new function () { - var that = this; - /*! 内容区选择器 */ - this.selecter = '.layui-layout-admin>.layui-body>.think-page-body'; - /*! 刷新当前页面 */ - this.reload = function (force) { - if (force) top.location.reload(); - else if (self !== top) location.reload(); - else window.onhashchange.call(this); - }; - /*! 内容区域动态加载后初始化 */ - this.reInit = function ($dom) { - $(window).trigger('scroll'), $.vali.listen(this), $dom = $dom || $(this.selecter); - return $dom.find('[required]').map(function ($parent) { - if (($parent = $(this).parent()) && $parent.is('label')) { - $parent.addClass('label-required-prev'); - } else { - $parent.prevAll('label').addClass('label-required-next'); - } - }), $dom.find('input[data-date-range]').map(function () { - this.setAttribute('autocomplete', 'off'), laydate.render({ - type: this.dataset.dateRange || 'date', range: true, elem: this, done: function (value) { - $(this.elem).val(value).trigger('change'); - } - }); - }), $dom.find('input[data-date-input]').map(function () { - this.setAttribute('autocomplete', 'off'), laydate.render({ - type: this.dataset.dateInput || 'date', range: false, elem: this, done: function (value) { - $(this.elem).val(value).trigger('change'); - } - }); - }), $dom.find('[data-lazy-src]:not([data-lazy-loaded])').each(function () { - if (this.dataset.lazyLoaded !== 'true') { - this.dataset.lazyLoaded = "true"; - if (this.nodeName === 'IMG') { - this.src = this.dataset.lazySrc; - } else { - this.style.backgroundImage = 'url(' + this.dataset.lazySrc + ')'; - } - } - }), $dom; - }; - /*! 在内容区显示视图 */ - this.show = function (html) { - $(this.selecter).html(html), setTimeout(function () { - that.reInit($(that.selecter)); - }, 500); - }; - /*! 异步加载的数据 */ - this.load = function (url, data, method, callable, loading, tips, time, headers) { - // 如果主页面 loader 显示中,绝对不显示 loading 图标 - loading = $('.layui-page-loader').is(':visible') ? false : loading; - var loadidx = loading !== false ? $.msg.loading(tips) : 0; - if (typeof data === 'object' && typeof data['_token_'] === 'string') { - headers = headers || {}, headers['User-Form-Token'] = data['_token_'], delete data['_token_']; - } - $.ajax({ - data: data || {}, type: method || 'GET', url: $.menu.parseUri(url), beforeSend: function (xhr, i) { - if (typeof Pace === 'object' && loading !== false) Pace.restart(); - if (typeof headers === 'object') for (i in headers) xhr.setRequestHeader(i, headers[i]); - }, error: function (XMLHttpRequest, $dialog, layIdx, iframe) { - if (parseInt(XMLHttpRequest.status) !== 200 && XMLHttpRequest.responseText.indexOf('Call Stack') > -1) try { - layIdx = layer.open({title: XMLHttpRequest.status + ' - ' + XMLHttpRequest.statusText, type: 2, move: false, content: 'javascript:;'}); - layer.full(layIdx), $dialog = $('#layui-layer' + layIdx), iframe = $dialog.find('iframe').get(0); - (iframe.contentDocument || iframe.contentWindow.document).write(XMLHttpRequest.responseText); - $dialog.find('.layui-layer-setwin').css({right: '35px', top: '28px'}).find('a').css({marginLeft: 0}); - $dialog.find('.layui-layer-title').css({color: 'red', height: '70px', lineHeight: '70px', fontSize: '22px', textAlign: 'center', fontWeight: 700}); - } catch (e) { - layer.close(layIdx); - } - layer.closeAll('loading'); - if (parseInt(XMLHttpRequest.status) !== 200) { - $.msg.tips('E' + XMLHttpRequest.status + ' - 服务器繁忙,请稍候再试!'); - } else { - this.success(XMLHttpRequest.responseText); - } - }, success: function (ret) { - if (typeof callable === 'function' && callable.call(that, ret) === false) return false; - return typeof ret === 'object' ? $.msg.auto(ret, time || ret.wait || undefined) : that.show(ret); - }, complete: function () { - $.msg.close(loadidx); - } - }); - }; - /*! 以 HASH 打开新网页 */ - this.href = function (url, ele) { - // 重置表格页数缓存 - if (ele && ele.dataset.menuNode) layui.sessionData('pages', null); - if (url !== '#') location.hash = $.menu.parseUri(url, ele); - else if (ele && ele.dataset.menuNode) $('[data-menu-node^="' + ele.dataset.menuNode + '-"]:first').trigger('click'); - }; - /*! 加载 HTML 到 BODY 位置 */ - this.open = function (url, data, call, load, tips) { - this.load(url, data, 'get', function (ret) { - return (typeof ret === 'object' ? $.msg.auto(ret) : that.show(ret)), false; - }, load, tips); - }; - /*! 打开 IFRAME 窗口 */ - this.iframe = function (url, name, area, offset, destroy) { - return layer.open({title: name || '窗口', type: 2, area: area || ['800px', '580px'], end: destroy || null, offset: offset, fixed: true, maxmin: false, content: url}); - }; - /*! 加载 HTML 到弹出层 */ - this.modal = function (url, data, name, call, load, tips, area, offset) { - this.load(url, data, 'GET', function (res) { - if (typeof (res) === 'object') return $.msg.auto(res), false; - $.msg.idx.push(layer.open({ - type: 1, btn: false, area: area || "800px", resize: false, content: res, title: name || '', offset: offset || 'auto', success: function ($dom, idx) { - $.form.reInit($dom.off('click', '[data-close]').on('click', '[data-close]', function () { - (function (confirm, callable) { - confirm ? $.msg.confirm(confirm, callable) : callable(); - })(this.dataset.confirm, function () { - layer.close(idx); - }); - })); - } - })); - return (typeof call === 'function') && call.call(that); - }, load, tips); - }; - }; - - /*! 后台菜单辅助插件 */ - $.menu = new function () { - var that = this; - /*! 计算 URL 地址中有效的 URI */ - this.getUri = function (uri) { - uri = uri || location.href; - uri = (uri.indexOf(location.host) > -1 ? uri.split(location.host)[1] : uri); - return (uri.indexOf('#') > -1 ? uri.split('#')[1] : uri).split('?')[0]; - }; - /*! 通过 URI 查询最有可能的菜单 NODE */ - this.queryNode = function (url, node) { - if (!/^m-/.test(node = node || location.href.replace(/.*spm=([\d\-m]+).*/ig, '$1'))) { - var $menu = $('[data-menu-node][data-open*="' + url.replace(/\.html$/ig, '') + '"]'); - return $menu.size() ? $menu.get(0).dataset.menuNode : ''; - } - return node; - }; - /*! URL 转 URI */ - this.parseUri = function (uri, elem, vars, temp, attrs) { - vars = {}, attrs = [], elem = elem || document.createElement('a'); - if (uri.indexOf('?') > -1) uri.split('?')[1].split('&').forEach(function (item) { - if (item.indexOf('=') > -1 && (temp = item.split('=')) && typeof temp[0] === 'string' && temp[0].length > 0) { - vars[temp[0]] = decodeURIComponent(temp[1].replace(/%2B/ig, '%20')); - } - }); - uri = this.getUri(uri); - if (typeof vars.spm !== 'string') vars.spm = elem.dataset.menuNode || this.queryNode(uri) || ''; - if (typeof vars.spm !== 'string' || vars.spm.length < 1) delete vars.spm; - for (var i in vars) attrs.push(i + '=' + vars[i]); - return uri + (attrs.length > 0 ? '?' + attrs.join('&') : ''); - }; - /*! 后台菜单动作初始化 */ - this.listen = function () { - /*! 菜单模式切换 */ - var $menu = $('.layui-layout-admin'), miniClass = 'layui-layout-left-mini'; - /*! Mini 菜单模式切换及显示 */ - if (layui.data('admin-menu-type')['type-mini']) $menu.addClass(miniClass); - /*! 菜单切换事件处理 */ - onEvent('click', '[data-target-menu-type]', function () { - layui.data('admin-menu-type', {key: 'type-mini', value: $menu.toggleClass(miniClass).hasClass(miniClass)}); - }); - /*! 监听窗口尺寸处理 */ - (function (callable) { - $(window).on('resize', callable).trigger('resize'); - })(function () { - (layui.data('admin-menu-type')['type-mini'] || $body.width() < 1000) ? $menu.addClass(miniClass) : $menu.removeClass(miniClass); - }); - /*! Mini 菜单模式时TIPS文字显示 */ - $('[data-target-tips]').mouseenter(function () { - if ($menu.hasClass(miniClass)) (function (idx) { - $(this).mouseleave(function () { - layer.close(idx); - }); - }).call(this, layer.tips(this.dataset.targetTips || '', this, {time: 0})); - }); - /*! 左则二级菜单展示 */ - $('[data-submenu-layout]>a').on('click', function () { - that.syncOpenStatus(1); - }); - /*! 同步二级菜单展示状态 */ - this.syncOpenStatus = function (mode) { - $('[data-submenu-layout]').map(function () { - var node = this.dataset.submenuLayout; - if (mode === 1) layui.data('admin-menu-stat', {key: node, value: $(this).hasClass('layui-nav-itemed') ? 2 : 1}); - else if ((layui.data('admin-menu-stat')[node] || 2) === 2) $(this).addClass('layui-nav-itemed'); - }); - }; - window.onhashchange = function () { - var hash = location.hash || '', node; - if (hash.length < 1) return $('[data-menu-node]:first').trigger('click'); - if (/^#(https?:)?(\/\/|\\\\)/.test(hash)) return $.msg.tips('禁止访问外部链接!'); - // $.msg.page.show(),$.form.load(hash, {}, 'get', $.msg.page.hide, true),that.syncOpenStatus(2); - $.form.load(hash, {}, 'get', false, !$.msg.page.stat()), that.syncOpenStatus(2); - /*! 菜单选择切换 */ - if (/^m-/.test(node = that.queryNode(that.getUri()))) { - var $all = $('a[data-menu-node]').parent(), tmp = node.split('-'), tmpNode = tmp.shift(); - while (tmp.length > 0) { - tmpNode = tmpNode + '-' + tmp.shift(); - $all = $all.not($('a[data-menu-node="' + tmpNode + '"]').parent().addClass('layui-this')); - } - $all.removeClass('layui-this'); - /*! 菜单模式切换 */ - if (node.split('-').length > 2) { - var _tmp = node.split('-'), _node = _tmp.shift() + '-' + _tmp.shift(); - $('[data-menu-layout]').not($('[data-menu-layout="' + _node + '"]').removeClass('layui-hide')).addClass('layui-hide'); - $('[data-menu-node="' + node + '"]').parent().parent().parent().addClass('layui-nav-itemed'); - $('.layui-layout-admin').removeClass('layui-layout-left-hide'); - } else { - $('.layui-layout-admin').addClass('layui-layout-left-hide'); - } - that.syncOpenStatus(1); - } - }; - /*! URI初始化动作 */ - window.onhashchange.call(this); - }; - }; - - - /*! 注册对象到Jq */ - $.vali = function (form, callable) { - return $(form).data('validate') || new Validate(); - - function Validate() { - var that = this; - /* 绑定表单元素 */ - this.form = $(form); - /* 绑定元素事件, 筛选表单元素 */ - this.evts = 'blur change', this.tags = 'input,select,textarea'; - /* 预设检测规则 */ - this.patterns = { - phone: '^1[3-9][0-9]{9}$', - email: '^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$' - }; - /*! 检测属性是否有定义 */ - this.hasProp = function (ele, prop) { - var attrProp = ele.getAttribute(prop); - return typeof attrProp !== 'undefined' && attrProp !== null && attrProp !== false; - }, this.isRegex = function (ele) { - var real = $.trim($(ele).val()); - var regexp = ele.getAttribute('pattern'); - regexp = this.patterns[regexp] || regexp; - if (real === "" || !regexp) return true; - return new RegExp(regexp, 'i').test(real); - }, this.checkAllInput = function () { - var status = true; - return that.form.find(this.tags).each(function () { - if (that.checkInput(this) === false) return $(this).focus(), status = false; - }), status; - }, this.checkInput = function (input) { - if (this.hasProp(input, 'data-auto-none')) return true; - var type = (input.getAttribute('type') || '').replace(/\W+/, "").toLowerCase(); - var ingores = ['file', 'reset', 'image', 'radio', 'checkbox', 'submit', 'hidden']; - if (ingores.length > 0) for (var i in ingores) if (type === ingores[i]) return true; - if (this.hasProp(input, 'required') && $.trim($(input).val()) === '') return this.remind(input); - return this.isRegex(input) ? (this.hideError(input), true) : this.remind(input); - }, this.remind = function (input) { - if (!$(input).is(':visible')) return true; - return this.showError(input, input.getAttribute('title') || input.getAttribute('placeholder') || '输入错误'), false; - }, this.showError = function (ele, tip) { - $(ele).addClass('validate-error'); - this.insertError(ele).addClass('layui-anim-fadein').css({width: 'auto'}).html(tip); - }, this.hideError = function (ele) { - $(ele).removeClass('validate-error'); - this.insertError(ele).removeClass('layui-anim-fadein').css({width: '30px'}).html(''); - }, this.insertError = function (ele) { - if ($(ele).data('input-info')) return $(ele).data('input-info'); - var $html = $(''); - var $next = $(ele).nextAll('.input-right-icon'), right = ($next ? $next.width() + parseFloat($next.css('right') || '0') : 0) + 10; - var style = {top: $(ele).position().top + 'px', right: right + 'px', lineHeight: ele.nodeName === 'TEXTAREA' ? '32px' : $(ele).css('height')}; - return $(ele).data('input-info', $html.css(style).insertAfter(ele)), $html; - }; - /*! 表单元素验证 */ - this.form.off(this.evts, this.tags).on(this.evts, this.tags, function () { - that.checkInput(this); - }).attr('novalidate', 'novalidate').data('validate', this).bind("submit", function (evt) { - evt.button = that.form.find('button[type=submit],button:not([type=button])'); - /* 检查所有表单元素是否通过H5的规则验证 */ - if (that.checkAllInput() && typeof callable === 'function') { - if (typeof CKEDITOR === 'object' && typeof CKEDITOR.instances === 'object') { - for (var i in CKEDITOR.instances) CKEDITOR.instances[i].updateElement(); - } - /* 触发表单提交后,锁定三秒不能再次提交表单 */ - if (that.form.attr('submit-locked')) return false; - that.form.attr('submit-locked', 1), evt.button.addClass('submit-button-loading'); - callable.call(this, that.form.formToJson()), setTimeout(function () { - that.form.removeAttr('submit-locked'), evt.button.removeClass('submit-button-loading'); - }, 3000); - } - return evt.preventDefault(), false; - }).find('[data-form-loaded]').map(function () { - $(this).html(this.dataset.formLoaded || this.innerHTML); - $(this).removeAttr('data-form-loaded').removeClass('layui-disabled'); - }); - } - }; - - /*! 自动监听规则内表单 */ - $.vali.listen = function () { - $('form[data-auto]').map(function (index, form) { - $(this).vali(function (data) { - var type = form.method || 'POST', href = form.action || location.href; - var call = window[form.dataset.callable || '_default_callable'] || undefined; - var tips = form.dataset.tips || undefined, time = form.dataset.time || undefined; - (function (confirm, callable) { - confirm ? $.msg.confirm(confirm, callable) : callable(); - })(form.dataset.confirm, function () { - $.form.load(href, data, type, call, true, tips, time); - }); - }); - }); - }; - - /*! 注册对象到JqFn */ - $.fn.vali = function (callable) { - return this.each(function () { - $.vali(this, callable); - }); - }; - - /*! 表单转JSON */ - $.fn.formToJson = function () { - var self = this, data = {}, push = {}; - var rules = {key: /[a-zA-Z0-9_]+|(?=\[])/g, push: /^$/, fixed: /^\d+$/, named: /^[a-zA-Z0-9_]+$/}; - this.build = function (base, key, value) { - return (base[key] = value), base; - }; - this.pushCounter = function (name) { - if (push[name] === undefined) push[name] = 0; - return push[name]++; - }; - $.each($(this).serializeArray(), function () { - var key, keys = this.name.match(rules.key), merge = this.value, name = this.name; - while ((key = keys.pop()) !== undefined) { - name = name.replace(new RegExp("\\[" + key + "\\]$"), ''); - if (key.match(rules.push)) merge = self.build([], self.pushCounter(name), merge); - else if (key.match(rules.fixed)) merge = self.build([], key, merge); - else if (key.match(rules.named)) merge = self.build({}, key, merge); - } - data = $.extend(true, data, merge); - }); - return data; - }; - - /*! 全局文件上传插件 */ - $.fn.uploadFile = function (callable, initialize) { - return this.each(function () { - if ($(this).data('inited')) return false; - var that = $(this), mult = '|one|btn|'.indexOf(that.data('file') || 'one') > -1 ? 0 : 1; - that.data('inited', true).data('multiple', mult), require(['upload'], function (apply) { - apply(that, callable), (typeof initialize === 'function' && setTimeout(initialize, 100)); - }); - }); - }; - - /*! 上传单张图片 */ - $.fn.uploadOneImage = function () { - return this.each(function () { - if ($(this).data('inited')) return true; else $(this).data('inited', true); - var $in = $(this), $bt = $('').data('input', this); - $bt.attr('data-size', $in.data('size') || 0).attr('data-type', $in.data('type') || 'png,jpg,gif').find('span').on('click', function (event) { - event.stopPropagation(), $bt.attr('style', ''), $in.val(''); - }), $in.on('change', function () { - if (this.value) $bt.css('backgroundImage', 'url(' + encodeURI(this.value) + ')'); - }).after($bt).trigger('change'); - }); - }; - - /*! 上传多张图片 */ - $.fn.uploadMultipleImage = function () { - return this.each(function () { - if ($(this).data('inited')) return true; else $(this).data('inited', true); - var $in = $(this), $bt = $(''), imgs = this.value ? this.value.split('|') : [] - $in.after($bt.attr('data-size', $in.data('size') || 0).attr('data-type', $in.data('type') || 'png,jpg,gif').uploadFile(function (src) { - imgs.push(src), $in.val(imgs.join('|')), showImageContainer([src]); - })), (imgs.length > 0 && showImageContainer(imgs)); - - function showImageContainer(srcs) { - $(srcs).each(function (idx, src, $image) { - $image = $(''); - $image.attr('data-tips-image', encodeURI(src)).css('backgroundImage', 'url(' + encodeURI(src) + ')').on('click', 'a', function (event, index, prevs, $item) { - event.stopPropagation(), $item = $(this).parent().parent(), index = $(this).index(); - if (index === 2 && $item.index() !== $bt.prevAll('div.uploadimage').length) $item.next().after($item); - else if (index === 0 && $item.index() > 1) $item.prev().before($item); else if (index === 1) $item.remove(); - imgs = [], $bt.prevAll('.uploadimage').map(function () { - imgs.push($(this).attr('data-tips-image')); - }); - imgs.reverse(), $in.val(imgs.join('|')); - }), $bt.before($image); - }); - } - }); - }; - - /*! 标签输入插件 */ - $.fn.initTagInput = function () { - return this.each(function () { - var $this = $(this), tags = this.value ? this.value.split(',') : []; - var $text = $(''); - var $tags = $('
').append($text); - $this.parent().append($tags), $text.off('keydown blur'), (tags.length > 0 && showTags(tags)); - $text.on('keydown blur', function (event, value) { - if (event.keyCode === 13 || event.type === 'blur') { - event.preventDefault(), (value = $text.val().replace(/^\s*|\s*$/g, '')); - if (tags.indexOf($(this).val()) > -1) return layer.msg('该标签已经存在!'); - if (value.length > 0) tags.push(value), $this.val(tags.join(',')), showTags([value]), this.focus(), $text.val(''); - } - }); - - function showTags(tagsArr) { - $(tagsArr).each(function (idx, text, elem) { - elem = $('
').html(text + ''); - elem.on('click', 'i', function (tagText, tagIdx) { - tagText = $(this).parent().text(), tagIdx = tags.indexOf(tagText); - tags.splice(tagIdx, 1), $(this).parent().remove(), $this.val(tags.join(',')); - }), $tags.append(elem, $text); - }); - } - }); - }; - - /*! 文本框插入内容 */ - $.fn.insertAtCursor = function (value) { - return this.each(function () { - this.focus(); - if (document.selection) { - var selection = document.selection.createRange(); - (selection.text = value), selection.select(), selection.unselect(); - } else if (this.selectionStart || this.selectionStart === 0) { - var spos = this.selectionStart, apos = this.selectionEnd || spos; - this.value = this.value.substring(0, spos) + value + this.value.substring(apos, this.value.length); - this.selectionEnd = this.selectionStart = spos + value.length; - } else { - this.value += value; - } - this.focus(); - }); - } - - /*! 组件 layui.table 封装 */ - $.fn.layTable = function (params) { - return this.each(function (idx, elem) { - // 动态初始化数据表 - this.id = this.id || 't' + Math.random().toString().replace('.', ''); - this.setAttribute('lay-filter', this.dataset.id = this.getAttribute('lay-filter') || this.id); - // 插件初始化参数 - var opt = params || {}, data = opt.where || {}, sort = opt.initSort || opt.sort || {}; - opt.id = elem.id, opt.elem = elem, opt.url = params.url || elem.dataset.url || location.href; - opt.page = params.page !== false ? (params.page || true) : false, opt.limit = params.limit || 20; - opt.loading = params.loading === true, opt.autoSort = params.autoSort === true, opt.cols = params.cols || [[]]; - // 默认动态设置页数, 动态设置最大高度 - if (opt.page === true) opt.page = {curr: layui.sessionData('pages')[opt.id] || 1} - if (opt.height === 'full') if ($(elem).parents('.iframe-pagination').size()) { - $(elem).parents('.iframe-pagination').addClass('not-footer'); - opt.height = $(window).height() - $(elem).removeClass('layui-hide').offset().top - 20; - } else { - opt.height = $(window).height() - $(elem).removeClass('layui-hide').offset().top - 35; - } - // 动态计算最大页数 - opt.done = function () { - layui.sessionData('pages', {key: elem.id, value: this.page.curr || 1}), (this.loading = true); - this.elem.next().find('[data-load],[data-queue],[data-action],[data-iframe]').not('[data-table-id]').attr('data-table-id', elem.id); - }, opt.parseData = function (res) { - var maxPage = Math.ceil(res.count / this.limit), curPage = layui.sessionData('pages')[opt.id] || 1; - if (curPage > maxPage && curPage > 1) this.elem.trigger('reload', {page: {curr: maxPage}}); - }; - // 实例并绑定的对象 - $(this).data('this', layui.table.render(bindData(opt))); - // 绑定实例重载事件 - $(this).bind('reload', function (evt, opts) { - opts = opts || {}, opts.loading = true; - data = $.extend({}, data, opts.where || {}); - layui.table.reload(elem.id, bindData(opts || {})); - }).bind('row sort tool edit radio toolbar checkbox rowDouble', function (evt, call) { - layui.table.on(evt.type + '(' + elem.dataset.id + ')', call) - }).bind('setFullHeight', function () { - $(elem).trigger('reload', {height: $(window).height() - $(elem).next().offset().top - 35}) - }).trigger('sort', function (object) { - (sort = object), $(elem).trigger('reload') - }); - // 搜索表单关联对象 - var search = params.search || this.dataset.targetSearch; - if (search) $body.find(search).map(function () { - $(this).attr('data-table-id', elem.id); - }); - // 绑定选择项关联对象 - var checked = params.checked || this.dataset.targetChecked; - if (checked) $body.find(checked).map(function () { - $(this).attr('data-table-id', elem.id); - }); - - // 生成初始化参数 - function bindData(opts) { - data['output'] = 'layui.table'; - if (sort.field && sort.type) { - data['_order_'] = sort.type, data['_field_'] = sort.field; - opts.initSort = {type: sort.type.split(',')[0].split(' ')[0], field: sort.field.split(',')[0].split(' ')[0]}; - } - return (opts['where'] = data), opts; - } - }); - } - - /*! 弹出图片层 */ - $.previewImage = function (src, area) { - var img = new Image(), defer = $.Deferred(), loaded = $.msg.loading(); - img.style.background = '#FFF', img.referrerPolicy = 'no-referrer'; - img.style.height = 'auto', img.style.width = area || '100%', img.style.display = 'none'; - document.body.appendChild(img), img.onerror = function () { - $.msg.close(loaded), defer.reject(); - }, img.onload = function () { - layer.open({ - type: 1, title: false, shadeClose: true, content: $(img), success: function ($elem, idx) { - $.msg.close(loaded), defer.notify($elem, idx); - }, area: area || '480px', skin: 'layui-layer-nobg', closeBtn: 1, end: function () { - document.body.removeChild(img), defer.resolve() - } - }); - }; - return (img.src = src), defer.resolve(); - }; - - /*! 以手机模式显示内容 */ - $.previewPhonePage = function (href, title) { - var template = '
{{d.title}}
'; - layer.style(layer.open({type: true, resize: false, scrollbar: false, area: ['320px', '600px'], title: false, closeBtn: true, shadeClose: false, skin: 'layui-layer-nobg', content: layui.laytpl(template).render({title: title || '公众号', url: href})}), {boxShadow: 'none'}); - }; - - /*! 显示任务进度消息 */ - $.loadQueue = function (code, doScript, element) { - var doAjax = true, doReload = false; - layui.layer.open({ - type: 1, title: false, area: ['560px', '315px'], anim: 2, shadeClose: false, end: function () { - doAjax = false; - if (doReload && doScript) { - if (element && element.dataset && element.dataset.tableId) { - $('#' + element.dataset.tableId).trigger('reload'); - } else { - $.form.reload(); - } - } - }, content: '' + - '
' + - '
' + - '
' + - '
' + - '
', - success: function ($elem) { - new function () { - var that = this; - this.$box = $elem.find('[data-queue-load=' + code + ']'); - if (doAjax === false || this.$box.length < 1) return false; - this.$coder = this.$box.find('code'), this.$name = this.$box.find('[data-message-title]'); - this.$percent = this.$box.find('.layui-progress div'), this.SetCache = function (code, index, value) { - var ckey = code + '_' + index, ctype = 'admin-queue-script'; - return value !== undefined ? layui.data(ctype, {key: ckey, value: value}) : layui.data(ctype)[ckey] || 0; - }, this.SetState = function (status, message) { - if (message.indexOf('javascript:') === -1) if (status === 1) { - that.$name.html('' + message + '').addClass('text-center'); - that.$percent.addClass('layui-bg-blue').removeClass('layui-bg-green layui-bg-red'); - } else if (status === 2) { - if (message.indexOf('>>>') > -1) { - that.$name.html('' + message + '').addClass('text-center'); - } else { - that.$name.html('正在处理:' + message).removeClass('text-center'); - } - that.$percent.addClass('layui-bg-blue').removeClass('layui-bg-green layui-bg-red'); - } else if (status === 3) { - doReload = true; - that.$name.html('' + message + '').addClass('text-center'); - that.$percent.addClass('layui-bg-green').removeClass('layui-bg-blue layui-bg-red'); - } else if (status === 4) { - that.$name.html('' + message + '').addClass('text-center'); - that.$percent.addClass('layui-bg-red').removeClass('layui-bg-blue layui-bg-green'); - } - }, (this.LoadProgress = function () { - if (doAjax === false || that.$box.length < 1) return false; - $.form.load(tapiRoot + '/api.queue/progress', {code: code}, 'post', function (ret) { - if (ret.code) { - var lines = []; - for (var idx in ret.data.history) { - var line = ret.data.history[idx], percent = '[ ' + line.progress + '% ] '; - if (line.message.indexOf('javascript:') === -1) lines.push(line.message.indexOf('>>>') > -1 ? line.message : percent + line.message); - else if (!that.SetCache(code, idx) && doScript !== false) that.SetCache(code, idx, 1), location.href = line.message; - } - if (ret.data.status > 0) { - that.SetState(parseInt(ret.data.status), ret.data.message); - that.$percent.attr('lay-percent', (parseFloat(ret.data.progress || '0.00').toFixed(2)) + '%'), layui.element.render(); - that.$coder.html('

' + lines.join('

') + '

').animate({scrollTop: that.$coder[0].scrollHeight + 'px'}, 200); - return parseInt(ret.data.status) === 3 || parseInt(ret.data.status) === 4 || setTimeout(that.LoadProgress, Math.floor(Math.random() * 200)), false; - } else return setTimeout(that.LoadProgress, Math.floor(Math.random() * 500) + 200), false; - } - }, false); - })(); - }; - } - }); - }; - - /*! 注册 data-search 表单搜索行为 */ - onEvent('submit', 'form.form-search', function () { - var tableId = this.dataset.tableId; - if (tableId) return $('table#' + tableId).trigger('reload', { - page: {curr: 1}, where: $(this).formToJson() - }); - var url = $(this).attr('action').replace(/&?page=\d+/g, ''); - if ((this.method || 'get').toLowerCase() === 'get') { - var split = url.indexOf('?') > -1 ? '&' : '?'; - var stype = location.href.indexOf('spm=') > -1 ? '#' : ''; - return location.href = stype + $.menu.parseUri(url + split + $(this).serialize()); - } - return $.form.load(url, this, 'post'); - }); - - /*! 注册 data-file 事件行为 */ - onEvent('click', '[data-file]', function () { - if ($(this).data('inited') !== true) (function (that) { - that.uploadFile(undefined, function () { - that.trigger('upload.start'); - }); - })($(this)); - }); - - /*! 注册 data-load 事件行为 */ - onEvent('click', '[data-load]', function () { - var emap = this.dataset, data = {}; - if (this.dataset.rule && (applyRuleValue(this, data)) === false) return false; - (function (confirm, callable) { - confirm ? $.msg.confirm(confirm, callable) : callable(); - })(emap.confirm, function () { - var call = !emap.tableId ? false : function (ret) { - if (ret.code > 0) return $.msg.success(ret.info, 3, function () { - $('#' + emap.tableId).trigger('reload'); - }), false; - } - $.form.load(emap.load, data, 'get', call, true, emap.tips, emap.time); - }); - }); - - /*! 注册 data-reload 事件行为 */ - onEvent('click', '[data-reload]', function () { - this.dataset.tableId ? $('#' + this.dataset.tableId).trigger('reload') : $.form.reload(); - }); - - /*! 注册 data-dbclick 事件行为 */ - onEvent('dblclick', '[data-dbclick]', function () { - $(this).find(this.dataset.dbclick || '[data-dbclick]').trigger('click'); - }); - - /*! 注册 data-check 事件行为 */ - onEvent('click', '[data-check-target]', function () { - var target = this; - $(this.dataset.checkTarget).map(function () { - (this.checked = !!target.checked), $(this).trigger('change'); - }); - }); - - /*! 表单元素失去焦点时数字 */ - onEvent('blur', '[data-blur-number]', function () { - var emap = this.dataset, min = emap.valueMin, max = emap.valueMax; - var value = parseFloat(this.value) || 0, fiexd = parseInt(emap.blurNumber || 0); - if (typeof min !== 'undefined' && value < min) value = min; - if (typeof max !== 'undefined' && value > max) value = max; - this.value = parseFloat(value).toFixed(fiexd); - }); - - /*! 表单元素失焦时提交 */ - onEvent('blur', '[data-action-blur],[data-blur-action]', function () { - var that = $(this), emap = this.dataset, data = {'_token_': emap.token || emap.csrf || '--'}; - var attrs = (emap.value || '').replace('{value}', that.val()).split(';'); - for (var i in attrs) data[attrs[i].split('#')[0]] = attrs[i].split('#')[1]; - (function (confirm, callable) { - confirm ? $.msg.confirm(confirm, callable) : callable(); - })(emap.confirm, function () { - $.form.load(emap.actionBlur || emap.blurAction, data, emap.method || 'post', function (ret) { - return that.css('border', (ret && ret.code) ? '1px solid #e6e6e6' : '1px solid red'), false; - }, emap.loading !== 'false', emap.loading, emap.time) - }); - }); - - /*! 注册 data-href 事件行为 */ - onEvent('click', '[data-href]', function () { - if (this.dataset.href && this.dataset.href.indexOf('#') !== 0) { - location.href = this.dataset.href; - } - }); - - /*! 注册 data-open 事件行为 */ - onEvent('click', '[data-open]', function () { - if (this.dataset.open.match(/^https?:/)) { - location.href = this.dataset.open; - } else { - $.form.href(this.dataset.open, this); - } - }); - - /*! 注册 data-action 事件行为 */ - onEvent('click', '[data-action]', function () { - var emap = this.dataset, data = {'_token_': emap.token || emap.csrf || '--'}; - var load = emap.loading !== 'false', tips = typeof load === 'string' ? load : undefined; - if ((applyRuleValue(this, data)) === false) return false; - (function (confirm, callable) { - confirm ? $.msg.confirm(confirm, callable) : callable(); - })(emap.confirm, function () { - var call = !emap.tableId ? false : function (ret) { - if (ret.code > 0) return $.msg.success(ret.info, 3, function () { - $('#' + emap.tableId).trigger('reload'); - }), false; - } - $.form.load(emap.action, data, emap.method || 'post', call, load, tips, emap.time) - }); - }); - - /*! 注册 data-modal 事件行为 */ - onEvent('click', '[data-modal]', function () { - var emap = this.dataset, data = {open_type: 'modal'}, un = undefined; - if (emap.rule && (applyRuleValue(this, data)) === false) return false; - return $.form.modal(emap.modal, data, emap.title || this.innerText || '编辑', un, un, un, emap.area || emap.width || '800px', emap.offset || 'auto'); - }); - - /*! 注册 data-iframe 事件行为 */ - onEvent('click', '[data-iframe]', function () { - var emap = this.dataset, data = {open_type: 'iframe'}; - if (emap.rule && (applyRuleValue(this, data)) === false) return false; - var name = emap.title || this.innerText || 'IFRAME 窗口'; - var area = emap.area || [emap.width || '800px', emap.height || '580px']; - var frame = emap.iframe + (emap.iframe.indexOf('?') > -1 ? '&' : '?') + $.param(data); - $(this).attr('data-index', $.form.iframe(frame, name, area, emap.offset || 'auto', emap.tableId ? function () { - typeof emap.refresh !== 'undefined' && $('#' + emap.tableId).trigger('reload'); - } : function () { - typeof emap.refresh !== 'undefined' && $.form.reload(); - })); - }); - - /*! 注册 data-icon 事件行为 */ - onEvent('click', '[data-icon]', function () { - var location = tapiRoot + '/api.plugs/icon', field = this.dataset.icon || this.dataset.field || 'icon'; - $.form.iframe(location + (location.indexOf('?') > -1 ? '&' : '?') + 'field=' + field, '图标选择', ['900px', '700px']); - }); - - /*! 注册 data-copy 事件行为 */ - onEvent('click', '[data-copy]', function () { - (function (content, $textarea) { - $body.append($textarea.val(content)), $textarea.select(); - document.execCommand('Copy') ? $.msg.tips('已复制到剪贴板!') : $.msg.tips('请使用鼠标操作复制!'); - $textarea.remove(), $textarea.unselect(); - })(this.dataset.copy, $('')); - }); - - /*! 异步任务状态监听与展示 */ - onEvent('click', '[data-queue]', function () { - var that = this; - (function (confirm, callable) { - confirm ? $.msg.confirm(confirm, callable) : callable(); - })(this.dataset.confirm, function () { - $.form.load(that.dataset.queue, {}, 'post', function (ret) { - if (typeof ret.data === 'string' && ret.data.indexOf('Q') === 0) { - return $.loadQueue(ret.data, true, that), false; - } - }); - }); - }); - - /*! 注册 data-tips-text 事件行为 */ - onEvent('mouseenter', '[data-tips-text]', function () { - var opts = {tips: [$(this).attr('data-tips-type') || 3, '#78BA32'], time: 0}; - var layidx = layer.tips($(this).attr('data-tips-text') || this.innerText, this, opts); - $(this).off('mouseleave').on('mouseleave', function () { - setTimeout("layui.layer.close('" + layidx + "')", 100); - }); - }); - - /*! 注册 data-tips-hover 事件行为 */ - onEvent('mouseenter', '[data-tips-image][data-tips-hover]', function () { - var img = new Image(), ele = $(this); - if ((img.src = this.dataset.tipsImage || this.dataset.lazySrc || this.src)) { - img.layopt = {time: 0, skin: 'layui-layer-image', anim: 5, isOutAnim: false, scrollbar: false}; - img.referrerPolicy = 'no-referrer', img.style.maxWidth = '260px', img.style.maxHeight = '260px'; - ele.data('layidx', layer.tips(img.outerHTML, this, img.layopt)).off('mouseleave').on('mouseleave', function () { - layui.layer.close(ele.data('layidx')); - }); - } - }); - - /*! 注册 data-tips-image 事件行为 */ - onEvent('click', '[data-tips-image]', function () { - $.previewImage(this.dataset.tipsImage || this.dataset.lazySrc || this.src, this.dataset.with); - }); - - /*! 注册 data-phone-view 事件行为 */ - onEvent('click', '[data-phone-view]', function () { - $.previewPhonePage(this.dataset.phoneView || this.href); - }); - - /*! 表单编辑返回操作 */ - onEvent('click', '[data-history-back]', function () { - $.msg.confirm(this.dataset.historyBack || '确定要返回吗?', function () { - history.back(); - }) - }); - - /*! 延时关闭加载动画 */ - window.addEventListener('load', function () { - setTimeout("$('body>.think-page-loader').fadeOut()", 200); - }, true); - - /*! 图片加载异常处理 */ - document.addEventListener('error', function (event) { - var elem = event.target; - if (elem.nodeName === 'IMG') { - elem.src = baseRoot + 'theme/img/404_icon.png'; - } - }, true); - - /*! 系统菜单表单页面初始化 */ - $.menu.listen(), $.vali.listen(), $.form.reInit($body); -}); \ No newline at end of file diff --git a/public/static/login.js b/public/static/login.js deleted file mode 100644 index 7bd2aab20..000000000 --- a/public/static/login.js +++ /dev/null @@ -1,55 +0,0 @@ -// +---------------------------------------------------------------------- -// | ThinkAdmin -// +---------------------------------------------------------------------- -// | 版权所有 2014~2021 广州楚才信息科技有限公司 [ http://www.cuci.cc ] -// +---------------------------------------------------------------------- -// | 官方网站: https://thinkadmin.top -// +---------------------------------------------------------------------- -// | 开源协议 ( https://mit-license.org ) -// | 免费声明 ( https://thinkadmin.top/disclaimer ) -// +---------------------------------------------------------------------- -// | gitee 代码仓库:https://gitee.com/zoujingli/ThinkAdmin -// | github 代码仓库:https://github.com/zoujingli/ThinkAdmin -// +---------------------------------------------------------------------- - -$(function () { - - window.$body = $('body'); - - /*! 后台加密登录处理 */ - $body.find('[data-login-form]').map(function (that) { - (that = this), require(["md5"], function (md5) { - $("form").vali(function (data) { - data['password'] = md5.hash(md5.hash(data['password']) + data['uniqid']); - $.form.load(location.href, data, "post", function (ret) { - if (parseInt(ret.code) !== 1) { - $(that).find('[data-captcha]').trigger('click'); - $(that).find('.verify.layui-hide').removeClass('layui-hide'); - } - }, null, null, 'false'); - }); - }); - }); - - /*! 登录图形验证码刷新 */ - $body.on('click', '[data-captcha]', function () { - var $that = $(this), $form = $that.parents('form'); - var action = this.dataset.captcha || location.href; - if (action.length < 5) return $.msg.tips('请设置验证码请求及验证地址'); - var type = this.dataset.captchaType || 'captcha-type', token = this.dataset.captchaToken || 'captcha-token'; - var uniqid = this.dataset.fieldUniqid || 'captcha-uniqid', verify = this.dataset.fieldVerify || 'captcha-verify'; - $.form.load(action, {type: type, token: token}, 'post', function (ret) { - if (ret.code) { - $that.html('img').find('input').attr('name', uniqid).val(ret.data.uniqid || ''); - $form.find('[name="' + verify + '"]').attr('value', ret.data.code || '').val(ret.data.code || ''); - return (ret.data.code || $form.find('.verify.layui-hide').removeClass('layui-hide')), false; - } - }, false); - }); - - /*! 初始化登录图形 */ - $('[data-captcha]').map(function () { - $(this).trigger('click'); - }); - -}); \ No newline at end of file diff --git a/public/static/plugs/angular/angular.min.js b/public/static/plugs/angular/angular.min.js deleted file mode 100644 index 3dd9898e7..000000000 --- a/public/static/plugs/angular/angular.min.js +++ /dev/null @@ -1,351 +0,0 @@ -/* - AngularJS v1.8.2 - (c) 2010-2020 Google LLC. http://angularjs.org - License: MIT -*/ -(function(z){'use strict';function ve(a){if(D(a))w(a.objectMaxDepth)&&(Xb.objectMaxDepth=Yb(a.objectMaxDepth)?a.objectMaxDepth:NaN),w(a.urlErrorParamsEnabled)&&Ga(a.urlErrorParamsEnabled)&&(Xb.urlErrorParamsEnabled=a.urlErrorParamsEnabled);else return Xb}function Yb(a){return X(a)&&0c)return"...";var d=b.$$hashKey,f;if(H(a)){f=0;for(var g=a.length;f").append(a).html();try{return a[0].nodeType===Pa?K(b):b.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/,function(a,b){return"<"+K(b)})}catch(d){return K(b)}}function Vc(a){try{return decodeURIComponent(a)}catch(b){}}function hc(a){var b={};r((a||"").split("&"), -function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=Vc(e),w(e)&&(f=w(f)?Vc(f):!0,ta.call(b,e)?H(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Ce(a){var b=[];r(a,function(a,c){H(a)?r(a,function(a){b.push(ba(c,!0)+(!0===a?"":"="+ba(a,!0)))}):b.push(ba(c,!0)+(!0===a?"":"="+ba(a,!0)))});return b.length?b.join("&"):""}function ic(a){return ba(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ba(a, -b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function De(a,b){var d,c,e=Qa.length;for(c=0;c protocol indicates an extension, document.location.href does not match."))}function Wc(a,b,d){D(d)||(d={});d=S({strictDi:!1},d);var c=function(){a=x(a);if(a.injector()){var c=a[0]===z.document?"document":Aa(a);throw oa("btstrpd",c.replace(//,">"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider", -function(a){a.debugInfoEnabled(!0)}]);b.unshift("ng");c=fb(b,d.strictDi);c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;z&&e.test(z.name)&&(d.debugInfoEnabled=!0,z.name=z.name.replace(e,""));if(z&&!f.test(z.name))return c();z.name=z.name.replace(f,"");ca.resumeBootstrap=function(a){r(a,function(a){b.push(a)});return c()};B(ca.resumeDeferredBootstrap)&& -ca.resumeDeferredBootstrap()}function Ge(){z.name="NG_ENABLE_DEBUG_INFO!"+z.name;z.location.reload()}function He(a){a=ca.element(a).injector();if(!a)throw oa("test");return a.get("$$testability")}function Xc(a,b){b=b||"_";return a.replace(Ie,function(a,c){return(c?b:"")+a.toLowerCase()})}function Je(){var a;if(!Yc){var b=rb();(sb=A(b)?z.jQuery:b?z[b]:void 0)&&sb.fn.on?(x=sb,S(sb.fn,{scope:Wa.scope,isolateScope:Wa.isolateScope,controller:Wa.controller,injector:Wa.injector,inheritedData:Wa.inheritedData})): -x=U;a=x.cleanData;x.cleanData=function(b){for(var c,e=0,f;null!=(f=b[e]);e++)(c=(x._data(f)||{}).events)&&c.$destroy&&x(f).triggerHandler("$destroy");a(b)};ca.element=x;Yc=!0}}function Ke(){U.legacyXHTMLReplacement=!0}function gb(a,b,d){if(!a)throw oa("areq",b||"?",d||"required");return a}function tb(a,b,d){d&&H(a)&&(a=a[a.length-1]);gb(B(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Ja(a,b){if("hasOwnProperty"===a)throw oa("badname", -b);}function Le(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g"):a;if(10>wa)for(c=hb[c]||hb._default,d.innerHTML=c[1]+e+c[2],k=c[0];k--;)d=d.firstChild;else{c=qa[c]||[];for(k=c.length;-1<--k;)d.appendChild(z.document.createElement(c[k])),d=d.firstChild;d.innerHTML=e}g=db(g,d.childNodes);d=f.firstChild;d.textContent=""}else g.push(b.createTextNode(a)); -f.textContent="";f.innerHTML="";r(g,function(a){f.appendChild(a)});return f}function U(a){if(a instanceof U)return a;var b;C(a)&&(a=V(a),b=!0);if(!(this instanceof U)){if(b&&"<"!==a.charAt(0))throw oc("nosel");return new U(a)}if(b){b=z.document;var d;a=(d=tg.exec(a))?[b.createElement(d[1])]:(d=gd(a,b))?d.childNodes:[];pc(this,a)}else B(a)?hd(a):pc(this,a)}function qc(a){return a.cloneNode(!0)}function zb(a,b){!b&&mc(a)&&x.cleanData([a]);a.querySelectorAll&&x.cleanData(a.querySelectorAll("*"))}function id(a){for(var b in a)return!1; -return!0}function jd(a){var b=a.ng339,d=b&&Ka[b],c=d&&d.events,d=d&&d.data;d&&!id(d)||c&&!id(c)||(delete Ka[b],a.ng339=void 0)}function kd(a,b,d,c){if(w(c))throw oc("offargs");var e=(c=Ab(a))&&c.events,f=c&&c.handle;if(f){if(b){var g=function(b){var c=e[b];w(d)&&cb(c||[],d);w(d)&&c&&0l&&this.remove(n.key);return b}},get:function(a){if(l";b=Fa.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name);d.value=c;a.attributes.setNamedItem(d)}function sa(a,b){try{a.addClass(b)}catch(c){}}function da(a,b,c,d,e){a instanceof x||(a=x(a));var f=Xa(a,b,a,c,d,e);da.$$addScopeClass(a);var g=null;return function(b,c,d){if(!a)throw $("multilink");gb(b,"scope");e&&e.needsNewScope&&(b=b.$parent.$new());d=d||{};var h=d.parentBoundTranscludeFn,k=d.transcludeControllers;d=d.futureParentElement; -h&&h.$$boundTransclude&&(h=h.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==ua(d)&&la.call(d).match(/SVG/)?"svg":"html":"html");d="html"!==g?x(ja(g,x("
").append(a).html())):c?Wa.clone.call(a):a;if(k)for(var l in k)d.data("$"+l+"Controller",k[l].instance);da.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,h);c||(a=f=null);return d}}function Xa(a,b,c,d,e,f){function g(a,c,d,e){var f,k,l,m,p,I,t;if(n)for(t=Array(c.length),m=0;mu.priority)break;if(O=u.scope)u.templateUrl||(D(O)?(ba("new/isolated scope",s||t,u,y),s=u):ba("new/isolated scope",s,u,y)),t=t||u;Q=u.name;if(!ma&&(u.replace&&(u.templateUrl||u.template)||u.transclude&& -!u.$$tlb)){for(O=sa+1;ma=a[O++];)if(ma.transclude&&!ma.$$tlb||ma.replace&&(ma.templateUrl||ma.template)){Jb=!0;break}ma=!0}!u.templateUrl&&u.controller&&(J=J||T(),ba("'"+Q+"' controller",J[Q],u,y),J[Q]=u);if(O=u.transclude)if(G=!0,u.$$tlb||(ba("transclusion",L,u,y),L=u),"element"===O)N=!0,n=u.priority,M=y,y=d.$$element=x(da.$$createComment(Q,d[Q])),b=y[0],oa(f,Ha.call(M,0),b),R=Z(Jb,M,e,n,g&&g.name,{nonTlbTranscludeDirective:L});else{var ka=T();if(D(O)){M=z.document.createDocumentFragment();var Xa= -T(),F=T();r(O,function(a,b){var c="?"===a.charAt(0);a=c?a.substring(1):a;Xa[a]=b;ka[b]=null;F[b]=c});r(y.contents(),function(a){var b=Xa[xa(ua(a))];b?(F[b]=!0,ka[b]=ka[b]||z.document.createDocumentFragment(),ka[b].appendChild(a)):M.appendChild(a)});r(F,function(a,b){if(!a)throw $("reqslot",b);});for(var K in ka)ka[K]&&(R=x(ka[K].childNodes),ka[K]=Z(Jb,R,e));M=x(M.childNodes)}else M=x(qc(b)).contents();y.empty();R=Z(Jb,M,e,void 0,void 0,{needsNewScope:u.$$isolateScope||u.$$newScope});R.$$slots=ka}if(u.template)if(P= -!0,ba("template",v,u,y),v=u,O=B(u.template)?u.template(y,d):u.template,O=Na(O),u.replace){g=u;M=nc.test(O)?td(ja(u.templateNamespace,V(O))):[];b=M[0];if(1!==M.length||1!==b.nodeType)throw $("tplrt",Q,"");oa(f,y,b);C={$attr:{}};O=tc(b,[],C);var Ig=a.splice(sa+1,a.length-(sa+1));(s||t)&&fa(O,s,t);a=a.concat(O).concat(Ig);ga(d,C);C=a.length}else y.html(O);if(u.templateUrl)P=!0,ba("template",v,u,y),v=u,u.replace&&(g=u),p=ha(a.splice(sa,a.length-sa),y,d,f,G&&R,h,k,{controllerDirectives:J,newScopeDirective:t!== -u&&t,newIsolateScopeDirective:s,templateDirective:v,nonTlbTranscludeDirective:L}),C=a.length;else if(u.compile)try{q=u.compile(y,d,R);var Y=u.$$originalDirective||u;B(q)?m(null,Va(Y,q),E,jb):q&&m(Va(Y,q.pre),Va(Y,q.post),E,jb)}catch(ca){c(ca,Aa(y))}u.terminal&&(p.terminal=!0,n=Math.max(n,u.priority))}p.scope=t&&!0===t.scope;p.transcludeOnThisElement=G;p.templateOnThisElement=P;p.transclude=R;l.hasElementTranscludeDirective=N;return p}function X(a,b,c,d){var e;if(C(b)){var f=b.match(l);b=b.substring(f[0].length); -var g=f[1]||f[3],f="?"===f[2];"^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance;if(!e){var h="$"+b+"Controller";e="^^"===g&&c[0]&&9===c[0].nodeType?null:g?c.inheritedData(h):c.data(h)}if(!e&&!f)throw $("ctreq",b,a);}else if(H(b))for(e=[],g=0,f=b.length;gc.priority)&&-1!==c.restrict.indexOf(e)){k&&(c=bc(c,{$$start:k,$$end:l}));if(!c.$$bindings){var I=m=c,t=c.name,u={isolateScope:null,bindToController:null}; -D(I.scope)&&(!0===I.bindToController?(u.bindToController=d(I.scope,t,!0),u.isolateScope={}):u.isolateScope=d(I.scope,t,!1));D(I.bindToController)&&(u.bindToController=d(I.bindToController,t,!0));if(u.bindToController&&!I.controller)throw $("noctrl",t);m=m.$$bindings=u;D(m.isolateScope)&&(c.$$isolateBindings=m.isolateScope)}b.push(c);m=c}}return m}function ca(b){if(f.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,e=c.length;d"+b+"";return c.childNodes[0].childNodes;default:return b}}function qa(a,b){if("srcdoc"=== -b)return u.HTML;if("src"===b||"ngSrc"===b)return-1===["img","video","audio","source","track"].indexOf(a)?u.RESOURCE_URL:u.MEDIA_URL;if("xlinkHref"===b)return"image"===a?u.MEDIA_URL:"a"===a?u.URL:u.RESOURCE_URL;if("form"===a&&"action"===b||"base"===a&&"href"===b||"link"===a&&"href"===b)return u.RESOURCE_URL;if("a"===a&&("href"===b||"ngHref"===b))return u.URL}function ya(a,b){var c=b.toLowerCase();return v[a+"|"+c]||v["*|"+c]}function za(a){return ma(u.valueOf(a),"ng-prop-srcset")}function Ea(a,b,c, -d){if(m.test(d))throw $("nodomevents");a=ua(a);var e=ya(a,d),f=Ta;"srcset"!==d||"img"!==a&&"source"!==a?e&&(f=u.getTrusted.bind(u,e)):f=za;b.push({priority:100,compile:function(a,b){var e=p(b[c]),g=p(b[c],function(a){return u.valueOf(a)});return{pre:function(a,b){function c(){var g=e(a);b[0][d]=f(g)}c();a.$watch(g,c)}}}})}function Ia(a,c,d,e,f){var g=ua(a),k=qa(g,e),l=h[e]||f,p=b(d,!f,k,l);if(p){if("multiple"===e&&"select"===g)throw $("selmulti",Aa(a));if(m.test(e))throw $("nodomevents");c.push({priority:100, -compile:function(){return{pre:function(a,c,f){c=f.$$observers||(f.$$observers=T());var g=f[e];g!==d&&(p=g&&b(g,!0,k,l),d=g);p&&(f[e]=p(a),(c[e]||(c[e]=[])).$$inter=!0,(f.$$observers&&f.$$observers[e].$$scope||a).$watch(p,function(a,b){"class"===e&&a!==b?f.$updateClass(a,b):f.$set(e,a)}))}}}})}}function oa(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=b)return a;for(;b--;){var d=a[b];(8===d.nodeType||d.nodeType===Pa&&""===d.nodeValue.trim())&&Kg.call(a,b,1)}return a} -function Gg(a,b){if(b&&C(b))return b;if(C(a)){var d=wd.exec(a);if(d)return d[3]}}function Kf(){var a={};this.has=function(b){return a.hasOwnProperty(b)};this.register=function(b,d){Ja(b,"controller");D(b)?S(a,b):a[b]=d};this.$get=["$injector",function(b){function d(a,b,d,g){if(!a||!D(a.$scope))throw F("$controller")("noscp",g,b);a.$scope[b]=d}return function(c,e,f,g){var k,h,l;f=!0===f;g&&C(g)&&(l=g);if(C(c)){g=c.match(wd);if(!g)throw xd("ctrlfmt",c);h=g[1];l=l||g[3];c=a.hasOwnProperty(h)?a[h]:Le(e.$scope, -h,!0);if(!c)throw xd("ctrlreg",h);tb(c,h,!0)}if(f)return f=(H(c)?c[c.length-1]:c).prototype,k=Object.create(f||null),l&&d(e,l,k,h||c.name),S(function(){var a=b.invoke(c,k,e,h);a!==k&&(D(a)||B(a))&&(k=a,l&&d(e,l,k,h||c.name));return k},{instance:k,identifier:l});k=b.instantiate(c,e,h);l&&d(e,l,k,h||c.name);return k}}]}function Lf(){this.$get=["$window",function(a){return x(a.document)}]}function Mf(){this.$get=["$document","$rootScope",function(a,b){function d(){e=c.hidden}var c=a[0],e=c&&c.hidden; -a.on("visibilitychange",d);b.$on("$destroy",function(){a.off("visibilitychange",d)});return function(){return e}}]}function Nf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,arguments)}}]}function vc(a){return D(a)?ha(a)?a.toISOString():eb(a):a}function Tf(){this.$get=function(){return function(a){if(!a)return"";var b=[];Qc(a,function(a,c){null===a||A(a)||B(a)||(H(a)?r(a,function(a){b.push(ba(c)+"="+ba(vc(a)))}):b.push(ba(c)+"="+ba(vc(a))))});return b.join("&")}}}function Uf(){this.$get= -function(){return function(a){function b(a,e,f){H(a)?r(a,function(a,c){b(a,e+"["+(D(a)?c:"")+"]")}):D(a)&&!ha(a)?Qc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):(B(a)&&(a=a()),d.push(ba(e)+"="+(null==a?"":ba(vc(a)))))}if(!a)return"";var d=[];b(a,"",!0);return d.join("&")}}}function wc(a,b){if(C(a)){var d=a.replace(Lg,"").trim();if(d){var c=b("Content-Type"),c=c&&0===c.indexOf(yd),e;(e=c)||(e=(e=d.match(Mg))&&Ng[e[0]].test(d));if(e)try{a=Tc(d)}catch(f){if(!c)return a;throw Lb("baddata",a,f);}}}return a} -function zd(a){var b=T(),d;C(a)?r(a.split("\n"),function(a){d=a.indexOf(":");var e=K(V(a.substr(0,d)));a=V(a.substr(d+1));e&&(b[e]=b[e]?b[e]+", "+a:a)}):D(a)&&r(a,function(a,d){var f=K(d),g=V(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b}function Ad(a){var b;return function(d){b||(b=zd(a));return d?(d=b[K(d)],void 0===d&&(d=null),d):b}}function Bd(a,b,d,c){if(B(c))return c(a,b,d);r(c,function(c){a=c(a,b,d)});return a}function Sf(){var a=this.defaults={transformResponse:[wc],transformRequest:[function(a){return D(a)&& -"[object File]"!==la.call(a)&&"[object Blob]"!==la.call(a)&&"[object FormData]"!==la.call(a)?eb(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ja(xc),put:ja(xc),patch:ja(xc)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer",jsonpCallbackParam:"callback"},b=!1;this.useApplyAsync=function(a){return w(a)?(b=!!a,this):b};var d=this.interceptors=[],c=this.xsrfTrustedOrigins=[];Object.defineProperty(this,"xsrfWhitelistedOrigins", -{get:function(){return this.xsrfTrustedOrigins},set:function(a){this.xsrfTrustedOrigins=a}});this.$get=["$browser","$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector","$sce",function(e,f,g,k,h,l,m,p){function n(b){function c(a,b){for(var d=0,e=b.length;da?b:l.reject(b)}if(!D(b))throw F("$http")("badreq",b);if(!C(p.valueOf(b.url)))throw F("$http")("badreq",b.url);var g=S({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer,jsonpCallbackParam:a.jsonpCallbackParam},b);g.headers=function(b){var c=a.headers,e=S({},b.headers),f,g,h,c=S({},c.common,c[K(b.method)]);a:for(f in c){g=K(f);for(h in e)if(K(h)===g)continue a;e[f]=c[f]}return d(e,ja(b))}(b);g.method= -vb(g.method);g.paramSerializer=C(g.paramSerializer)?m.get(g.paramSerializer):g.paramSerializer;e.$$incOutstandingRequestCount("$http");var h=[],k=[];b=l.resolve(g);r(v,function(a){(a.request||a.requestError)&&h.unshift(a.request,a.requestError);(a.response||a.responseError)&&k.push(a.response,a.responseError)});b=c(b,h);b=b.then(function(b){var c=b.headers,d=Bd(b.data,Ad(c),void 0,b.transformRequest);A(d)&&r(c,function(a,b){"content-type"===K(b)&&delete c[b]});A(b.withCredentials)&&!A(a.withCredentials)&& -(b.withCredentials=a.withCredentials);return s(b,d).then(f,f)});b=c(b,k);return b=b.finally(function(){e.$$completeOutstandingRequest(E,"$http")})}function s(c,d){function e(a){if(a){var c={};r(a,function(a,d){c[d]=function(c){function d(){a(c)}b?h.$applyAsync(d):h.$$phase?d():h.$apply(d)}});return c}}function k(a,c,d,e,f){function g(){m(c,a,d,e,f)}R&&(200<=a&&300>a?R.put(O,[a,c,zd(d),e,f]):R.remove(O));b?h.$applyAsync(g):(g(),h.$$phase||h.$apply())}function m(a,b,d,e,f){b=-1<=b?b:0;(200<=b&&300> -b?L.resolve:L.reject)({data:a,status:b,headers:Ad(d),config:c,statusText:e,xhrStatus:f})}function s(a){m(a.data,a.status,ja(a.headers()),a.statusText,a.xhrStatus)}function v(){var a=n.pendingRequests.indexOf(c);-1!==a&&n.pendingRequests.splice(a,1)}var L=l.defer(),u=L.promise,R,q,ma=c.headers,x="jsonp"===K(c.method),O=c.url;x?O=p.getTrustedResourceUrl(O):C(O)||(O=p.valueOf(O));O=G(O,c.paramSerializer(c.params));x&&(O=t(O,c.jsonpCallbackParam));n.pendingRequests.push(c);u.then(v,v);!c.cache&&!a.cache|| -!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(R=D(c.cache)?c.cache:D(a.cache)?a.cache:N);R&&(q=R.get(O),w(q)?q&&B(q.then)?q.then(s,s):H(q)?m(q[1],q[0],ja(q[2]),q[3],q[4]):m(q,200,{},"OK","complete"):R.put(O,u));A(q)&&((q=kc(c.url)?g()[c.xsrfCookieName||a.xsrfCookieName]:void 0)&&(ma[c.xsrfHeaderName||a.xsrfHeaderName]=q),f(c.method,O,d,k,ma,c.timeout,c.withCredentials,c.responseType,e(c.eventHandlers),e(c.uploadEventHandlers)));return u}function G(a,b){0=h&&(t.resolve(s),f(r.$$intervalId));G||c.$apply()},k,t,G);return r}}}]}function Cd(a,b){var d=ga(a);b.$$protocol=d.protocol;b.$$host= -d.hostname;b.$$port=fa(d.port)||Rg[d.protocol]||null}function Dd(a,b,d){if(Sg.test(a))throw kb("badpath",a);var c="/"!==a.charAt(0);c&&(a="/"+a);a=ga(a);for(var c=(c&&"/"===a.pathname.charAt(0)?a.pathname.substring(1):a.pathname).split("/"),e=c.length;e--;)c[e]=decodeURIComponent(c[e]),d&&(c[e]=c[e].replace(/\//g,"%2F"));d=c.join("/");b.$$path=d;b.$$search=hc(a.search);b.$$hash=decodeURIComponent(a.hash);b.$$path&&"/"!==b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function yc(a,b){return a.slice(0, -b.length)===b}function ya(a,b){if(yc(b,a))return b.substr(a.length)}function Da(a){var b=a.indexOf("#");return-1===b?a:a.substr(0,b)}function zc(a,b,d){this.$$html5=!0;d=d||"";Cd(a,this);this.$$parse=function(a){var d=ya(b,a);if(!C(d))throw kb("ipthprfx",a,b);Dd(d,this,!0);this.$$path||(this.$$path="/");this.$$compose()};this.$$normalizeUrl=function(a){return b+a.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;w(f=ya(a,c))?(g=f,g=d&&w(f=ya(d,f))? -b+(ya("/",f)||f):a+g):w(f=ya(b,c))?g=b+f:b===c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function Ac(a,b,d){Cd(a,this);this.$$parse=function(c){var e=ya(a,c)||ya(b,c),f;A(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",A(e)&&(a=c,this.replace())):(f=ya(d,e),A(f)&&(f=e));Dd(f,this,!1);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;yc(f,e)&&(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$normalizeUrl=function(b){return a+(b?d+b:"")};this.$$parseLinkUrl=function(b, -d){return Da(a)===Da(b)?(this.$$parse(b),!0):!1}}function Ed(a,b,d){this.$$html5=!0;Ac.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a===Da(c)?f=c:(g=ya(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$normalizeUrl=function(b){return a+d+b}}function Mb(a){return function(){return this[a]}}function Fd(a,b){return function(d){if(A(d))return this[a];this[a]=b(d);this.$$compose();return this}}function Yf(){var a="!", -b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return w(b)?(a=b,this):a};this.html5Mode=function(a){if(Ga(a))return b.enabled=a,this;if(D(a)){Ga(a.enabled)&&(b.enabled=a.enabled);Ga(a.requireBase)&&(b.requireBase=a.requireBase);if(Ga(a.rewriteLinks)||C(a.rewriteLinks))b.rewriteLinks=a.rewriteLinks;return this}return b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,c,e,f,g){function k(a,b){return a===b||ga(a).href===ga(b).href}function h(a, -b,d){var e=m.url(),f=m.$$state;try{c.url(a,b,d),m.$$state=c.state()}catch(g){throw m.url(e),m.$$state=f,g;}}function l(a,b){d.$broadcast("$locationChangeSuccess",m.absUrl(),a,m.$$state,b)}var m,p;p=c.baseHref();var n=c.url(),s;if(b.enabled){if(!p&&b.requireBase)throw kb("nobase");s=n.substring(0,n.indexOf("/",n.indexOf("//")+2))+(p||"/");p=e.history?zc:Ed}else s=Da(n),p=Ac;var r=s.substr(0,Da(s).lastIndexOf("/")+1);m=new p(s,r,"#"+a);m.$$parseLinkUrl(n,n);m.$$state=c.state();var t=/^\s*(javascript|mailto):/i; -f.on("click",function(a){var e=b.rewriteLinks;if(e&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!==a.which&&2!==a.button){for(var g=x(a.target);"a"!==ua(g[0]);)if(g[0]===f[0]||!(g=g.parent())[0])return;if(!C(e)||!A(g.attr(e))){var e=g.prop("href"),h=g.attr("href")||g.attr("xlink:href");D(e)&&"[object SVGAnimatedString]"===e.toString()&&(e=ga(e.animVal).href);t.test(e)||!e||g.attr("target")||a.isDefaultPrevented()||!m.$$parseLinkUrl(e,h)||(a.preventDefault(),m.absUrl()!==c.url()&&d.$apply())}}});m.absUrl()!== -n&&c.url(m.absUrl(),!0);var N=!0;c.onUrlChange(function(a,b){yc(a,r)?(d.$evalAsync(function(){var c=m.absUrl(),e=m.$$state,f;m.$$parse(a);m.$$state=b;f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented;m.absUrl()===a&&(f?(m.$$parse(c),m.$$state=e,h(c,!1,e)):(N=!1,l(c,e)))}),d.$$phase||d.$digest()):g.location.href=a});d.$watch(function(){if(N||m.$$urlUpdatedByLocation){m.$$urlUpdatedByLocation=!1;var a=c.url(),b=m.absUrl(),f=c.state(),g=m.$$replace,n=!k(a,b)||m.$$html5&&e.history&&f!== -m.$$state;if(N||n)N=!1,d.$evalAsync(function(){var b=m.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,m.$$state,f).defaultPrevented;m.absUrl()===b&&(c?(m.$$parse(a),m.$$state=f):(n&&h(b,g,f===m.$$state?null:m.$$state),l(a,f)))})}m.$$replace=!1});return m}]}function Zf(){var a=!0,b=this;this.debugEnabled=function(b){return w(b)?(a=b,this):a};this.$get=["$window",function(d){function c(a){dc(a)&&(a.stack&&f?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&& -(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=d.console||{},e=b[a]||b.log||E;return function(){var a=[];r(arguments,function(b){a.push(c(b))});return Function.prototype.apply.call(e,b,a)}}var f=wa||/\bEdge\//.test(d.navigator&&d.navigator.userAgent);return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Tg(a){return a+""}function Ug(a,b){return"undefined"!==typeof a?a: -b}function Gd(a,b){return"undefined"===typeof a?b:"undefined"===typeof b?a:a+b}function Vg(a,b){switch(a.type){case q.MemberExpression:if(a.computed)return!1;break;case q.UnaryExpression:return 1;case q.BinaryExpression:return"+"!==a.operator?1:!1;case q.CallExpression:return!1}return void 0===b?Hd:b}function Z(a,b,d){var c,e,f=a.isPure=Vg(a,d);switch(a.type){case q.Program:c=!0;r(a.body,function(a){Z(a.expression,b,f);c=c&&a.expression.constant});a.constant=c;break;case q.Literal:a.constant=!0;a.toWatch= -[];break;case q.UnaryExpression:Z(a.argument,b,f);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;break;case q.BinaryExpression:Z(a.left,b,f);Z(a.right,b,f);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case q.LogicalExpression:Z(a.left,b,f);Z(a.right,b,f);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case q.ConditionalExpression:Z(a.test,b,f);Z(a.alternate,b,f);Z(a.consequent,b,f);a.constant=a.test.constant&& -a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case q.Identifier:a.constant=!1;a.toWatch=[a];break;case q.MemberExpression:Z(a.object,b,f);a.computed&&Z(a.property,b,f);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch=a.constant?[]:[a];break;case q.CallExpression:c=d=a.filter?!b(a.callee.name).$stateful:!1;e=[];r(a.arguments,function(a){Z(a,b,f);c=c&&a.constant;e.push.apply(e,a.toWatch)});a.constant=c;a.toWatch=d?e:[a];break;case q.AssignmentExpression:Z(a.left, -b,f);Z(a.right,b,f);a.constant=a.left.constant&&a.right.constant;a.toWatch=[a];break;case q.ArrayExpression:c=!0;e=[];r(a.elements,function(a){Z(a,b,f);c=c&&a.constant;e.push.apply(e,a.toWatch)});a.constant=c;a.toWatch=e;break;case q.ObjectExpression:c=!0;e=[];r(a.properties,function(a){Z(a.value,b,f);c=c&&a.value.constant;e.push.apply(e,a.value.toWatch);a.computed&&(Z(a.key,b,!1),c=c&&a.key.constant,e.push.apply(e,a.key.toWatch))});a.constant=c;a.toWatch=e;break;case q.ThisExpression:a.constant= -!1;a.toWatch=[];break;case q.LocalsExpression:a.constant=!1,a.toWatch=[]}}function Id(a){if(1===a.length){a=a[0].expression;var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:void 0}}function Jd(a){return a.type===q.Identifier||a.type===q.MemberExpression}function Kd(a){if(1===a.body.length&&Jd(a.body[0].expression))return{type:q.AssignmentExpression,left:a.body[0].expression,right:{type:q.NGValueParameter},operator:"="}}function Ld(a){this.$filter=a}function Md(a){this.$filter=a}function Nb(a,b,d){this.ast= -new q(a,d);this.astCompiler=d.csp?new Md(b):new Ld(b)}function Bc(a){return B(a.valueOf)?a.valueOf():Wg.call(a)}function $f(){var a=T(),b={"true":!0,"false":!1,"null":null,undefined:void 0},d,c;this.addLiteral=function(a,c){b[a]=c};this.setIdentifierFns=function(a,b){d=a;c=b;return this};this.$get=["$filter",function(e){function f(b,c){var d,f;switch(typeof b){case "string":return f=b=b.trim(),d=a[f],d||(d=new Ob(G),d=(new Nb(d,e,G)).parse(b),a[f]=p(d)),s(d,c);case "function":return s(b,c);default:return s(E, -c)}}function g(a,b,c){return null==a||null==b?a===b:"object"!==typeof a||(a=Bc(a),"object"!==typeof a||c)?a===b||a!==a&&b!==b:!1}function k(a,b,c,d,e){var f=d.inputs,h;if(1===f.length){var k=g,f=f[0];return a.$watch(function(a){var b=f(a);g(b,k,f.isPure)||(h=d(a,void 0,void 0,[b]),k=b&&Bc(b));return h},b,c,e)}for(var l=[],m=[],n=0,p=f.length;n=c.$$state.status&&e&&e.length&&a(function(){for(var a,c,f=0,g=e.length;fa)for(b in l++, -f)ta.call(e,b)||(t--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$$pure=g(a).literal;c.$stateful=!c.$$pure;var d=this,e,f,h,k=1r&&(A=4-r,N[A]||(N[A]=[]),N[A].push({msg:B(a.exp)?"fn: "+(a.exp.name||a.exp.toString()):a.exp,newVal:g,oldVal:h}));else if(a===c){s= -!1;break a}}catch(E){f(E)}if(!(n=!q.$$suspended&&q.$$watchersCount&&q.$$childHead||q!==y&&q.$$nextSibling))for(;q!==y&&!(n=q.$$nextSibling);)q=q.$parent}while(q=n);if((s||w.length)&&!r--)throw v.$$phase=null,d("infdig",b,N);}while(s||w.length);for(v.$$phase=null;Jwa)throw Ea("iequirks");var c=ja(W);c.isEnabled=function(){return a};c.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b},c.valueOf=Ta);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;r(W, -function(a,b){var d=K(b);c[("parse_as_"+d).replace(Dc,xb)]=function(b){return e(a,b)};c[("get_trusted_"+d).replace(Dc,xb)]=function(b){return f(a,b)};c[("trust_as_"+d).replace(Dc,xb)]=function(b){return g(a,b)}});return c}]}function fg(){this.$get=["$window","$document",function(a,b){var d={},c=!((!a.nw||!a.nw.process)&&a.chrome&&(a.chrome.app&&a.chrome.app.runtime||!a.chrome.app&&a.chrome.runtime&&a.chrome.runtime.id))&&a.history&&a.history.pushState,e=fa((/android (\d+)/.exec(K((a.navigator||{}).userAgent))|| -[])[1]),f=/Boxee/i.test((a.navigator||{}).userAgent),g=b[0]||{},k=g.body&&g.body.style,h=!1,l=!1;k&&(h=!!("transition"in k||"webkitTransition"in k),l=!!("animation"in k||"webkitAnimation"in k));return{history:!(!c||4>e||f),hasEvent:function(a){if("input"===a&&wa)return!1;if(A(d[a])){var b=g.createElement("div");d[a]="on"+a in b}return d[a]},csp:Ba(),transitions:h,animations:l,android:e}}]}function gg(){this.$get=ia(function(a){return new Yg(a)})}function Yg(a){function b(){var a=e.pop();return a&& -a.cb}function d(a){for(var b=e.length-1;0<=b;--b){var c=e[b];if(c.type===a)return e.splice(b,1),c.cb}}var c={},e=[],f=this.ALL_TASKS_TYPE="$$all$$",g=this.DEFAULT_TASK_TYPE="$$default$$";this.completeTask=function(e,h){h=h||g;try{e()}finally{var l;l=h||g;c[l]&&(c[l]--,c[f]--);l=c[h];var m=c[f];if(!m||!l)for(l=m?d:b;m=l(h);)try{m()}catch(p){a.error(p)}}};this.incTaskCount=function(a){a=a||g;c[a]=(c[a]||0)+1;c[f]=(c[f]||0)+1};this.notifyWhenNoPendingTasks=function(a,b){b=b||f;c[b]?e.push({type:b,cb:a}): -a()}}function ig(){var a;this.httpOptions=function(b){return b?(a=b,this):a};this.$get=["$exceptionHandler","$templateCache","$http","$q","$sce",function(b,d,c,e,f){function g(k,h){g.totalPendingRequests++;if(!C(k)||A(d.get(k)))k=f.getTrustedResourceUrl(k);var l=c.defaults&&c.defaults.transformResponse;H(l)?l=l.filter(function(a){return a!==wc}):l===wc&&(l=null);return c.get(k,S({cache:d,transformResponse:l},a)).finally(function(){g.totalPendingRequests--}).then(function(a){return d.put(k,a.data)}, -function(a){h||(a=Zg("tpload",k,a.status,a.statusText),b(a));return e.reject(a)})}g.totalPendingRequests=0;return g}]}function jg(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding");var g=[];r(a,function(a){var c=ca.element(a).data("$binding");c&&r(c,function(c){d?(new RegExp("(^|\\s)"+Od(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!==c.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,d){for(var g=["ng-", -"data-ng-","ng\\:"],k=0;kc&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c=a.length);for(e=0;a.charAt(e)===Fc;e++);if(e===(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)===Fc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Yd&&(d=d.splice(0,Yd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function ih(a, -b,d,c){var e=a.d,f=e.length-a.i;b=A(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0d-1){for(c=0;c>d;c--)e.unshift(0),a.i++;e.unshift(1);a.i++}else e[d-1]++;for(;fk;)h.unshift(0),k++;0=b.lgSize&&k.unshift(h.splice(-b.lgSize,h.length).join(""));h.length>b.gSize;)k.unshift(h.splice(-b.gSize,h.length).join(""));h.length&&k.unshift(h.join(""));h=k.join(d);f.length&&(h+=c+f.join(""));e&&(h+="e+"+e)}return 0>a&&!g?b.negPre+h+b.negSuf:b.posPre+ -h+b.posSuf}function Pb(a,b,d,c){var e="";if(0>a||c&&0>=a)c?a=-a+1:(a=-a,e="-");for(a=""+a;a.length-d)f+=d;0===f&&-12===d&&(f=12);return Pb(f,b,c,e)}}function lb(a,b,d){return function(c,e){var f=c["get"+a](),g=vb((d?"STANDALONE":"")+(b?"SHORT":"")+a);return e[g][f]}}function Zd(a){var b=(new Date(a,0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function $d(a){return function(b){var d= -Zd(b.getFullYear());b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Pb(b,a)}}function Gc(a,b){return 0>=a.getFullYear()?b.ERAS[0]:b.ERAS[1]}function Td(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,k=b[8]?a.setUTCFullYear:a.setFullYear,h=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=fa(b[9]+b[10]),g=fa(b[9]+b[11]));k.call(a,fa(b[1]),fa(b[2])-1,fa(b[3]));f=fa(b[4]||0)-f;g=fa(b[5]||0)-g;k=fa(b[6]||0);b=Math.round(1E3*parseFloat("0."+ -(b[7]||0)));h.call(a,f,g,k,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,d,f){var g="",k=[],h,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;C(c)&&(c=jh.test(c)?fa(c):b(c));X(c)&&(c=new Date(c));if(!ha(c)||!isFinite(c.getTime()))return c;for(;d;)(l=kh.exec(d))?(k=db(k,l,1),d=k.pop()):(k.push(d),d=null);var m=c.getTimezoneOffset();f&&(m=fc(f,m),c=gc(c,f,!0));r(k,function(b){h=lh[b];g+=h?h(c,a.DATETIME_FORMATS, -m):"''"===b?"'":b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function ch(){return function(a,b){A(b)&&(b=2);return eb(a,b)}}function dh(){return function(a,b,d){b=Infinity===Math.abs(Number(b))?Number(b):fa(b);if(Y(b))return a;X(a)&&(a=a.toString());if(!za(a))return a;d=!d||isNaN(d)?0:fa(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?Hc(a,d,d+b):0===d?Hc(a,b,a.length):Hc(a,Math.max(0,d+b),d)}}function Hc(a,b,d){return C(a)?a.slice(b,d):Ha.call(a,b,d)}function Vd(a){function b(b){return b.map(function(b){var c= -1,d=Ta;if(B(b))d=b;else if(C(b)){if("+"===b.charAt(0)||"-"===b.charAt(0))c="-"===b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(d=a(b),d.constant))var e=d(),d=function(a){return a[e]}}return{get:d,descending:c}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}function c(a,b){var c=0,d=a.type,h=b.type;if(d===h){var h=a.value,l=b.value;"string"===d?(h=h.toLowerCase(),l=l.toLowerCase()):"object"===d&&(D(h)&&(h=a.index),D(l)&&(l=b.index));h!==l&&(c= -hb||37<=b&&40>=b|| -m(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut drop",m)}b.on("change",l);if(ee[g]&&c.$$hasNativeValidators&&g===d.type)b.on("keydown wheel mousedown",function(a){if(!h){var b=this.validity,c=b.badInput,d=b.typeMismatch;h=f.defer(function(){h=null;b.badInput===c&&b.typeMismatch===d||l(a)})}});c.$render=function(){var a=c.$isEmpty(c.$viewValue)?"":c.$viewValue;b.val()!==a&&b.val(a)}}function Rb(a,b){return function(d,c){var e,f;if(ha(d))return d;if(C(d)){'"'===d.charAt(0)&&'"'===d.charAt(d.length- -1)&&(d=d.substring(1,d.length-1));if(mh.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},r(e,function(a,c){cf.yyyy&&e.setFullYear(f.yyyy),e}return NaN}}function ob(a,b,d,c){return function(e,f,g,k,h,l,m, -p){function n(a){return a&&!(a.getTime&&a.getTime()!==a.getTime())}function s(a){return w(a)&&!ha(a)?r(a)||void 0:a}function r(a,b){var c=k.$options.getOption("timezone");v&&v!==c&&(b=Uc(b,fc(v)));var e=d(a,b);!isNaN(e)&&c&&(e=gc(e,c));return e}Jc(e,f,g,k,a);Sa(e,f,g,k,h,l);var t="time"===a||"datetimelocal"===a,q,v;k.$parsers.push(function(c){if(k.$isEmpty(c))return null;if(b.test(c))return r(c,q);k.$$parserName=a});k.$formatters.push(function(a){if(a&&!ha(a))throw pb("datefmt",a);if(n(a)){q=a;var b= -k.$options.getOption("timezone");b&&(v=b,q=gc(q,b,!0));var d=c;t&&C(k.$options.getOption("timeSecondsFormat"))&&(d=c.replace("ss.sss",k.$options.getOption("timeSecondsFormat")).replace(/:$/,""));a=m("date")(a,d,b);t&&k.$options.getOption("timeStripZeroSeconds")&&(a=a.replace(/(?::00)?(?:\.000)?$/,""));return a}v=q=null;return""});if(w(g.min)||g.ngMin){var x=g.min||p(g.ngMin)(e),z=s(x);k.$validators.min=function(a){return!n(a)||A(z)||d(a)>=z};g.$observe("min",function(a){a!==x&&(z=s(a),x=a,k.$validate())})}if(w(g.max)|| -g.ngMax){var y=g.max||p(g.ngMax)(e),J=s(y);k.$validators.max=function(a){return!n(a)||A(J)||d(a)<=J};g.$observe("max",function(a){a!==y&&(J=s(a),y=a,k.$validate())})}}}function Jc(a,b,d,c,e){(c.$$hasNativeValidators=D(b[0].validity))&&c.$parsers.push(function(a){var d=b.prop("validity")||{};if(d.badInput||d.typeMismatch)c.$$parserName=e;else return a})}function fe(a){a.$parsers.push(function(b){if(a.$isEmpty(b))return null;if(nh.test(b))return parseFloat(b);a.$$parserName="number"});a.$formatters.push(function(b){if(!a.$isEmpty(b)){if(!X(b))throw pb("numfmt", -b);b=b.toString()}return b})}function na(a){w(a)&&!X(a)&&(a=parseFloat(a));return Y(a)?void 0:a}function Kc(a){var b=a.toString(),d=b.indexOf(".");return-1===d?-1a&&(a=/e-(\d+)$/.exec(b))?Number(a[1]):0:b.length-d-1}function ge(a,b,d){a=Number(a);var c=(a|0)!==a,e=(b|0)!==b,f=(d|0)!==d;if(c||e||f){var g=c?Kc(a):0,k=e?Kc(b):0,h=f?Kc(d):0,g=Math.max(g,k,h),g=Math.pow(10,g);a*=g;b*=g;d*=g;c&&(a=Math.round(a));e&&(b=Math.round(b));f&&(d=Math.round(d))}return 0===(a-b)%d}function he(a,b,d,c,e){if(w(c)){a= -a(c);if(!a.constant)throw pb("constexpr",d,c);return a(b)}return e}function Lc(a,b){function d(a,b){if(!a||!a.length)return[];if(!b||!b.length)return a;var c=[],d=0;a:for(;d(?:<\/\1>|)$/,nc=/<|&#?\w+;/,rg=/<([\w:-]+)/,sg=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,qa={thead:["table"],col:["colgroup","table"],tr:["tbody","table"],td:["tr", -"tbody","table"]};qa.tbody=qa.tfoot=qa.colgroup=qa.caption=qa.thead;qa.th=qa.td;var hb={option:[1,'"],_default:[0,"",""]},Nc;for(Nc in qa){var le=qa[Nc],me=le.slice().reverse();hb[Nc]=[me.length,"<"+me.join("><")+">",""]}hb.optgroup=hb.option;var zg=z.Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)},Wa=U.prototype={ready:hd,toString:function(){var a=[];r(this,function(b){a.push(""+b)});return"["+a.join(", ")+ -"]"},eq:function(a){return 0<=a?x(this[a]):x(this[this.length+a])},length:0,push:ph,sort:[].sort,splice:[].splice},Hb={};r("multiple selected checked disabled readOnly required open".split(" "),function(a){Hb[K(a)]=a});var od={};r("input select option textarea button form details".split(" "),function(a){od[a]=!0});var vd={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern",ngStep:"step"};r({data:sc,removeData:rc,hasData:function(a){for(var b in Ka[a.ng339])return!0; -return!1},cleanData:function(a){for(var b=0,d=a.length;b/,Cg=/^[^(]*\(\s*([^)]*)\)/m,sh=/,/,th=/^\s*(_?)(\S+?)\1\s*$/,Ag=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ca=F("$injector");fb.$$annotate=function(a,b,d){var c;if("function"===typeof a){if(!(c=a.$inject)){c=[];if(a.length){if(b)throw C(d)&&d||(d=a.name||Dg(a)),Ca("strictdi",d);b=qd(a);r(b[1].split(sh),function(a){a.replace(th,function(a,b,d){c.push(d)})})}a.$inject=c}}else H(a)?(b=a.length-1,tb(a[b],"fn"),c=a.slice(0,b)):tb(a,"fn",!0);return c};var ne=F("$animate"), -Ef=function(){this.$get=E},Ff=function(){var a=new Ib,b=[];this.$get=["$$AnimateRunner","$rootScope",function(d,c){function e(a,b,c){var d=!1;b&&(b=C(b)?b.split(" "):H(b)?b:[],r(b,function(b){b&&(d=!0,a[b]=c)}));return d}function f(){r(b,function(b){var c=a.get(b);if(c){var d=Eg(b.attr("class")),e="",f="";r(c,function(a,b){a!==!!d[b]&&(a?e+=(e.length?" ":"")+b:f+=(f.length?" ":"")+b)});r(b,function(a){e&&Eb(a,e);f&&Db(a,f)});a.delete(b)}});b.length=0}return{enabled:E,on:E,off:E,pin:E,push:function(g, -k,h,l){l&&l();h=h||{};h.from&&g.css(h.from);h.to&&g.css(h.to);if(h.addClass||h.removeClass)if(k=h.addClass,l=h.removeClass,h=a.get(g)||{},k=e(h,k,!0),l=e(h,l,!1),k||l)a.set(g,h),b.push(g),1===b.length&&c.$$postDigest(f);g=new d;g.complete();return g}}}]},Cf=["$provide",function(a){var b=this,d=null,c=null;this.$$registeredAnimations=Object.create(null);this.register=function(c,d){if(c&&"."!==c.charAt(0))throw ne("notcsel",c);var g=c+"-animation";b.$$registeredAnimations[c.substr(1)]=g;a.factory(g, -d)};this.customFilter=function(a){1===arguments.length&&(c=B(a)?a:null);return c};this.classNameFilter=function(a){if(1===arguments.length&&(d=a instanceof RegExp?a:null)&&/[(\s|\/)]ng-animate[(\s|\/)]/.test(d.toString()))throw d=null,ne("nongcls","ng-animate");return d};this.$get=["$$animateQueue",function(a){function b(a,c,d){if(d){var e;a:{for(e=0;e <= >= && || ! = |".split(" "),function(a){Vb[a]= -!0});var wh={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Ob=function(a){this.options=a};Ob.prototype={constructor:Ob,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index=a&&"string"=== -typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdentifierStart:function(a){return this.options.isIdentifierStart?this.options.isIdentifierStart(a,this.codePointAt(a)):this.isValidIdentifierStart(a)},isValidIdentifierStart:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isIdentifierContinue:function(a){return this.options.isIdentifierContinue?this.options.isIdentifierContinue(a,this.codePointAt(a)):this.isValidIdentifierContinue(a)}, -isValidIdentifierContinue:function(a,b){return this.isValidIdentifierStart(a,b)||this.isNumber(a)},codePointAt:function(a){return 1===a.length?a.charCodeAt(0):(a.charCodeAt(0)<<10)+a.charCodeAt(1)-56613888},peekMultichar:function(){var a=this.text.charAt(this.index),b=this.peek();if(!b)return a;var d=a.charCodeAt(0),c=b.charCodeAt(0);return 55296<=d&&56319>=d&&56320<=c&&57343>=c?a+b:a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b= -w(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,d)+"]":" "+d;throw Ya("lexerr",a,b,this.text);},readNumber:function(){for(var a="",b=this.index;this.index","<=",">=");)a={type:q.BinaryExpression,operator:b.text, -left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),b;b=this.expect("+","-");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect("*","/","%");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:q.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()}, -primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.selfReferential.hasOwnProperty(this.peek().text)?a=Ia(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)?a={type:q.Literal,value:this.options.literals[this.consume().text]}:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression", -this.peek());for(var b;b=this.expect("(","[",".");)"("===b.text?(a={type:q.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(")")):"["===b.text?(a={type:q.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===b.text?a={type:q.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:q.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression()); -return b},parseArguments:function(){var a=[];if(")"!==this.peekToken().text){do a.push(this.filterChain());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:q.Identifier,name:a.text}},constant:function(){return{type:q.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]"); -return{type:q.ArrayExpression,elements:a}},object:function(){var a=[],b;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;b={type:q.Property,kind:"init"};this.peek().constant?(b.key=this.constant(),b.computed=!1,this.consume(":"),b.value=this.expression()):this.peek().identifier?(b.key=this.identifier(),b.computed=!1,this.peek(":")?(this.consume(":"),b.value=this.expression()):b.value=b.key):this.peek("[")?(this.consume("["),b.key=this.expression(),this.consume("]"),b.computed=!0,this.consume(":"), -b.value=this.expression()):this.throwError("invalid key",this.peek());a.push(b)}while(this.expect(","))}this.consume("}");return{type:q.ObjectExpression,properties:a}},throwError:function(a,b){throw Ya("syntax",b.text,a,b.index+1,this.text,this.text.substring(b.index));},consume:function(a){if(0===this.tokens.length)throw Ya("ueoe",this.text);var b=this.expect(a);b||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw Ya("ueoe", -this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},expect:function(a,b,d,c){return(a=this.peek(a,b,d,c))?(this.tokens.shift(),a):!1},selfReferential:{"this":{type:q.ThisExpression},$locals:{type:q.LocalsExpression}}};var Hd=2;Ld.prototype={compile:function(a){var b=this;this.state={nextId:0,filters:{},fn:{vars:[], -body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};Z(a,b.$filter);var d="",c;this.stage="assign";if(c=Kd(a))this.state.computing="assign",d=this.nextId(),this.recurse(c,d),this.return_(d),d="fn.assign="+this.generateFunction("assign","s,v,l");c=Id(a.body);b.stage="inputs";r(c,function(a,c){var d="fn"+c;b.state[d]={vars:[],body:[],own:{}};b.state.computing=d;var k=b.nextId();b.recurse(a,k);b.return_(k);b.state.inputs.push({name:d,isPure:a.isPure});a.watchId=c});this.state.computing="fn";this.stage= -"main";this.recurse(a);a='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+d+this.watchFns()+"return fn;";a=(new Function("$filter","getStringValue","ifDefined","plus",a))(this.$filter,Tg,Ug,Gd);this.state=this.stage=void 0;return a},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;r(b,function(b){a.push("var "+b.name+"="+d.generateFunction(b.name,"s"));b.isPure&&a.push(b.name,".isPure="+JSON.stringify(b.isPure)+ -";")});b.length&&a.push("fn.inputs=["+b.map(function(a){return a.name}).join(",")+"];");return a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],b=this;r(this.state.filters,function(d,c){a.push(d+"=$filter("+b.escape(c)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")}, -recurse:function(a,b,d,c,e,f){var g,k,h=this,l,m,p;c=c||E;if(!f&&w(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d,c,e,!0));else switch(a.type){case q.Program:r(a.body,function(b,c){h.recurse(b.expression,void 0,void 0,function(a){k=a});c!==a.body.length-1?h.current().body.push(k,";"):h.return_(k)});break;case q.Literal:m=this.escape(a.value);this.assign(b,m);c(b||m);break;case q.UnaryExpression:this.recurse(a.argument,void 0, -void 0,function(a){k=a});m=a.operator+"("+this.ifDefined(k,0)+")";this.assign(b,m);c(m);break;case q.BinaryExpression:this.recurse(a.left,void 0,void 0,function(a){g=a});this.recurse(a.right,void 0,void 0,function(a){k=a});m="+"===a.operator?this.plus(g,k):"-"===a.operator?this.ifDefined(g,0)+a.operator+this.ifDefined(k,0):"("+g+")"+a.operator+"("+k+")";this.assign(b,m);c(m);break;case q.LogicalExpression:b=b||this.nextId();h.recurse(a.left,b);h.if_("&&"===a.operator?b:h.not(b),h.lazyRecurse(a.right, -b));c(b);break;case q.ConditionalExpression:b=b||this.nextId();h.recurse(a.test,b);h.if_(b,h.lazyRecurse(a.alternate,b),h.lazyRecurse(a.consequent,b));c(b);break;case q.Identifier:b=b||this.nextId();d&&(d.context="inputs"===h.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1,d.name=a.name);h.if_("inputs"===h.stage||h.not(h.getHasOwnProperty("l",a.name)),function(){h.if_("inputs"===h.stage||"s",function(){e&&1!==e&&h.if_(h.isNull(h.nonComputedMember("s",a.name)), -h.lazyAssign(h.nonComputedMember("s",a.name),"{}"));h.assign(b,h.nonComputedMember("s",a.name))})},b&&h.lazyAssign(b,h.nonComputedMember("l",a.name)));c(b);break;case q.MemberExpression:g=d&&(d.context=this.nextId())||this.nextId();b=b||this.nextId();h.recurse(a.object,g,void 0,function(){h.if_(h.notNull(g),function(){a.computed?(k=h.nextId(),h.recurse(a.property,k),h.getStringValue(k),e&&1!==e&&h.if_(h.not(h.computedMember(g,k)),h.lazyAssign(h.computedMember(g,k),"{}")),m=h.computedMember(g,k),h.assign(b, -m),d&&(d.computed=!0,d.name=k)):(e&&1!==e&&h.if_(h.isNull(h.nonComputedMember(g,a.property.name)),h.lazyAssign(h.nonComputedMember(g,a.property.name),"{}")),m=h.nonComputedMember(g,a.property.name),h.assign(b,m),d&&(d.computed=!1,d.name=a.property.name))},function(){h.assign(b,"undefined")});c(b)},!!e);break;case q.CallExpression:b=b||this.nextId();a.filter?(k=h.filter(a.callee.name),l=[],r(a.arguments,function(a){var b=h.nextId();h.recurse(a,b);l.push(b)}),m=k+"("+l.join(",")+")",h.assign(b,m),c(b)): -(k=h.nextId(),g={},l=[],h.recurse(a.callee,k,g,function(){h.if_(h.notNull(k),function(){r(a.arguments,function(b){h.recurse(b,a.constant?void 0:h.nextId(),void 0,function(a){l.push(a)})});m=g.name?h.member(g.context,g.name,g.computed)+"("+l.join(",")+")":k+"("+l.join(",")+")";h.assign(b,m)},function(){h.assign(b,"undefined")});c(b)}));break;case q.AssignmentExpression:k=this.nextId();g={};this.recurse(a.left,void 0,g,function(){h.if_(h.notNull(g.context),function(){h.recurse(a.right,k);m=h.member(g.context, -g.name,g.computed)+a.operator+k;h.assign(b,m);c(b||m)})},1);break;case q.ArrayExpression:l=[];r(a.elements,function(b){h.recurse(b,a.constant?void 0:h.nextId(),void 0,function(a){l.push(a)})});m="["+l.join(",")+"]";this.assign(b,m);c(b||m);break;case q.ObjectExpression:l=[];p=!1;r(a.properties,function(a){a.computed&&(p=!0)});p?(b=b||this.nextId(),this.assign(b,"{}"),r(a.properties,function(a){a.computed?(g=h.nextId(),h.recurse(a.key,g)):g=a.key.type===q.Identifier?a.key.name:""+a.key.value;k=h.nextId(); -h.recurse(a.value,k);h.assign(h.member(b,g,a.computed),k)})):(r(a.properties,function(b){h.recurse(b.value,a.constant?void 0:h.nextId(),void 0,function(a){l.push(h.escape(b.key.type===q.Identifier?b.key.name:""+b.key.value)+":"+a)})}),m="{"+l.join(",")+"}",this.assign(b,m));c(b||m);break;case q.ThisExpression:this.assign(b,"s");c(b||"s");break;case q.LocalsExpression:this.assign(b,"l");c(b||"l");break;case q.NGValueParameter:this.assign(b,"v"),c(b||"v")}},getHasOwnProperty:function(a,b){var d=a+"."+ -b,c=this.current().own;c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+"&&("+this.escape(b)+" in "+a+")"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,"=",b,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a, -b,d){if(!0===a)b();else{var c=this.current().body;c.push("if(",a,"){");b();c.push("}");d&&(c.push("else{"),d(),c.push("}"))}},not:function(a){return"!("+a+")"},isNull:function(a){return a+"==null"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,b){var d=/[^$_a-zA-Z0-9]/g;return/^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(b)?a+"."+b:a+'["'+b.replace(d,this.stringEscapeFn)+'"]'},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a, -b)},getStringValue:function(a){this.assign(a,"getStringValue("+a+")")},lazyRecurse:function(a,b,d,c,e,f){var g=this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a,b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(C(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(X(a))return a.toString();if(!0===a)return"true";if(!1=== -a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw Ya("esc");},nextId:function(a,b){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(b?"="+b:""));return d},current:function(){return this.state[this.state.computing]}};Md.prototype={compile:function(a){var b=this;Z(a,b.$filter);var d,c;if(d=Kd(a))c=this.recurse(d);d=Id(a.body);var e;d&&(e=[],r(d,function(a,c){var d=b.recurse(a);d.isPure=a.isPure;a.input=d;e.push(d);a.watchId=c}));var f=[];r(a.body, -function(a){f.push(b.recurse(a.expression))});a=0===a.body.length?E:1===a.body.length?f[0]:function(a,b){var c;r(f,function(d){c=d(a,b)});return c};c&&(a.assign=function(a,b,d){return c(a,d,b)});e&&(a.inputs=e);return a},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case q.Literal:return this.value(a.value,b);case q.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case q.BinaryExpression:return c=this.recurse(a.left), -e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case q.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case q.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),b);case q.Identifier:return f.identifier(a.name,b,d);case q.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c, -e,b,d):this.nonComputedMember(c,e,b,d);case q.CallExpression:return g=[],r(a.arguments,function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var p=[],n=0;n":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<=b(c,e,f,g);return d?{value:c}:c}},"binary>=":function(a,b,d){return function(c,e,f,g){c= -a(c,e,f,g)>=b(c,e,f,g);return d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,k){e=a(e,f,g,k)?b(e,f,g,k):d(e,f,g,k);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:void 0,name:void 0,value:a}:a}},identifier:function(a,b,d){return function(c,e,f,g){c= -e&&a in e?e:c;d&&1!==d&&c&&null==c[a]&&(c[a]={});e=c?c[a]:void 0;return b?{context:c,name:a,value:e}:e}},computedMember:function(a,b,d,c){return function(e,f,g,k){var h=a(e,f,g,k),l,m;null!=h&&(l=b(e,f,g,k),l+="",c&&1!==c&&h&&!h[l]&&(h[l]={}),m=h[l]);return d?{context:h,name:l,value:m}:m}},nonComputedMember:function(a,b,d,c){return function(e,f,g,k){e=a(e,f,g,k);c&&1!==c&&e&&null==e[b]&&(e[b]={});f=null!=e?e[b]:void 0;return d?{context:e,name:b,value:f}:f}},inputs:function(a,b){return function(d, -c,e,f){return f?f[b]:a(d,c,e)}}};Nb.prototype={constructor:Nb,parse:function(a){a=this.getAst(a);var b=this.astCompiler.compile(a.ast),d=a.ast;b.literal=0===d.body.length||1===d.body.length&&(d.body[0].expression.type===q.Literal||d.body[0].expression.type===q.ArrayExpression||d.body[0].expression.type===q.ObjectExpression);b.constant=a.ast.constant;b.oneTime=a.oneTime;return b},getAst:function(a){var b=!1;a=a.trim();":"===a.charAt(0)&&":"===a.charAt(1)&&(b=!0,a=a.substring(2));return{ast:this.ast.ast(a), -oneTime:b}}};var Ea=F("$sce"),W={HTML:"html",CSS:"css",MEDIA_URL:"mediaUrl",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},Dc=/_([a-z])/g,Zg=F("$templateRequest"),$g=F("$timeout"),aa=z.document.createElement("a"),Qd=ga(z.location.href),Na;aa.href="http://[::1]";var ah="[::1]"===aa.hostname;Rd.$inject=["$document"];fd.$inject=["$provide"];var Yd=22,Xd=".",Fc="0";Sd.$inject=["$locale"];Ud.$inject=["$locale"];var lh={yyyy:ea("FullYear",4,0,!1,!0),yy:ea("FullYear",2,0,!0,!0),y:ea("FullYear",1,0,!1,!0), -MMMM:lb("Month"),MMM:lb("Month",!0),MM:ea("Month",2,1),M:ea("Month",1,1),LLLL:lb("Month",!1,!0),dd:ea("Date",2),d:ea("Date",1),HH:ea("Hours",2),H:ea("Hours",1),hh:ea("Hours",2,-12),h:ea("Hours",1,-12),mm:ea("Minutes",2),m:ea("Minutes",1),ss:ea("Seconds",2),s:ea("Seconds",1),sss:ea("Milliseconds",3),EEEE:lb("Day"),EEE:lb("Day",!0),a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){a=-1*d;return a=(0<=a?"+":"")+(Pb(Math[0=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},kh=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/,jh=/^-?\d+$/;Td.$inject=["$locale"];var eh=ia(K),fh=ia(vb);Vd.$inject=["$parse"];var Re=ia({restrict:"E",compile:function(a,b){if(!b.href&&!b.xlinkHref)return function(a,b){if("a"===b[0].nodeName.toLowerCase()){var e="[object SVGAnimatedString]"===la.call(b.prop("href"))?"xlink:href":"href"; -b.on("click",function(a){b.attr(e)||a.preventDefault()})}}}}),wb={};r(Hb,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if("multiple"!==a){var c=xa("ng-"+b),e=d;"checked"===a&&(e=function(a,b,e){e.ngModel!==e[c]&&d(a,b,e)});wb[c]=function(){return{restrict:"A",priority:100,link:e}}}});r(vd,function(a,b){wb[b]=function(){return{priority:100,link:function(a,c,e){if("ngPattern"===b&&"/"===e.ngPattern.charAt(0)&&(c=e.ngPattern.match(ke))){e.$set("ngPattern",new RegExp(c[1], -c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});r(["src","srcset","href"],function(a){var b=xa("ng-"+a);wb[b]=["$sce",function(d){return{priority:99,link:function(c,e,f){var g=a,k=a;"href"===a&&"[object SVGAnimatedString]"===la.call(e.prop("href"))&&(k="xlinkHref",f.$attr[k]="xlink:href",g=null);f.$set(b,d.getTrustedMediaUrl(f[b]));f.$observe(b,function(b){b?(f.$set(k,b),wa&&g&&e.prop(g,f[k])):"href"===a&&f.$set(k,null)})}}}]});var mb={$addControl:E,$getControls:ia([]),$$renameControl:function(a, -b){a.$name=b},$removeControl:E,$setValidity:E,$setDirty:E,$setPristine:E,$setSubmitted:E,$$setSubmitted:E};Qb.$inject=["$element","$attrs","$scope","$animate","$interpolate"];Qb.prototype={$rollbackViewValue:function(){r(this.$$controls,function(a){a.$rollbackViewValue()})},$commitViewValue:function(){r(this.$$controls,function(a){a.$commitViewValue()})},$addControl:function(a){Ja(a.$name,"input");this.$$controls.push(a);a.$name&&(this[a.$name]=a);a.$$parentForm=this},$getControls:function(){return ja(this.$$controls)}, -$$renameControl:function(a,b){var d=a.$name;this[d]===a&&delete this[d];this[b]=a;a.$name=b},$removeControl:function(a){a.$name&&this[a.$name]===a&&delete this[a.$name];r(this.$pending,function(b,d){this.$setValidity(d,null,a)},this);r(this.$error,function(b,d){this.$setValidity(d,null,a)},this);r(this.$$success,function(b,d){this.$setValidity(d,null,a)},this);cb(this.$$controls,a);a.$$parentForm=mb},$setDirty:function(){this.$$animate.removeClass(this.$$element,Za);this.$$animate.addClass(this.$$element, -Wb);this.$dirty=!0;this.$pristine=!1;this.$$parentForm.$setDirty()},$setPristine:function(){this.$$animate.setClass(this.$$element,Za,Wb+" ng-submitted");this.$dirty=!1;this.$pristine=!0;this.$submitted=!1;r(this.$$controls,function(a){a.$setPristine()})},$setUntouched:function(){r(this.$$controls,function(a){a.$setUntouched()})},$setSubmitted:function(){for(var a=this;a.$$parentForm&&a.$$parentForm!==mb;)a=a.$$parentForm;a.$$setSubmitted()},$$setSubmitted:function(){this.$$animate.addClass(this.$$element, -"ng-submitted");this.$submitted=!0;r(this.$$controls,function(a){a.$$setSubmitted&&a.$$setSubmitted()})}};ce({clazz:Qb,set:function(a,b,d){var c=a[b];c?-1===c.indexOf(d)&&c.push(d):a[b]=[d]},unset:function(a,b,d){var c=a[b];c&&(cb(c,d),0===c.length&&delete a[b])}});var oe=function(a){return["$timeout","$parse",function(b,d){function c(a){return""===a?d('this[""]').assign:d(a).assign||E}return{name:"form",restrict:a?"EAC":"E",require:["form","^^?form"],controller:Qb,compile:function(d,f){d.addClass(Za).addClass(nb); -var g=f.name?"name":a&&f.ngForm?"ngForm":!1;return{pre:function(a,d,e,f){var p=f[0];if(!("action"in e)){var n=function(b){a.$apply(function(){p.$commitViewValue();p.$setSubmitted()});b.preventDefault()};d[0].addEventListener("submit",n);d.on("$destroy",function(){b(function(){d[0].removeEventListener("submit",n)},0,!1)})}(f[1]||p.$$parentForm).$addControl(p);var s=g?c(p.$name):E;g&&(s(a,p),e.$observe(g,function(b){p.$name!==b&&(s(a,void 0),p.$$parentForm.$$renameControl(p,b),s=c(p.$name),s(a,p))})); -d.on("$destroy",function(){p.$$parentForm.$removeControl(p);s(a,void 0);S(p,mb)})}}}}}]},Se=oe(),df=oe(!0),mh=/^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,xh=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,yh=/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/, -nh=/^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,pe=/^(\d{4,})-(\d{2})-(\d{2})$/,qe=/^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Oc=/^(\d{4,})-W(\d\d)$/,re=/^(\d{4,})-(\d\d)$/,se=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,ee=T();r(["date","datetime-local","month","time","week"],function(a){ee[a]=!0});var te={text:function(a,b,d,c,e,f){Sa(a,b,d,c,e,f);Ic(c)},date:ob("date",pe,Rb(pe,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":ob("datetimelocal",qe,Rb(qe,"yyyy MM dd HH mm ss sss".split(" ")), -"yyyy-MM-ddTHH:mm:ss.sss"),time:ob("time",se,Rb(se,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:ob("week",Oc,function(a,b){if(ha(a))return a;if(C(a)){Oc.lastIndex=0;var d=Oc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g=0,k=0,h=Zd(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),k=b.getMilliseconds());return new Date(c,0,h.getDate()+e,d,f,g,k)}}return NaN},"yyyy-Www"),month:ob("month",re,Rb(re,["yyyy","MM"]),"yyyy-MM"),number:function(a,b,d,c,e,f,g,k){Jc(a,b,d,c,"number");fe(c);Sa(a, -b,d,c,e,f);var h;if(w(d.min)||d.ngMin){var l=d.min||k(d.ngMin)(a);h=na(l);c.$validators.min=function(a,b){return c.$isEmpty(b)||A(h)||b>=h};d.$observe("min",function(a){a!==l&&(h=na(a),l=a,c.$validate())})}if(w(d.max)||d.ngMax){var m=d.max||k(d.ngMax)(a),p=na(m);c.$validators.max=function(a,b){return c.$isEmpty(b)||A(p)||b<=p};d.$observe("max",function(a){a!==m&&(p=na(a),m=a,c.$validate())})}if(w(d.step)||d.ngStep){var n=d.step||k(d.ngStep)(a),s=na(n);c.$validators.step=function(a,b){return c.$isEmpty(b)|| -A(s)||ge(b,h||0,s)};d.$observe("step",function(a){a!==n&&(s=na(a),n=a,c.$validate())})}},url:function(a,b,d,c,e,f){Sa(a,b,d,c,e,f);Ic(c);c.$validators.url=function(a,b){var d=a||b;return c.$isEmpty(d)||xh.test(d)}},email:function(a,b,d,c,e,f){Sa(a,b,d,c,e,f);Ic(c);c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||yh.test(d)}},radio:function(a,b,d,c){var e=!d.ngTrim||"false"!==V(d.ngTrim);A(d.name)&&b.attr("name",++qb);b.on("change",function(a){var g;b[0].checked&&(g=d.value,e&&(g= -V(g)),c.$setViewValue(g,a&&a.type))});c.$render=function(){var a=d.value;e&&(a=V(a));b[0].checked=a===c.$viewValue};d.$observe("value",c.$render)},range:function(a,b,d,c,e,f){function g(a,c){b.attr(a,d[a]);var e=d[a];d.$observe(a,function(a){a!==e&&(e=a,c(a))})}function k(a){p=na(a);Y(c.$modelValue)||(m?(a=b.val(),p>a&&(a=p,b.val(a)),c.$setViewValue(a)):c.$validate())}function h(a){n=na(a);Y(c.$modelValue)||(m?(a=b.val(),n=p},g("min",k)); -e&&(n=na(d.max),c.$validators.max=m?function(){return!0}:function(a,b){return c.$isEmpty(b)||A(n)||b<=n},g("max",h));f&&(s=na(d.step),c.$validators.step=m?function(){return!r.stepMismatch}:function(a,b){return c.$isEmpty(b)||A(s)||ge(b,p||0,s)},g("step",l))},checkbox:function(a,b,d,c,e,f,g,k){var h=he(k,a,"ngTrueValue",d.ngTrueValue,!0),l=he(k,a,"ngFalseValue",d.ngFalseValue,!1);b.on("change",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty= -function(a){return!1===a};c.$formatters.push(function(a){return va(a,h)});c.$parsers.push(function(a){return a?h:l})},hidden:E,button:E,submit:E,reset:E,file:E},$c=["$browser","$sniffer","$filter","$parse",function(a,b,d,c){return{restrict:"E",require:["?ngModel"],link:{pre:function(e,f,g,k){k[0]&&(te[K(g.type)]||te.text)(e,f,g,k[0],b,a,d,c)}}}}],Af=function(){var a={configurable:!0,enumerable:!1,get:function(){return this.getAttribute("value")||""},set:function(a){this.setAttribute("value",a)}}; -return{restrict:"E",priority:200,compile:function(b,d){if("hidden"===K(d.type))return{pre:function(b,d,f,g){b=d[0];b.parentNode&&b.parentNode.insertBefore(b,b.nextSibling);Object.defineProperty&&Object.defineProperty(b,"value",a)}}}}},zh=/^(true|false|\d+)$/,xf=function(){function a(a,d,c){var e=w(c)?c:9===wa?"":null;a.prop("value",e);d.$set("value",c)}return{restrict:"A",priority:100,compile:function(b,d){return zh.test(d.ngValue)?function(b,d,f){b=b.$eval(f.ngValue);a(d,f,b)}:function(b,d,f){b.$watch(f.ngValue, -function(b){a(d,f,b)})}}}},We=["$compile",function(a){return{restrict:"AC",compile:function(b){a.$$addBindingClass(b);return function(b,c,e){a.$$addBindingInfo(c,e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=jc(a)})}}}}],Ye=["$interpolate","$compile",function(a,b){return{compile:function(d){b.$$addBindingClass(d);return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe("ngBindTemplate",function(a){d.textContent=A(a)?"":a})}}}}], -Xe=["$sce","$parse","$compile",function(a,b,d){return{restrict:"A",compile:function(c,e){var f=b(e.ngBindHtml),g=b(e.ngBindHtml,function(b){return a.valueOf(b)});d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml);b.$watch(g,function(){var d=f(b);c.html(a.getTrustedHtml(d)||"")})}}}}],wf=ia({restrict:"A",require:"ngModel",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),Ze=Lc("",!0),af=Lc("Odd",0),$e=Lc("Even",1),bf=Ra({compile:function(a, -b){b.$set("ngCloak",void 0);a.removeClass("ng-cloak")}}),cf=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],ed={},Ah={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var b=xa("ng-"+a);ed[b]=["$parse","$rootScope","$exceptionHandler",function(d,c,e){return sd(d,c,e,b,a,Ah[a])}]});var ff=["$animate","$compile",function(a,b){return{multiElement:!0, -transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(d,c,e,f,g){var k,h,l;d.$watch(e.ngIf,function(d){d?h||g(function(d,f){h=f;d[d.length++]=b.$$createComment("end ngIf",e.ngIf);k={clone:d};a.enter(d,c.parent(),c)}):(l&&(l.remove(),l=null),h&&(h.$destroy(),h=null),k&&(l=ub(k.clone),a.leave(l).done(function(a){!1!==a&&(l=null)}),k=null))})}}}],gf=["$templateRequest","$anchorScroll","$animate",function(a,b,d){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element", -controller:ca.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||"",k=e.autoscroll;return function(c,e,m,p,n){var r=0,q,t,x,v=function(){t&&(t.remove(),t=null);q&&(q.$destroy(),q=null);x&&(d.leave(x).done(function(a){!1!==a&&(t=null)}),t=x,x=null)};c.$watch(f,function(f){var m=function(a){!1===a||!w(k)||k&&!c.$eval(k)||b()},t=++r;f?(a(f,!0).then(function(a){if(!c.$$destroyed&&t===r){var b=c.$new();p.template=a;a=n(b,function(a){v();d.enter(a,null,e).done(m)});q=b;x=a;q.$emit("$includeContentLoaded", -f);c.$eval(g)}},function(){c.$$destroyed||t!==r||(v(),c.$emit("$includeContentError",f))}),c.$emit("$includeContentRequested",f)):(v(),p.template=null)})}}}}],zf=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(b,d,c,e){la.call(d[0]).match(/SVG/)?(d.empty(),a(gd(e.template,z.document).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],hf=Ra({priority:450,compile:function(){return{pre:function(a, -b,d){a.$eval(d.ngInit)}}}}),vf=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,b,d,c){var e=d.ngList||", ",f="false"!==d.ngTrim,g=f?V(e):e;c.$parsers.push(function(a){if(!A(a)){var b=[];a&&r(a.split(g),function(a){a&&b.push(f?V(a):a)});return b}});c.$formatters.push(function(a){if(H(a))return a.join(e)});c.$isEmpty=function(a){return!a||!a.length}}}},nb="ng-valid",be="ng-invalid",Za="ng-pristine",Wb="ng-dirty",pb=F("ngModel");Sb.$inject="$scope $exceptionHandler $attrs $element $parse $animate $timeout $q $interpolate".split(" "); -Sb.prototype={$$initGetterSetters:function(){if(this.$options.getOption("getterSetter")){var a=this.$$parse(this.$$attr.ngModel+"()"),b=this.$$parse(this.$$attr.ngModel+"($$$p)");this.$$ngModelGet=function(b){var c=this.$$parsedNgModel(b);B(c)&&(c=a(b));return c};this.$$ngModelSet=function(a,c){B(this.$$parsedNgModel(a))?b(a,{$$$p:c}):this.$$parsedNgModelAssign(a,c)}}else if(!this.$$parsedNgModel.assign)throw pb("nonassign",this.$$attr.ngModel,Aa(this.$$element));},$render:E,$isEmpty:function(a){return A(a)|| -""===a||null===a||a!==a},$$updateEmptyClasses:function(a){this.$isEmpty(a)?(this.$$animate.removeClass(this.$$element,"ng-not-empty"),this.$$animate.addClass(this.$$element,"ng-empty")):(this.$$animate.removeClass(this.$$element,"ng-empty"),this.$$animate.addClass(this.$$element,"ng-not-empty"))},$setPristine:function(){this.$dirty=!1;this.$pristine=!0;this.$$animate.removeClass(this.$$element,Wb);this.$$animate.addClass(this.$$element,Za)},$setDirty:function(){this.$dirty=!0;this.$pristine=!1;this.$$animate.removeClass(this.$$element, -Za);this.$$animate.addClass(this.$$element,Wb);this.$$parentForm.$setDirty()},$setUntouched:function(){this.$touched=!1;this.$untouched=!0;this.$$animate.setClass(this.$$element,"ng-untouched","ng-touched")},$setTouched:function(){this.$touched=!0;this.$untouched=!1;this.$$animate.setClass(this.$$element,"ng-touched","ng-untouched")},$rollbackViewValue:function(){this.$$timeout.cancel(this.$$pendingDebounce);this.$viewValue=this.$$lastCommittedViewValue;this.$render()},$validate:function(){if(!Y(this.$modelValue)){var a= -this.$$lastCommittedViewValue,b=this.$$rawModelValue,d=this.$valid,c=this.$modelValue,e=this.$options.getOption("allowInvalid"),f=this;this.$$runValidators(b,a,function(a){e||d===a||(f.$modelValue=a?b:void 0,f.$modelValue!==c&&f.$$writeModelToScope())})}},$$runValidators:function(a,b,d){function c(){var c=!0;r(h.$validators,function(d,e){var g=Boolean(d(a,b));c=c&&g;f(e,g)});return c?!0:(r(h.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;r(h.$asyncValidators,function(e, -g){var h=e(a,b);if(!h||!B(h.then))throw pb("nopromise",h);f(g,void 0);c.push(h.then(function(){f(g,!0)},function(){d=!1;f(g,!1)}))});c.length?h.$$q.all(c).then(function(){g(d)},E):g(!0)}function f(a,b){k===h.$$currentValidationRunId&&h.$setValidity(a,b)}function g(a){k===h.$$currentValidationRunId&&d(a)}this.$$currentValidationRunId++;var k=this.$$currentValidationRunId,h=this;(function(){var a=h.$$parserName;if(A(h.$$parserValid))f(a,null);else return h.$$parserValid||(r(h.$validators,function(a, -b){f(b,null)}),r(h.$asyncValidators,function(a,b){f(b,null)})),f(a,h.$$parserValid),h.$$parserValid;return!0})()?c()?e():g(!1):g(!1)},$commitViewValue:function(){var a=this.$viewValue;this.$$timeout.cancel(this.$$pendingDebounce);if(this.$$lastCommittedViewValue!==a||""===a&&this.$$hasNativeValidators)this.$$updateEmptyClasses(a),this.$$lastCommittedViewValue=a,this.$pristine&&this.$setDirty(),this.$$parseAndValidate()},$$parseAndValidate:function(){var a=this.$$lastCommittedViewValue,b=this;this.$$parserValid= -A(a)?void 0:!0;this.$setValidity(this.$$parserName,null);this.$$parserName="parse";if(this.$$parserValid)for(var d=0;dg||e.$isEmpty(b)||b.length<=g}}}}}],cd= -["$parse",function(a){return{restrict:"A",require:"?ngModel",link:function(b,d,c,e){if(e){var f=c.minlength||a(c.ngMinlength)(b),g=Ub(f)||-1;c.$observe("minlength",function(a){f!==a&&(g=Ub(a)||-1,f=a,e.$validate())});e.$validators.minlength=function(a,b){return e.$isEmpty(b)||b.length>=g}}}}}];z.angular.bootstrap?z.console&&console.log("WARNING: Tried to load AngularJS more than once."):(Je(),Oe(ca),ca.module("ngLocale",[],["$provide",function(a){function b(a){a+="";var b=a.indexOf(".");return-1== -b?0:a.length-b-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "), -WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(a, -c){var e=a|0,f=c;void 0===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?"one":"other"}})}]),x(function(){Ee(z.document,Wc)}))})(window);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(window.angular.element("'];r.cellXfs.forEach(function(e,r){var a=[];a.push(lr("NumberFormat",null,{"ss:Format":He(D._table[e.numFmtId])}));var n={"ss:ID":"s"+(21+r)};t.push(lr("Style",a.join(""),n))});return lr("Styles",t.join(""))}function dp(e){return lr("NamedRange",null,{"ss:Name":e.Name,"ss:RefersTo":"="+sc(e.Ref,{r:0,c:0})})}function vp(e){if(!((e||{}).Workbook||{}).Names)return"";var r=e.Workbook.Names;var t=[];for(var a=0;a");if(e["!margins"].header)n.push(lr("Header",null,{"x:Margin":e["!margins"].header}));if(e["!margins"].footer)n.push(lr("Footer",null,{"x:Margin":e["!margins"].footer}));n.push(lr("PageMargins",null,{"x:Bottom":e["!margins"].bottom||"0.75","x:Left":e["!margins"].left||"0.7","x:Right":e["!margins"].right||"0.7","x:Top":e["!margins"].top||"0.75"}));n.push("")}if(a&&a.Workbook&&a.Workbook.Sheets&&a.Workbook.Sheets[t]){if(a.Workbook.Sheets[t].Hidden)n.push(lr("Visible",a.Workbook.Sheets[t].Hidden==1?"SheetHidden":"SheetVeryHidden",{}));else{for(var i=0;i")}}if(((((a||{}).Workbook||{}).Views||[])[0]||{}).RTL)n.push("");if(e["!protect"]){n.push(fr("ProtectContents","True"));if(e["!protect"].objects)n.push(fr("ProtectObjects","True"));if(e["!protect"].scenarios)n.push(fr("ProtectScenarios","True"));if(e["!protect"].selectLockedCells!=null&&!e["!protect"].selectLockedCells)n.push(fr("EnableSelection","NoSelection"));else if(e["!protect"].selectUnlockedCells!=null&&!e["!protect"].selectUnlockedCells)n.push(fr("EnableSelection","UnlockedCells"));[["formatCells","AllowFormatCells"],["formatColumns","AllowSizeCols"],["formatRows","AllowSizeRows"],["insertColumns","AllowInsertCols"],["insertRows","AllowInsertRows"],["insertHyperlinks","AllowInsertHyperlinks"],["deleteColumns","AllowDeleteCols"],["deleteRows","AllowDeleteRows"],["sort","AllowSort"],["autoFilter","AllowFilter"],["pivotTables","AllowUsePivotTables"]].forEach(function(r){if(e["!protect"][r[0]])n.push("<"+r[1]+"/>")})}if(n.length==0)return"";return lr("WorksheetOptions",n.join(""),{xmlns:dr.x})}function bp(e){return e.map(function(e){var r=Ke(e.t||"");var t=lr("ss:Data",r,{xmlns:"http://www.w3.org/TR/REC-html40"});return lr("Comment",t,{"ss:Author":e.a})}).join("")}function gp(e,r,t,a,n,i,s){if(!e||e.v==undefined&&e.f==undefined)return"";var f={};if(e.f)f["ss:Formula"]="="+He(sc(e.f,s));if(e.F&&e.F.slice(0,r.length)==r){var o=mt(e.F.slice(r.length+1));f["ss:ArrayRange"]="RC:R"+(o.r==s.r?"":"["+(o.r-s.r)+"]")+"C"+(o.c==s.c?"":"["+(o.c-s.c)+"]")}if(e.l&&e.l.Target){f["ss:HRef"]=He(e.l.Target);if(e.l.Tooltip)f["x:HRefScreenTip"]=He(e.l.Tooltip)}if(t["!merges"]){var l=t["!merges"];for(var c=0;c!=l.length;++c){if(l[c].s.c!=s.c||l[c].s.r!=s.r)continue;if(l[c].e.c>l[c].s.c)f["ss:MergeAcross"]=l[c].e.c-l[c].s.c;if(l[c].e.r>l[c].s.r)f["ss:MergeDown"]=l[c].e.r-l[c].s.r}}var u="",h="";switch(e.t){case"z":if(!a.sheetStubs)return"";break;case"n":u="Number";h=String(e.v);break;case"b":u="Boolean";h=e.v?"1":"0";break;case"e":u="Error";h=xa[e.v];break;case"d":u="DateTime";h=new Date(e.v).toISOString();if(e.z==null)e.z=e.z||D._table[14];break;case"s":u="String";h=Ge(e.v||"");break;}var d=vh(a.cellXfs,e,a);f["ss:StyleID"]="s"+(21+d);f["ss:Index"]=s.c+1;var v=e.v!=null?h:"";var p=e.t=="z"?"":''+v+"";if((e.c||[]).length>0)p+=bp(e.c);return lr("Cell",p,f)}function wp(e,r){var t='"}function kp(e,r,t,a){if(!e["!ref"])return"";var n=kt(e["!ref"]);var i=e["!merges"]||[],s=0;var f=[];if(e["!cols"])e["!cols"].forEach(function(e,r){So(e);var t=!!e.width;var a=hh(r,e);var n={"ss:Index":r+1};if(t)n["ss:Width"]=bo(a.width);if(e.hidden)n["ss:Hidden"]="1";f.push(lr("Column",null,n))});var o=Array.isArray(e);for(var l=n.s.r;l<=n.e.r;++l){var c=[wp(l,(e["!rows"]||[])[l])];for(var u=n.s.c;u<=n.e.c;++u){var h=false;for(s=0;s!=i.length;++s){if(i[s].s.c>u)continue;if(i[s].s.r>l)continue;if(i[s].e.c");if(c.length>2)f.push(c.join(""))}return f.join("")}function Ep(e,r,t){var a=[];var n=t.SheetNames[e];var i=t.Sheets[n];var s=i?pp(i,r,e,t):"";if(s.length>0)a.push(""+s+"");s=i?kp(i,r,e,t):"";if(s.length>0)a.push(""+s+"
");a.push(mp(i,r,e,t));return a.join("")}function Sp(e,r){if(!r)r={};if(!e.SSF)e.SSF=D.get_table();if(e.SSF){F(D);D.load_table(e.SSF);r.revssf=J(e.SSF);r.revssf[e.SSF[65535]]=0;r.ssf=e.SSF;r.cellXfs=[];vh(r.cellXfs,{},{revssf:{General:0}})}var t=[];t.push(cp(e,r));t.push(up(e,r));t.push("");t.push("");for(var a=0;a40)return r;t.l-=4;r.Reserved1=t._R(0,"lpstr-ansi");if(t.length-t.l<=4)return r;a=t._R(4);if(a!==1907505652)return r;r.UnicodeClipboardFormat=na(t);a=t._R(4);if(a==0||a>40)return r;t.l-=4;r.Reserved2=t._R(0,"lpwstr")}function Cp(e,r,t,a){var n=t;var i=[];var s=r.slice(r.l,r.l+n);if(a&&a.enc&&a.enc.insitu)switch(e.n){case"BOF":;case"FilePass":;case"FileLock":;case"InterfaceHdr":;case"RRDInfo":;case"RRDHead":;case"UsrExcl":break;default:if(s.length===0)break;a.enc.insitu(s);}i.push(s);r.l+=n;var f=Pp[Mr(r,r.l)];var o=0;while(f!=null&&f.n.slice(0,8)==="Continue"){n=Mr(r,r.l+2);o=r.l+4;if(f.n=="ContinueFrt")o+=4;else if(f.n.slice(0,11)=="ContinueFrt")o+=12;i.push(r.slice(o,r.l+4+n));r.l+=4+n;f=Pp[Mr(r,r.l)]}var l=I(i);Yr(l,0);var c=0;l.lens=[];for(var u=0;u1)return;if(t.sheetRows&&e.r>=t.sheetRows)_=false;if(!_)return;if(t.cellStyles&&r.XF&&r.XF.data)A(e,r,t);delete r.ixfe;delete r.XF;h=e;d=bt(e);if(!s||!s.s||!s.e)s={s:{r:0,c:0},e:{r:0,c:0}};if(e.rs.e.r)s.e.r=e.r+1;if(e.c+1>s.e.c)s.e.c=e.c+1;if(t.cellFormula&&r.f){for(var a=0;ae.c||k[a][0].s.r>e.r)continue;if(k[a][0].e.c>8)!==J)throw new Error("rt mismatch: "+ee+"!="+J);if(q.r==12){e.l+=10;Q-=10}}var re={};if(q.n==="EOF")re=q.f(e,Q,R);else re=Cp(q,e,Q,R);var te=q.n;if(V==0&&te!="BOF")continue;switch(te){case"Date1904":t.opts.Date1904=T.WBProps.date1904=re;break;case"WriteProtect":t.opts.WriteProtect=true;break;case"FilePass":if(!R.enc)e.l=0;R.enc=re;if(!r.password)throw new Error("File is password-protected");if(re.valid==null)throw new Error("Encryption scheme unsupported");if(!re.valid)throw new Error("Password is incorrect");break;case"WriteAccess":R.lastuser=re;break;case"FileSharing":break;case"CodePage":var ae=Number(re);switch(ae){case 21010:ae=1200;break;case 32768:ae=1e4;break;case 32769:ae=1252;break;}o(R.codepage=ae);Y=true;break;case"RRTabId":R.rrtabid=re;break;case"WinProtect":R.winlocked=re;break;case"Template":break;case"BookBool":break;case"UsesELFs":break;case"MTRSettings":break;case"RefreshAll":;case"CalcCount":;case"CalcDelta":;case"CalcIter":;case"CalcMode":;case"CalcPrecision":;case"CalcSaveRecalc":t.opts[te]=re;break;case"CalcRefMode":R.CalcRefMode=re;break;case"Uncalced":break;case"ForceFullCalculation":t.opts.FullCalc=re;break;case"WsBool":if(re.fDialog)n["!type"]="dialog";break;case"XF":C.push(re);break;case"ExtSST":break;case"BookExt":break;case"RichTextStream":break;case"BkHim":break;case"SupBook":H.push([re]);H[H.length-1].XTI=[];break;case"ExternName":H[H.length-1].push(re);break;case"Index":break;case"Lbl":$={Name:re.Name,Ref:zu(re.rgce,s,null,H,R)};if(re.itab>0)$.Sheet=re.itab-1;H.names.push($);if(!H[0]){H[0]=[];H[0].XTI=[]}H[H.length-1].push(re);if(re.Name=="_xlnm._FilterDatabase"&&re.itab>0)if(re.rgce&&re.rgce[0]&&re.rgce[0][0]&&re.rgce[0][0][0]=="PtgArea3d")j[re.itab-1]={ref:wt(re.rgce[0][0][1][2])};break;case"ExternCount":R.ExternCount=re;break;case"ExternSheet":if(H.length==0){H[0]=[];H[0].XTI=[]}H[H.length-1].XTI=H[H.length-1].XTI.concat(re);H.XTI=H.XTI.concat(re);break;case"NameCmt":if(R.biff<8)break;if($!=null)$.Comment=re[1];break;case"Protect":n["!protect"]=re;break;case"Password":if(re!==0&&R.WTF)console.error("Password verifier: "+re);break;case"Prot4Rev":;case"Prot4RevPass":break;case"BoundSheet8":{i[re.pos]=re;R.snames.push(re.name)}break;case"EOF":{if(--V)break;if(s.e){if(s.e.r>0&&s.e.c>0){s.e.r--;s.e.c--;n["!ref"]=wt(s);if(r.sheetRows&&r.sheetRows<=s.e.r){var ne=s.e.r;s.e.r=r.sheetRows-1;n["!fullref"]=n["!ref"];n["!ref"]=wt(s);s.e.r=ne}s.e.r++;s.e.c++}if(F.length>0)n["!merges"]=F;if(P.length>0)n["!objects"]=P;if(N.length>0)n["!cols"]=N;if(L.length>0)n["!rows"]=L;T.Sheets.push(y)}if(c==="")u=n;else a[c]=n;n=r.dense?[]:{}}break;case"BOF":{if(R.biff===8)R.biff={9:2,521:3,1033:4}[J]||{512:2,768:3,1024:4,1280:5,1536:8,2:2,7:2}[re.BIFFVer]||8;if(R.biff==8&&re.BIFFVer==0&&re.dt==16)R.biff=2;if(V++)break;_=true;n=r.dense?[]:{};if(R.biff<8&&!Y){Y=true;o(R.codepage=r.codepage||1252)}if(R.biff<5){if(c==="")c="Sheet1";s={s:{r:0,c:0},e:{r:0,c:0}};var ie={pos:e.l-Q,name:c};i[ie.pos]=ie;R.snames.push(c)}else c=(i[Z]||{name:""}).name;if(re.dt==32)n["!type"]="chart";if(re.dt==64)n["!type"]="macro";F=[];P=[];R.arrayf=k=[];N=[];L=[];M=U=0;z=false;y={Hidden:(i[Z]||{hs:0}).hs,name:c}}break;case"Number":;case"BIFF2NUM":;case"BIFF2INT":{if(n["!type"]=="chart")if(r.dense?(n[re.r]||[])[re.c]:n[bt({c:re.c,r:re.r})])++re.c;E={ixfe:re.ixfe,XF:C[re.ixfe]||{},v:re.val,t:"n"};if(X>0)E.z=G[E.ixfe>>8&31];Bp(E,r,t.opts.Date1904);I({c:re.c,r:re.r},E,r)}break;case"BoolErr":{E={ixfe:re.ixfe,XF:C[re.ixfe],v:re.val,t:re.t};if(X>0)E.z=G[E.ixfe>>8&31];Bp(E,r,t.opts.Date1904);I({c:re.c,r:re.r},E,r)}break;case"RK":{E={ixfe:re.ixfe,XF:C[re.ixfe],v:re.rknum,t:"n"};if(X>0)E.z=G[E.ixfe>>8&31];Bp(E,r,t.opts.Date1904);I({c:re.c,r:re.r},E,r)}break;case"MulRk":{for(var se=re.c;se<=re.C;++se){var fe=re.rkrec[se-re.c][0];E={ixfe:fe,XF:C[fe],v:re.rkrec[se-re.c][1],t:"n"};if(X>0)E.z=G[E.ixfe>>8&31];Bp(E,r,t.opts.Date1904);I({c:se,r:re.r},E,r)}}break;case"Formula":{if(re.val=="String"){f=re;break}E=Tp(re.val,re.cell.ixfe,re.tt);E.XF=C[E.ixfe];if(r.cellFormula){var oe=re.formula;if(oe&&oe[0]&&oe[0][0]&&oe[0][0][0]=="PtgExp"){var le=oe[0][0][1][0],ce=oe[0][0][1][1];var ue=bt({r:le,c:ce});if(w[ue])E.f=""+zu(re.formula,s,re.cell,H,R);else E.F=((r.dense?(n[le]||[])[ce]:n[ue])||{}).F}else E.f=""+zu(re.formula,s,re.cell,H,R)}if(X>0)E.z=G[E.ixfe>>8&31];Bp(E,r,t.opts.Date1904);I(re.cell,E,r);f=re}break;case"String":{if(f){f.val=re;E=Tp(re,f.cell.ixfe,"s");E.XF=C[E.ixfe];if(r.cellFormula){E.f=""+zu(f.formula,s,f.cell,H,R)}if(X>0)E.z=G[E.ixfe>>8&31];Bp(E,r,t.opts.Date1904);I(f.cell,E,r);f=null}else throw new Error("String record expects Formula")}break;case"Array":{k.push(re);var he=bt(re[0].s);v=r.dense?(n[re[0].s.r]||[])[re[0].s.c]:n[he];if(r.cellFormula&&v){if(!f)break;if(!he||!v)break;v.f=""+zu(re[1],s,re[0],H,R);v.F=wt(re[0])}}break;case"ShrFmla":{if(!_)break;if(!r.cellFormula)break;if(d){if(!f)break;w[bt(f.cell)]=re[0];v=r.dense?(n[f.cell.r]||[])[f.cell.c]:n[bt(f.cell)];(v||{}).f=""+zu(re[0],s,h,H,R)}}break;case"LabelSst":E=Tp(l[re.isst].t,re.ixfe,"s");if(l[re.isst].h)E.h=l[re.isst].h;E.XF=C[E.ixfe];if(X>0)E.z=G[E.ixfe>>8&31];Bp(E,r,t.opts.Date1904);I({c:re.c,r:re.r},E,r);break;case"Blank":if(r.sheetStubs){E={ixfe:re.ixfe,XF:C[re.ixfe],t:"z"};if(X>0)E.z=G[E.ixfe>>8&31];Bp(E,r,t.opts.Date1904);I({c:re.c,r:re.r},E,r)}break;case"MulBlank":if(r.sheetStubs){for(var de=re.c;de<=re.C;++de){var ve=re.ixfe[de-re.c];E={ixfe:ve,XF:C[ve],t:"z"};if(X>0)E.z=G[E.ixfe>>8&31];Bp(E,r,t.opts.Date1904);I({c:de,r:re.r},E,r)}}break;case"RString":;case"Label":;case"BIFF2STR":E=Tp(re.val,re.ixfe,"s");E.XF=C[E.ixfe];if(X>0)E.z=G[E.ixfe>>8&31];Bp(E,r,t.opts.Date1904);I({c:re.c,r:re.r},E,r);break;case"Dimensions":{if(V===1)s=re}break;case"SST":{l=re}break;case"Format":{if(R.biff==4){G[X++]=re[1];for(var pe=0;pe=163)D.load(re[1],X+163)}else D.load(re[1],re[0])}break;case"BIFF2FORMAT":{G[X++]=re;for(var me=0;me=163)D.load(re,X+163)}break;case"MergeCells":F=F.concat(re);break;case"Obj":P[re.cmo[0]]=R.lastobj=re;break;case"TxO":R.lastobj.TxO=re;break;case"ImData":R.lastobj.ImData=re;break;case"HLink":{for(g=re[0].s.r;g<=re[0].e.r;++g)for(b=re[0].s.c;b<=re[0].e.c;++b){v=r.dense?(n[g]||[])[b]:n[bt({c:b,r:g})];if(v)v.l=re[1]}}break;case"HLinkTooltip":{for(g=re[0].s.r;g<=re[0].e.r;++g)for(b=re[0].s.c;b<=re[0].e.c;++b){v=r.dense?(n[g]||[])[b]:n[bt({c:b,r:g})];if(v&&v.l)v.l.Tooltip=re[1]}}break;case"Note":{if(R.biff<=5&&R.biff>=2)break;v=r.dense?(n[re[0].r]||[])[re[0].c]:n[bt(re[0])];var be=P[re[2]];if(!v){if(r.dense){if(!n[re[0].r])n[re[0].r]=[];v=n[re[0].r][re[0].c]={t:"z"}}else{v=n[bt(re[0])]={t:"z"}}s.e.r=Math.max(s.e.r,re[0].r);s.s.r=Math.min(s.s.r,re[0].r);s.e.c=Math.max(s.e.c,re[0].c);s.s.c=Math.min(s.s.c,re[0].c)}if(!v.c)v.c=[];p={a:re[1],t:be.TxO.t};v.c.push(p)}break;default:switch(q.n){case"ClrtClient":break;case"XFExt":Rl(C[re.ixfe],re.ext);break;case"DefColWidth":M=re;break;case"DefaultRowHeight":U=re[1];break;case"ColInfo":{if(!R.cellStyles)break;while(re.e>=re.s){N[re.e--]={width:re.w/256};if(!z){z=true;Eo(re.w/256)}So(N[re.e+1])}}break;case"Row":{var ge={};if(re.level!=null){L[re.r]=ge;ge.level=re.level}if(re.hidden){L[re.r]=ge;ge.hidden=true}if(re.hpt){L[re.r]=ge;ge.hpt=re.hpt;ge.hpx=To(re.hpt)}}break;case"LeftMargin":;case"RightMargin":;case"TopMargin":;case"BottomMargin":if(!n["!margins"])dh(n["!margins"]={});n["!margins"][te.slice(0,-6).toLowerCase()]=re;break;case"Setup":if(!n["!margins"])dh(n["!margins"]={});n["!margins"].header=re.header;n["!margins"].footer=re.footer;break;case"Window2":if(re.RTL)T.Views[0].RTL=true;break;case"Header":break;case"Footer":break;case"HCenter":break;case"VCenter":break;case"Pls":break;case"GCW":break;case"LHRecord":break;case"DBCell":break;case"EntExU2":break;case"SxView":break;case"Sxvd":break;case"SXVI":break;case"SXVDEx":break;case"SxIvd":break;case"SXString":break;case"Sync":break;case"Addin":break;case"SXDI":break;case"SXLI":break;case"SXEx":break;case"QsiSXTag":break;case"Selection":break;case"Feat":break;case"FeatHdr":;case"FeatHdr11":break;case"Feature11":;case"Feature12":;case"List12":break;case"Country":S=re;break;case"RecalcId":break;case"DxGCol":break;case"Fbi":;case"Fbi2":;case"GelFrame":break;case"Font":break;case"XFCRC":break;case"Style":break;case"StyleExt":break;case"Palette":B=re;break;case"Theme":O=re;break;case"ScenarioProtect":break;case"ObjProtect":break;case"CondFmt12":break;case"Table":break;case"TableStyles":break;case"TableStyle":break;case"TableStyleElement":break;case"SXStreamID":break;case"SXVS":break;case"DConRef":break;case"SXAddl":break;case"DConBin":break;case"DConName":break;case"SXPI":break;case"SxFormat":break;case"SxSelect":break;case"SxRule":break;case"SxFilt":break;case"SxItm":break;case"SxDXF":break;case"ScenMan":break;case"DCon":break;case"CellWatch":break;case"PrintRowCol":break;case"PrintGrid":break;case"PrintSize":break;case"XCT":break;case"CRN":break;case"Scl":{}break;case"SheetExt":{}break;case"SheetExtOptional":{}break;case"ObNoMacros":{}break;case"ObProj":{}break;case"CodeName":{if(!c)T.WBProps.CodeName=re||"ThisWorkbook";else y.CodeName=re||y.name}break;case"GUIDTypeLib":{}break;case"WOpt":break;case"PhoneticInfo":break;case"OleObjectSize":break;case"DXF":;case"DXFN":;case"DXFN12":;case"DXFN12List":;case"DXFN12NoCB":break;case"Dv":;case"DVal":break;case"BRAI":;case"Series":;case"SeriesText":break;case"DConn":break;case"DbOrParamQry":break;case"DBQueryExt":break;case"OleDbConn":break;case"ExtString":break;case"IFmtRecord":break;case"CondFmt":;case"CF":;case"CF12":;case"CFEx":break;case"Excel9File":break;case"Units":break;case"InterfaceHdr":;case"Mms":;case"InterfaceEnd":;case"DSF":break;case"BuiltInFnGroupCount":break;case"Window1":;case"HideObj":;case"GridSet":;case"Guts":;case"UserBView":;case"UserSViewBegin":;case"UserSViewEnd":break;case"Pane":break;default:switch(q.n){case"Dat":;case"Begin":;case"End":;case"StartBlock":;case"EndBlock":;case"Frame":;case"Area":;case"Axis":;case"AxisLine":;case"Tick":break;case"AxesUsed":;case"CrtLayout12":;case"CrtLayout12A":;case"CrtLink":;case"CrtLine":;case"CrtMlFrt":;case"CrtMlFrtContinue":break;case"LineFormat":;case"AreaFormat":;case"Chart":;case"Chart3d":;case"Chart3DBarShape":;case"ChartFormat":;case"ChartFrtInfo":break;case"PlotArea":;case"PlotGrowth":break;case"SeriesList":;case"SerParent":;case"SerAuxTrend":break;case"DataFormat":;case"SerToCrt":;case"FontX":break;case"CatSerRange":;case"AxcExt":;case"SerFmt":break;case"ShtProps":break;case"DefaultText":;case"Text":;case"CatLab":break;case"DataLabExtContents":break;case"Legend":;case"LegendException":break;case"Pie":;case"Scatter":break;case"PieFormat":;case"MarkerFormat":break;case"StartObject":;case"EndObject":break;case"AlRuns":;case"ObjectLink":break;case"SIIndex":break;case"AttachedLabel":;case"YMult":break;case"Line":;case"Bar":break;case"Surf":break;case"AxisParent":break;case"Pos":break;case"ValueRange":break;case"SXViewEx9":break;case"SXViewLink":break;case"PivotChartBits":break;case"SBaseRef":break;case"TextPropsStream":break;case"LnExt":break;case"MkrExt":break;case"CrtCoopt":break;case"Qsi":;case"Qsif":;case"Qsir":;case"QsiSXTag":break;case"TxtQry":break;case"FilterMode":break;case"AutoFilter":;case"AutoFilterInfo":break;case"AutoFilter12":break;case"DropDownObjIds":break;case"Sort":break;case"SortData":break;case"ShapePropsStream":break;case"MsoDrawing":;case"MsoDrawingGroup":;case"MsoDrawingSelection":break;case"WebPub":;case"AutoWebPub":break;case"HeaderFooter":;case"HFPicture":;case"PLV":;case"HorizontalPageBreaks":;case"VerticalPageBreaks":break;case"Backup":;case"CompressPictures":;case"Compat12":break;case"Continue":;case"ContinueFrt12":break;case"FrtFontList":;case"FrtWrapper":break;default:switch(q.n){case"TabIdConf":;case"Radar":;case"RadarArea":;case"DropBar":;case"Intl":;case"CoordList":;case"SerAuxErrBar":break;case"BIFF2FONTCLR":;case"BIFF2FMTCNT":;case"BIFF2FONTXTRA":break;case"BIFF2XF":;case"BIFF3XF":;case"BIFF4XF":break;case"BIFF4FMTCNT":;case"BIFF2ROW":;case"BIFF2WINDOW2":break;case"SCENARIO":;case"DConBin":;case"PicF":;case"DataLabExt":;case"Lel":;case"BopPop":;case"BopPopCustom":;case"RealTimeData":;case"Name":break;case"LHNGraph":;case"FnGroupName":;case"AddMenu":;case"LPr":break;case"ListObj":;case"ListField":break;case"RRSort":break;case"BigName":break;case"ToolbarHdr":;case"ToolbarEnd":break;case"DDEObjName":break;case"FRTArchId$":break;default:if(r.WTF)throw"Unrecognized Record "+q.n;};};};}}else e.l+=Q}t.SheetNames=K(i).sort(function(e,r){return Number(e)-Number(r)}).map(function(e){return i[e].name});if(!r.bookSheets)t.Sheets=a;if(t.Sheets)j.forEach(function(e,r){t.Sheets[t.SheetNames[r]]["!autofilter"]=e});t.Preamble=u;t.Strings=l;t.SSF=D.get_table();if(R.enc)t.Encryption=R.enc;if(O)t.Themes=O;t.Metadata={};if(S!==undefined)t.Metadata.Country=S;if(H.names.length>0)T.Names=H.names;t.Workbook=T;return t}var xp={SI:"e0859ff2f94f6810ab9108002b27b3d9",DSI:"02d5cdd59c2e1b10939708002b2cf9ae",UDI:"05d5cdd59c2e1b10939708002b2cf9ae"};function Ap(e,r,t){var a=W.find(e,"!DocumentSummaryInformation");if(a&&a.size>0)try{var n=Hn(a,ga,xp.DSI);for(var i in n)r[i]=n[i]}catch(s){if(t.WTF)throw s}var f=W.find(e,"!SummaryInformation");if(f&&f.size>0)try{var o=Hn(f,wa,xp.SI);for(var l in o)if(r[l]==null)r[l]=o[l]}catch(s){if(t.WTF)throw s}if(r.HeadingPairs&&r.TitlesOfParts){fn(r.HeadingPairs,r.TitlesOfParts,r,t);delete r.HeadingPairs;delete r.TitlesOfParts}}function Ip(e,r){var t=[],a=[],n=[];var i=0,s;if(e.Props){s=K(e.Props);for(i=0;i-1)continue;if(n[i][1]==null)continue;f.push(n[i])}if(a.length)W.utils.cfb_add(r,"/SummaryInformation",Wn(a,xp.SI,Sa,wa));if(t.length||f.length)W.utils.cfb_add(r,"/DocumentSummaryInformation",Wn(t,xp.DSI,Ea,ga,f.length?f:null,xp.UDI))}function Rp(e,r){if(!r)r={};Bm(r);l();if(r.codepage)s(r.codepage);var t,a;if(e.FullPaths){if(W.find(e,"/encryption"))throw new Error("File is password-protected");t=W.find(e,"!CompObj");a=W.find(e,"/Workbook")||W.find(e,"/Book")}else{switch(r.type){case"base64":e=B(g.decode(e));break;case"binary":e=B(e);break;case"buffer":break;case"array":if(!Array.isArray(e))e=Array.prototype.slice.call(e);break;}Yr(e,0);a={content:e}}var n;var i;if(t)_p(t);if(r.bookProps&&!r.bookSheets)n={};else{var f=w?"buffer":"array";if(a&&a.content)n=yp(a.content,r);else if((i=W.find(e,"PerfectOffice_MAIN"))&&i.content)n=gf.to_workbook(i.content,(r.type=f,r));else if((i=W.find(e,"NativeContent_MAIN"))&&i.content)n=gf.to_workbook(i.content,(r.type=f,r));else throw new Error("Cannot find Workbook stream");if(r.bookVBA&&e.FullPaths&&W.find(e,"/_VBA_PROJECT_CUR/VBA/dir"))n.vbaraw=Jl(e)}var o={};if(e.FullPaths)Ap(e,o,r);n.Props=n.Custprops=o;if(r.bookFiles)n.cfb=e;return n}function Op(e,r){var t=r||{};var a=W.utils.cfb_new({root:"R"});var n="/Workbook";switch(t.bookType||"xls"){case"xls":t.bookType="biff8";case"xla":if(!t.bookType)t.bookType="xla";case"biff8":n="/Workbook";t.biff=8;break;case"biff5":n="/Book";t.biff=5;break;default:throw new Error("invalid type "+t.bookType+" for XLS CFB");}W.utils.cfb_add(a,n,em(e,t));if(t.biff==8&&(e.Props||e.Custprops))Ip(e,a);if(t.biff==8&&e.vbaraw)Ql(a,W.read(e.vbaraw,{type:typeof e.vbaraw=="string"?"binary":"buffer"}));return a}var Dp={0:{n:"BrtRowHdr",f:Yh},1:{n:"BrtCellBlank",f:ad},2:{n:"BrtCellRk",f:hd},3:{n:"BrtCellError",f:fd},4:{n:"BrtCellBool",f:id},5:{n:"BrtCellReal",f:cd},6:{n:"BrtCellSt",f:vd},7:{n:"BrtCellIsst",f:od},8:{n:"BrtFmlaString",f:wd},9:{n:"BrtFmlaNum",f:gd},10:{n:"BrtFmlaBool",f:md},11:{n:"BrtFmlaError",f:bd},16:{n:"BrtFRTArchID$",f:Bv},19:{n:"BrtSSTItem",f:Rt},20:{n:"BrtPCDIMissing"},21:{n:"BrtPCDINumber"},22:{n:"BrtPCDIBoolean"},23:{n:"BrtPCDIError"},24:{n:"BrtPCDIString"},25:{n:"BrtPCDIDatetime"},26:{n:"BrtPCDIIndex"},27:{n:"BrtPCDIAMissing"},28:{n:"BrtPCDIANumber"},29:{n:"BrtPCDIABoolean"},30:{n:"BrtPCDIAError"},31:{n:"BrtPCDIAString"},32:{n:"BrtPCDIADatetime"},33:{n:"BrtPCRRecord"},34:{n:"BrtPCRRecordDt"},35:{n:"BrtFRTBegin"},36:{n:"BrtFRTEnd"},37:{n:"BrtACBegin"},38:{n:"BrtACEnd"},39:{n:"BrtName",f:Tv},40:{n:"BrtIndexRowBlock"},42:{n:"BrtIndexBlock"},43:{n:"BrtFont",f:Wo},44:{n:"BrtFmt",f:zo},45:{n:"BrtFill",f:jo},46:{n:"BrtBorder",f:Jo},47:{n:"BrtXF",f:$o},48:{n:"BrtStyle"},49:{n:"BrtCellMeta"},50:{n:"BrtValueMeta"},51:{n:"BrtMdb"},52:{n:"BrtBeginFmd"},53:{n:"BrtEndFmd"},54:{n:"BrtBeginMdx"},55:{n:"BrtEndMdx"},56:{n:"BrtBeginMdxTuple"},57:{n:"BrtEndMdxTuple"},58:{n:"BrtMdxMbrIstr"},59:{n:"BrtStr"},60:{n:"BrtColInfo",f:Ys},62:{n:"BrtCellRString"},63:{n:"BrtCalcChainItem$",f:Dl},64:{n:"BrtDVal",f:Nd},65:{n:"BrtSxvcellNum"},66:{n:"BrtSxvcellStr"},67:{n:"BrtSxvcellBool"},68:{n:"BrtSxvcellErr"},69:{n:"BrtSxvcellDate"},70:{n:"BrtSxvcellNil"},128:{n:"BrtFileVersion"},129:{n:"BrtBeginSheet"},130:{n:"BrtEndSheet"},131:{n:"BrtBeginBook",f:Zr,p:0},132:{n:"BrtEndBook"},133:{n:"BrtBeginWsViews"},134:{n:"BrtEndWsViews"},135:{n:"BrtBeginBookViews"},136:{n:"BrtEndBookViews"},137:{n:"BrtBeginWsView",f:Od},138:{n:"BrtEndWsView"},139:{n:"BrtBeginCsViews"},140:{n:"BrtEndCsViews"},141:{n:"BrtBeginCsView"},142:{n:"BrtEndCsView"},143:{n:"BrtBeginBundleShs"},144:{n:"BrtEndBundleShs"},145:{n:"BrtBeginSheetData"},146:{n:"BrtEndSheetData"},147:{n:"BrtWsProp",f:rd},148:{n:"BrtWsDim",f:Qh,p:16},151:{n:"BrtPane",f:Bd},152:{n:"BrtSel"},153:{n:"BrtWbProp",f:_v},154:{n:"BrtWbFactoid"},155:{n:"BrtFileRecover"},156:{n:"BrtBundleSh",f:Ev},157:{n:"BrtCalcProp"},158:{n:"BrtBookView"},159:{n:"BrtBeginSst",f:Of},160:{n:"BrtEndSst"},161:{n:"BrtBeginAFilter",f:$t},162:{n:"BrtEndAFilter"},163:{n:"BrtBeginFilterColumn"},164:{n:"BrtEndFilterColumn"},165:{n:"BrtBeginFilters"},166:{n:"BrtEndFilters"},167:{n:"BrtFilter"},168:{n:"BrtColorFilter"},169:{n:"BrtIconFilter"},170:{n:"BrtTop10Filter"},171:{n:"BrtDynamicFilter"},172:{n:"BrtBeginCustomFilters"},173:{n:"BrtEndCustomFilters"},174:{n:"BrtCustomFilter"},175:{n:"BrtAFilterDateGroupItem"},176:{n:"BrtMergeCell",f:kd},177:{n:"BrtBeginMergeCells"},178:{n:"BrtEndMergeCells"},179:{n:"BrtBeginPivotCacheDef"},180:{n:"BrtEndPivotCacheDef"},181:{n:"BrtBeginPCDFields"},182:{n:"BrtEndPCDFields"},183:{n:"BrtBeginPCDField"},184:{n:"BrtEndPCDField"},185:{n:"BrtBeginPCDSource"},186:{n:"BrtEndPCDSource"},187:{n:"BrtBeginPCDSRange"},188:{n:"BrtEndPCDSRange"},189:{n:"BrtBeginPCDFAtbl"},190:{n:"BrtEndPCDFAtbl"},191:{n:"BrtBeginPCDIRun"},192:{n:"BrtEndPCDIRun"},193:{n:"BrtBeginPivotCacheRecords"},194:{n:"BrtEndPivotCacheRecords"},195:{n:"BrtBeginPCDHierarchies"},196:{n:"BrtEndPCDHierarchies"},197:{n:"BrtBeginPCDHierarchy"},198:{n:"BrtEndPCDHierarchy"},199:{n:"BrtBeginPCDHFieldsUsage"},200:{n:"BrtEndPCDHFieldsUsage"},201:{n:"BrtBeginExtConnection"},202:{n:"BrtEndExtConnection"},203:{n:"BrtBeginECDbProps"},204:{n:"BrtEndECDbProps"},205:{n:"BrtBeginECOlapProps"},206:{n:"BrtEndECOlapProps"},207:{n:"BrtBeginPCDSConsol"},208:{n:"BrtEndPCDSConsol"},209:{n:"BrtBeginPCDSCPages"},210:{n:"BrtEndPCDSCPages"},211:{n:"BrtBeginPCDSCPage"},212:{n:"BrtEndPCDSCPage"},213:{n:"BrtBeginPCDSCPItem"},214:{n:"BrtEndPCDSCPItem"},215:{n:"BrtBeginPCDSCSets"},216:{n:"BrtEndPCDSCSets" -},217:{n:"BrtBeginPCDSCSet"},218:{n:"BrtEndPCDSCSet"},219:{n:"BrtBeginPCDFGroup"},220:{n:"BrtEndPCDFGroup"},221:{n:"BrtBeginPCDFGItems"},222:{n:"BrtEndPCDFGItems"},223:{n:"BrtBeginPCDFGRange"},224:{n:"BrtEndPCDFGRange"},225:{n:"BrtBeginPCDFGDiscrete"},226:{n:"BrtEndPCDFGDiscrete"},227:{n:"BrtBeginPCDSDTupleCache"},228:{n:"BrtEndPCDSDTupleCache"},229:{n:"BrtBeginPCDSDTCEntries"},230:{n:"BrtEndPCDSDTCEntries"},231:{n:"BrtBeginPCDSDTCEMembers"},232:{n:"BrtEndPCDSDTCEMembers"},233:{n:"BrtBeginPCDSDTCEMember"},234:{n:"BrtEndPCDSDTCEMember"},235:{n:"BrtBeginPCDSDTCQueries"},236:{n:"BrtEndPCDSDTCQueries"},237:{n:"BrtBeginPCDSDTCQuery"},238:{n:"BrtEndPCDSDTCQuery"},239:{n:"BrtBeginPCDSDTCSets"},240:{n:"BrtEndPCDSDTCSets"},241:{n:"BrtBeginPCDSDTCSet"},242:{n:"BrtEndPCDSDTCSet"},243:{n:"BrtBeginPCDCalcItems"},244:{n:"BrtEndPCDCalcItems"},245:{n:"BrtBeginPCDCalcItem"},246:{n:"BrtEndPCDCalcItem"},247:{n:"BrtBeginPRule"},248:{n:"BrtEndPRule"},249:{n:"BrtBeginPRFilters"},250:{n:"BrtEndPRFilters"},251:{n:"BrtBeginPRFilter"},252:{n:"BrtEndPRFilter"},253:{n:"BrtBeginPNames"},254:{n:"BrtEndPNames"},255:{n:"BrtBeginPName"},256:{n:"BrtEndPName"},257:{n:"BrtBeginPNPairs"},258:{n:"BrtEndPNPairs"},259:{n:"BrtBeginPNPair"},260:{n:"BrtEndPNPair"},261:{n:"BrtBeginECWebProps"},262:{n:"BrtEndECWebProps"},263:{n:"BrtBeginEcWpTables"},264:{n:"BrtEndECWPTables"},265:{n:"BrtBeginECParams"},266:{n:"BrtEndECParams"},267:{n:"BrtBeginECParam"},268:{n:"BrtEndECParam"},269:{n:"BrtBeginPCDKPIs"},270:{n:"BrtEndPCDKPIs"},271:{n:"BrtBeginPCDKPI"},272:{n:"BrtEndPCDKPI"},273:{n:"BrtBeginDims"},274:{n:"BrtEndDims"},275:{n:"BrtBeginDim"},276:{n:"BrtEndDim"},277:{n:"BrtIndexPartEnd"},278:{n:"BrtBeginStyleSheet"},279:{n:"BrtEndStyleSheet"},280:{n:"BrtBeginSXView"},281:{n:"BrtEndSXVI"},282:{n:"BrtBeginSXVI"},283:{n:"BrtBeginSXVIs"},284:{n:"BrtEndSXVIs"},285:{n:"BrtBeginSXVD"},286:{n:"BrtEndSXVD"},287:{n:"BrtBeginSXVDs"},288:{n:"BrtEndSXVDs"},289:{n:"BrtBeginSXPI"},290:{n:"BrtEndSXPI"},291:{n:"BrtBeginSXPIs"},292:{n:"BrtEndSXPIs"},293:{n:"BrtBeginSXDI"},294:{n:"BrtEndSXDI"},295:{n:"BrtBeginSXDIs"},296:{n:"BrtEndSXDIs"},297:{n:"BrtBeginSXLI"},298:{n:"BrtEndSXLI"},299:{n:"BrtBeginSXLIRws"},300:{n:"BrtEndSXLIRws"},301:{n:"BrtBeginSXLICols"},302:{n:"BrtEndSXLICols"},303:{n:"BrtBeginSXFormat"},304:{n:"BrtEndSXFormat"},305:{n:"BrtBeginSXFormats"},306:{n:"BrtEndSxFormats"},307:{n:"BrtBeginSxSelect"},308:{n:"BrtEndSxSelect"},309:{n:"BrtBeginISXVDRws"},310:{n:"BrtEndISXVDRws"},311:{n:"BrtBeginISXVDCols"},312:{n:"BrtEndISXVDCols"},313:{n:"BrtEndSXLocation"},314:{n:"BrtBeginSXLocation"},315:{n:"BrtEndSXView"},316:{n:"BrtBeginSXTHs"},317:{n:"BrtEndSXTHs"},318:{n:"BrtBeginSXTH"},319:{n:"BrtEndSXTH"},320:{n:"BrtBeginISXTHRws"},321:{n:"BrtEndISXTHRws"},322:{n:"BrtBeginISXTHCols"},323:{n:"BrtEndISXTHCols"},324:{n:"BrtBeginSXTDMPS"},325:{n:"BrtEndSXTDMPs"},326:{n:"BrtBeginSXTDMP"},327:{n:"BrtEndSXTDMP"},328:{n:"BrtBeginSXTHItems"},329:{n:"BrtEndSXTHItems"},330:{n:"BrtBeginSXTHItem"},331:{n:"BrtEndSXTHItem"},332:{n:"BrtBeginMetadata"},333:{n:"BrtEndMetadata"},334:{n:"BrtBeginEsmdtinfo"},335:{n:"BrtMdtinfo"},336:{n:"BrtEndEsmdtinfo"},337:{n:"BrtBeginEsmdb"},338:{n:"BrtEndEsmdb"},339:{n:"BrtBeginEsfmd"},340:{n:"BrtEndEsfmd"},341:{n:"BrtBeginSingleCells"},342:{n:"BrtEndSingleCells"},343:{n:"BrtBeginList"},344:{n:"BrtEndList"},345:{n:"BrtBeginListCols"},346:{n:"BrtEndListCols"},347:{n:"BrtBeginListCol"},348:{n:"BrtEndListCol"},349:{n:"BrtBeginListXmlCPr"},350:{n:"BrtEndListXmlCPr"},351:{n:"BrtListCCFmla"},352:{n:"BrtListTrFmla"},353:{n:"BrtBeginExternals"},354:{n:"BrtEndExternals"},355:{n:"BrtSupBookSrc",f:Wt},357:{n:"BrtSupSelf"},358:{n:"BrtSupSame"},359:{n:"BrtSupTabs"},360:{n:"BrtBeginSupBook"},361:{n:"BrtPlaceholderName"},362:{n:"BrtExternSheet",f:Ts},363:{n:"BrtExternTableStart"},364:{n:"BrtExternTableEnd"},366:{n:"BrtExternRowHdr"},367:{n:"BrtExternCellBlank"},368:{n:"BrtExternCellReal"},369:{n:"BrtExternCellBool"},370:{n:"BrtExternCellError"},371:{n:"BrtExternCellString"},372:{n:"BrtBeginEsmdx"},373:{n:"BrtEndEsmdx"},374:{n:"BrtBeginMdxSet"},375:{n:"BrtEndMdxSet"},376:{n:"BrtBeginMdxMbrProp"},377:{n:"BrtEndMdxMbrProp"},378:{n:"BrtBeginMdxKPI"},379:{n:"BrtEndMdxKPI"},380:{n:"BrtBeginEsstr"},381:{n:"BrtEndEsstr"},382:{n:"BrtBeginPRFItem"},383:{n:"BrtEndPRFItem"},384:{n:"BrtBeginPivotCacheIDs"},385:{n:"BrtEndPivotCacheIDs"},386:{n:"BrtBeginPivotCacheID"},387:{n:"BrtEndPivotCacheID"},388:{n:"BrtBeginISXVIs"},389:{n:"BrtEndISXVIs"},390:{n:"BrtBeginColInfos"},391:{n:"BrtEndColInfos"},392:{n:"BrtBeginRwBrk"},393:{n:"BrtEndRwBrk"},394:{n:"BrtBeginColBrk"},395:{n:"BrtEndColBrk"},396:{n:"BrtBrk"},397:{n:"BrtUserBookView"},398:{n:"BrtInfo"},399:{n:"BrtCUsr"},400:{n:"BrtUsr"},401:{n:"BrtBeginUsers"},403:{n:"BrtEOF"},404:{n:"BrtUCR"},405:{n:"BrtRRInsDel"},406:{n:"BrtRREndInsDel"},407:{n:"BrtRRMove"},408:{n:"BrtRREndMove"},409:{n:"BrtRRChgCell"},410:{n:"BrtRREndChgCell"},411:{n:"BrtRRHeader"},412:{n:"BrtRRUserView"},413:{n:"BrtRRRenSheet"},414:{n:"BrtRRInsertSh"},415:{n:"BrtRRDefName"},416:{n:"BrtRRNote"},417:{n:"BrtRRConflict"},418:{n:"BrtRRTQSIF"},419:{n:"BrtRRFormat"},420:{n:"BrtRREndFormat"},421:{n:"BrtRRAutoFmt"},422:{n:"BrtBeginUserShViews"},423:{n:"BrtBeginUserShView"},424:{n:"BrtEndUserShView"},425:{n:"BrtEndUserShViews"},426:{n:"BrtArrFmla",f:Td},427:{n:"BrtShrFmla",f:yd},428:{n:"BrtTable"},429:{n:"BrtBeginExtConnections"},430:{n:"BrtEndExtConnections"},431:{n:"BrtBeginPCDCalcMems"},432:{n:"BrtEndPCDCalcMems"},433:{n:"BrtBeginPCDCalcMem"},434:{n:"BrtEndPCDCalcMem"},435:{n:"BrtBeginPCDHGLevels"},436:{n:"BrtEndPCDHGLevels"},437:{n:"BrtBeginPCDHGLevel"},438:{n:"BrtEndPCDHGLevel"},439:{n:"BrtBeginPCDHGLGroups"},440:{n:"BrtEndPCDHGLGroups"},441:{n:"BrtBeginPCDHGLGroup"},442:{n:"BrtEndPCDHGLGroup"},443:{n:"BrtBeginPCDHGLGMembers"},444:{n:"BrtEndPCDHGLGMembers"},445:{n:"BrtBeginPCDHGLGMember"},446:{n:"BrtEndPCDHGLGMember"},447:{n:"BrtBeginQSI"},448:{n:"BrtEndQSI"},449:{n:"BrtBeginQSIR"},450:{n:"BrtEndQSIR"},451:{n:"BrtBeginDeletedNames"},452:{n:"BrtEndDeletedNames"},453:{n:"BrtBeginDeletedName"},454:{n:"BrtEndDeletedName"},455:{n:"BrtBeginQSIFs"},456:{n:"BrtEndQSIFs"},457:{n:"BrtBeginQSIF"},458:{n:"BrtEndQSIF"},459:{n:"BrtBeginAutoSortScope"},460:{n:"BrtEndAutoSortScope"},461:{n:"BrtBeginConditionalFormatting"},462:{n:"BrtEndConditionalFormatting"},463:{n:"BrtBeginCFRule"},464:{n:"BrtEndCFRule"},465:{n:"BrtBeginIconSet"},466:{n:"BrtEndIconSet"},467:{n:"BrtBeginDatabar"},468:{n:"BrtEndDatabar"},469:{n:"BrtBeginColorScale"},470:{n:"BrtEndColorScale"},471:{n:"BrtCFVO"},472:{n:"BrtExternValueMeta"},473:{n:"BrtBeginColorPalette"},474:{n:"BrtEndColorPalette"},475:{n:"BrtIndexedColor"},476:{n:"BrtMargins",f:Id},477:{n:"BrtPrintOptions"},478:{n:"BrtPageSetup"},479:{n:"BrtBeginHeaderFooter"},480:{n:"BrtEndHeaderFooter"},481:{n:"BrtBeginSXCrtFormat"},482:{n:"BrtEndSXCrtFormat"},483:{n:"BrtBeginSXCrtFormats"},484:{n:"BrtEndSXCrtFormats"},485:{n:"BrtWsFmtInfo",f:ed},486:{n:"BrtBeginMgs"},487:{n:"BrtEndMGs"},488:{n:"BrtBeginMGMaps"},489:{n:"BrtEndMGMaps"},490:{n:"BrtBeginMG"},491:{n:"BrtEndMG"},492:{n:"BrtBeginMap"},493:{n:"BrtEndMap"},494:{n:"BrtHLink",f:_d},495:{n:"BrtBeginDCon"},496:{n:"BrtEndDCon"},497:{n:"BrtBeginDRefs"},498:{n:"BrtEndDRefs"},499:{n:"BrtDRef"},500:{n:"BrtBeginScenMan"},501:{n:"BrtEndScenMan"},502:{n:"BrtBeginSct"},503:{n:"BrtEndSct"},504:{n:"BrtSlc"},505:{n:"BrtBeginDXFs"},506:{n:"BrtEndDXFs"},507:{n:"BrtDXF"},508:{n:"BrtBeginTableStyles"},509:{n:"BrtEndTableStyles"},510:{n:"BrtBeginTableStyle"},511:{n:"BrtEndTableStyle"},512:{n:"BrtTableStyleElement"},513:{n:"BrtTableStyleClient"},514:{n:"BrtBeginVolDeps"},515:{n:"BrtEndVolDeps"},516:{n:"BrtBeginVolType"},517:{n:"BrtEndVolType"},518:{n:"BrtBeginVolMain"},519:{n:"BrtEndVolMain"},520:{n:"BrtBeginVolTopic"},521:{n:"BrtEndVolTopic"},522:{n:"BrtVolSubtopic"},523:{n:"BrtVolRef"},524:{n:"BrtVolNum"},525:{n:"BrtVolErr"},526:{n:"BrtVolStr"},527:{n:"BrtVolBool"},528:{n:"BrtBeginCalcChain$"},529:{n:"BrtEndCalcChain$"},530:{n:"BrtBeginSortState"},531:{n:"BrtEndSortState"},532:{n:"BrtBeginSortCond"},533:{n:"BrtEndSortCond"},534:{n:"BrtBookProtection"},535:{n:"BrtSheetProtection"},536:{n:"BrtRangeProtection"},537:{n:"BrtPhoneticInfo"},538:{n:"BrtBeginECTxtWiz"},539:{n:"BrtEndECTxtWiz"},540:{n:"BrtBeginECTWFldInfoLst"},541:{n:"BrtEndECTWFldInfoLst"},542:{n:"BrtBeginECTwFldInfo"},548:{n:"BrtFileSharing"},549:{n:"BrtOleSize"},550:{n:"BrtDrawing",f:Wt},551:{n:"BrtLegacyDrawing"},552:{n:"BrtLegacyDrawingHF"},553:{n:"BrtWebOpt"},554:{n:"BrtBeginWebPubItems"},555:{n:"BrtEndWebPubItems"},556:{n:"BrtBeginWebPubItem"},557:{n:"BrtEndWebPubItem"},558:{n:"BrtBeginSXCondFmt"},559:{n:"BrtEndSXCondFmt"},560:{n:"BrtBeginSXCondFmts"},561:{n:"BrtEndSXCondFmts"},562:{n:"BrtBkHim"},564:{n:"BrtColor"},565:{n:"BrtBeginIndexedColors"},566:{n:"BrtEndIndexedColors"},569:{n:"BrtBeginMRUColors"},570:{n:"BrtEndMRUColors"},572:{n:"BrtMRUColor"},573:{n:"BrtBeginDVals"},574:{n:"BrtEndDVals"},577:{n:"BrtSupNameStart"},578:{n:"BrtSupNameValueStart"},579:{n:"BrtSupNameValueEnd"},580:{n:"BrtSupNameNum"},581:{n:"BrtSupNameErr"},582:{n:"BrtSupNameSt"},583:{n:"BrtSupNameNil"},584:{n:"BrtSupNameBool"},585:{n:"BrtSupNameFmla"},586:{n:"BrtSupNameBits"},587:{n:"BrtSupNameEnd"},588:{n:"BrtEndSupBook"},589:{n:"BrtCellSmartTagProperty"},590:{n:"BrtBeginCellSmartTag"},591:{n:"BrtEndCellSmartTag"},592:{n:"BrtBeginCellSmartTags"},593:{n:"BrtEndCellSmartTags"},594:{n:"BrtBeginSmartTags"},595:{n:"BrtEndSmartTags"},596:{n:"BrtSmartTagType"},597:{n:"BrtBeginSmartTagTypes"},598:{n:"BrtEndSmartTagTypes"},599:{n:"BrtBeginSXFilters"},600:{n:"BrtEndSXFilters"},601:{n:"BrtBeginSXFILTER"},602:{n:"BrtEndSXFilter"},603:{n:"BrtBeginFills"},604:{n:"BrtEndFills"},605:{n:"BrtBeginCellWatches"},606:{n:"BrtEndCellWatches"},607:{n:"BrtCellWatch"},608:{n:"BrtBeginCRErrs"},609:{n:"BrtEndCRErrs"},610:{n:"BrtCrashRecErr"},611:{n:"BrtBeginFonts"},612:{n:"BrtEndFonts"},613:{n:"BrtBeginBorders"},614:{n:"BrtEndBorders"},615:{n:"BrtBeginFmts"},616:{n:"BrtEndFmts"},617:{n:"BrtBeginCellXFs"},618:{n:"BrtEndCellXFs"},619:{n:"BrtBeginStyles"},620:{n:"BrtEndStyles"},625:{n:"BrtBigName"},626:{n:"BrtBeginCellStyleXFs"},627:{n:"BrtEndCellStyleXFs"},628:{n:"BrtBeginComments"},629:{n:"BrtEndComments"},630:{n:"BrtBeginCommentAuthors"},631:{n:"BrtEndCommentAuthors"},632:{n:"BrtCommentAuthor",f:jl},633:{n:"BrtBeginCommentList"},634:{n:"BrtEndCommentList"},635:{n:"BrtBeginComment",f:Xl},636:{n:"BrtEndComment"},637:{n:"BrtCommentText",f:Dt},638:{n:"BrtBeginOleObjects"},639:{n:"BrtOleObject"},640:{n:"BrtEndOleObjects"},641:{n:"BrtBeginSxrules"},642:{n:"BrtEndSxRules"},643:{n:"BrtBeginActiveXControls"},644:{n:"BrtActiveX"},645:{n:"BrtEndActiveXControls"},646:{n:"BrtBeginPCDSDTCEMembersSortBy"},648:{n:"BrtBeginCellIgnoreECs"},649:{n:"BrtCellIgnoreEC"},650:{n:"BrtEndCellIgnoreECs"},651:{n:"BrtCsProp",f:tv},652:{n:"BrtCsPageSetup"},653:{n:"BrtBeginUserCsViews"},654:{n:"BrtEndUserCsViews"},655:{n:"BrtBeginUserCsView"},656:{n:"BrtEndUserCsView"},657:{n:"BrtBeginPcdSFCIEntries"},658:{n:"BrtEndPCDSFCIEntries"},659:{n:"BrtPCDSFCIEntry"},660:{n:"BrtBeginListParts"},661:{n:"BrtListPart"},662:{n:"BrtEndListParts"},663:{n:"BrtSheetCalcProp"},664:{n:"BrtBeginFnGroup"},665:{n:"BrtFnGroup"},666:{n:"BrtEndFnGroup"},667:{n:"BrtSupAddin"},668:{n:"BrtSXTDMPOrder"},669:{n:"BrtCsProtection"},671:{n:"BrtBeginWsSortMap"},672:{n:"BrtEndWsSortMap"},673:{n:"BrtBeginRRSort"},674:{n:"BrtEndRRSort"},675:{n:"BrtRRSortItem"},676:{n:"BrtFileSharingIso"},677:{n:"BrtBookProtectionIso"},678:{n:"BrtSheetProtectionIso"},679:{n:"BrtCsProtectionIso"},680:{n:"BrtRangeProtectionIso"},681:{n:"BrtDValList"},1024:{n:"BrtRwDescent"},1025:{n:"BrtKnownFonts"},1026:{n:"BrtBeginSXTupleSet"},1027:{n:"BrtEndSXTupleSet"},1028:{n:"BrtBeginSXTupleSetHeader"},1029:{n:"BrtEndSXTupleSetHeader"},1030:{n:"BrtSXTupleSetHeaderItem"},1031:{n:"BrtBeginSXTupleSetData"},1032:{n:"BrtEndSXTupleSetData"},1033:{n:"BrtBeginSXTupleSetRow"},1034:{n:"BrtEndSXTupleSetRow"},1035:{n:"BrtSXTupleSetRowItem"},1036:{n:"BrtNameExt"},1037:{n:"BrtPCDH14"},1038:{n:"BrtBeginPCDCalcMem14"},1039:{n:"BrtEndPCDCalcMem14"},1040:{n:"BrtSXTH14"},1041:{n:"BrtBeginSparklineGroup"},1042:{n:"BrtEndSparklineGroup"},1043:{n:"BrtSparkline"},1044:{n:"BrtSXDI14"},1045:{n:"BrtWsFmtInfoEx14"},1046:{n:"BrtBeginConditionalFormatting14"},1047:{n:"BrtEndConditionalFormatting14"},1048:{n:"BrtBeginCFRule14"},1049:{n:"BrtEndCFRule14"},1050:{n:"BrtCFVO14"},1051:{n:"BrtBeginDatabar14"},1052:{n:"BrtBeginIconSet14"},1053:{n:"BrtDVal14",f:Ld},1054:{n:"BrtBeginDVals14"},1055:{n:"BrtColor14"},1056:{n:"BrtBeginSparklines"},1057:{n:"BrtEndSparklines"},1058:{n:"BrtBeginSparklineGroups"},1059:{n:"BrtEndSparklineGroups"},1061:{n:"BrtSXVD14"},1062:{n:"BrtBeginSXView14"},1063:{n:"BrtEndSXView14"},1064:{n:"BrtBeginSXView16"},1065:{n:"BrtEndSXView16"},1066:{n:"BrtBeginPCD14"},1067:{n:"BrtEndPCD14"},1068:{n:"BrtBeginExtConn14"},1069:{n:"BrtEndExtConn14"},1070:{n:"BrtBeginSlicerCacheIDs"},1071:{n:"BrtEndSlicerCacheIDs"},1072:{n:"BrtBeginSlicerCacheID"},1073:{n:"BrtEndSlicerCacheID"},1075:{n:"BrtBeginSlicerCache"},1076:{n:"BrtEndSlicerCache"},1077:{n:"BrtBeginSlicerCacheDef"},1078:{n:"BrtEndSlicerCacheDef"},1079:{n:"BrtBeginSlicersEx"},1080:{n:"BrtEndSlicersEx"},1081:{n:"BrtBeginSlicerEx"},1082:{n:"BrtEndSlicerEx"},1083:{n:"BrtBeginSlicer"},1084:{n:"BrtEndSlicer"},1085:{n:"BrtSlicerCachePivotTables"},1086:{n:"BrtBeginSlicerCacheOlapImpl"},1087:{n:"BrtEndSlicerCacheOlapImpl"},1088:{n:"BrtBeginSlicerCacheLevelsData"},1089:{n:"BrtEndSlicerCacheLevelsData"},1090:{n:"BrtBeginSlicerCacheLevelData"},1091:{n:"BrtEndSlicerCacheLevelData"},1092:{n:"BrtBeginSlicerCacheSiRanges"},1093:{n:"BrtEndSlicerCacheSiRanges"},1094:{n:"BrtBeginSlicerCacheSiRange"},1095:{n:"BrtEndSlicerCacheSiRange"},1096:{n:"BrtSlicerCacheOlapItem"},1097:{n:"BrtBeginSlicerCacheSelections"},1098:{n:"BrtSlicerCacheSelection"},1099:{n:"BrtEndSlicerCacheSelections"},1100:{n:"BrtBeginSlicerCacheNative"},1101:{n:"BrtEndSlicerCacheNative"},1102:{n:"BrtSlicerCacheNativeItem"},1103:{n:"BrtRangeProtection14"},1104:{n:"BrtRangeProtectionIso14"},1105:{n:"BrtCellIgnoreEC14"},1111:{n:"BrtList14"},1112:{n:"BrtCFIcon"},1113:{n:"BrtBeginSlicerCachesPivotCacheIDs"},1114:{n:"BrtEndSlicerCachesPivotCacheIDs"},1115:{n:"BrtBeginSlicers"},1116:{n:"BrtEndSlicers"},1117:{n:"BrtWbProp14"},1118:{n:"BrtBeginSXEdit"},1119:{n:"BrtEndSXEdit"},1120:{n:"BrtBeginSXEdits"},1121:{n:"BrtEndSXEdits"},1122:{n:"BrtBeginSXChange"},1123:{n:"BrtEndSXChange"},1124:{n:"BrtBeginSXChanges"},1125:{n:"BrtEndSXChanges"},1126:{n:"BrtSXTupleItems"},1128:{n:"BrtBeginSlicerStyle"},1129:{n:"BrtEndSlicerStyle"},1130:{n:"BrtSlicerStyleElement"},1131:{n:"BrtBeginStyleSheetExt14"},1132:{n:"BrtEndStyleSheetExt14"},1133:{n:"BrtBeginSlicerCachesPivotCacheID"},1134:{n:"BrtEndSlicerCachesPivotCacheID"},1135:{n:"BrtBeginConditionalFormattings"},1136:{n:"BrtEndConditionalFormattings"},1137:{n:"BrtBeginPCDCalcMemExt"},1138:{n:"BrtEndPCDCalcMemExt"},1139:{n:"BrtBeginPCDCalcMemsExt"},1140:{n:"BrtEndPCDCalcMemsExt"},1141:{n:"BrtPCDField14"},1142:{n:"BrtBeginSlicerStyles"},1143:{n:"BrtEndSlicerStyles"},1144:{n:"BrtBeginSlicerStyleElements"},1145:{n:"BrtEndSlicerStyleElements"},1146:{n:"BrtCFRuleExt"},1147:{n:"BrtBeginSXCondFmt14"},1148:{n:"BrtEndSXCondFmt14"},1149:{n:"BrtBeginSXCondFmts14"},1150:{n:"BrtEndSXCondFmts14"},1152:{n:"BrtBeginSortCond14"},1153:{n:"BrtEndSortCond14"},1154:{n:"BrtEndDVals14"},1155:{n:"BrtEndIconSet14"},1156:{n:"BrtEndDatabar14"},1157:{n:"BrtBeginColorScale14"},1158:{n:"BrtEndColorScale14"},1159:{n:"BrtBeginSxrules14"},1160:{n:"BrtEndSxrules14"},1161:{n:"BrtBeginPRule14"},1162:{n:"BrtEndPRule14"},1163:{n:"BrtBeginPRFilters14"},1164:{n:"BrtEndPRFilters14"},1165:{n:"BrtBeginPRFilter14"},1166:{n:"BrtEndPRFilter14"},1167:{n:"BrtBeginPRFItem14"},1168:{n:"BrtEndPRFItem14"},1169:{n:"BrtBeginCellIgnoreECs14"},1170:{n:"BrtEndCellIgnoreECs14"},1171:{n:"BrtDxf14"},1172:{n:"BrtBeginDxF14s"},1173:{n:"BrtEndDxf14s"},1177:{n:"BrtFilter14"},1178:{n:"BrtBeginCustomFilters14"},1180:{n:"BrtCustomFilter14"},1181:{n:"BrtIconFilter14"},1182:{n:"BrtPivotCacheConnectionName"},2048:{n:"BrtBeginDecoupledPivotCacheIDs"},2049:{n:"BrtEndDecoupledPivotCacheIDs"},2050:{n:"BrtDecoupledPivotCacheID"},2051:{n:"BrtBeginPivotTableRefs"},2052:{n:"BrtEndPivotTableRefs"},2053:{n:"BrtPivotTableRef"},2054:{n:"BrtSlicerCacheBookPivotTables"},2055:{n:"BrtBeginSxvcells"},2056:{n:"BrtEndSxvcells"},2057:{n:"BrtBeginSxRow"},2058:{n:"BrtEndSxRow"},2060:{n:"BrtPcdCalcMem15"},2067:{n:"BrtQsi15"},2068:{n:"BrtBeginWebExtensions"},2069:{n:"BrtEndWebExtensions"},2070:{n:"BrtWebExtension"},2071:{n:"BrtAbsPath15"},2072:{n:"BrtBeginPivotTableUISettings"},2073:{n:"BrtEndPivotTableUISettings"},2075:{n:"BrtTableSlicerCacheIDs"},2076:{n:"BrtTableSlicerCacheID"},2077:{n:"BrtBeginTableSlicerCache"},2078:{n:"BrtEndTableSlicerCache"},2079:{n:"BrtSxFilter15"},2080:{n:"BrtBeginTimelineCachePivotCacheIDs"},2081:{n:"BrtEndTimelineCachePivotCacheIDs"},2082:{n:"BrtTimelineCachePivotCacheID"},2083:{n:"BrtBeginTimelineCacheIDs"},2084:{n:"BrtEndTimelineCacheIDs"},2085:{n:"BrtBeginTimelineCacheID"},2086:{n:"BrtEndTimelineCacheID"},2087:{n:"BrtBeginTimelinesEx"},2088:{n:"BrtEndTimelinesEx"},2089:{n:"BrtBeginTimelineEx"},2090:{n:"BrtEndTimelineEx"},2091:{n:"BrtWorkBookPr15"},2092:{n:"BrtPCDH15"},2093:{n:"BrtBeginTimelineStyle"},2094:{n:"BrtEndTimelineStyle"},2095:{n:"BrtTimelineStyleElement"},2096:{n:"BrtBeginTimelineStylesheetExt15"},2097:{n:"BrtEndTimelineStylesheetExt15"},2098:{n:"BrtBeginTimelineStyles"},2099:{n:"BrtEndTimelineStyles"},2100:{n:"BrtBeginTimelineStyleElements"},2101:{n:"BrtEndTimelineStyleElements"},2102:{n:"BrtDxf15"},2103:{n:"BrtBeginDxfs15"},2104:{n:"brtEndDxfs15"},2105:{n:"BrtSlicerCacheHideItemsWithNoData"},2106:{n:"BrtBeginItemUniqueNames"},2107:{n:"BrtEndItemUniqueNames"},2108:{n:"BrtItemUniqueName"},2109:{n:"BrtBeginExtConn15"},2110:{n:"BrtEndExtConn15"},2111:{n:"BrtBeginOledbPr15"},2112:{n:"BrtEndOledbPr15"},2113:{n:"BrtBeginDataFeedPr15"},2114:{n:"BrtEndDataFeedPr15"},2115:{n:"BrtTextPr15"},2116:{n:"BrtRangePr15"},2117:{n:"BrtDbCommand15"},2118:{n:"BrtBeginDbTables15"},2119:{n:"BrtEndDbTables15"},2120:{n:"BrtDbTable15"},2121:{n:"BrtBeginDataModel"},2122:{n:"BrtEndDataModel"},2123:{n:"BrtBeginModelTables"},2124:{n:"BrtEndModelTables"},2125:{n:"BrtModelTable"},2126:{n:"BrtBeginModelRelationships"},2127:{n:"BrtEndModelRelationships"},2128:{n:"BrtModelRelationship"},2129:{n:"BrtBeginECTxtWiz15"},2130:{n:"BrtEndECTxtWiz15"},2131:{n:"BrtBeginECTWFldInfoLst15"},2132:{n:"BrtEndECTWFldInfoLst15"},2133:{n:"BrtBeginECTWFldInfo15"},2134:{n:"BrtFieldListActiveItem"},2135:{n:"BrtPivotCacheIdVersion"},2136:{n:"BrtSXDI15"},2137:{n:"BrtBeginModelTimeGroupings"},2138:{n:"BrtEndModelTimeGroupings"},2139:{n:"BrtBeginModelTimeGrouping"},2140:{n:"BrtEndModelTimeGrouping"},2141:{n:"BrtModelTimeGroupingCalcCol"},3072:{n:"BrtUid"},3073:{n:"BrtRevisionPtr"},5095:{n:"BrtBeginCalcFeatures"},5096:{n:"BrtEndCalcFeatures"},5097:{n:"BrtCalcFeature"},65535:{n:""}};var Fp=Y(Dp,"n");var Pp={3:{n:"BIFF2NUM",f:nf},4:{n:"BIFF2STR",f:af},6:{n:"Formula",f:Ku},9:{n:"BOF",f:Oi},10:{n:"EOF",f:Vn},12:{n:"CalcCount",f:$n},13:{n:"CalcMode",f:$n},14:{n:"CalcPrecision",f:jn},15:{n:"CalcRefMode",f:jn},16:{n:"CalcDelta",f:Zt},17:{n:"CalcIter",f:jn},18:{n:"Protect",f:jn},19:{n:"Password",f:$n},20:{n:"Header",f:Es},21:{n:"Footer",f:Es},23:{n:"ExternSheet",f:Ts},24:{n:"Lbl",f:Bs},25:{n:"WinProtect",f:jn},26:{n:"VerticalPageBreaks"},27:{n:"HorizontalPageBreaks"},28:{n:"Note",f:Ds},29:{n:"Selection"},34:{n:"Date1904",f:jn},35:{n:"ExternName",f:_s},36:{n:"COLWIDTH"},38:{n:"LeftMargin",f:Zt},39:{n:"RightMargin",f:Zt},40:{n:"TopMargin",f:Zt},41:{n:"BottomMargin",f:Zt},42:{n:"PrintRowCol",f:jn},43:{n:"PrintGrid",f:jn},47:{n:"FilePass",f:io},49:{n:"Font",f:Qi},51:{n:"PrintSize",f:$n},60:{n:"Continue"},61:{n:"Window1",f:Ki},64:{n:"Backup",f:jn},65:{n:"Pane",f:Ji},66:{n:"CodePage",f:$n},77:{n:"Pls"},80:{n:"DCon"},81:{n:"DConRef"},82:{n:"DConName"},85:{n:"DefColWidth",f:$n},89:{n:"XCT"},90:{n:"CRN"},91:{n:"FileSharing"},92:{n:"WriteAccess",f:Pi},93:{n:"Obj",f:Ns},94:{n:"Uncalced"},95:{n:"CalcSaveRecalc",f:jn},96:{n:"Template"},97:{n:"Intl"},99:{n:"ObjProtect",f:jn},125:{n:"ColInfo",f:Ys},128:{n:"Guts",f:ps},129:{n:"WsBool",f:Li},130:{n:"GridSet",f:$n},131:{n:"HCenter",f:jn},132:{n:"VCenter",f:jn},133:{n:"BoundSheet8",f:Mi},134:{n:"WriteProtect"},140:{n:"Country",f:Xs},141:{n:"HideObj",f:$n},144:{n:"Sort"},146:{n:"Palette",f:Ks},151:{n:"Sync"},152:{n:"LPr"},153:{n:"DxGCol"},154:{n:"FnGroupName"},155:{n:"FilterMode"},156:{n:"BuiltInFnGroupCount",f:$n},157:{n:"AutoFilterInfo"},158:{n:"AutoFilter"},160:{n:"Scl",f:ef},161:{n:"Setup",f:Zs},174:{n:"ScenMan"},175:{n:"SCENARIO"},176:{n:"SxView"},177:{n:"Sxvd"},178:{n:"SXVI"},180:{n:"SxIvd"},181:{n:"SXLI"},182:{n:"SXPI"},184:{n:"DocRoute"},185:{n:"RecipName"},189:{n:"MulRk",f:cs},190:{n:"MulBlank",f:us},193:{n:"Mms",f:Vn},197:{n:"SXDI"},198:{n:"SXDB"},199:{n:"SXFDB"},200:{n:"SXDBB"},201:{n:"SXNum"},202:{n:"SxBool",f:jn},203:{n:"SxErr"},204:{n:"SXInt"},205:{n:"SXString"},206:{n:"SXDtr"},207:{n:"SxNil"},208:{n:"SXTbl"},209:{n:"SXTBRGIITM"},210:{n:"SxTbpg"},211:{n:"ObProj"},213:{n:"SXStreamID"},215:{n:"DBCell"},216:{n:"SXRng"},217:{n:"SxIsxoper"},218:{n:"BookBool",f:$n},220:{n:"DbOrParamQry"},221:{n:"ScenarioProtect",f:jn},222:{n:"OleObjectSize"},224:{n:"XF",f:ds},225:{n:"InterfaceHdr",f:Fi},226:{n:"InterfaceEnd",f:Vn},227:{n:"SXVS"},229:{n:"MergeCells",f:Fs},233:{n:"BkHim"},235:{n:"MsoDrawingGroup"},236:{n:"MsoDrawing"},237:{n:"MsoDrawingSelection"},239:{n:"PhoneticInfo"},240:{n:"SxRule"},241:{n:"SXEx"},242:{n:"SxFilt"},244:{n:"SxDXF"},245:{n:"SxItm"},246:{n:"SxName"},247:{n:"SxSelect"},248:{n:"SXPair"},249:{n:"SxFmla"},251:{n:"SxFormat"},252:{n:"SST",f:zi},253:{n:"LabelSst",f:es},255:{n:"ExtSST",f:Wi},256:{n:"SXVDEx"},259:{n:"SXFormula"},290:{n:"SXDBEx"},311:{n:"RRDInsDel"},312:{n:"RRDHead"},315:{n:"RRDChgCell"},317:{n:"RRTabId",f:Zn},318:{n:"RRDRenSheet"},319:{n:"RRSort"},320:{n:"RRDMove"},330:{n:"RRFormat"},331:{n:"RRAutoFmt"},333:{n:"RRInsertSh"},334:{n:"RRDMoveBegin"},335:{n:"RRDMoveEnd"},336:{n:"RRDInsDelBegin"},337:{n:"RRDInsDelEnd"},338:{n:"RRDConflict"},339:{n:"RRDDefName"},340:{n:"RRDRstEtxp"},351:{n:"LRng"},352:{n:"UsesELFs",f:jn},353:{n:"DSF",f:Vn},401:{n:"CUsr"},402:{n:"CbUsr"},403:{n:"UsrInfo"},404:{n:"UsrExcl"},405:{n:"FileLock"},406:{n:"RRDInfo"},407:{n:"BCUsrs"},408:{n:"UsrChk"},425:{n:"UserBView"},426:{n:"UserSViewBegin"},427:{n:"UserSViewEnd"},428:{n:"RRDUserView"},429:{n:"Qsi"},430:{n:"SupBook",f:Ss},431:{n:"Prot4Rev",f:jn},432:{n:"CondFmt"},433:{n:"CF"},434:{n:"DVal"},437:{n:"DConBin"},438:{n:"TxO",f:Us},439:{n:"RefreshAll",f:jn},440:{n:"HLink",f:zs},441:{n:"Lel"},442:{n:"CodeName",f:ai},443:{n:"SXFDBType"},444:{n:"Prot4RevPass",f:$n},445:{n:"ObNoMacros"},446:{n:"Dv"},448:{n:"Excel9File",f:Vn},449:{n:"RecalcId",f:Gi,r:2},450:{n:"EntExU2",f:Vn},512:{n:"Dimensions",f:fs},513:{n:"Blank",f:qs},515:{n:"Number",f:ws},516:{n:"Label",f:ts},517:{n:"BoolErr",f:bs},518:{n:"Formula",f:Ku},519:{n:"String",f:rf},520:{n:"Row",f:Vi},523:{n:"Index"},545:{n:"Array",f:Is},549:{n:"DefaultRowHeight",f:ji},566:{n:"Table"},574:{n:"Window2",f:Yi},638:{n:"RK",f:ls},659:{n:"Style"},1030:{n:"Formula",f:Ku},1048:{n:"BigName"},1054:{n:"Format",f:ns},1084:{n:"ContinueBigName"},1212:{n:"ShrFmla",f:As},2048:{n:"HLinkTooltip",f:Ws},2049:{n:"WebPub"},2050:{n:"QsiSXTag"},2051:{n:"DBQueryExt"},2052:{n:"ExtString"},2053:{n:"TxtQry"},2054:{n:"Qsir"},2055:{n:"Qsif"},2056:{n:"RRDTQSIF"},2057:{n:"BOF",f:Oi},2058:{n:"OleDbConn"},2059:{n:"WOpt"},2060:{n:"SXViewEx"},2061:{n:"SXTH"},2062:{n:"SXPIEx"},2063:{n:"SXVDTEx"},2064:{n:"SXViewEx9"},2066:{n:"ContinueFrt"},2067:{n:"RealTimeData"},2128:{n:"ChartFrtInfo"},2129:{n:"FrtWrapper"},2130:{n:"StartBlock"},2131:{n:"EndBlock"},2132:{n:"StartObject"},2133:{n:"EndObject"},2134:{n:"CatLab"},2135:{n:"YMult"},2136:{n:"SXViewLink"},2137:{n:"PivotChartBits"},2138:{n:"FrtFontList"},2146:{n:"SheetExt"},2147:{n:"BookExt",r:12},2148:{n:"SXAddl"},2149:{n:"CrErr"},2150:{n:"HFPicture"},2151:{n:"FeatHdr",f:Vn},2152:{n:"Feat"},2154:{n:"DataLabExt"},2155:{n:"DataLabExtContents"},2156:{n:"CellWatch"},2161:{n:"FeatHdr11"},2162:{n:"Feature11"},2164:{n:"DropDownObjIds"},2165:{n:"ContinueFrt11"},2166:{n:"DConn"},2167:{n:"List12"},2168:{n:"Feature12"},2169:{n:"CondFmt12"},2170:{n:"CF12"},2171:{n:"CFEx"},2172:{n:"XFCRC",f:$s,r:12},2173:{n:"XFExt",f:Il,r:12},2174:{n:"AutoFilter12"},2175:{n:"ContinueFrt12"},2180:{n:"MDTInfo"},2181:{n:"MDXStr"},2182:{n:"MDXTuple"},2183:{n:"MDXSet"},2184:{n:"MDXProp"},2185:{n:"MDXKPI"},2186:{n:"MDB"},2187:{n:"PLV"},2188:{n:"Compat12",f:jn,r:12},2189:{n:"DXF"},2190:{n:"TableStyles",r:12},2191:{n:"TableStyle"},2192:{n:"TableStyleElement"},2194:{n:"StyleExt"},2195:{n:"NamePublish"},2196:{n:"NameCmt",f:xs,r:12},2197:{n:"SortData"},2198:{n:"Theme",f:Cl,r:12},2199:{n:"GUIDTypeLib"},2200:{n:"FnGrp12"},2201:{n:"NameFnGrp12"},2202:{n:"MTRSettings",f:Rs,r:12},2203:{n:"CompressPictures",f:Vn},2204:{n:"HeaderFooter"},2205:{n:"CrtLayout12"},2206:{n:"CrtMlFrt"},2207:{n:"CrtMlFrtContinue"},2211:{n:"ForceFullCalculation",f:Xi},2212:{n:"ShapePropsStream"},2213:{n:"TextPropsStream"},2214:{n:"RichTextStream"},2215:{n:"CrtLayout12A"},4097:{n:"Units"},4098:{n:"Chart"},4099:{n:"Series"},4102:{n:"DataFormat"},4103:{n:"LineFormat"},4105:{n:"MarkerFormat"},4106:{n:"AreaFormat"},4107:{n:"PieFormat"},4108:{n:"AttachedLabel"},4109:{n:"SeriesText"},4116:{n:"ChartFormat"},4117:{n:"Legend"},4118:{n:"SeriesList"},4119:{n:"Bar"},4120:{n:"Line"},4121:{n:"Pie"},4122:{n:"Area"},4123:{n:"Scatter"},4124:{n:"CrtLine"},4125:{n:"Axis"},4126:{n:"Tick"},4127:{n:"ValueRange"},4128:{n:"CatSerRange"},4129:{n:"AxisLine"},4130:{n:"CrtLink"},4132:{n:"DefaultText"},4133:{n:"Text"},4134:{n:"FontX",f:$n},4135:{n:"ObjectLink"},4146:{n:"Frame"},4147:{n:"Begin"},4148:{n:"End"},4149:{n:"PlotArea"},4154:{n:"Chart3d"},4156:{n:"PicF"},4157:{n:"DropBar"},4158:{n:"Radar"},4159:{n:"Surf"},4160:{n:"RadarArea"},4161:{n:"AxisParent"},4163:{n:"LegendException"},4164:{n:"ShtProps",f:Js},4165:{n:"SerToCrt"},4166:{n:"AxesUsed"},4168:{n:"SBaseRef"},4170:{n:"SerParent"},4171:{n:"SerAuxTrend"},4174:{n:"IFmtRecord"},4175:{n:"Pos"},4176:{n:"AlRuns"},4177:{n:"BRAI"},4187:{n:"SerAuxErrBar"},4188:{n:"ClrtClient",f:js},4189:{n:"SerFmt"},4191:{n:"Chart3DBarShape"},4192:{n:"Fbi"},4193:{n:"BopPop"},4194:{n:"AxcExt"},4195:{n:"Dat"},4196:{n:"PlotGrowth"},4197:{n:"SIIndex"},4198:{n:"GelFrame"},4199:{n:"BopPopCustom"},4200:{n:"Fbi2"},0:{n:"Dimensions",f:fs},2:{n:"BIFF2INT",f:ff},5:{n:"BoolErr",f:bs},7:{n:"String",f:lf},8:{n:"BIFF2ROW"},11:{n:"Index"},22:{n:"ExternCount",f:$n},30:{n:"BIFF2FORMAT",f:ss},31:{n:"BIFF2FMTCNT"},32:{n:"BIFF2COLINFO"},33:{n:"Array",f:Is},37:{n:"DefaultRowHeight",f:ji},50:{n:"BIFF2FONTXTRA",f:cf},52:{n:"DDEObjName"},62:{n:"BIFF2WINDOW2"},67:{n:"BIFF2XF"},69:{n:"BIFF2FONTCLR"},86:{n:"BIFF4FMTCNT"},126:{n:"RK"},127:{n:"ImData",f:tf},135:{n:"Addin"},136:{n:"Edg"},137:{n:"Pub"},145:{n:"Sub"},148:{n:"LHRecord"},149:{n:"LHNGraph"},150:{n:"Sound"},169:{n:"CoordList"},171:{n:"GCW"},188:{n:"ShrFmla"},191:{n:"ToolbarHdr"},192:{n:"ToolbarEnd"},194:{n:"AddMenu"},195:{n:"DelMenu"},214:{n:"RString",f:uf},223:{n:"UDDesc"},234:{n:"TabIdConf"},354:{n:"XL5Modify"},421:{n:"FileSharing2"},521:{n:"BOF",f:Oi},536:{n:"Lbl",f:Bs},547:{n:"ExternName",f:_s},561:{n:"Font"},579:{n:"BIFF3XF"},1033:{n:"BOF",f:Oi},1091:{n:"BIFF4XF"},2157:{n:"FeatInfo"},2163:{n:"FeatInfo11"},2177:{n:"SXAddl12"},2240:{n:"AutoWebPub"},2241:{n:"ListObj"},2242:{n:"ListField"},2243:{n:"ListDV"},2244:{n:"ListCondFmt"},2245:{n:"ListCF"},2246:{n:"FMQry"},2247:{n:"FMSQry"},2248:{n:"PLV"},2249:{n:"LnExt"},2250:{n:"MkrExt"},2251:{n:"CrtCoopt"},2262:{n:"FRTArchId$",r:12},29282:{}};var Np=Y(Pp,"n");function Lp(e,r,t,a){var n=+r||+Np[r];if(isNaN(n))return;var i=a||(t||[]).length||0;var s=e.next(4);s._W(2,n);s._W(2,i);if(i>0&&Nr(t))e.push(t)}function Mp(e,r,t,a){var n=a||(t||[]).length||0;if(n<=8224)return Lp(e,r,t,n);var i=+r||+Np[r];if(isNaN(i))return;var s=t.parts||[],f=0;var o=0,l=0;while(l+(s[f]||8224)<=8224){l+=s[f]||8224;f++}var c=e.next(4);c._W(2,i);c._W(2,l);e.push(t.slice(o,o+l));o+=l;while(o=0&&n<65536)Lp(e,2,of(t,a,n));else Lp(e,3,sf(t,a,n));return;case"b":;case"e":Lp(e,5,zp(t,a,r.v,r.t));return;case"s":;case"str":Lp(e,4,Hp(t,a,r.v));return;}Lp(e,1,Up(null,t,a))}function Vp(e,r,t,a){var n=Array.isArray(r);var i=kt(r["!ref"]||"A1"),s,f="",o=[];if(i.e.c>255||i.e.r>16383){if(a.WTF)throw new Error("Range "+(r["!ref"]||"A1")+" exceeds format limit A1:IV16384");i.e.c=Math.min(i.e.c,255);i.e.r=Math.min(i.e.c,16383);s=wt(i)}for(var l=i.s.r;l<=i.e.r;++l){f=ot(l);for(var c=i.s.c;c<=i.e.c;++c){if(l===i.s.r)o[c]=ht(c);s=o[c]+f;var u=n?(r[l]||[])[c]:r[s];if(!u)continue;Wp(e,u,l,c,a)}}}function Xp(e,r){var t=r||{};if(m!=null&&t.dense==null)t.dense=m;var a=qr();var n=0;for(var i=0;i255||d.e.r>=v){if(r.WTF)throw new Error("Range "+(i["!ref"]||"A1")+" exceeds format limit A1:IV16384");d.e.c=Math.min(d.e.c,255);d.e.r=Math.min(d.e.c,v-1)}Lp(a,2057,Di(t,16,r));Lp(a,"CalcMode",Yn(1));Lp(a,"CalcCount",Yn(100));Lp(a,"CalcRefMode",Kn(true));Lp(a,"CalcIter",Kn(false));Lp(a,"CalcDelta",Jt(.001));Lp(a,"CalcSaveRecalc",Kn(true));Lp(a,"PrintRowCol",Kn(false));Lp(a,"PrintGrid",Kn(false));Lp(a,"GridSet",Yn(1));Lp(a,"Guts",ms([0,0]));Lp(a,"HCenter",Kn(false));Lp(a,"VCenter",Kn(false));Lp(a,512,os(d,r));if(l)i["!links"]=[];for(var p=d.s.r;p<=d.e.r;++p){u=ot(p);for(var m=d.s.c;m<=d.e.c;++m){if(p===d.s.r)h[m]=ht(m);c=h[m]+u;var b=o?(i[p]||[])[m]:i[c];if(!b)continue;Zp(a,b,p,m,r); -if(l&&b.l)i["!links"].push([c,b.l])}}var g=f.CodeName||f.name||n;if(l)Lp(a,"Window2",Zi((s.Views||[])[0]));if(l&&(i["!merges"]||[]).length)Lp(a,"MergeCells",Ps(i["!merges"]));if(l)Yp(a,i);Lp(a,"CodeName",ii(g,r));if(l)Kp(a,i);Lp(a,"EOF");return a.end()}function Qp(e,r,t){var a=qr();var n=(e||{}).Workbook||{};var i=n.Sheets||[];var s=n.WBProps||{};var f=t.biff==8,o=t.biff==5;Lp(a,2057,Di(e,5,t));if(t.bookType=="xla")Lp(a,"Addin");Lp(a,"InterfaceHdr",f?Yn(1200):null);Lp(a,"Mms",Xn(2));if(o)Lp(a,"ToolbarHdr");if(o)Lp(a,"ToolbarEnd");Lp(a,"InterfaceEnd");Lp(a,"WriteAccess",Ni("SheetJS",t));Lp(a,"CodePage",Yn(f?1200:1252));if(f)Lp(a,"DSF",Yn(0));if(f)Lp(a,"Excel9File");Lp(a,"RRTabId",Qs(e.SheetNames.length));if(f&&e.vbaraw)Lp(a,"ObProj");if(f&&e.vbaraw){var l=s.CodeName||"ThisWorkbook";Lp(a,"CodeName",ii(l,t))}Lp(a,"BuiltInFnGroupCount",Yn(17));Lp(a,"WinProtect",Kn(false));Lp(a,"Protect",Kn(false));Lp(a,"Password",Yn(0));if(f)Lp(a,"Prot4Rev",Kn(false));if(f)Lp(a,"Prot4RevPass",Yn(0));Lp(a,"Window1",$i(t));Lp(a,"Backup",Kn(false));Lp(a,"HideObj",Yn(0));Lp(a,"Date1904",Kn(hv(e)=="true"));Lp(a,"CalcPrecision",Kn(true));if(f)Lp(a,"RefreshAll",Kn(false));Lp(a,"BookBool",Yn(0));Gp(a,e,t);jp(a,e.SSF,t);$p(a,t);if(f)Lp(a,"UsesELFs",Kn(false));var c=a.end();var u=qr();if(f)Lp(u,"Country",Gs());if(f&&t.Strings)Mp(u,"SST",Hi(t.Strings,t));Lp(u,"EOF");var h=u.end();var d=qr();var v=0,p=0;for(p=0;p/g,"");var n=e.match(/");var i=e.match(/<\/table/i);var s=n.index,f=i&&i.index||e.length;var o=pe(e.slice(s,f),/(:?]*>)/i,"");var l=-1,c=0,u=0,h=0;var d={s:{r:1e7,c:1e7},e:{r:0,c:0}};var v=[];for(s=0;s/i);for(f=0;f"))>-1)k=k.slice(E+1);for(var S=0;S")));h=C.colspan?+C.colspan:1;if((u=+C.rowspan)>1||h>1)v.push({s:{r:l,c:c},e:{r:l+(u||1)-1,c:c+h-1}});var B=C.t||"";if(!k.length){c+=h;continue}k=rr(k);if(d.s.r>l)d.s.r=l;if(d.e.rc)d.s.c=c;if(d.e.ct||n[l].s.c>s)continue;if(n[l].e.r1)d.rowspan=f;if(o>1)d.colspan=o;d.t=u&&u.t||"z";if(a.editable)h=''+h+"";d.id=(a.id||"sjs")+"-"+c;if(d.t!="z"){d.v=u.v;if(u.z!=null)d.z=u.z}i.push(lr("td",h,d))}var v="";return v+i.join("")+""}function a(e,r,t){var a=[];return a.join("")+""}var n='SheetJS Table Export';var i="";function s(e,r){var s=r||{};var f=s.header!=null?s.header:n;var o=s.footer!=null?s.footer:i;var l=[f];var c=gt(e["!ref"]);s.dense=Array.isArray(e);l.push(a(e,c,s));for(var u=c.s.r;u<=c.e.r;++u)l.push(t(e,c,u,s));l.push("
"+o);return l.join("")}return{to_workbook:r,to_sheet:e,_row:t,BEGIN:n,END:i,_preamble:a,from_sheet:s}}();function tm(e,r,t){var a=t||{};if(m!=null)a.dense=m;var n=0,i=0;if(a.origin!=null){if(typeof a.origin=="number")n=a.origin;else{var s=typeof a.origin=="string"?mt(a.origin):a.origin;n=s.r;i=s.c}}var f=r.getElementsByTagName("tr");var o=Math.min(a.sheetRows||1e7,f.length);var l={s:{r:0,c:0},e:{r:n,c:i}};if(e["!ref"]){var c=gt(e["!ref"]);l.s.r=Math.min(l.s.r,c.s.r);l.s.c=Math.min(l.s.c,c.s.c);l.e.r=Math.max(l.e.r,c.e.r);l.e.c=Math.max(l.e.c,c.e.c);if(n==-1)l.e.r=n=c.e.r+1}var u=[],h=0;var d=e["!rows"]||(e["!rows"]=[]);var v=0,p=0,b=0,g=0,w=0,k=0;if(!e["!cols"])e["!cols"]=[];for(;v1||k>1)u.push({s:{r:p+n,c:g+i},e:{r:p+n+(w||1)-1,c:g+i+(k||1)-1}});var y={t:"s",v:C};var x=_.getAttribute("t")||"";if(C!=null){if(C.length==0)y.t=x||"z";else if(a.raw||C.trim().length==0||x=="s"){}else if(C==="TRUE")y={t:"b",v:true};else if(C==="FALSE")y={t:"b",v:false};else if(!isNaN(he(C)))y={t:"n",v:he(C)};else if(!isNaN(de(C).getDate())){y={t:"d",v:oe(C)};if(!a.cellDates)y={t:"n",v:ee(y.v)};y.z=a.dateNF||D._table[14]}}if(y.z===undefined&&B!=null)y.z=B;if(a.dense){if(!e[p+n])e[p+n]=[];e[p+n][g+i]=y}else e[bt({c:g+i,r:p+n})]=y;if(l.e.c=o)e["!fullref"]=wt((l.e.r=f.length-v+p-1+n,l));return e}function am(e,r){var t=r||{};var a=t.dense?[]:{};return tm(a,e,r)}function nm(e,r){return _t(am(e,r),r)}function im(e){var r="";var t=sm(e);if(t)r=t(e).getPropertyValue("display");if(!r)r=e.style.display;return r==="none"}function sm(e){if(e.ownerDocument.defaultView&&typeof e.ownerDocument.defaultView.getComputedStyle==="function")return e.ownerDocument.defaultView.getComputedStyle;if(typeof getComputedStyle==="function")return getComputedStyle;return null}var fm=function(){var e=function(e){var r=e.replace(/[\t\r\n]/g," ").trim().replace(/ +/g," ").replace(//g," ").replace(//g,function(e,r){return Array(parseInt(r,10)+1).join(" ")}).replace(/]*\/>/g,"\t").replace(//g,"\n");var t=Me(r.replace(/<[^>]*>/g,""));return[t]};var r={day:["d","dd"],month:["m","mm"],year:["y","yy"],hours:["h","hh"],minutes:["m","mm"],seconds:["s","ss"],"am-pm":["A/P","AM/PM"],"day-of-week":["ddd","dddd"],era:["e","ee"],quarter:["\\Qm",'m\\"th quarter"']};return function t(a,n){var i=n||{};if(m!=null&&i.dense==null)i.dense=m;var s=sp(a);var f=[],o;var l;var c={name:""},u="",h=0;var d;var v;var p={},b=[];var g=i.dense?[]:{};var w,k;var E={value:""};var S="",_=0,C;var B=[];var T=-1,y=-1,x={s:{r:1e6,c:1e7},e:{r:0,c:0}};var A=0;var I={};var R=[],O={},D=0,F=0;var P=[],N=1,L=1;var M=[];var U={Names:[]};var z={};var H=["",""];var W=[],V={};var X="",G=0;var j=false,K=false;var $=0;fp.lastIndex=0;s=s.replace(//gm,"").replace(//gm,"");while(w=fp.exec(s))switch(w[3]=w[3].replace(/_.*$/,"")){case"table":;case"工作表":if(w[1]==="/"){if(x.e.c>=x.s.c&&x.e.r>=x.s.r)g["!ref"]=wt(x);else g["!ref"]="A1:A1";if(i.sheetRows>0&&i.sheetRows<=x.e.r){g["!fullref"]=g["!ref"];x.e.r=i.sheetRows-1;g["!ref"]=wt(x)}if(R.length)g["!merges"]=R;if(P.length)g["!rows"]=P;d.name=d["名称"]||d.name;if(typeof JSON!=="undefined")JSON.stringify(d);b.push(d.name);p[d.name]=g;K=false}else if(w[0].charAt(w[0].length-2)!=="/"){d=Fe(w[0],false);T=y=-1;x.s.r=x.s.c=1e7;x.e.r=x.e.c=0;g=i.dense?[]:{};R=[];P=[];K=true}break;case"table-row-group":if(w[1]==="/")--A;else++A;break;case"table-row":;case"行":if(w[1]==="/"){T+=N;N=1;break}v=Fe(w[0],false);if(v["行号"])T=v["行号"]-1;else if(T==-1)T=0;N=+v["number-rows-repeated"]||1;if(N<10)for($=0;$0)P[T+$]={level:A};y=-1;break;case"covered-table-cell":if(w[1]!=="/")++y;if(i.sheetStubs){if(i.dense){if(!g[T])g[T]=[];g[T][y]={t:"z"}}else g[bt({r:T,c:y})]={t:"z"}}S="";B=[];break;case"table-cell":;case"数据":if(w[0].charAt(w[0].length-2)==="/"){++y;E=Fe(w[0],false);L=parseInt(E["number-columns-repeated"]||"1",10);k={t:"z",v:null};if(E.formula&&i.cellFormula!=false)k.f=nh(Me(E.formula));if((E["数据类型"]||E["value-type"])=="string"){k.t="s";k.v=Me(E["string-value"]||"");if(i.dense){if(!g[T])g[T]=[];g[T][y]=k}else{g[bt({r:T,c:y})]=k}}y+=L-1}else if(w[1]!=="/"){++y;L=1;var Y=N?T+N-1:T;if(y>x.e.c)x.e.c=y;if(yx.e.r)x.e.r=Y;E=Fe(w[0],false);W=[];V={};k={t:E["数据类型"]||E["value-type"],v:null};if(i.cellFormula){if(E.formula)E.formula=Me(E.formula);if(E["number-matrix-columns-spanned"]&&E["number-matrix-rows-spanned"]){D=parseInt(E["number-matrix-rows-spanned"],10)||0;F=parseInt(E["number-matrix-columns-spanned"],10)||0;O={s:{r:T,c:y},e:{r:T+D-1,c:y+F-1}};k.F=wt(O);M.push([O,k.F])}if(E.formula)k.f=nh(E.formula);else for($=0;$=M[$][0].s.r&&T<=M[$][0].e.r)if(y>=M[$][0].s.c&&y<=M[$][0].e.c)k.F=M[$][1]}if(E["number-columns-spanned"]||E["number-rows-spanned"]){D=parseInt(E["number-rows-spanned"],10)||0;F=parseInt(E["number-columns-spanned"],10)||0;O={s:{r:T,c:y},e:{r:T+D-1,c:y+F-1}};R.push(O)}if(E["number-columns-repeated"])L=parseInt(E["number-columns-repeated"],10);switch(k.t){case"boolean":k.t="b";k.v=$e(E["boolean-value"]);break;case"float":k.t="n";k.v=parseFloat(E.value);break;case"percentage":k.t="n";k.v=parseFloat(E.value);break;case"currency":k.t="n";k.v=parseFloat(E.value);break;case"date":k.t="d";k.v=oe(E["date-value"]);if(!i.cellDates){k.t="n";k.v=ee(k.v)}k.z="m/d/yy";break;case"time":k.t="n";k.v=ie(E["time-value"])/86400;break;case"number":k.t="n";k.v=parseFloat(E["数据数值"]);break;default:if(k.t==="string"||k.t==="text"||!k.t){k.t="s";if(E["string-value"]!=null){S=Me(E["string-value"]);B=[]}}else throw new Error("Unsupported value type "+k.t);}}else{j=false;if(k.t==="s"){k.v=S||"";if(B.length)k.R=B;j=_==0}if(z.Target)k.l=z;if(W.length>0){k.c=W;W=[]}if(S&&i.cellText!==false)k.w=S;if(j){k.t="z";delete k.v}if(!j||i.sheetStubs){if(!(i.sheetRows&&i.sheetRows<=T)){for(var Z=0;Z0)g[T+Z][y+L]=ce(k)}else{g[bt({r:T+Z,c:y})]=k;while(--L>0)g[bt({r:T+Z,c:y+L})]=ce(k)}if(x.e.c<=y)x.e.c=y}}}L=parseInt(E["number-columns-repeated"]||"1",10);y+=L-1;L=0;k={};S="";B=[]}z={};break;case"document":;case"document-content":;case"电子表格文档":;case"spreadsheet":;case"主体":;case"scripts":;case"styles":;case"font-face-decls":if(w[1]==="/"){if((o=f.pop())[0]!==w[3])throw"Bad state: "+o}else if(w[0].charAt(w[0].length-2)!=="/")f.push([w[3],true]);break;case"annotation":if(w[1]==="/"){if((o=f.pop())[0]!==w[3])throw"Bad state: "+o;V.t=S;if(B.length)V.R=B;V.a=X;W.push(V)}else if(w[0].charAt(w[0].length-2)!=="/"){f.push([w[3],false])}X="";G=0;S="";_=0;B=[];break;case"creator":if(w[1]==="/"){X=s.slice(G,w.index)}else G=w.index+w[0].length;break;case"meta":;case"元数据":;case"settings":;case"config-item-set":;case"config-item-map-indexed":;case"config-item-map-entry":;case"config-item-map-named":;case"shapes":;case"frame":;case"text-box":;case"image":;case"data-pilot-tables":;case"list-style":;case"form":;case"dde-links":;case"event-listeners":;case"chart":if(w[1]==="/"){if((o=f.pop())[0]!==w[3])throw"Bad state: "+o}else if(w[0].charAt(w[0].length-2)!=="/")f.push([w[3],false]);S="";_=0;B=[];break;case"scientific-number":break;case"currency-symbol":break;case"currency-style":break;case"number-style":;case"percentage-style":;case"date-style":;case"time-style":if(w[1]==="/"){I[c.name]=u;if((o=f.pop())[0]!==w[3])throw"Bad state: "+o}else if(w[0].charAt(w[0].length-2)!=="/"){u="";c=Fe(w[0],false);f.push([w[3],true])}break;case"script":break;case"libraries":break;case"automatic-styles":break;case"master-styles":break;case"default-style":;case"page-layout":break;case"style":break;case"map":break;case"font-face":break;case"paragraph-properties":break;case"table-properties":break;case"table-column-properties":break;case"table-row-properties":break;case"table-cell-properties":break;case"number":switch(f[f.length-1][0]){case"time-style":;case"date-style":l=Fe(w[0],false);u+=r[w[3]][l.style==="long"?1:0];break;}break;case"fraction":break;case"day":;case"month":;case"year":;case"era":;case"day-of-week":;case"week-of-year":;case"quarter":;case"hours":;case"minutes":;case"seconds":;case"am-pm":switch(f[f.length-1][0]){case"time-style":;case"date-style":l=Fe(w[0],false);u+=r[w[3]][l.style==="long"?1:0];break;}break;case"boolean-style":break;case"boolean":break;case"text-style":break;case"text":if(w[0].slice(-2)==="/>")break;else if(w[1]==="/")switch(f[f.length-1][0]){case"number-style":;case"date-style":;case"time-style":u+=s.slice(h,w.index);break;}else h=w.index+w[0].length;break;case"named-range":l=Fe(w[0],false);H=sh(l["cell-range-address"]);var J={Name:l.name,Ref:H[0]+"!"+H[1]};if(K)J.Sheet=b.length;U.Names.push(J);break;case"text-content":break;case"text-properties":break;case"embedded-text":break;case"body":;case"电子表格":break;case"forms":break;case"table-column":break;case"table-header-rows":break;case"table-rows":break;case"table-column-group":break;case"table-header-columns":break;case"table-columns":break;case"null-date":break;case"graphic-properties":break;case"calculation-settings":break;case"named-expressions":break;case"label-range":break;case"label-ranges":break;case"named-expression":break;case"sort":break;case"sort-by":break;case"sort-groups":break;case"tab":break;case"line-break":break;case"span":break;case"p":;case"文本串":if(w[1]==="/"&&(!E||!E["string-value"])){var Q=e(s.slice(_,w.index),C);S=(S.length>0?S+"\n":"")+Q[0]}else{C=Fe(w[0],false);_=w.index+w[0].length}break;case"s":break;case"database-range":if(w[1]==="/")break;try{H=sh(Fe(w[0])["target-range-address"]);p[H[0]]["!autofilter"]={ref:H[1]}}catch(q){}break;case"date":break;case"object":break;case"title":;case"标题":break;case"desc":break;case"binary-data":break;case"table-source":break;case"scenario":break;case"iteration":break;case"content-validations":break;case"content-validation":break;case"help-message":break;case"error-message":break;case"database-ranges":break;case"filter":break;case"filter-and":break;case"filter-or":break;case"filter-condition":break;case"list-level-style-bullet":break;case"list-level-style-number":break;case"list-level-properties":break;case"sender-firstname":;case"sender-lastname":;case"sender-initials":;case"sender-title":;case"sender-position":;case"sender-email":;case"sender-phone-private":;case"sender-fax":;case"sender-company":;case"sender-phone-work":;case"sender-street":;case"sender-city":;case"sender-postal-code":;case"sender-country":;case"sender-state-or-province":;case"author-name":;case"author-initials":;case"chapter":;case"file-name":;case"template-name":;case"sheet-name":break;case"event-listener":break;case"initial-creator":;case"creation-date":;case"print-date":;case"generator":;case"document-statistic":;case"user-defined":;case"editing-duration":;case"editing-cycles":break;case"config-item":break;case"page-number":break;case"page-count":break;case"time":break;case"cell-range-source":break;case"detective":break;case"operation":break;case"highlighted-range":break;case"data-pilot-table":;case"source-cell-range":;case"source-service":;case"data-pilot-field":;case"data-pilot-level":;case"data-pilot-subtotals":;case"data-pilot-subtotal":;case"data-pilot-members":;case"data-pilot-member":;case"data-pilot-display-info":;case"data-pilot-sort-info":;case"data-pilot-layout-info":;case"data-pilot-field-reference":;case"data-pilot-groups":;case"data-pilot-group":;case"data-pilot-group-member":break;case"rect":break;case"dde-connection-decls":;case"dde-connection-decl":;case"dde-link":;case"dde-source":break;case"properties":break;case"property":break;case"a":if(w[1]!=="/"){z=Fe(w[0],false);if(!z.href)break;z.Target=z.href;delete z.href;if(z.Target.charAt(0)=="#"&&z.Target.indexOf(".")>-1){H=sh(z.Target.slice(1));z.Target="#"+H[0]+"!"+H[1]}}break;case"table-protection":break;case"data-pilot-grand-total":break;case"office-document-common-attrs":break;default:switch(w[2]){case"dc:":;case"calcext:":;case"loext:":;case"ooo:":;case"chartooo:":;case"draw:":;case"style:":;case"chart:":;case"form:":;case"uof:":;case"表:":;case"字:":break;default:if(i.WTF)throw new Error(w);};}var re={Sheets:p,SheetNames:b,Workbook:U};if(i.bookSheets)delete re.Sheets;return re}}();function om(e,r){r=r||{};var t=!!we(e,"objectdata");if(t)ja(Ee(e,"META-INF/manifest.xml"),r);var a=Se(e,"content.xml");if(!a)throw new Error("Missing content.xml in "+(t?"ODS":"UOF")+" file");var n=fm(t?a:Ye(a),r);if(we(e,"meta.xml"))n.Props=en(Ee(e,"meta.xml"));return n}function lm(e,r){return fm(e,r)}var cm=function(){var e="";return function r(){return Ae+e}}();var um=function(){var e=function(e){return He(e).replace(/ +/g,function(e){return''}).replace(/\t/g,"").replace(/\n/g,"").replace(/^ /,"").replace(/ $/,"")};var r=" \n";var t=" \n";var a=function(a,n,i){var s=[];s.push(' \n');var f=0,o=0,l=gt(a["!ref"]);var c=a["!merges"]||[],u=0;var h=Array.isArray(a);for(f=0;f\n");for(;f<=l.e.r;++f){s.push(" \n");for(o=0;oo)continue;if(c[u].s.r>f)continue;if(c[u].e.c\n")}s.push(" \n");return s.join("")};var n=function(e){e.push(" \n");e.push(' \n');e.push(' \n');e.push(" /\n");e.push(' \n');e.push(" /\n");e.push(" \n");e.push(" \n");e.push(' \n');e.push(' \n');e.push(" \n");e.push(' \n');e.push(" \n")};return function i(e,r){var t=[Ae];var i=or({"xmlns:office":"urn:oasis:names:tc:opendocument:xmlns:office:1.0","xmlns:table":"urn:oasis:names:tc:opendocument:xmlns:table:1.0","xmlns:style":"urn:oasis:names:tc:opendocument:xmlns:style:1.0","xmlns:text":"urn:oasis:names:tc:opendocument:xmlns:text:1.0","xmlns:draw":"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0","xmlns:fo":"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0","xmlns:xlink":"http://www.w3.org/1999/xlink","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:meta":"urn:oasis:names:tc:opendocument:xmlns:meta:1.0","xmlns:number":"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0","xmlns:presentation":"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0","xmlns:svg":"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0","xmlns:chart":"urn:oasis:names:tc:opendocument:xmlns:chart:1.0","xmlns:dr3d":"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0","xmlns:math":"http://www.w3.org/1998/Math/MathML","xmlns:form":"urn:oasis:names:tc:opendocument:xmlns:form:1.0","xmlns:script":"urn:oasis:names:tc:opendocument:xmlns:script:1.0","xmlns:ooo":"http://openoffice.org/2004/office","xmlns:ooow":"http://openoffice.org/2004/writer","xmlns:oooc":"http://openoffice.org/2004/calc","xmlns:dom":"http://www.w3.org/2001/xml-events","xmlns:xforms":"http://www.w3.org/2002/xforms","xmlns:xsd":"http://www.w3.org/2001/XMLSchema","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","xmlns:sheet":"urn:oasis:names:tc:opendocument:sh33tjs:1.0","xmlns:rpt":"http://openoffice.org/2005/report","xmlns:of":"urn:oasis:names:tc:opendocument:xmlns:of:1.2","xmlns:xhtml":"http://www.w3.org/1999/xhtml","xmlns:grddl":"http://www.w3.org/2003/g/data-view#","xmlns:tableooo":"http://openoffice.org/2009/table","xmlns:drawooo":"http://openoffice.org/2010/draw","xmlns:calcext":"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0","xmlns:loext":"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0","xmlns:field":"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0","xmlns:formx":"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0","xmlns:css3t":"http://www.w3.org/TR/css3-text/","office:version":"1.2"});var s=or({"xmlns:config":"urn:oasis:names:tc:opendocument:xmlns:config:1.0","office:mimetype":"application/vnd.oasis.opendocument.spreadsheet"});if(r.bookType=="fods")t.push("\n");else t.push("\n");n(t);t.push(" \n");t.push(" \n");for(var f=0;f!=e.SheetNames.length;++f)t.push(a(e.Sheets[e.SheetNames[f]],e,f,r));t.push(" \n");t.push(" \n");if(r.bookType=="fods")t.push("");else t.push("");return t.join("")}}();function hm(e,r){if(r.bookType=="fods")return um(e,r);var t=Te();var a="";var n=[];var i=[];a="mimetype";Ce(t,a,"application/vnd.oasis.opendocument.spreadsheet");a="content.xml";Ce(t,a,um(e,r));n.push([a,"text/xml"]);i.push([a,"ContentFile"]);a="styles.xml";Ce(t,a,cm(e,r));n.push([a,"text/xml"]);i.push([a,"StylesFile"]);a="meta.xml";Ce(t,a,Ja());n.push([a,"text/xml"]);i.push([a,"MetadataFile"]);a="manifest.rdf";Ce(t,a,Za(i));n.push([a,"application/rdf+xml"]);a="META-INF/manifest.xml";Ce(t,a,Ka(n));return t}function dm(e,r){if(!r)return 0;var t=e.SheetNames.indexOf(r);if(t==-1)throw new Error("Sheet not found: "+r);return t}function vm(e){return function r(t,a){var n=dm(t,a.sheet);return e.from_sheet(t.Sheets[t.SheetNames[n]],a,t)}}var pm=vm(rm);var mm=vm({from_sheet:nb});var bm=vm(typeof df!=="undefined"?df:{});var gm=vm(typeof vf!=="undefined"?vf:{});var wm=vm(typeof mf!=="undefined"?mf:{});var km=vm(typeof so!=="undefined"?so:{});var Em=vm({from_sheet:ib});var Sm=vm(typeof hf!=="undefined"?hf:{});var _m=vm(typeof pf!=="undefined"?pf:{});function Cm(e){return function r(t){for(var a=0;a!=e.length;++a){var n=e[a];if(t[n[0]]===undefined)t[n[0]]=n[1];if(n[2]==="n")t[n[0]]=Number(t[n[0]])}}}var Bm=function(e){Cm([["cellNF",false],["cellHTML",true],["cellFormula",true],["cellStyles",false],["cellText",true],["cellDates",false],["sheetStubs",false],["sheetRows",0,"n"],["bookDeps",false],["bookSheets",false],["bookProps",false],["bookFiles",false],["bookVBA",false],["password",""],["WTF",false]])(e)};var Tm=Cm([["cellDates",false],["bookSST",false],["bookType","xlsx"],["compression",false],["WTF",false]]);function ym(e){if(Ma.WS.indexOf(e)>-1)return"sheet";if(Ma.CS&&e==Ma.CS)return"chart";if(Ma.DS&&e==Ma.DS)return"dialog";if(Ma.MS&&e==Ma.MS)return"macro";return e&&e.length?e:"sheet"}function xm(e,r){if(!e)return 0;try{e=r.map(function a(r){if(!r.id)r.id=r.strRelID;return[r.name,e["!id"][r.id].Target,ym(e["!id"][r.id].Type)]})}catch(t){return null}return!e||e.length===0?null:e}function Am(e,r,t,a,n,i,s,f,o,l,c,u){try{i[a]=za(Se(e,t,true),r);var h=Ee(e,r);var d;switch(f){case"sheet":d=Fv(h,r,n,o,i[a],l,c,u);break;case"chart":d=Pv(h,r,n,o,i[a],l,c,u);if(!d||!d["!drawel"])break;var v=xe(d["!drawel"].Target,r);var p=Ua(v);var m=Ll(Se(e,v,true),za(Se(e,p,true),v));var b=xe(m,v);var g=Ua(b);d=Qd(Se(e,b,true),b,o,za(Se(e,g,true),b),l,d);break;case"macro":d=Nv(h,r,n,o,i[a],l,c,u);break;case"dialog":d=Lv(h,r,n,o,i[a],l,c,u);break;default:throw new Error("Unrecognized sheet type "+f);}s[a]=d;var w=[];if(i&&i[a])K(i[a]).forEach(function(t){if(i[a][t].Type==Ma.CMNT){var n=xe(i[a][t].Target,r);w=Hv(Ee(e,n,true),n,o);if(!w||!w.length)return;zl(d,w)}})}catch(k){if(o.WTF)throw k}}function Im(e){return e.charAt(0)=="/"?e.slice(1):e}function Rm(e,r){F(D);r=r||{};Bm(r);if(we(e,"META-INF/manifest.xml"))return om(e,r);if(we(e,"objectdata.xml"))return om(e,r);if(we(e,"Index/Document.iwa"))throw new Error("Unsupported NUMBERS file");var t=_e(e);var a=Fa(Se(e,"[Content_Types].xml"));var n=false;var i,s;if(a.workbooks.length===0){s="xl/workbook.xml";if(Ee(e,s,true))a.workbooks.push(s)}if(a.workbooks.length===0){s="xl/workbook.bin";if(!Ee(e,s,true))throw new Error("Could not find workbook");a.workbooks.push(s);n=true}if(a.workbooks[0].slice(-3)=="bin")n=true;var f={};var o={};if(!r.bookSheets&&!r.bookProps){oh=[];if(a.sst)try{oh=zv(Ee(e,Im(a.sst)),a.sst,r)}catch(l){if(r.WTF)throw l}if(r.cellStyles&&a.themes.length)f=Uv(Se(e,a.themes[0].replace(/^\//,""),true)||"",a.themes[0],r);if(a.style)o=Mv(Ee(e,Im(a.style)),a.style,f,r)}a.links.map(function(t){try{var a=za(Se(e,Ua(Im(t))),t);return Vv(Ee(e,Im(t)),a,t,r)}catch(n){}});var c=Dv(Ee(e,Im(a.workbooks[0])),a.workbooks[0],r);var u={},h="";if(a.coreprops.length){h=Ee(e,Im(a.coreprops[0]),true);if(h)u=en(h);if(a.extprops.length!==0){h=Ee(e,Im(a.extprops[0]),true);if(h)on(h,u,r)}}var d={};if(!r.bookSheets||r.bookProps){if(a.custprops.length!==0){h=Se(e,Im(a.custprops[0]),true);if(h)d=hn(h,r)}}var v={};if(r.bookSheets||r.bookProps){if(c.Sheets)i=c.Sheets.map(function I(e){return e.name});else if(u.Worksheets&&u.SheetNames.length>0)i=u.SheetNames;if(r.bookProps){v.Props=u;v.Custprops=d}if(r.bookSheets&&typeof i!=="undefined")v.SheetNames=i;if(r.bookSheets?v.SheetNames:r.bookProps)return v}i={};var p={};if(r.bookDeps&&a.calcchain)p=Wv(Ee(e,Im(a.calcchain)),a.calcchain,r);var m=0;var b={};var g,w;{var k=c.Sheets;u.Worksheets=k.length;u.SheetNames=[];for(var E=0;E!=k.length;++E){u.SheetNames[E]=k[E].name}}var S=n?"bin":"xml";var _=a.workbooks[0].lastIndexOf("/");var C=(a.workbooks[0].slice(0,_+1)+"_rels/"+a.workbooks[0].slice(_+1)+".rels").replace(/^\//,"");if(!we(e,C))C="xl/_rels/workbook."+S+".rels";var B=za(Se(e,C,true),C);if(B)B=xm(B,c.Sheets);var T=Ee(e,"xl/worksheets/sheet.xml",true)?1:0;e:for(m=0;m!=u.Worksheets;++m){var y="sheet";if(B&&B[m]){g="xl/"+B[m][1].replace(/[\/]?xl\//,"");if(!we(e,g))g=B[m][1];if(!we(e,g))g=C.replace(/_rels\/.*$/,"")+B[m][1];y=B[m][2]}else{g="xl/worksheets/sheet"+(m+1-T)+"."+S;g=g.replace(/sheet0\./,"sheet.")}w=g.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels");if(r&&r.sheets!=null)switch(typeof r.sheets){case"number":if(m!=r.sheets)continue e;break;case"string":if(u.SheetNames[m].toLowerCase()!=r.sheets.toLowerCase())continue e;break;default:if(Array.isArray&&Array.isArray(r.sheets)){var x=false;for(var A=0;A!=r.sheets.length;++A){if(typeof r.sheets[A]=="number"&&r.sheets[A]==m)x=1;if(typeof r.sheets[A]=="string"&&r.sheets[A].toLowerCase()==u.SheetNames[m].toLowerCase())x=1}if(!x)continue e};}Am(e,g,w,u.SheetNames[m],m,b,i,y,r,c,f,o)}v={Directory:a,Workbook:c,Props:u,Custprops:d,Deps:p,Sheets:i,SheetNames:u.SheetNames,Strings:oh,Styles:o,Themes:f,SSF:D.get_table()};if(r&&r.bookFiles){v.keys=t;v.files=e.files}if(r&&r.bookVBA){if(a.vba.length>0)v.vbaraw=Ee(e,Im(a.vba[0]),true);else if(a.defaults&&a.defaults.bin===Zl)v.vbaraw=Ee(e,"xl/vbaProject.bin",true)}return v}function Om(e,r){var t=r||{};var a="Workbook",n=W.find(e,a);try{a="/!DataSpaces/Version";n=W.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);Uf(n.content);a="/!DataSpaces/DataSpaceMap";n=W.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var i=Hf(n.content);if(i.length!==1||i[0].comps.length!==1||i[0].comps[0].t!==0||i[0].name!=="StrongEncryptionDataSpace"||i[0].comps[0].v!=="EncryptedPackage")throw new Error("ECMA-376 Encrypted file bad "+a);a="/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace";n=W.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var s=Wf(n.content);if(s.length!=1||s[0]!="StrongEncryptionTransform")throw new Error("ECMA-376 Encrypted file bad "+a);a="/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary";n=W.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);Xf(n.content)}catch(f){}a="/EncryptionInfo";n=W.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var o=Kf(n.content);a="/EncryptedPackage";n=W.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);if(o[0]==4&&typeof decrypt_agile!=="undefined")return decrypt_agile(o[1],n.content,t.password||"",t);if(o[0]==2&&typeof decrypt_std76!=="undefined")return decrypt_std76(o[1],n.content,t.password||"",t);throw new Error("File is password-protected")}function Dm(e,r){Ml=1024;if(r.bookType=="ods")return hm(e,r);if(e&&!e.SSF){e.SSF=D.get_table()}if(e&&e.SSF){F(D);D.load_table(e.SSF);r.revssf=J(e.SSF); -r.revssf[e.SSF[65535]]=0;r.ssf=e.SSF}r.rels={};r.wbrels={};r.Strings=[];r.Strings.Count=0;r.Strings.Unique=0;if(ch)r.revStrings=new Map;else{r.revStrings={};r.revStrings.foo=[];delete r.revStrings.foo}var t=r.bookType=="xlsb"?"bin":"xml";var a=ql.indexOf(r.bookType)>-1;var n=Da();Tm(r=r||{});var i=Te();var s="",f=0;r.cellXfs=[];vh(r.cellXfs,{},{revssf:{General:0}});if(!e.Props)e.Props={};s="docProps/core.xml";Ce(i,s,an(e.Props,r));n.coreprops.push(s);Xa(r.rels,2,s,Ma.CORE_PROPS);s="docProps/app.xml";if(e.Props&&e.Props.SheetNames){}else if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{var o=[];for(var l=0;l0){s="docProps/custom.xml";Ce(i,s,vn(e.Custprops,r));n.custprops.push(s);Xa(r.rels,4,s,Ma.CUST_PROPS)}for(f=1;f<=e.SheetNames.length;++f){var c={"!id":{}};var u=e.Sheets[e.SheetNames[f-1]];var h=(u||{})["!type"]||"sheet";switch(h){case"chart":;default:s="xl/worksheets/sheet"+f+"."+t;Ce(i,s,Gv(f-1,s,r,e,c));n.sheets.push(s);Xa(r.wbrels,-1,"worksheets/sheet"+f+"."+t,Ma.WS[0]);}if(u){var d=u["!comments"];var v=false;if(d&&d.length>0){var p="xl/comments"+f+"."+t;Ce(i,p,Yv(d,p,r));n.comments.push(p);Xa(c,-1,"../comments"+f+"."+t,Ma.CMNT);v=true}if(u["!legacy"]){if(v)Ce(i,"xl/drawings/vmlDrawing"+f+".vml",Ul(f,u["!comments"]))}delete u["!comments"];delete u["!legacy"]}if(c["!id"].rId1)Ce(i,Ua(s),Wa(c))}if(r.Strings!=null&&r.Strings.length>0){s="xl/sharedStrings."+t;Ce(i,s,$v(r.Strings,s,r));n.strs.push(s);Xa(r.wbrels,-1,"sharedStrings."+t,Ma.SST)}s="xl/workbook."+t;Ce(i,s,Xv(e,s,r));n.workbooks.push(s);Xa(r.rels,1,s,Ma.WB);s="xl/theme/theme1.xml";Ce(i,s,_l(e.Themes,r));n.themes.push(s);Xa(r.wbrels,-1,"theme/theme1.xml",Ma.THEME);s="xl/styles."+t;Ce(i,s,Kv(e,s,r));n.styles.push(s);Xa(r.wbrels,-1,"styles."+t,Ma.STY);if(e.vbaraw&&a){s="xl/vbaProject.bin";Ce(i,s,e.vbaraw);n.vba.push(s);Xa(r.wbrels,-1,"vbaProject.bin",Ma.VBA)}Ce(i,"[Content_Types].xml",La(n,r));Ce(i,"_rels/.rels",Wa(r.rels));Ce(i,"xl/_rels/workbook."+t+".rels",Wa(r.wbrels));delete r.revssf;delete r.ssf;return i}function Fm(e,r){var t="";switch((r||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case"base64":t=g.decode(e.slice(0,12));break;case"binary":t=e;break;case"array":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw new Error("Unrecognized type "+(r&&r.type||"undefined"));}return[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3),t.charCodeAt(4),t.charCodeAt(5),t.charCodeAt(6),t.charCodeAt(7)]}function Pm(e,r){if(W.find(e,"EncryptedPackage"))return Om(e,r);return Rp(e,r)}function Nm(e,r){var t,a=e;var n=r||{};if(!n.type)n.type=w&&Buffer.isBuffer(e)?"buffer":"base64";t=ye(a,n);return Rm(t,n)}function Lm(e,r){var t=0;e:while(t=2&&a[3]===0)return gf.to_workbook(t,i);break;case 3:;case 131:;case 139:;case 140:return hf.to_workbook(t,i);case 123:if(a[1]===92&&a[2]===114&&a[3]===116)return so.to_workbook(t,i);break;case 10:;case 13:;case 32:return Mm(t,i);}if(hf.versions.indexOf(a[0])>-1&&a[2]<=12&&a[3]<=31)return hf.to_workbook(t,i);return Hm(e,t,i,n)}function Vm(e,r){var t=r||{};t.type="file";return Wm(e,t)}function Xm(e,r){switch(r.type){case"base64":;case"binary":break;case"buffer":;case"array":r.type="";break;case"file":return G(r.file,W.write(e,{type:w?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+r.bookType+"' files");default:throw new Error("Unrecognized type "+r.type);}return W.write(e,r)}function Gm(e,r){var t=r||{};var a=Dm(e,t);var n={};if(t.compression)n.compression="DEFLATE";if(t.password)n.type=w?"nodebuffer":"string";else switch(t.type){case"base64":n.type="base64";break;case"binary":n.type="string";break;case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");case"buffer":;case"file":n.type=w?"nodebuffer":"string";break;default:throw new Error("Unrecognized type "+t.type);}var i=a.FullPaths?W.write(a,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[n.type]||n.type}):a.generate(n);if(t.password&&typeof encrypt_agile!=="undefined")return Xm(encrypt_agile(i,t.password),t);if(t.type==="file")return G(t.file,i);return t.type=="string"?Ye(i):i}function jm(e,r){var t=r||{};var a=Op(e,t);return Xm(a,t)}function Km(e,r,t){if(!t)t="";var a=t+e;switch(r.type){case"base64":return g.encode(Ze(a));case"binary":return Ze(a);case"string":return e;case"file":return G(r.file,a,"utf8");case"buffer":{if(w)return k(a,"utf8");else return Km(a,{type:"binary"}).split("").map(function(e){return e.charCodeAt(0)})};}throw new Error("Unrecognized type "+r.type)}function $m(e,r){switch(r.type){case"base64":return g.encode(e);case"binary":return e;case"string":return e;case"file":return G(r.file,e,"binary");case"buffer":{if(w)return k(e,"binary");else return e.split("").map(function(e){return e.charCodeAt(0)})};}throw new Error("Unrecognized type "+r.type)}function Ym(e,r){switch(r.type){case"string":;case"base64":;case"binary":var t="";for(var a=0;a0)n=0;var u=ot(o.s.r);var h=[];var d=[];var v=0,p=0;var m=Array.isArray(e);var b=o.s.r,g=0,w=0;if(m&&!e[b])e[b]=[];for(g=o.s.c;g<=o.e.c;++g){h[g]=ht(g);t=m?e[b][g]:e[h[g]+u];switch(a){case 1:i[g]=g-o.s.c;break;case 2:i[g]=h[g];break;case 3:i[g]=l.header[g-o.s.c];break;default:if(t==null)t={w:"__EMPTY",t:"s"};f=s=St(t,null,l);p=0;for(w=0;w=0)c='"'+c.replace(tb,'""')+'"'}else c="";l.push(c)}if(f.blankrows===false&&o)return null;return l.join(s)}function nb(e,r){var t=[];var a=r==null?{}:r;if(e==null||e["!ref"]==null)return"";var n=kt(e["!ref"]);var i=a.FS!==undefined?a.FS:",",s=i.charCodeAt(0);var f=a.RS!==undefined?a.RS:"\n",o=f.charCodeAt(0);var l=new RegExp((i=="|"?"\\|":i)+"+$");var c="",u=[];a.dense=Array.isArray(e);var h=a.skipHidden&&e["!cols"]||[];var d=a.skipHidden&&e["!rows"]||[];for(var v=n.s.c;v<=n.e.c;++v)if(!(h[v]||{}).hidden)u[v]=ht(v);for(var p=n.s.r;p<=n.e.r;++p){if((d[p]||{}).hidden)continue;c=ab(e,n,p,u,s,o,i,a);if(c==null){continue}if(a.strip)c=c.replace(l,"");t.push(c+f)}delete a.dense;return t.join("")}function ib(e,r){if(!r)r={};r.FS="\t";r.RS="\n";var t=nb(e,r);if(typeof cptable=="undefined"||r.type=="string")return t;var a=cptable.utils.encode(1200,t,"str");return String.fromCharCode(255)+String.fromCharCode(254)+a}function sb(e){var r="",t,a="";if(e==null||e["!ref"]==null)return[];var n=kt(e["!ref"]),i="",s=[],f;var o=[];var l=Array.isArray(e);for(f=n.s.c;f<=n.e.c;++f)s[f]=ht(f);for(var c=n.s.r;c<=n.e.r;++c){i=ot(c);for(f=n.s.c;f<=n.e.c;++f){r=s[f]+i;t=l?(e[c]||[])[f]:e[r];a="";if(t===undefined)continue;else if(t.F!=null){r=t.F;if(!t.f)continue;a=t.f;if(r.indexOf(":")==-1)r=r+":"+r}if(t.f!=null)a=t.f;else if(t.t=="z")continue;else if(t.t=="n"&&t.v!=null)a=""+t.v;else if(t.t=="b")a=t.v?"TRUE":"FALSE";else if(t.w!==undefined)a="'"+t.w;else if(t.v===undefined)continue;else if(t.t=="s")a="'"+t.v;else a=""+t.v;o[o.length]=r+"="+a}}return o}function fb(e,r,t){var a=t||{};var n=+!a.skipHeader;var i=e||{};var s=0,f=0;if(i&&a.origin!=null){if(typeof a.origin=="number")s=a.origin;else{var o=typeof a.origin=="string"?mt(a.origin):a.origin;s=o.r;f=o.c}}var l;var c={s:{c:0,r:0},e:{c:f,r:s+r.length-1+n}};if(i["!ref"]){var u=kt(i["!ref"]);c.e.c=Math.max(c.e.c,u.e.c);c.e.r=Math.max(c.e.r,u.e.r);if(s==-1){s=u.e.r+1;c.e.r=s+r.length-1+n}}else{if(s==-1){s=0;c.e.r=r.length-1+n}}var h=a.header||[],d=0;r.forEach(function(e,r){K(e).forEach(function(t){if((d=h.indexOf(t))==-1)h[d=h.length]=t;var o=e[t];var c="z";var u="";var v=bt({c:f+d,r:s+r+n});l=lb.sheet_get_cell(i,v);if(o&&typeof o==="object"&&!(o instanceof Date)){i[v]=o}else{if(typeof o=="number")c="n";else if(typeof o=="boolean")c="b";else if(typeof o=="string")c="s";else if(o instanceof Date){c="d";if(!a.cellDates){c="n";o=ee(o)}u=a.dateNF||D._table[14]}if(!l)i[v]=l={t:c,v:o};else{l.t=c;l.v=o;delete l.w;delete l.R;if(u)l.z=u}if(u)l.z=u}})});c.e.c=Math.max(c.e.c,f+h.length-1);var v=ot(s);if(n)for(d=0;d=0&&e.SheetNames.length>r)return r;throw new Error("Cannot find sheet # "+r)}else if(typeof r=="string"){var t=e.SheetNames.indexOf(r);if(t>-1)return t;throw new Error("Cannot find sheet name |"+r+"|")}else throw new Error("Cannot find sheet |"+r+"|")}e.book_new=function(){return{SheetNames:[],Sheets:{}}};e.book_append_sheet=function(e,r,t){if(!t)for(var a=1;a<=65535;++a,t=undefined)if(e.SheetNames.indexOf(t="Sheet"+a)==-1)break;if(!t||e.SheetNames.length>=65535)throw new Error("Too many worksheets");vv(t);if(e.SheetNames.indexOf(t)>=0)throw new Error("Worksheet with name |"+t+"| already exists!");e.SheetNames.push(t);e.Sheets[t]=r};e.book_set_sheet_visibility=function(e,r,a){t(e,"Workbook",{});t(e.Workbook,"Sheets",[]);var i=n(e,r);t(e.Workbook.Sheets,i,{});switch(a){case 0:;case 1:;case 2:break;default:throw new Error("Bad sheet visibility setting "+a);}e.Workbook.Sheets[i].Hidden=a};r([["SHEET_VISIBLE",0],["SHEET_HIDDEN",1],["SHEET_VERY_HIDDEN",2]]);e.cell_set_number_format=function(e,r){e.z=r;return e};e.cell_set_hyperlink=function(e,r,t){if(!r){delete e.l}else{e.l={Target:r};if(t)e.l.Tooltip=t}return e};e.cell_set_internal_link=function(r,t,a){return e.cell_set_hyperlink(r,"#"+t,a)};e.cell_add_comment=function(e,r,t){if(!e.c)e.c=[];e.c.push({t:r,a:t||"SheetJS"})};e.sheet_set_array_formula=function(e,r,t){var n=typeof r!="string"?r:kt(r);var i=typeof r=="string"?r:wt(r);for(var s=n.s.r;s<=n.e.r;++s)for(var f=n.s.c;f<=n.e.c;++f){var o=a(e,s,f);o.t="n";o.F=i;delete o.v;if(s==n.s.r&&f==n.s.c)o.f=t}return e};return e})(lb);if(w&&typeof require!="undefined")(function(){var r={}.Readable;var t=function(e,t){var a=r();var n=t==null?{}:t;if(e==null||e["!ref"]==null){a.push(null);return a}var i=kt(e["!ref"]);var s=n.FS!==undefined?n.FS:",",f=s.charCodeAt(0);var o=n.RS!==undefined?n.RS:"\n",l=o.charCodeAt(0);var c=new RegExp((s=="|"?"\\|":s)+"+$");var u="",h=[];n.dense=Array.isArray(e);var d=n.skipHidden&&e["!cols"]||[];var v=n.skipHidden&&e["!rows"]||[];for(var p=i.s.c;p<=i.e.c;++p)if(!(d[p]||{}).hidden)h[p]=ht(p);var m=i.s.r;var b=false;a._read=function(){if(!b){b=true;return a.push("\ufeff")}while(m<=i.e.r){++m;if((v[m-1]||{}).hidden)continue;u=ab(e,i,m-1,h,f,l,s,n);if(u!=null){if(n.strip)u=u.replace(c,"");a.push(u+o);break}}if(m>i.e.r)return a.push(null)};return a};var a=function(e,t){var a=r();var n=t||{};var i=n.header!=null?n.header:rm.BEGIN;var s=n.footer!=null?n.footer:rm.END;a.push(i);var f=gt(e["!ref"]);n.dense=Array.isArray(e);a.push(rm._preamble(e,f,n));var o=f.s.r;var l=false;a._read=function(){if(o>f.e.r){if(!l){l=true;a.push(""+s)}return a.push(null)}while(o<=f.e.r){a.push(rm._row(e,f,o,n));++o;break}};return a};var n=function(e,t){var a=r({objectMode:true});if(e==null||e["!ref"]==null){a.push(null);return a}var n={t:"n",v:0},i=0,s=1,f=[],o=0,l="";var c={s:{r:0,c:0},e:{r:0,c:0}};var u=t||{};var h=u.range!=null?u.range:e["!ref"];if(u.header===1)i=1;else if(u.header==="A")i=2;else if(Array.isArray(u.header))i=3;switch(typeof h){case"string":c=kt(h);break;case"number":c=kt(e["!ref"]);c.s.r=h;break;default:c=h;}if(i>0)s=0;var d=ot(c.s.r);var v=[];var p=0;var m=Array.isArray(e);var b=c.s.r,g=0,w=0;if(m&&!e[b])e[b]=[];for(g=c.s.c;g<=c.e.c;++g){v[g]=ht(g);n=m?e[b][g]:e[v[g]+d];switch(i){case 1:f[g]=g-c.s.c;break;case 2:f[g]=v[g];break;case 3:f[g]=u.header[g-c.s.c];break;default:if(n==null)n={w:"__EMPTY",t:"s"};l=o=St(n,null,u);p=0;for(w=0;wc.e.r)return a.push(null);while(b<=c.e.r){var r=eb(e,c,b,v,i,f,m,u);++b;if(r.isempty===false||(i===1?u.blankrows!==false:!!u.blankrows)){a.push(r.row);break}}};return a};e.stream={to_json:n,to_html:a,to_csv:t}})();if(typeof Rp!=="undefined")e.parse_xlscfb=Rp;e.parse_zip=Rm;e.read=Wm;e.readFile=Vm;e.readFileSync=Vm;e.write=Zm;e.writeFile=Qm;e.writeFileSync=Qm;e.writeFileAsync=qm;e.utils=lb;e.SSF=D;if(typeof W!=="undefined")e.CFB=W}if(typeof exports!=="undefined")make_xlsx_lib(exports);else if(typeof module!=="undefined"&&module.exports)make_xlsx_lib(module.exports);else if(typeof define==="function"&&define.amd)define(function(){if(!XLSX.version)make_xlsx_lib(XLSX);return XLSX});else make_xlsx_lib(XLSX);var XLS=XLSX,ODS=XLSX; diff --git a/public/static/plugs/layui/css/layui.css b/public/static/plugs/layui/css/layui.css deleted file mode 100644 index 831d1bc13..000000000 --- a/public/static/plugs/layui/css/layui.css +++ /dev/null @@ -1 +0,0 @@ -.layui-inline,img{display:inline-block;vertical-align:middle}h1,h2,h3,h4,h5,h6{font-weight:400}a,body{color:#333}.layui-edge,.layui-header,.layui-inline,.layui-main{position:relative}.layui-edge,hr{height:0;overflow:hidden}.layui-layout-body,.layui-side,.layui-side-scroll{overflow-x:hidden}.layui-edge,.layui-elip,hr{overflow:hidden}.layui-btn,.layui-edge,.layui-inline,img{vertical-align:middle}.layui-btn,.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{border:none}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h4,h5,h6{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{line-height:0;margin:10px 0;padding:0;border:none!important;border-bottom:1px solid #eee!important;clear:both;background:0 0}a{text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-inline{*display:inline;*zoom:1}.layui-btn,.layui-btn-group,.layui-edge{display:inline-block}.layui-edge{width:0;border-width:6px;border-style:dashed;border-color:transparent}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{text-overflow:ellipsis;white-space:nowrap}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=256);src:url(../font/iconfont.eot?v=256#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=256) format('woff2'),url(../font/iconfont.woff?v=256) format('woff'),url(../font/iconfont.ttf?v=256) format('truetype'),url(../font/iconfont.svg?v=256#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-search:before{content:"\e615"}.layui-icon-share:before{content:"\e641"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-engine:before{content:"\e628"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-star:before{content:"\e600"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-chat:before{content:"\e606"}.layui-icon-release:before{content:"\e609"}.layui-icon-list:before{content:"\e60a"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-ok-circle:before{content:"\1005"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-table:before{content:"\e62d"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-edit:before{content:"\e642"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-down:before{content:"\e61a"}.layui-icon-file:before{content:"\e621"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-read:before{content:"\e705"}.layui-icon-404:before{content:"\e61c"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-help:before{content:"\e607"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-water:before{content:"\e636"}.layui-icon-username:before{content:"\e66f"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-about:before{content:"\e60b"}.layui-icon-location:before{content:"\e715"}.layui-icon-up:before{content:"\e619"}.layui-icon-pause:before{content:"\e651"}.layui-icon-date:before{content:"\e637"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-delete:before{content:"\e640"}.layui-icon-play:before{content:"\e652"}.layui-icon-top:before{content:"\e604"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-friends:before{content:"\e612"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-ok:before{content:"\e605"}.layui-icon-layer:before{content:"\e638"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-group:before{content:"\e613"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-link:before{content:"\e64c"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-log:before{content:"\e60e"}.layui-icon-key:before{content:"\e683"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-return:before{content:"\e65c"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-form:before{content:"\e63c"}.layui-icon-cart:before{content:"\e657"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-ios:before{content:"\e680"}.layui-icon-at:before{content:"\e687"}.layui-icon-fire:before{content:"\e756"}.layui-icon-set:before{content:"\e716"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-tips:before{content:"\e702"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-addition:before{content:"\e624"}.layui-icon-home:before{content:"\e68e"}.layui-icon-time:before{content:"\e68d"}.layui-icon-user:before{content:"\e770"}.layui-icon-notice:before{content:"\e667"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-voice:before{content:"\e688"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-logout:before{content:"\e682"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-template:before{content:"\e663"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-auz:before{content:"\e672"}.layui-icon-console:before{content:"\e665"}.layui-icon-app:before{content:"\e653"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-next:before{content:"\e65b"}.layui-icon-component:before{content:"\e857"}.layui-icon-android:before{content:"\e684"}.layui-icon-more:before{content:"\e65f"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-camera:before{content:"\e660"}.layui-icon-note:before{content:"\e66e"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-password:before{content:"\e673"}.layui-icon-senior:before{content:"\e674"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-service:before{content:"\e626"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-print:before{content:"\e66d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-export:before{content:"\e67d"}.layui-icon-rss:before{content:"\e808"}.layui-icon-slider:before{content:"\e714"}.layui-icon-email:before{content:"\e618"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-light:before{content:"\e748"}.layui-icon-gift:before{content:"\e627"}.layui-icon-mute:before{content:"\e685"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-music:before{content:"\e690"}.layui-main{width:1140px;margin:0 auto}.layui-header{z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px}.layui-side-scroll{position:relative;width:220px;height:100%}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23262E}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#FAFAFA}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#009688;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;padding:0 15px;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:768px){.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:750px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:970px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1170px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.6;border-left:5px solid #5FB878;border-radius:0 2px 2px 0;background-color:#FAFAFA}.layui-quote-nm{border-style:solid;border-width:1px 1px 1px 5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px;font-weight:300}.layui-field-title{margin:10px 0 20px;border-width:1px 0 0}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#5FB878;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#666}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#FAFAFA;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#666}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card-body,.layui-card-header,.layui-form-label,.layui-form-mid,.layui-form-select,.layui-input-block,.layui-input-inline,.layui-panel,.layui-textarea{position:relative}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-form-select dl,.layui-panel{box-shadow:1px 1px 4px rgb(0 0 0 / 8%)}.layui-card:last-child{margin-bottom:0}.layui-card-header{height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f6f6f6;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{border-width:1px;border-style:solid;border-radius:2px;background-color:#fff;color:#666}.layui-bg-black,.layui-bg-blue,.layui-bg-cyan,.layui-bg-green,.layui-bg-orange,.layui-bg-red{color:#fff!important}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-border,.layui-border-black,.layui-border-blue,.layui-border-cyan,.layui-border-green,.layui-border-orange,.layui-border-red{border-width:1px;border-style:solid}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-bg-red{background-color:#FF5722!important}.layui-bg-orange{background-color:#FFB800!important}.layui-bg-green{background-color:#009688!important}.layui-bg-cyan{background-color:#2F4056!important}.layui-bg-blue{background-color:#1E9FFF!important}.layui-bg-black{background-color:#393D49!important}.layui-bg-gray{background-color:#FAFAFA!important;color:#666!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-layedit,.layui-layedit-tool,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{color:#666!important}.layui-border-red{border-color:#FF5722!important;color:#FF5722!important}.layui-border-orange{border-color:#FFB800!important;color:#FFB800!important}.layui-border-green{border-color:#009688!important;color:#009688!important}.layui-border-cyan{border-color:#2F4056!important;color:#2F4056!important}.layui-border-blue{border-color:#1E9FFF!important;color:#1E9FFF!important}.layui-border-black{border-color:#393D49!important;color:#393D49!important}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.6;font-size:14px;color:#666}.layui-text h1,.layui-text h2,.layui-text h3{font-weight:500;color:#333}.layui-text h1{font-size:30px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text a:not(.layui-btn){color:#01AAED}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text ul{padding:5px 0 5px 15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:10px 0}.layui-text p:first-child{margin-top:0}.layui-font-12{font-size:12px!important}.layui-font-14{font-size:14px!important}.layui-font-16{font-size:16px!important}.layui-font-18{font-size:18px!important}.layui-font-20{font-size:20px!important}.layui-font-red{color:#FF5722!important}.layui-font-orange{color:#FFB800!important}.layui-font-green{color:#009688!important}.layui-font-cyan{color:#2F4056!important}.layui-font-blue{color:#01AAED!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{height:38px;line-height:38px;border:1px solid transparent;padding:0 18px;background-color:#009688;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{font-size:0}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\9;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#666}.layui-btn-primary:hover{border-color:#009688;color:#333}.layui-btn-normal{background-color:#1E9FFF}.layui-btn-warm{background-color:#FFB800}.layui-btn-danger{background-color:#FF5722}.layui-btn-checked{background-color:#5FB878}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee!important;background-color:#FBFBFB!important;color:#d2d2d2!important;cursor:not-allowed!important;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#009688}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;color:rgba(0,0,0,.85);border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#eee!important}.layui-input:focus,.layui-textarea:focus{border-color:#d2d2d2!important}.layui-textarea{min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#FF5722!important}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#F6F6F6;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#5FB878;color:#fff}.layui-form-checkbox,.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-checkbox,.layui-form-checkbox *,.layui-form-switch{display:inline-block;vertical-align:middle}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg);margin-top:-3px\9}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;height:30px;line-height:30px;margin-right:10px;padding-right:30px;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox span{padding:0 10px;height:100%;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox:hover span{background-color:#c2c2c2}.layui-form-checkbox i{position:absolute;right:0;top:0;width:30px;height:28px;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;font-size:20px;text-align:center}.layui-form-checkbox:hover i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#5FB878}.layui-form-checked span,.layui-form-checked:hover span{background-color:#5FB878}.layui-form-checked i,.layui-form-checked:hover i{color:#5FB878}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:28px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary] span{padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#666}.layui-form-checkbox[lay-skin=primary] i{right:auto;left:0;width:16px;height:16px;line-height:16px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover i{border-color:#5FB878;color:#fff}.layui-form-checked[lay-skin=primary] i{border-color:#5FB878!important;background-color:#5FB878;color:#fff}.layui-checkbox-disabled[lay-skin=primary] span{background:0 0!important;color:#c2c2c2!important}.layui-checkbox-disabled[lay-skin=primary]:hover i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-switch{position:relative;height:22px;line-height:22px;min-width:35px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch em{position:relative;top:0;width:25px;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#5FB878;background-color:#5FB878}.layui-checkbox-disabled,.layui-checkbox-disabled i{border-color:#eee!important}.layui-form-onswitch i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch em{margin-left:5px;margin-right:21px;color:#fff!important}.layui-checkbox-disabled span{background-color:#eee!important}.layui-checkbox-disabled em{color:#d2d2d2!important}.layui-checkbox-disabled:hover i{color:#fff!important}[lay-radio]{display:none}.layui-form-radio,.layui-form-radio *{display:inline-block;vertical-align:middle}.layui-form-radio{line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio *{font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover *,.layui-form-radioed,.layui-form-radioed>i{color:#5FB878}.layui-radio-disabled>i{color:#eee!important}.layui-radio-disabled *{color:#c2c2c2!important}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#FAFAFA;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0 1px 0 0}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto!important;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-layedit{border-width:1px;border-style:solid;border-radius:2px}.layui-layedit-tool{padding:3px 5px;border-bottom-width:1px;border-bottom-style:solid;font-size:0}.layedit-tool-fixed{position:fixed;top:0;border-top:1px solid #eee}.layui-layedit-tool .layedit-tool-mid,.layui-layedit-tool .layui-icon{display:inline-block;vertical-align:middle;text-align:center;font-size:14px}.layui-layedit-tool .layui-icon{position:relative;width:32px;height:30px;line-height:30px;margin:3px 5px;color:#777;cursor:pointer;border-radius:2px}.layui-layedit-tool .layui-icon:hover{color:#393D49}.layui-layedit-tool .layui-icon:active{color:#000}.layui-layedit-tool .layedit-tool-active{background-color:#eee;color:#000}.layui-layedit-tool .layui-disabled,.layui-layedit-tool .layui-disabled:hover{color:#d2d2d2;cursor:not-allowed}.layui-layedit-tool .layedit-tool-mid{width:1px;height:18px;margin:0 10px;background-color:#d2d2d2}.layedit-tool-html{width:50px!important;font-size:30px!important}.layedit-tool-b,.layedit-tool-code,.layedit-tool-help{font-size:16px!important}.layedit-tool-d,.layedit-tool-face,.layedit-tool-image,.layedit-tool-unlink{font-size:18px!important}.layedit-tool-image input{position:absolute;font-size:0;left:0;top:0;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-layedit-iframe iframe{display:block;width:100%}#LAY_layedit_code{overflow:hidden}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-flow-more a *,.layui-laypage input,.layui-table-view select[lay-ignore]{display:inline-block}.layui-laypage a:hover{color:#009688}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage a{text-decoration:none}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#009688}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#009688!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-table,.layui-table-view{margin:10px 0}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;background-color:#fff;color:#666}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:400}.layui-table tbody tr:hover,.layui-table thead tr,.layui-table-click,.layui-table-header,.layui-table-hover,.layui-table-mend,.layui-table-patch,.layui-table-tool,.layui-table-total,.layui-table-total tr,.layui-table[lay-even] tr:nth-child(even){background-color:#FAFAFA}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0 0 1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0 1px 0 0}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding:15px 30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:40px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{font-size:12px;padding:5px 10px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:20px;line-height:20px}.layui-table[lay-data]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view .layui-table{position:relative;width:auto;margin:0}.layui-table-view .layui-table[lay-skin=line]{border-width:0 1px 0 0}.layui-table-view .layui-table[lay-skin=row]{border-width:0 0 1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:5px 0;border-top:none;border-left:none}.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td{cursor:default}.layui-table-view .layui-table td[data-edit=text]{cursor:text}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:110}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0 0 1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;padding:5px 0;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-cell,.layui-table-tool-panel li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layui-table-tool-panel li{padding:0 10px;line-height:30px;-webkit-transition:.5s all;transition:.5s all}.layui-menu li,.layui-menu-body-title a:hover,.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%;padding-left:28px}.layui-table-tool-panel li:hover{background-color:#F6F6F6}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0 0 0 1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#666}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#666}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:28px;line-height:28px;padding:0 15px;position:relative;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-table-link{color:#01AAED}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{padding:0;text-align:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0 0 0 1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px}.layui-table-tool{position:relative;z-index:890;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0 0 1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-page,.layui-table-total{border-width:1px 0 0;margin-bottom:-1px;overflow:hidden}.layui-table-page{position:relative;width:100%;padding:7px 7px 0;height:41px;font-size:12px;white-space:nowrap}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-7px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;width:100%;height:100%;padding:0 14px 1px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15)}.layui-table-edit:focus{border-color:#5FB878!important}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0;box-sizing:content-box}.layui-colorpicker-alpha-slider,.layui-colorpicker-side-slider,.layui-menu,.layui-menu *,.layui-nav{box-sizing:border-box}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:26px;height:100%;padding:5px 0;border-width:0 0 0 1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px}.layui-table-grid-down:hover{background-color:#fbfbfb}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-44px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#666}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#666;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-drag,.layui-upload-form,.layui-upload-wrap{display:inline-block}.layui-upload-list{margin:10px 0}.layui-upload-choose{max-width:200px;padding:0 10px;color:#999;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-upload-drag{position:relative;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#009688}.layui-upload-drag[lay-over]{border-color:#009688}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-btn-container .layui-upload-choose{padding-left:0}.layui-menu{position:relative;margin:5px 0;background-color:#fff}.layui-menu li,.layui-menu-body-title a{padding:5px 15px}.layui-menu li{position:relative;margin:1px 0;width:calc(100% + 1px);line-height:26px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer}.layui-menu li:hover{background-color:#F6F6F6}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group .layui-menu-body-title,.layui-menu-item-parent .layui-menu-body-title{padding-right:25px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default;text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:rgba(0,0,0,1)}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-breadcrumb,.layui-tree-btnGroup{visibility:hidden}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#F6F6F6!important;color:#5FB878}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#5FB878}.layui-menu .layui-menu-item-checked:after{position:absolute;right:0;top:0;bottom:0;border-right:3px solid #5FB878;content:""}.layui-menu-body-title{position:relative;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title>.layui-icon{position:absolute;right:0;top:0;font-size:14px}.layui-menu-body-title>.layui-icon-right{right:-1px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#5FB878}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:66666666;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-nav{position:relative;padding:0 20px;background-color:#393D49;color:#fff;border-radius:2px;font-size:0}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar{content:"";position:absolute;left:0;top:0;width:0;height:5px;background-color:#5FB878;transition:all .2s;-webkit-transition:all .2s;pointer-events:none}.layui-nav-bar{z-index:1000}.layui-nav[lay-bar=disabled] .layui-nav-bar{display:none}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff}.layui-nav .layui-this:after{top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{position:absolute;top:0;right:3px;left:auto!important;margin-top:0;font-size:12px;cursor:pointer;transition:all .2s;-webkit-transition:all .2s}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{transform:rotate(180deg)}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #eee;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap}.layui-nav .layui-nav-child a{color:#666;color:rgba(0,0,0,.8)}.layui-nav .layui-nav-child a:hover{background-color:#F6F6F6;color:rgba(0,0,0,.8)}.layui-nav-child dd{margin:1px 0;position:relative}.layui-nav-child dd.layui-this{background-color:#F6F6F6;color:#000}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-child-r{left:auto;right:0}.layui-nav-child-c{text-align:center}.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:40px}.layui-nav-tree .layui-nav-item a{position:relative;height:40px;line-height:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item>a{padding-top:5px;padding-bottom:5px}.layui-nav-tree .layui-nav-more{right:15px}.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding:5px 0}.layui-nav-tree .layui-nav-bar{width:5px;height:0;background-color:#009688}.layui-side .layui-nav-tree .layui-nav-bar{width:2px}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#009688;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;box-shadow:none}.layui-nav-tree .layui-nav-child dd{margin:0}.layui-nav-tree .layui-nav-child a{color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child{display:block;background-color:rgba(0,0,0,.3)!important}.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-breadcrumb{font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#5FB878!important}.layui-breadcrumb a cite{color:#666;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s;position:relative;line-height:40px;min-width:65px;padding:0 15px;text-align:center;cursor:pointer}.layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\9;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#FF5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#009688}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #5FB878}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#FAFAFA}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#5FB878}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#5FB878;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#FF5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#FF5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#666}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\9;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add],.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\9;opacity:1;left:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown]>[carousel-item]>*,.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:15px;bottom:15px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9F9F9F;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#666;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-transfer-active,.layui-transfer-box{display:inline-block;vertical-align:middle}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #D9D9D9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{position:relative;margin:10px 0;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#FAFAFA;color:#333;font-family:Courier New;font-size:12px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 10px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:10px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;margin-top:-8px;color:#666}.layui-transfer-active{margin:0 15px}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#5FB878;border-color:#5FB878;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#FBFBFB;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;padding:0 10px}.layui-transfer-data li:hover{background-color:#F6F6F6;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 10px;text-align:center;color:#999}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:10px 5px 10px 0;font-size:0}.layui-rate li i.layui-icon{font-size:20px;color:#FFB800;margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:26px;height:26px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:34px;height:34px;line-height:32px}.layui-colorpicker.layui-colorpicker-sm{width:24px;height:24px;line-height:22px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:20px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#FFF;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:66666666;width:280px;margin:5px 0;padding:7px;background:#FFF;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#FFF,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #FFF;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#FF0,#0F0,#0FF,#00F,#F0F,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#666}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#FFF;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#FFF;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:66666666;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#FFF;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none}.layui-slider-input-btn i:hover{color:#009688}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-iconClick,.layui-tree-main{display:inline-block;vertical-align:middle}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:20px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:12px;line-height:12px;width:12px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#666}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-btnGroup,.layui-tree-editInput{position:relative;vertical-align:middle;display:inline-block}.layui-tree-spread>.layui-tree-entry>.layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#666}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{height:20px;line-height:20px;padding:0 3px;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;-webkit-animation-fill-mode:both;animation-duration:.3s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout} \ No newline at end of file diff --git a/public/static/plugs/layui/css/modules/code.css b/public/static/plugs/layui/css/modules/code.css deleted file mode 100644 index 0fee0c500..000000000 --- a/public/static/plugs/layui/css/modules/code.css +++ /dev/null @@ -1 +0,0 @@ -html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #eee;border-left-width:6px;background-color:#FAFAFA;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:40px;line-height:40px;border-bottom:1px solid #eee}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 10px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view .layui-code-ol li:first-child{padding-top:10px}.layui-code-view .layui-code-ol li:last-child{padding-bottom:10px}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}.layui-code-demo .layui-code{visibility:visible!important;margin:-15px;border-top:none;border-right:none;border-bottom:none}.layui-code-demo .layui-tab-content{padding:15px;border-top:none} \ No newline at end of file diff --git a/public/static/plugs/layui/css/modules/laydate/default/laydate.css b/public/static/plugs/layui/css/modules/laydate/default/laydate.css deleted file mode 100644 index c08928b50..000000000 --- a/public/static/plugs/layui/css/modules/laydate/default/laydate.css +++ /dev/null @@ -1 +0,0 @@ -.laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;animation-name:laydate-downbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon,.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:5px;text-align:center}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #C9C9C9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-list>li,.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle}.layui-laydate-footer span:hover{color:#5FB878}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#666}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px}.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;background-color:#fff}.layui-laydate-list>li{position:relative;width:33.3%;height:36px;line-height:36px;margin:3px 0;text-align:center;cursor:pointer}.laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.laydate-time-list p{position:relative;top:-4px;line-height:29px}.laydate-time-list ol{height:181px;overflow:hidden}.laydate-time-list>li:hover ol{overflow-y:auto}.laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px}.layui-laydate-range{width:546px}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#666}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#5FB878}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{font-weight:400;color:#333}.layui-laydate-content td{color:#666}.layui-laydate-content td.laydate-selected{background-color:#B5FFF8}.laydate-selected:hover{background-color:#00F7DE!important}.layui-laydate-content td:hover,.layui-laydate-list li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.laydate-selected.laydate-day-next,.laydate-selected.laydate-day-prev{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#FF5722}.laydate-day-mark::after{background-color:#5FB878}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#5FB878}.layui-laydate .layui-this{background-color:#009688!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead,.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-selected,.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important}.laydate-theme-grid .laydate-selected.laydate-day-next,.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px} \ No newline at end of file diff --git a/public/static/plugs/layui/css/modules/layer/default/icon-ext.png b/public/static/plugs/layui/css/modules/layer/default/icon-ext.png deleted file mode 100644 index bbbb669bb311514baa5db3a6a00b4644d0e280f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5911 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 bWW^%>x7XlHV^#Q1uOX^B?ki3(VEg|7!QHuF diff --git a/public/static/plugs/layui/css/modules/layer/default/loading-1.gif b/public/static/plugs/layui/css/modules/layer/default/loading-1.gif deleted file mode 100644 index db3a483e4b74971fbfb1cc0fb6499852cedfe650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 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 NqtXTTr(IH0bTL$Q#&Rt$( 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 WEo6sg2$g9lKpdZ$$_>);_x}MD5#CJz diff --git a/public/static/plugs/layui/font/iconfont.svg b/public/static/plugs/layui/font/iconfont.svg deleted file mode 100644 index 999ca1fe7..000000000 --- a/public/static/plugs/layui/font/iconfont.svg +++ /dev/null @@ -1,554 +0,0 @@ - - - - - -Created by iconfont - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/static/plugs/layui/font/iconfont.ttf b/public/static/plugs/layui/font/iconfont.ttf deleted file mode 100644 index 06e30f9e2a856cbfefff25111ceb4b9c034f35fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46508 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
_X z^e3{(^wUKKkKRu>OHPj{%%8-{*_EWpP{Akfu#^`Swu z9#j@YbJ9}N7W5^!>?dS9?bs`*s)Q=6HYCNJAv7v#vc$KiJDHU&lB%gLQ6&;E;G_>I z8`OL%(HRdWJgG9Ixf&#yGbYG!sH((LqI>Ghv6g77sjNG(+Enn7ttGfkMQN3mSpp5n zn#@IRJek=De`UN?5DRFrTDDJ8E`jVdw79I~qg~4q;{G*~s;~yH(u~TE6Jb| zSdUyU2S!5f|MM7^wY5M5KHMpy!o zG}*@4YClxqEr0~3qw)>|mw=+r3)O>HmACK@3q8cWYlG1_glbKdkJqd!7&LCY_y-?L z?AruZFvbm|FXSBrjIH|OyF{B1taQ_F?BN!Hz_9oO#LsY+)ipol zB!~SyPa|c9yPdA#eIM6b;ptA>BzGG|Y%n$Hh5mITM*-U;1obUFZGEwmF`0m+{8g_% zuWnMS{LJCCRE74;D zPmo4J$3EUUh1ab|?tA*Z4x;I5>&)*Xb)2Gda(e<}y6x+0gB1%#H@1CL)c)NDaq8y} zOuGNok-C=p!e+BM*av+E_Tuu(#4L1SxM;m#s&VDn4}oQ07mQkFr!dWASeQpRRA`ia^G*D3DmU(sXLMc4Jk-cY0)LY+fO^+`kk#3dP-NM z>@rCO>k_4{QXVd=GGQirU(@?$mlcc*?rk0Ty}Ude+_{YB=Xau1L8pCxJ{lHbqK?wq zOKYk*%@;{bS7Zyw79C6ZmOiNJM;`dOn)73OtKst(2E)7TI;Z6Y+j*!OLfbM?INXJ@Ysd}EhIlC)zS$oI$n6v%iDb3&OeveM^b9DY37WuUMBA(I+<#w~_ z3qHGB|55)4EspQaS&U}Kb;h*qJ-UNOep}llf5(_LrcCjiWU0qfD70WGj3e^S8FBO6 zuT}y9{$OBL`MsH8vC953`?Xy`0KGWz6k)P`|K6Kus1P~rp@F=&)-4!pNrGFQ>{YSVZZh4kY zQ{v=&R$4;Exo-O-IM+seV79F-4}ESvnsKMwc+h+H@115BS{eynz>aQoQ?a&(zdH@` zll#+{tbQkqvP9U~SAQRV$=IuHjU&iCOLjC^vulXjSczzCa{bnLu4 zpNbIAFr=9lJh%qZpbLZ+QWeIn4g^&imj9lrWs*XO_PO>jQ8yz1(Au5kp+b%j(=as= zR_P(8(j+RW9*=O-O9fZ2D$StsZ$rcccOvt8b;3gY;u(MGC4#gu?&Q_Eo8vOKZxGzy_W0}$en_I2oCIhF}%K7+sAk|4o2qCn&MN#6S z=nqWpbP=O1wl^9Wz>hIY9-}0U?H$sz~% zXDpU{r8N`gc{Ae+n`cI;!A0Ow`4Pn`NEz6LFutpPd|tGUh-jV%f;)&iOdDzk#Gz#I zr5bShSO4@Fg?fEon(eV6U(7Gf1kRuCdk->{H0fny^PGUG+Y646*%R2X{G>A}o6HeY z*$Z9kR=U<7($?!ztCmd3yQl=A^2lYuBiV@<*vz0pAZe|Ycv9jB>@X9ta?GydPkSLv z7GjjB&y)R??B`}Lwl5C%EU9L;s=8_Pk0}-{FeB7P_!J|^1c&pO>|gd6A|#tG@> z7%2a!g_m9?y_cd^CZ3(|?9_U@4uI}o1imiQU=sR-bWBw>h!n&0zO1is|JdKu0J%L$ ze*txn#?P^vBV`hgLD>xwlxv2Mk2#MYbA5QB&ci!5#G4M!Mu?$#J50V{VX4U%Rbtdk zC%cqyN%+tmlP5oFcI8gb6TfWyA9CV=n@?M^kd?vC`kQ=sa-Gi&YjN5_8Rkh^h?fa< zp}wnj2~7nk=1JwpgJKg&3Llk;+@v!5>r4X-5qIM^9%)v0@Yn5>FWx@*dH!(=C&4sC z6#l(QW6pjFqT)~;414(E)7$u+)?2=Zp0c>TPyMokkowbSKV9x$=i3-$1o2>Nr10A4)_U9nd_x#;qrhDJnlAm*X=fo<)kf7!zq##i;)wZ;3 zC_%g&+}Tje#~M-(bwwg7`xvCC$=`R0eIiAQ?SNKNi=#w?Q;;KlLJi4K%QdYU7HvO_ zJ<+wt*Q*;ip@d}}O{lWVdmDUTIWR)jSR#2hiT` z@ATWgmyDIYTK4u{TV>jC)>qYD(emZg)fZRhG5AZTdEGYG$G#?jgCvtNP2;3vwC^t7;%@oD5E8}G z0XThox3&^0)}TI1w{*5p2s{fmyd)!E6-+px|I?(7KorU*yRE7o%G`?roCaJXkV zs}})H9l}7AF}&OkO7N@YNN~ON3>`ZY*)l#hz$ykl*jBiPM&Z)>$*E%4qaUer_i<_zZ2rfsZLe)@eRyIHRMAiGYj-~J=)LZ%8A*!fd4G8m z{q2R%M#HQNIBwY3+)l4dJPO=)PtIWB;gY$&E}r1;8MM|SvrF{fmj&$I=bBxCu>(1q zUCj^fj!67}L-Tt$dv%u5#`-?!(Rc5zM*KqC!oq0uF6divIrO&nUEPG`%i9Xs{Py+m zQ(i4XjLl0Tw=rf{*luxdd2;Fo9$hM6(}rXLr)M&6Br$~4Y#8%ZPE9Ab9fNTvBz#25 zA~aFWqHAV>x^%8WjU)|bk(XPvypjJ5Dzr~(*w^EHeR)KjT3+XziCavhm z6TaJX#>R{gF;Y}N0CbZGBVbS`P9av2PGd0yzkHDrl0Qexmv=SK2pyCWMNNFv2fr1D zi&H8&1y8c+GzFg`;oilwWjB=Hu2)i0EN7tG5@R_kGigmDc{NvMMM5?MT#24wW4`70 zoJpSuJSui1I&UaCf~i3TjWBolh2X845J6alBSiw0PNfiNP9nQ^=x*YrJj~tesA>O} z4bjx2{0rOpW79yK8)?9s$3EQp6R}H6DYQI!RHA20;zT-V?bB8UUt&!3m%LUJkNbug z^M~>9C_Paz>TEJtZ30L|Jwre{x06iUw033~84{-hvbWJv`3Vi-Oaj45hG0gJG0e7v zIN`+~QHS@Pb>lklM&J0;u5Z=PfNiU(WF%kPkMvonWXsG!Oofx<%5)Jx38JkODwJX7 z`Hz8TrGl|rsAN9zBeMU&Au%MU6XSN0hc9KqSoYDe z<1ZI^`qkvgxm)$_HUb+lH#$Bi?CILo)9aUu2_&Jkm{*r%M<$qB6ZPxD7mn=D-0^M` zle3-BKt62-Tx;Ag&M=Q#?HIu+ss!+(okd0eeQ?^u;U)uF_?*P)lcbY}$0wlPHQwFJ zBU3-8V?tKr_tzDsEaH0a(!4Uoq)wGsMd*hUk9fug`((dY$l`uMFqoCbK%iBuR1c%j zb&rX82pXT%Q^?kHe|j42=OXZ4pZ@}?I*pgX(&km$Om5fBhrKSp<18ogT3wI(PUqk3 zK(FWK{|h@e#K^PH!g>e)Q5ypuh8u|Hm@7*A};p=1^}RMUCTA+^K9=htyhRL>-}6AF6vbXt2$jIP=U=-C+)POsQ<0uSw2% z4pb>3v7?YAWtXgiCZF`2WZ1Ibd`^)k3vR;#UBUv>mf%Co(J|vWq%6|2TVxII@4<@A z15T23Q005VMiE(gPO?quIl?`Aimb}gy|Tjcbwz<^SkuRz-75Vz*?#kONmiw;&$3ZG z1B#-v{uEgucYSno@02Q&a@Y?Lp9fk#SPn|^>^!1^v-dxAZ9oLJ1a|TQTP8*VU8pyh zvC!Fz;xGd)^tT3=?EeKkvA(!2`Y+LhUuB*(U=1exXA^_)aI*&_Z&-#4Wt3zjxF@$R zw=Pd63SC`=J@3)@{8+iISZr&^>At>n^C0r$gfq9RYp#kvVtaEo$W{KuTYSWqp`qHOC9^PBX-@6G_n#*(2%AW)SGv>?F=xz5g+ot-&Z)1sON zceid8O|vx3|GX9;nDo~B9U4(6B@K4dd~pYPcwjZK#xpzD z>eyFQU-$7_m<~}V(o03PDG8KU&7HDhB+TZ`2qf%0vCqETqGK;nE|8O}|72HVsn`z; z)Po~JKTeMcH)9zg%Vvb(k|PK?Vo4Cf%)6s{Lyvwh2=6ZR0Q3~75ybEYEFBqHN(c-6 z=gDD<7ab08_@c#!AxCOx_=E03^PNIBU`$el?!cbIWcrf=npHIe4NmezL-gRJHuwycXV+@8`7a*w zivPSpQ5GF~<&ZCiu)=fXVZ@GNfW=dHw)P{N85Sl9U3ln0eHaESqC~}nJD3QLxC28; zsV^(a%W5j7Jn@7=-gsF_*(_zJl$RBMi|z{FC@fTd7_UZuPg`99Kdm@5}YQ=BaAIcc=zM<7(A*P?6EhaHFCXfgGrciqV0ck`xd7^^>W)l~@7yojR^WS9reVWj z8^}b3^ik4D$lTF0{huB+xB~bNLh-j`VESqS)}I1r6;}0;u0n2AFPT=HYVTf(P&|ow zEe~JjH!8&?QJR8-IKplSTxL9k@CtH`@T_j;WXX;YoIJsenZKu)oC#sOjr~WK&NmcA zlLaceT6}!&4gbOO|8c{O|G|T8MawpnIt9tlkt7wyDsn+LKCrDge(yLISUlvei*5rJq9q3ty zZa9Y@=vhl(TF3Dd^pU3Dx!_Pj4qXs<*9GvpjeZ5c-L61mViO@vo^j2$aIJjl2pw4q@`d&R`Xs$^Jv({<6OC2<1{SJeGa(UH+A zBC%|#&wvdpE*RG2(KcQ*+^z+kOZpv=3JL`?I{mz*XAe21Hed?z!gzJwic#0e8#>#* zL*&$Oexy8Y^K=8*a(a6Ee%I~4>0e5z7|&}N!H!8nO66%Zk^R*AC6_GCRg>|AV_ThF zm6^qP%aU3;QC+pIzmZWzzF>CNFIaK*nW`AI1Uc0`uQXOPEhQmI$;iyh*DScAD%%kv zkKY;E{&pap-^P70*u&e8qFIS)c*B*C&ZO=O&X)HE2QbTN9a~=u51elu-Ws40lf#+M z4vOHlM!4pfM?TRyqB^kKGe~g?&t_2bd%jiNLzd( zl_7$eGc}@5SYC8B(FjdbD#d6vzShYF9SAB}9rZryKqH^fLCmp@k9y!U@gGL@Of*R? z;McINl6=a7NW`p|t0_eiHdCdNE@omId1hYO7|RNRC{uMNA!FidqY@3868->$c#F10 zBN4;HmVB$Bke$*{+uP21@YpX<`h{b|aP<~Sw}dB8ZzE|t94)~PK%a`W#{!P^8T1~Dn9A8O&P7!ppFL+{$N9R6)h zeDfJ6Z%nL%IS0h=dTP^GdWzZjL4(VAZd{D{^R^wo^*q>>kjBTQgun2vYim_+;|91d zChqltI-N{}x^&qt02MyfEW_~!!Q1|&fh>M0{VmFR%zE3w^>SmO6|GVXoWSD&WezPm z!!Q*M_Il*op++7Y_&11J1%0~wxq}Y=?!gCrw&Hn}&j!iQl|4Tey7N59!Uy{x<+ZhW zsii1{F-Z!=F*0|}=PLO3xivwHAc>8eKf~$|e!#QvuVhO+#TxpXm=N{{7KC){1*Bs_ zpu-k|bGPdu=U_anjA>@gDkC>3)JmSDA&`{H1r$~aq$#Zxh4e~sjlk!@=KGOJm-mc7 ztb=~(h-a>P;kjN?rBClUf$!z%(_|B$Uo0Ld@wvs~{iE53gY;m+vu2-l~t9vPeYOz3<`Oibu ziuxBtvp><27Eyusn<|YNs`67)ib`;bMUL>_hXAvFdi7m$MR{GaEdTZUWfD&+uWb51 zaxx*^?f=431p0*j*s)sP>`C`-9qC_PX>TOTZAd|=M9Nm@>{84iL;@Ps_BxJTqSKf|s%54P%4xPGZ6mFW0~ruz>^&hRYTaMOnr_O)=6VJQth?ih5bx#i^!+s)q zDIW5B$=`|nMAjTKO*%2oNk+A+1cti!I2V9TU_2{s;g`1 zk&rg&Qz^c)BlRa+rwzzgQactx?)Z-uzIFsN@q)r_I+aXX+bS^APQ3i9$Qj zz>sMNuFqvz)+MQ~8@)vCKlQD#fsuw1Q4LGvyWp#~nEQv!?kzBW2>10KKi=Dmxn4G2 zcH(F7Qd06!l&4z$CrDEC%z-_haQv6gKl_EFSAOHpd*0-@pWcp+44ts;bbRsbkN(Va zpX|BgKRE8qd+vNg9)2FL9I;bP`PV*lTDr{82nCDz)eQ{f8HYNe!Whmi3wM-p4#8NHnrA^N8SvuZ$ zN;j{PZsF>Q-iY@tXV4`$j~#OguAuWRQb8-X(sOJ*&2}}!)*Hx3Q|Y^=L^X1h=rwo3 z(q33Ji4~K zl0wi9Su|Rcq1_+-@t0rn3U3BfLx=a^J>Ay;aW4l`w)H^cax_l$(|D%)K^%$QAaCXN3Acx#*i*#8Rd|u`utU@rqQ(_x?+HA zBde$^`|;=-@4Io`*s<%Z%zV)ka07TwkoV1-E|n#?>tu79)kalE+SBYANH{$nr}>80 z9wJjh$XmC$-9yIFVq3sgVg4}eVa<xyY3%J~<7YoU zgvXQlHcVz(I)0MYJ<+5`@g#C+GKLCc#xIg0b30O7Cjm#ZepOMG7Q&K2g{Ps*9{RA|3eF`t96{H@ajx%|w2 zu4m3qT=-#nQ?6P@RxZ$j(n?8zm4C29ql42e^yJL>yg+NkFyy~^TKaAnB z?D%%(1=VOP+h*HV*@oylyYBv6%~84+A1URT#$IJ;K^keSPHT87mK^G~Q(7+ytl*>i zyak}Iv?8%xXr+u|F=P>t``g-C-cI+iUF~Ea+^s}aAre!?xImO~2l;7q(+BROfhAFBa{I5<*X`$DHbON*+#@ z{jDiU4*Q^+pL;gk;Tw zcqP~BmnaiO!6A#9BRNpjMdb8(u^gSgwEm3k$K%Kt_c3;R8(40ptJ$mrMRli$x;UMjB!DZk6@@zFj53!Bt9e>9a z@Jfpe9&s}b` z$@$FssfvmX_vC3xR7gh`b@IGh;|r0l9hK&g2D-vk2K^dRjX7gEx2C!bczKy5Epr-f zhl`V2%>VKF{a)Z(WX|Pq8|H6Y=dW&UZo}tY9O!TsLQ`8ErC8S^Q+mgV$QMz89}}xy z-kj0Apt-qHmpfr^NUxs2@ida1kjO;)!l{U$MKpv?;h%QedKgmoRIfCR{MsVZa)`1> zM58n#@uwDJA!l7pGKtVjS@F^NuiYo)+s~9#ejo7R7Qm@NZidh2o52mHFtlJ_pyWYH zndAJ(^SImnxCi+;uB;$W=?n>luU(Bw@mQMl;t2*lM$~?ZkQ_ejnb30ap2n`=+{D}^>OH&n+^sGl#ZY(C?u(lz_DpEKS?fZ7~g!(u?fR5W#YCFx68#A)%O;UlaHe2_szA{c@ zmLS_QbDxT~EuXwD99}nh`8K4Q`^=wDUxB<(?C*!77p<5+^P5Q0CG<^BhMt4Vw_()b z^K~G+ZTUg-AbJk1oc@&gk=+iFr>3t&d>?h5>^pU>+sQ2YmX*b_vG`AsHY}l}9uZ+= zJqy_s3V!n5>kP<}Yt0tKz5CEZ?{a9%8kZyooSW}J)^aqu1NV9rb19=E->G<0yc`Vh zEiY~&jmaUKUTon5L7DG(Z@cCHwEewd8T=rTNvV|2Fi}~t3`vSr7HOo#VS^AA@UZW@ z=2&#eFBBcjE$H^zB*h>S#eaa`*t32;I;(bEcfWxho$!HS&6bVk_7#Jmu4xln6>Z|54b?T^+foPPnC2nv7>=?Cyo0g?2klX4&m@Pb@YrX5N?a z6wUMDzCMqhVV`m4i!gBDz%|!AIhd6@!8r?rP^Vy++p|)qF*qsE8H}LMf@1>Fax^L! z%MNec`1ytnkdr!H7ajln+uly$5~-7iQF5nH``vu>@AJRYVb1ON>yI)pDpR)y*RkPl zh7F^B#Pclso#o<{F}uMVfQS zrGc&2t&$>1wdp5|aLKp(^ zc~mFTDT^1C5(T#ETkHV~BQ8ort>&p(!TC#-OjRXPmcY@+M9uOr;EGBv*Y`QMN)A{#Ex`ZKU1VRwu*%s=*@SJUBQ^8Z=Z@P1yvc1W=v%zwb4?c1fG zIpd}G1mQOaVYkz3R=>N~pLu>0Y`^+)a?4JfIPnpOaLCqRAt|dC;N8mrRTc8x=$qYJ zXJgIfOLfbX0?bI5OIu4y)eZ`c&=~5Z#Ejx`&gYl8;@rzrJ=Z#aK~R#Lo1eX_8_NNM zBUb`-esx#-U0-#^5c<6oke(97U@}=u0Df9JeEd?UsyguvL~UB_l0={5R`8wUas`zH zN9p+|n$JJyGDO)qf6w5ZyCrG&owN5sqa;0rAW=*vgM$2&>^HkW4SKyn)$&~?^6qc& zJey+Eh|Ej5l_xTtJb5agK#n?Vs@eQW<0mt8CQmgSTWwCQt6FvNjCma|iac!KMJSoS zfjpY>w&)e#7Dbi`wRg{G5Hqi3H5;iZt;2kmx{Zjud7VJL)&PB3SjWlcqqG4m`dU?e?)%^5d8`iOm^9|8K!%+a6|nv5+eA$Ifjb{n%zNPicP!^_ z!0;H^c9ZSpN;I!Dm{-6MJVuJ7%DkI4ZGfxJsG!pTx#lNc$3MY+WLET&IWbMp!jqPTOWrx~t6v$EpCAEucOtDRO178QD(Z`}(vaEK@A}F$Vok&&P zO4X;;Id*8Jk*1@U_9#>htLu|*AghqK;14AOMurtQ{1Q_+ML*dbj=sk^5>MI{Wtrfxlq%jvx|%KO|6+ViRP$RNAXxO zwF9{WqZ%8QjOo85(Ht=fxwAW07mQR;pFFd%+lVwLe6eIs59K4UZ3lSV;k>`8+5B$Z z6P2d7s$sd%Rhqo;!BSU2PmNj#(=xvNKx_Z`4}S+-j%;t!E3yom+s2$P1(a059_hc} zQIPF(yLo$aGU`1G^vxj4jicKRI$ZFbrrvY)M7}EbpLGZvj?%m&FP9tDpxknHEyn^AQ@)AP?)!ZRQ2;TttBdq$*0QU;|u9nniMMSOAOYzPx$;85QjO zoAD3uRx;B3wie1jo)g(z>gRpcER{VlpH;IiX6RF6h&-fB^q??X0pDgWRaJ9|2fzal zs4DDK2h6L?EpR1VQClvG&ZD43bU5m?yF;#{M_plb<55ZaOxDb_E|bzxS%=?}jl+lG z`NM}NIK$#~<`)W;+rf3c7!Hc!b=NU>@H(&5t#}N>9mR+iHIwoD53kIZtff@l$6Llp z%cjArj3$9{C@}YDU^#`VWb4QrW+#tR_o6E0ED*JNvC!?m*#YNoogT&_$!&FgMSSqW%KG#<|?{zm6c|LaQUC&-bRsKI8w)A*)-}4OI0cV8HFQ_mCEc&<*U;&NYM2fx@7aU+?wZyIG(M! zj<>C|ZM0o&yTNwb>3R(42Bk?(r$!+n*H=g39V3Z13aF=@Z93Y6;v zkRZ9Vj3YLNlsVq1#(X(`vO^o25A`=7nKGYz6(p)y4mmXJGhy=lhU@5jodOio++*?P2*A;WcaeYt=$^w<+k=Rxy(t+ zDQ~!q<|ohhHFQn&_+}?XRpFb>go{4TE;vG}kFPszFMliws&gEz8AmEUAeq&eR2`!m zDof1Q?|>F-ZTK_%8pbETBh=43{9S>4pSJdn91Ek<)=u{E^){vYcg1-XKYe_!lU@cV zp62v;jz0#6*y?UKtHkq9+sl85vBx>uNxvA)%U zA@p8|!g&RURLjuy*#BxEkIc^n;6}Y6Im~TKuR!RErAuhKWIBahPoGB9A1*-GkM#yZ z-Z794nE}>C2tE#_YlrPlryV}FJ7A_;1jL^U4!eP`ShC~_%u@3rw0zpM<%p%Qqou`y zs@YC_5B~*UMx?nc(Y3nh8;B^D^p{Xb8j;+n2Q&*80=X)Ud6cb?THW&5v^==|Ofl|; zVhjX)*vz_;nz=jKjCF9i;Bcrv49kMO<~@>MGP4qBQS0cjEVREF7o0H~lE$K3|!5}OP_gBn&h|+vma=}b;zcrxU`C(zbhlbqq zKA)$#5DXTY>+2L$mo6~WSQJL6(1zmzp6YPSEJLLv)n188-2LhXOZVOVl@B~&9cgdh zVQI&!pDy1?P2S+pZ~;{1k>!_K$bFuB{~4FgsjfTrV@vUd6$_}tl0#94ZK;RwQ+N*f zK9-d}ZE=~4Y;}x`9}8MnrXp6AVsol>NES1tGE70$;$fj{wVC;Cvu+&KmtB~63AK8Z zBz|cP5(3faiXWqP%|SL3sfnqX+gm49r=?f*qz0mM3zhVmE>^&aP;lCm)qk2<+KAl- z(Y!W21SyXaz&kf#CE!cJl9u%?auN&R;m!8>uvmSJ2= z6gEgzOYv0N81gh%>%@&^qU4+gJ=k;%C3x~Y-SBMVvg)<_IBwsy*X_fZ__N@1tCWB` zVP=+Z#dzy-mf{4sVs0Ni8_(c<*IDhW%Nn1(!K(xKy~l!%ntQk{Ni949xz4TZo#Wjw3<7M=x^p*u(Sw2 zgWgYBi=ycO@2AjPG>>AjXznyCMOZp4n;gWK6B*shFrO1_3vK^qp-CxZz;cAPFh|Kc zU0l+lkAs}xR|Tf~kSts?VAAi_x9I#n7rTC#q!v|Y6umx?jO)>7+eJsJv5 z0VKwoz^_rCXUz}L1V(L3I17*sqbox>lGk>G$aJU%QKOZce^oTy2Tkb^6cWCSJWJ6|Kx5pOmImqjV^B`{ z;*HPg3KGUFJF6kk+LM!HMU$o8vjAPPMA7PU&wjLlT<>PvIHLFD%XFogJV;EO^NAK= zMxKq$YTd1);dKe>T=UVNn)*a{er_dVGEEMw@9?Pab(O)w9O#zodsmWShe%a5Lq5f& zP@Pq&%&Ou9B}g0CbS_c#(I(Iwl9T^d!@ERgdO{W{QT)w?=KRzPMq3kYpm%SW_LzAl zLVL+ntgY`^nR(QbSL^!H4txmhu{Buh4q1PmqE7Nv5nDlWC^kr7z$_ZAnci`-dlX{a zT@)0VCYMd^Mt=GTYCZ;aB{PJI7Yl;!<^gwhF5^S0=oM>!R6}+SVMUSU1KO>;hrC~r zB=*Y4zz+_c7h_Rq%q7ik}{E@6~!(p# zc?i8oyVRZQ`#XnxSu*K{Ux8RT4)da&Q4Wu5H=p!1s$K)x%r1Ck#E0q-UPpfKWE$ZG zl0B9gg~-*z7##Y_NHUz4=Fc;GOS+mav0+1F?}^m+FRyl3k*n)wJ?f^07n{EpB}Bvq z4}Yt6K$aDSfbT@6<8k>@S9Zc49s*dIZIVBspo2_qEfmioCs3)764*KH1iVQLGw;dGWGa z6wxbT98j{p+7SEAz;xmRxQW_S`4o-X(u#U4i&77wb7LGaJ{cMh869)G-+arHi7B}7 zup&9a`X5$Ev1~$I`H>cOO0Gv5Id`;RU$siYzLa+4E+vx*pr$ufO;g`&z=2H0b@vfH z890e|qA~-;eX&?vyr0J6auYqV2Ut9={pM@m`=0sQ2W2q8C?9#V;n^=%uljs<7Csq8 zmybq$WWIRUT`;ibvQM8&966HO_bGipoG?#3P44Z=POrMg@7A&1Sf(wFlsSMN2xoX?=Cqy7X;&qjzD*};rlkMzaO_NWa>7Q-dMFc0A1!fqDm3% z`=jQ3g~Qc+Guno#4TVBO6`7wKPD6A!RCkDTn{RTw*ARmf8>s44Jr_Ra_?uql$XR*L zHNB)&&z7gH@Wf({mY!BeJnEWM_9|bvb&i}6-@l&I+<$iKMpGrGm8P3>$O%1u^muTzE@bP_JX~kCp=ttFYwtG`m3~Y!O0m4Q2c_Iv?fV*Puf6Zq&Fl`9o(K-aXqrlA)=a!cgH)?j{x zpTI5TJ5y}$y!vV{^dJ)P@^dGBeo$gnL=nHbch zpPC`+oRh%#r_}UtJ_JMNP%raeC&gYGeYe)z+k2pw)LGd9tGd^uO%H(09Ac%BzmYYE zSJ12Ey!pBWXtTUL1xilKGyoQ7>;JRvBqA04vT5z6wM{&i;f3U!bLS)lKEqwq|LBX4 z_LCAXjJfH-o5s-6x^sSa;=^-TyVo$?(|GkQ$$oW?mpk#)n+Ch>s0C6gJ*9!av37;&r=r{cyr8et{l_^9@y;Vb2=q9IqFT z^O2I-4=x9cRpcGA0!Q>nL?7fQZh>z;^2l25wKY71jXv`Ct{(AuIqu$ZMi^oa*M+hR zz$MrHsSD@{#>(qqR&Hd=8syEBrnWlrh@FD=Er{mr=I5Wn7~xlQxzG3QIBiimoeL`(3*3+C~#pHM`0FEx%#) zv;{O@hIaM$n}6x+GymG(kLHtlMWaV*Q2S)K2bT`N?C-CA+TRb;Sy!4ulK#HF5jpif za_y*%ta#?^imh2_I0UO-_lW{XJ<>16wWbX2KiX>$^kr`%oUVly3_KQtOG~Mn85WHvbCPX569db z4!=n!=DPAu(a*L8mmzf70+v?MtgdeI_MO$;H4DLS!AmvnTUV~URbxfpLzj9Z-b)|S z!A6eQX&p#1_?C6hPI46Kp-u6s&Si9+aG6u}D*PpPxgMn2_=B#yE~at3PrS(HIf|Xm z5Ph?o$e#0U%gKA>$`OkpTbjua^F|S+xjv|@A$8hDmRdM1QxshUJY^%x2-@mwZE)&F z)*7A`*q1+b1KGAdgYh$4t#tJb7~inkN-Z#pVr4K#4$2wIj+T*X`%jipgCu1rTU$mB z)_yJ1OrsU(Wv^1A*MKC)|9rAMdE``EpXnMo)#@A2zEj$NcCzd^**y)+G+dq}(UWWR zYt#;&EPs01cOK^XUW-0qjHT0Ui^x^K&~^!Ze^Xi&3g5wEJ%ED+&-7DY3Ff1%678Q1 z%5I{oGS^Ddm_p`~{f6M-F5tI~J~!dPMM&=vLuhIa zcXqaT1S!@W9UD%zI*ka00|z4UfG3hvVUH(C)H#O%O{yTBu+_Z#0M9$CvyP${oWt#6ZfqXMRV6qmq&H(ggK%|R20$NLo~cGD^{Qrirm}d zh!}G3fNVq@{R47Tm-~BU9di42?-lo&`?(j1W&uM^mB_e~TC=GVhbEd&Ka9R_x?!UE zq1@X`kLE~@>F28~5_l8#TOHqRP-esI=i+Hj;u^aB3F$A3r( zXny$khvs6%r;yJu2JmUzNamC{^H0cG&b}--C7tno7Q~Y}3FlDHltm93yxTecKgS0p z$WHXw6$h4ZFye7x*Q>aVPIfjp&S1Hh-zjr zlB@6kA6#;*D~U8i{r^9r)NzvOc96Uc#bN!63i0(Hue>tF<`Wl=1TX+w&kxT400000 z003M8Faclz$^sYzrUWDeS_GT~(gl76!UhfoVg|ei2nSLJrU&i_0tglefC(50unJNN z(hEQfk_+w(J`CUukPZ+IHV(uN`VTx0ln=TO`VdqRx))*?Bp8Ai)EN93j2Z44G#Z{8 zFdJ4Ix*RkddL1+!jveM6U>?>V2p=FHHXouOG9e}*jv@3SP$H}&4kJ(_kR#M2vL$jQ zfF-ge`X**3(kDPCU?-3#)F=)pq$zSKt||g5I4ZI#>?@Wl>?~$1ye(8Md@ar{BrdEk zurX*cqA{{E6f#~ikTT*kS~KD^`ZOjqo;0>J^fgK~)HW10bT+m(hBw|gfH>?qQaPGA z=sFlWo;xHvdOPeqW;~=lls(iwC_b`2;6JcH0zg(k)ImT&h(YW^JVJIuE<=t)EJUP5 z9z|M3hDHuXj7LUCqDW9kkVyhbT1kva_)1PnW=h0Mf=n<>oJ{UbCU~4u=m>sx+ zOFTNRQg1n~k$aBoXkh60g8H*#4{f|SZr~QLoFHmf%%1S>SfGgy#}!=T({Yvhm*X1w z$8jC^LO8xaQ#?5KFcWRZ4Yb6YH!^B&)lx1B83j5Gb!xqMUTmYzKAo!7HlCZKaHN?s zd8AX>_j^ZiqEco4=HJfLd1qvSE{NJwM1vEsy-ERmJ94V8epk9FCV@z?0`4Nv@jd3W*)xUX|%0C=2j zROO%JHW1ynF@$#a%FGODZ+ll}W@fHpk7G5mAeXuX~!~Qq`2jUa4JSP4X0x(R&fTlVLQ&mSvVW#;9Q)C^Kk(# z#6`Fmm*7%dhRbmUuEbTi8rR@jT!-s%18&4kxEZ(LR@{c$aR=_iUAPhCBDMf_y*tNJA98H z@FRZ0&-ewu;y3(`Kkz61!r%A@JMr&A-%_bIMwwKq>&Q2UUO~EQPLU&FlRR{}uoTsH zS45;IQd5{HOD<`=R6lH#pG@)ftD(Yq;p;2Nt`pv-=QgLaOU89Y_bM8e+OI4|i zNavCJBHcW$q-Lh~FbzD_A%&;WYEXHpmfM(>Evx)tb+EY-nq2o;%XVOw;*5k}d z(ka(XnI)Hxwk?`z$WCNec7xe85T!;bVZ#YmTrRf>Ho+T~GVzsd9hpo$jZ-NKqtlKu zlg^Yj`VBD7D4F&$qrDq(MNy?|-$8r9U9&>Gl|oNAr;S=9LMu{fhC<1S9wnq1jzRmU zQA58y*P7_nrAR#)twxr(96f9UJ8zAiL@gR!E{tocC|r{%nK)-ESjNi^Y4 zd#l4eAQ<=CV7V{Upq2C}tCR{dV~e0xBTKR%D;jnJ)~oAtY}*dd{BcciM;f;%d{8sc z;mmPss&;pt240pfo@2UH7zTEYte1&Uy|Jpu8{_jJQ(_X&Tb>7zyLepf*kat}E@Z8a zAU6eZRQ}XTinQTi6eYQ>?41qY568{Lw12gn8I0T9K#$vTRX zIO`(=!Nwtg{k&!N|9?-Aa)c6G%kyTN5QQw*C>drD7zD`@0S3WLd?scBk0Ja*reM%5 z)Gx{M+D*G5v_17f^#vWe{5JN9NK;NqH=g`0Se=}eQjNEw)838l;AW+z#uorSH?Q0t6E|+fIRsQQ$^?wf_*)zKU zDb0X{N=j2tx>8!l?n3FOQex(@&LW>`uSz+;I zacTZlO;_MbOA}q%B)vSnC#AX!OKRP=|34@ZAD=uD0M8N#Nj{LiJVDSoDAJiAT_{&x z*SSjReJd3pr3*pc*#LEg(xp(c6YEl?)H*p+?QhSPu@76uvG#GxK4ciSP^HK95)KGm zRvu!NDhpQp${096C9N2Y%{-VN3C55|r@X^hWFBLajAiS>V9Mas6HdkWjvv|f9scUW zDx!2?l6$d$L!$v0!A4df(WT%hP!%L#`)dH&(%V_7plU<}nG$MX*w||hh$2ukmB0Wu z#teYF;&b2LVqd@m0(1yqey+>J8DI=e zXswM-y6T~qJ_Z{zbII~Gdl$?es*}zk^+jNkKTFk?CzfT_xtK+*QF;eZ$=|m;K60(O51(#~qEH#5Yl5nC=(nMW`r8X!uR&C?E`sButDKRg@uWs6f>5yJ(;$qKPk}g@HsH9f%I<5nXgAdKg0V zF+mI_Ef!E2VWT7AV6_-xmKfon7-PGb;H{YAhnS%XVvg#F1=fot7Ks&##2WR94Vn>K zv>;rxCU$5;?9qwv(3Lo#2XRC%;)FiL`T23d7;(i+al;aE$8zz&8u7$l@xlV}#%$qF zx%mK<5CPf|A?An(`$UZP#24Gd4|ByI^CSTCB@jC$2&*I*lO$x~g#sHTZ1N-lR!TSq zkq8VUk+>pJSRv6kFEMy6u~;i{cq#E1CkePJiMTFFQ*Oz?I$44Pl7d?z#XU*ILrKFU zNyi1rKwFZD%Ob;m$-+^|#vRGQ1IfiR$-`Y)iaoLn?`1jeOFsIN0`wz=V^$GxNs94A zO7K)laYD*)TFP--D)3G!@kXjJO{(!qYOq*p@ljUbtJI-4kz=4X~0Qo#BNzX-OvUM+6bJLCLEScI3$~~L7MSPTBe<92O5zsG$w;+LWXfh zM$nX8z;n4c`MU&kCin48-eal!!ZIZoJCrc!MoAT)mDDhRk~+33IiAVLALl!Y!P$c1 za2}%qoFnK6&NVcS(;UqMAN+|wpG2|14S)5U5XWK^_ydJ?QQlgghenTO$x405CKcS+ zq|hiaihac+u&^#`nofrYf>MyXbud~|Sc$Y+>RmP<9W5v+lqPKu)3o+7h)tfFy~c z#I`poCu|b#7J_dSBZkt3xGs! zZ4lwW(#+FxPS|Y3iHRnsKEG{L>qMPeqa@5-I%dF9K;oK06-(b^il{XE4_!N~RX~jW zl%Q3R2nz5Bp;kl=x$xV&p<`5_5vi#8>4#54q?d_6IR=;7Rno4~UhRF@b9FE#Mfg+> zozoZ7RuVNj@^a{zVp{{NW6ny$NRKY)zHAw_(Ft*nV#j)>5EPs@bFLp2DJjB0IDa4L z8ytA6Y04DW!+ZR1{RhyJ(o-moy(?kFjjP7&Ehy$NK~!E!7P^V^e}X2YBz`tuYCPqs z2&*i}F^s2^8TW7gL_L>{U)CH98JlHJZ|O2n|H^KXY*i?-sJQ3@X(i0VjI{*}N~0hp zRhn*6d^<(EDmdSl^mMGFcHP?!pt=NhcgwZ3^2Ss#R?Sk?#@Vd>7~*ehPFst#Dxw-y zrm`KXR~GmfW7AlyN^FH4F{*~fYUP|_vMxoCus{_dEMOD~Gv$gA#wF(wO^AjTShV>p z_na2!!VhU&_~7X=r3>Ay<;j1Dv1C6x{=goYL#zLCu%;TU##Ge&h91;SIjy?zlxTN{ zGOm+Y1mLZz?F$vps5VTBI^HiE^*(ffWQdfijj!Q8(ZDI$p=WikGk^|>j)_yXcRBd9 z?9q&F$p=)kHG&&~ie8S1Jy9u0Jv%_Wa#!2EU%7fu-@e0eLk47f$6U9ORkXl<6_O|) z&Zd{*Oy^RsfVtE?BYfjKtEt@{b|%@qRNApAJ$1wAf4He~ZT0TI&SuJCQebtn$Tw2a z#V9hu$HmQSxtF(zuB%zWKol$ok?M*kM^tg$oAL!^ffqRPmcWZkc7;wfhhHVUDSoc> z0Fw(s70%p^p_OUc#FT6pk5U7lUzX8tsJzkc=u?uKKX#6 zdo@1Y)F)b{yjm0zNmMq9fP0zb;oTCvN@2JP$FrOki|4E6X7@0V`slkS@0R{F?F@^V zsSkSfGabACwg)6z=E?xhFryuX)#pl*2Z_WQcw*=sz# zelrS7%5n@W7KGv2R4Pi_H|0`Eo1RtmE-TV-EXh1!k%GByAayK-w_SZUR)$#UbrwyhvGz%%#QuvG%4^wd_qgQ%;N{ zNs|}xpcu61&;cQH*Jq^}d6Zt(&CjebfIb;2NwfOWTfi6&3P>o~ugON_FhQ8x$nreT zY#Fn3+HvMyN~f{o9LUbmaFJ-AG6z#BnS9Ds*5GDnDn%>kI(hGO!23LSZ&+rWmS~w_ z$4|&!U#-d0*rR+dxj@;xmGK_n)7}UtvVngG(woyQB6NsN()&tzmg`IQ7l3?3&O_!% z<2FPP&SPMqQefMw_t1;Q!V9JMUMLh_T;kQ6*<@yI_?<+E{5D8NFgKG3Bl(i*w(I!8 z>OJdE>974CgV+v@z>40BtgZ*E#edlOA>Chya;jU+F8l^z8tVO1-cR~AYo|xw>$KHV z4j6;Oex;YUa@$p!Agrn3tgh~rMud^~I2yp%be z%HOenJ89a`x}kYd`Q`RL(LvSOTx;6;?ss_y(9>KeoKLHJM6a=`c5Hc!^pcjVACWo_ zvW6Zzze>ou=zx4L>UAFAd`^vr$0y1-T=U680BvQu%tl)G9Y=e*|D^5U4b64y6tg+> z88WLZ5W^4cn42W>CF`%VOAhH5LmdOYef@C5EL$Mjjh1bbvlb!g4`?~CPBhZ=i zJyUs>!wlAgVLIdZpjF>%xY1|GA1EXmm7q4P8rbyuVHaXx<<0pH;3DO^j9c6NF+?cG zu8bPOKE$@+Iu6I-njhQ^!%MSezefOVtsp6Hcw66d-q-EjMVNDPk3RnEg-yS zs-rL5OP>>Zv(bz6bs#AJ!ci3X?cO;nGrRaTUfUR4RI?3spUzKP=eH}J2X(8|(MCYL zhZ)T;pULc;Gv6D{vq!nPY;7*p%Z;tS>wU~~sJEl2#$IgM+VfRIEwB=OozwReEMhv( z?7Iqyd;;y<$G(!n0pTL0QgTT1{y-Kmvdr?CCOq__PI7>X@_Zjpo|Q=lqGDvj1*fVl~v_&uo{8dSM5z*N+v@D zJ{Sn2WHnX>qmX~P;N7H|m?I|6gr(lG;(Ht(K!Z>@w=lPuoy%v<=J_b~Xtt3R?;qvj zK@1oOkp6C$knz>nt#7HHrS;Xg_(itC8eS5-W;hq$d}}vVBuWN`B8@{6>Ic76o7?Kx z^joPC%ycwq{m&X0o@@a)Ms;(_jSQZ(zu!a;y0Kp}(`tQkGZP9%b$80u)Y5xtaN{=$ z5>uUCD*>Nz+?pFZFg2}Ff|<4Cu(zabXs@o_rP+$@^-(40< ztlyo2LUA~v0*$tEEn8%5az^b{vVd^R&^V>0`qWk~c0*H>7?~`aSaPM7TA68mKXunN z@_Xx${)9Uz=cg_wU7Kr_TI8LTiqfZ0pc`5g>1pxc!Ce6Y&q~*E(yda+?xx(YrRMk? z4|OU3Q#ZcDU$t~L1a{(ey=mtZN?@riN;?g>`17%$iPfjl?$|BuwDIDzGL74~%XXdA zOj>}WT1tB<@S$`A9zNx}oTao9lUJu462o21JbtHur*z4wK%NLh%MUaUp;=vDC;@AP zo%CKahWeZ=wa`OSiF7yQ+sr*l0eQz?u$k*p@lUl>$N&v7iX4tX7~N*h7F;FBf@6l{yq0_rrS<$O4&G z7eaa)Y3)*ANN=LoifMH%nh|Qy#1UJ~SVwx-4M(->cyy0OnLTQi_8<+L&IUYPcZNVq zJQ7c;9Lu)cD)nMD0IW~`VY$B5MM5UpBCIG80yMx0zN$7d=Z2co3a9~%MdqWZqePLS zq;YlEkgk%9q}eKI+FF@>H5b7ZKm;_^H~i(|x87F)N3Inl0ugh;K!}U2Q7`b7qy!Xr zVpc%HLF$<|5~h}c1kGJ7Az7``UKk+ZOSN=#QR|RCH{Mjzg;2O}Btnmy(Ue$Xz1RIU zQ|i)H3@M;&o?3P621Ai(^i{xNzzkgNuD$(%l5EB$(%L9}h)wc_f84`X9`6r)a+A_! z2eJ8RWHKWqKimaQo93c(>u|V(s&*h?ea|)V0|J*7dLeu=l{cT*%8h0Ro4eDg-O>5~ zZSS4Qgn0Z^!jam_22rT7G3M7nltofiNn!#OOFURMrlxiw7kRqg1jgTfWo81J1k(qvffC zK@n`b29I;N?i!#HKW49tuO#XW>E&KfI+&c3_^lU;G}SLNaMKNN)tvL$19C$Mo{}Mw zpH55^QVs2Mh+*F~ONHbed?(;BXF*wkfp9+MP}niWI+FRLNxwJFYy5aV#K*j96<4(f zS42|HdQ~t#RAi6pJcv#&v_XHHKduPm=Jy(pIJeJq0&u5+wY$^V4SUMnno815&ABeQ zux%U~zE{c3$?Z+w5e-7b4E-+No^XUCGiwJUW*jbbgX^AC;@G0Eev0oE6$0E6Y7?P= zaxMeP6r7xC8Lvm&gj>dDSTHICq7 zUAIdlV~KHRR~A7N5pnq3OszR!ntM3wOM}q=NKt28hn~XM-My3CrC0x`N zhJRH|B((LeBzZzm7_mMj8HEK@3EuTFsW}8PAy~dps{lcNZWd>8)I?4c;2|%V#Wi`# z=KT_5?uUs8`_7|{KqjX^fH?J~B;~cwwI=||xy3^VI9)h!&dfj%k3v>AkucmeWrJB# zkeUHfXC;Br9Q#`~fsce4#$*yr@^l{jG^g!EmYYcBqAHv#8Okb4;ilfw?`&x&2dX1{ zCT;l*@OJk%Qp~O7%B8a-v24TDh19eQU;ms$fY4fT~ zSJ*)PLB4j~;Je?wRd3Kl&67-cay^R#tzs;rm5)q~$wuuT3U_=I*FE_06)H+QJliba z^ZL?VMK|?w-(dfNgqf@wRhN_lpCy*ppghOHt`kJTJ5uS8Jm^vFMe&gsW6J8h&aV%b zd9bpt&o_71n7p^leh#~B_@ zVb^OJp7Pk6vv+JN73+sD7KRG{-k+P!nh67#FpE1-KuJjTB^ zfAW>}qmVPC#5tlp0>mn23hhz#+rN#v$d#UUJHRNOn`O z=CNsau!cdRlt$!BrpjE@86xZo1d%K%OkM0y60OSN(VxG=T;KeX2 z{*&jpwnGE1KzME2cCr^nCS7hKoDTmMGk>2=&$fo=$W7!1!Z>|%+N&(>Zj-Bh*MQ1b z*t{HlegNHiKV>Y zh9`&MknO7VG9r<_d*6JguZy`A%Ws+|lmmVtg}R+aTCNs;y3?%$aH)t97=lM(0u9p_ zhR){V=o0=TE9~o>KdjN%I6Gf+H2Q3HVbniN;&et~QUgoBVdm>h-^F&JdrmqK;2*cY*-DgL z@@#*ucY*)VLpb2y^+S^09QT_gMN%vJs4vs#+o-ro@b>nG1u_`0fwE*1Q>>K+oMqc- zO1SsJ1ogkgJ?K)4YfoS%9EPN;P|yC*zvuzLS?`I9QSEb3o=~iC#TD|2QGK6>7dn7^ z7kT7Mcz1#+E|wk~W`_KX9Cl5;Bw=50}HF?h7RK>HKQarrrP3 zm`6G-WX#jJHs4{y1YI!_s$AV)1=WTFqJbcLWB^fWJxMja!yYp0+2C!`-Fbx1(}CT5 z=ttKssP=nFB12gCG>>m5RqaGRnb#_Lg`_3yE0Af`1;6}LrxC4xs=U=}m2>88g7G$zhfmlGNJO#7%j`NeFk zbe-Jm9%_8=x9M-J(^655hA7||<>o^*zIKp5=d>q=+Q-!npzClt6{BsvH^yz$pR93O zNO%4hW}&0?Q&Xc`X}ja1t3HsUecyd5>1)N<(WFP6ZT3oNZm zN5*v>j;7GHJa8Kf$BhM^99Ir_VyjGW%hp1pgg}lcmft926=ob{-9t00MAM%*@ixa{))?3NML(MCk*R${8O10lX4?K5#j2&1wA$(a|AsgJ3|# zM&6|1r(%@z<}`zKb0UOU?^oGdx|~TAI}|al+Q;}ac$T^aeVf$F`}BAtM)=}_Xh<20 z%-a^C5Z}`&$b^UtRlcQn$NS{!Garhz=|RBETbP@D36}@d>9N5>_M#pQwTy9Nkz3B? zTc*sZz+mzAX$K9=qD4^;m58|EqqHgCT7GsBv^4unEg@T0Z4ft_JMoXWH@Js@a4Ii+ zK9H%m^$P>tiEj9D=)#@EcfG{v^7e1`M&r06!txIt!HRY=ow!>s)ViGC)ek8L;?;#R zkNq$$Ddx4G{srt8+;|xKjgH-u>W}YQ?fOwK>N(Vqemi-VGmHIB&+N8q2)|E|1*DAO zJ!Sv{yF$8{e*T8v`Wjc8WnTZnQ#!-j=ygEVnoA0+lJqiK^EE8k5< zesON{1MzYkLHa9buj!>?bE78J7@P0Ycq@OQ`vWeQoK3}bJ{VQxA`loGQDnuY9#6C(G^QZkg{121CpsS6%q};h2NAbvjM@$0z1AMlQjz zJvP9?H{hNYDs!s#9r1r2!e8g~|2$l+vD3$1*sP=sTJ3YbVoHsA~xFxt^2;#3p+5tCWpLPB2jOrrg1jZbn@I z;Wd3~Z4P{`PPa)k;5JtStY!bark%kS!EWl}5lC(Ad|GnarTsC9dBASC;E{IF< zR*YRmzsx#6$%cif&n1qZ%l(4!a|uYptB~H4J{jfXbV%K?FEsQi_~3;af5P*C z-{S#B>@JEJdx)~@sdqW29=l9R-N3!aIY-{zJYPvr`A8~T_n7!|*c~$hp^{+^2urGr z@yKvvAP3P5#|$&haJ6IPQ(-%4VIKTfvJVXOTjj)SDLdaEMDGDcvuu)S%y^eiATqz9 zaKN5e!pKWwi4PC&hX5m-gCUjq$P#pwoPp)6cosU(?_vH*poT$?yKC!gvn5t4Pe0Sn#V_C`u!+z(HemO1e&y?NZ+)u*Wcm0^Gt_vF%T`W! zb5rXW<2tiC`@`-MYMd^Aa`FIgUepj?`*!xs55CTaItj%wewlaCAH730W%wk+^J#sg zFA6(wCaY;}E2xB5vv_NN>U_FeW=Mgee>O@>%8YHi8;aJJ8!kdQw_aWps?nXfH1&Lo zo5B2I?$UFIdrgfrWY~$xEQ=P8srFl1f^0EdC7MewHwQ?h!m2go5RBe2{Jy}bMq0xn zU{skw?>E8B|Lls9E>hLUD~;4{t^n}b7Dg4L~5xqADX&5HFbkd7U{!k+%|c&IE;q4S5H#r z%qD`GE;#DF@ru!Z@ps<(*hwJ~rc&nHry_QPUanXdLftdF%3{Yy%+kr<52AWO4Ae?q zhUF|>2NVFbAzSx&;63@v!6;Z-peC2c&N8g;rhxnWo`VtXfhR5DK)}6YUj#F<3p&mif1WP2WTr?NeUGk~BWl05K{b(@fi%RLeG<)Y@W=*+gsxsKEm46M!x( z3Yc~PwoCA$urf8%r7auW4E^Xbh8T!&l4#&^jTF^khjk7?u8q>-DMFQNT&M9+e9nkG#HKq??kzTK*7c z8yQ3(4)etwi2^$o;3hFj-M`gclqSNi{O%knAcFTEIC&eY5~gz6bJ78dpv=?>iImcH zxG!Ik->1#SJdq}bq`+7fRe&z8U$@%}(ba5oQ@Nmc{I?QzE9;pa+d0@A_tX&sU(Moy zsqrJQF@AV=?aRUf1~571KkE;>{E8-jEA!|>3$^u%>WW0KsgjQ2H&7y(qSEyX$k_9= zx(My8$ng5LGH=#TUC$;p998D4i)v*@ylD`#Y;olsVnUWlEI`zoV1w*XGNKEW$~^o? zfZ7#TVqznlVRcEJTTc2DjcetI8JyB}j|ktwEZTpFiI4PQ00OGQ3xH})8~LOKrOq+3e}Wxj4?s6Alj1XDRBpB zHlxBtC~FB(F;gmF^n}!CQuXTR8zEi#5(0)IiF)|<2@H=(gqx013W=`2e!}5cwynW1 zTb>!u;!weExUZ2T%XdOs$nITvX&g^j#$?=-i}F(5$_-71@&j1HJa)%@D{qzktM`tR zGGu*;{viG$p&|}RbGB(cZyQ$0uubVpURS6WxXN2!Wfl_6#=9k*&26`3lza7Dyt|Unf8MVNy0-#~ zj@euzDwopfSQK%FI)D_mQ^0Y$K&!jGm#P&5&Tg#jRV>iHVnZ`)lP)X&_unSE-5drZ zqfplgUdhn@62eeK7R=A~Jrq^qCqU%j7O%V&3cup+DC32*F_~Mn+MrBvS*Qh(@e=8h zGw3bmt~AM7BDuVrF0N^sw;b(>5+ay4Vez<5C6z=+6)dS#Rt@P3x7W-Pqo1zU493|m z-@iQ4-@C8tYdH)*Z}-I-e^h{=Fs_&+jZa7Hdnv+Qz~kxe)%M4u@$dQUZM)B%05z=X z%g5B-GmR@hUWAnV zqS@BIt~)4KzlXPu=w54?qn$p4H;c*}f{{ZIRvs*d;*p_+e1Ga|X}Ik`acoqqT2$P6 z^)zpEc>@vCw{K9}3b1n3wp=(BlR-oXg&IF1$-5XCQ@B{Pf#gLB-zqW zlamJ*I(4htH+Y>SJQWk>OvqMblev5kZKLrJo}>DnR{>CJDpYKMK@_OGfgDo5LeWnm z*?@%z&Z576qspEIBBG4P7T$5*y{$y0oKDUw4meQ}DAeKWWMqh49tu za=2a!IY_}iKHMU;*MWO!Q`_I%>22Wj>+NjJaaVOKFx@{FO!^l~^MPXmh;XngQ%YKI z&98QE0R5A<`8Fj~pSa>&O;Tt+%}Y(9M~>8p4Ifx_H2T-yJ!8}v-8eg62a4)w;AAA_ z({m~x6U_=I|Lf)2?}m;2^20YSOSx`)y_KiDY8CC*9b2N9K=SGK&~%Qoxlug!rFAXe zM$pV&sHke}N=Tkb3hE9fj}QgeQq-R`w=}uG9e<^~}WrHhlpFJPEG=eAyJ=(}zBMh{E<6z;`J$T56Y;>6UfPJ~YJMy3A8zo`UhS@e^>c zo^RYj?0KQrvaXp+FewSZfI*6RMh}3ed#0OR+GuGh1h}8hP?)(~O{rQ=q0-PFwX*fp zGF+~$KrL5QssR?_v>$o+5GmLu;(kQ2eFLzmbE4_v^yqFD3C6|HV(VxzOAL7Mj~WV| zz4OiSee>AJaJVVa@Qz_ZQ;!MTkPUJ+`M<65KD>KHVp8SG<*lny!23weKtR<+;? zKfq{yPY-7pD(Jn>O1U^X?J_+&;F`DI0%(}Cr^jeMfWJge7{oDE9qibxspx<%m z(1%-*Z#j>bX5R2WHG%cl#L~yF8*TaJ68YiKp$>i11tYyR{I)C0Be@CP7MN^Fi)5`% z_G*x5fr*!N=((;|?d^3_^VndV3Rq0qPwQvlqR07uk#K z6LBx9Li>=t_PV&_gswfwC-#u|xLho-dKbL=`t=^97rA{M*$u7ReW8w3Y;WE{{(Fws z4)uOYK`q25cAF$W`RNi(R3*s>z$MiL;N)G!tqIGt(udvmyhV z#+y5z1Ke9Y4rW(flpM{>Ov$>l@dCc6VKXw^{XqRe_l1Hx8ik#*Yw9_47OkalHO|g1 z+a0zf%I7p7zE^(_5U<2Yj)YxZ!o;wT=UE>X4xauU zmpA8kFlR006LK3GiTF_MK{tsWR&}UQi&7YLHP=8-HFf;T@h0e-Oy&CcG~i^ zg)8k*B}8$I&d_Fop0=3bPNxAMlB0K6tUIWHh909lLV1(Y#v@583d;7*#<;ugBD|B`Z(v=(7l{Wh}Ai z+ZwLkSy~!G4JMyo61ArUb5_L26_~L6VV_~wk<5xPn!ly2h?ZgFU!NJOu`WIn_VB0T zb9v{SlGkl?<*KPjh~Z(j5=t?-kQn#`JRrO?)AH0`KBOCh)?{Uj5DV=9y$gPE(xl~g zUZRl2_Z~T2TrkLV$W|75$eZ_CwoYt z>(VI?Wt3%Ab%!d|D{-t^270>c>Zl?E2g<1PLIV*slHnN$X$jfF`QAMfC;+I16hIk5 zmCBY0C2)=EL+2kM2avw``95lYG>`V72Od2-P_L80XOGk9k00nbdb;sxqWk#+IgO0t zL_8Ngh`fG{4xxi03?d48>=1r6Dr<5?#08B7lDIavTwSSNez3biqX7h;z`O3o5KrfZ zE>HJ{4v%<)z)LU((c$Cujj8eD3kxjHjQ_!_jNh>YmOcNAH$S8KO0?TP3q}LOLaHvk zF|aUxfU86nrV{(5m9MfKuw+y~ub+%jB2@B8X1jY9qns8KqZVUnO%Avo#aKs+j)|tN zV*ssFJU1RlZDF4V99$h(J^;v=516tov#pyJTbq0~tlj|ftUhU=+qxNS={S?9pusA z#uj>-m;fY)z&iXPXy`MoeqZ!Y!^am68@iSk2*C5YX_QPsFDqy~Z386CWsH(ZM>`jK ztIiZa6DD96Y91e>aj@Uw3JNvD$#-N@Q@~}Q zwY3XW3o3olV)4*GZB0yMZLRBA@Jvk&2>i6A41U&z>%fuR<}~9PvA<~ace71bhf<5| z&l&;V|xKY(bwGn=}>+a#*6yPe!vS5@m z#@sFh%r%eCi=WNy%j+`_Wt1D18)X@0<aw8mC_T4O=pj++LpN;K-{fbR0qldd|Kd*OFawNTB3zS)eLRy{CF$DjO*-pY zFk@uh6BAc)mK$*ta*xs*hiF#lsE&kBryE!A?{&~d7!2MD(u7fBlkJ;eJsZSVhcZ#Y z^caQ3HwqzEZYun9ERVe_3}GDIijHDn=jAgZAN57mE33A*;s^s~t=DO4PuDI<=6DHu zlLLy(oLrf?Q`}2II`$dB&vKJ~yCL02N^JPz082|Bv?KUG)xg+H=2LCcFN9SvhGe&- z_tsS|^MFN{x}V3f$a{waV09=3(nGKi)C=pcKi^zUn0Vh_=0jWNCNmY@N(kcxr=Z>t ztu>zpBi;FQXe|_anYA2cNpU{ap7330*cp3b3CksjX=k|;Isl+m>XgcgA&>q;!7y&Q z(@`@^+IQ@AmwaRRmus-GB@JEvGv!el4feHynPOudSJhyh-&D5%l?0QpaLACj@Gt;{ zjn#tB1gD$0sk1dgks>1+->0+~MLrN|M_3-{PgT5CEgq)3pd@+fa}>qIW-cl?-J3VS z=LwJzL{L#hRk!029$W=yqxT4$=j)MnoSz*Yp1%R-A`^@7zfdcnJs{DX2q(yux2omq(%CQg^@}tH77C_*2bHXa=LMv@HbUU_!0!;K!R!|irY!+#Jt0XQ7*n^ z(W87FO!xfwdE1_u;$vjBY@PHyj8lW1Fest{W^pNnn1&nhJD6L17E_N=|Hl`aALibM_iST|MO9n@S!fv{ zk*sXmQUrbChHCh5ZQ1tlrKfUKoe#moF!u)iL0s1=mMQG#g_>bImeaEA;Bp9kgGqq1T65uv>L#W5l&@H zj##w7eL?bc4kcnOb>2{Fu z_y?eJR|5GGD!Z$rS}eihR)T$o0A|B7);dlZi+CK#KvTgMzj-DM`NLQpwuzo`@@J>u zcDu~CL^uLn#A00QCv()FZMKxJpl2AAFcA5T2i3Q%F9ut!9*%?SE?!}vczt&v0)bM4 z&L3Kg4C;h6l8L+s$Lawof-D}Zg*;w@<8^ZLFI3V~JQs#{zjVoRLanF?Zm=L}|k7n;C7}bMyqx%@~2onI|FeV!tihMuPd<&61ijnYk}Rtj|h$- zSC#*E5`mDLIye&w?XqB6I4!u$Dxzny`LBaDZoZ755RvW`2I%Iiwdn0ljcO9$4&rU_ z2XQp~8x1nnIZ(jk{(f!ojK*S*hh)rw;pdxDG~MFCUso)0C7l?{ig*v7$8|XR!jVC1 zyKvXGA7nlj_G_*wh()RPn!9dpys+vp)}I5GYSYY8;AlGuoB~A|0+!*5I~W54^tMO_ ztUFb3W0ZpddCT-g6pKYKn1sb%q}{}y&hd{~))Qe9A=V!=DYHg7RYu-I>w97%?7m1@ z7T}n_ILbynsyHxO#{m*Ip7#nof1>F^7;v2DD6UX+Z-+I43rRZxbX%8lW!AG30MEi$ zGAq?M8$7EawbsRH5tNVu`CIu_TnF~{pll9;oUDLU9IKc&^Lg zEp1SN&~3S@%(`X_s(@%w>?i;saOL&`rQ|8fa=5h(&W8)Ov@IJChB9SP2!Qi~p&)g5 z+?5ajVQvi$pr0Mh82}Yl%e;^xo&~@{P3sHG6OUGl0)(Qh$rA~&Qt%m!JM9$WzDQhi;0KQR5>{R+EG{exD66r}&* zlfJz>uq+=SC1{PQU*S%7Uw`I2o414Ed@joJb`!ClVU`)Z_1wi)WD7EN5!q^Hn5AnX zUf$s@c40h{Eyg@uIFEyqDykEq1gNqaN;1$M39#hV>WCJ#)j|tjD0yJ&Aird(FQm7` z5-H?oaLByC6z2*c?Yg>lO?$15)>hF=;$vY)N23-;t9`>{vjGcp2V#J31<>7_Mky4u z*y#--qNJdGYU|pVzt(+mHCj2uhsu9}AVy2H1Gk8;eXbl=h3j?4mF;>!WtuQWn3jh$ zkBdO#$So{31cRAE`3GFsE_YlwE(*BxNig^7>X+32pX{x8e4QUi!mhy8emm7#x+<%y zK)iICUmN9YzCuZUMt-+q)5@%TJsG+D=K}WO)|>gWGJW9>Az22VXq@MdsrIOi@x?6F zdQ``5-;km`i1fS^=|QDQK+Ye9J>gSoa&DZ0#TmpW3w=HOcvHU{igw@9IP(H*QAA`Xrx_t8^dCXy$wX6(t}4cD2ar^ z&TJ5c)EV4=5qUm3T8dqd&>4Gn?0F7^aEwsks=cDa@(}Nk_|@?1rf+{Ie%j!=g0{kj znn#VNnK|3=oWf1)G;~*4agM|u5gxHp*LdeAZ}QQE>}guIE@BhSOLVpMbUT35_52#} zY+?nfOq!mGIk*qooyCW8YS;07px1$=_D{FX3z4GaYlbs!U+{Th#@olQK1#p7>qj7; z10oTq@31T8mcsM@Ma^KrIXQAe=;%h)zc0CUxnfK$2pVZH|c-x-2L1olQY0f-crh`t8i zHo2z)mKbsW1YtwKXBGt~!m5nW=xG);ACy_leERvm8Nd^q8r$iUFuqMojr$!(yWp26 zOk2tfQ}>lEg*G5#r{E3n#s+oU2up0IPoCJc33$Nr83QFobK2Nf76VeQ9pWFdtb4WX z6<{IJn`mRU5FCCHpGF@+Uc5vP2WWi6?pE2x+|(Nyd6|CosV14+e3rbMw6`LvgKTX- z_2k1h;0BYR8hhXXxfNje<4B9*?_LW1{$1hk8{qn`e^3S;{U;I(h9$0`8>9YHLw_F(4rpV>fTyu zf8a#xcb{@iKygnhzsb4KkxO#D9Lu93<^?-H+;U2LoO8Az-n=$?M|1u-hb4`Sx6m`gKyDda zQx6rC6H(B6^{q#h!)nb{<^DQgEZA2@<8Id)3Mg3QDhoWdJXsImdTJ+lqV+^FW4DK^ z#Z{>KfNX#38ct1SWW7p(h*wJFQ~mQ316MUCdYdlOTNWQsh)Z|3%If%#8s?C{TWhyS zL{DS0p#%5DsM-~^j{h$4^zt;Jz`(;qjR`d{Jg!f9Cpa`}ap@a{;E3n`n|5ESU)oTe~JMZq3@P^sLhK(vcBEPb&GE zuXlW$SWGue1i2=O;h#7fr(yEn9s^Zcy?_m>@*0=%iy$~}VP=C`g+uqQ!aRBc>UlI)kbV36aA^xV1A zTP(6cwDjJ&?d6!Eb9Z0qjoAHRB`mLakfA9n1U<(Ddzu_+nRH!LKY|A47c)7Tv{Ro! zG~n5Xz^e!Q>(ImfM_@TzXNlEFK$Tr*|2+?0-vnoI+WNLUIIDRREQ7O~w~%k3$v@0D z@K*3q5xCF2H@!#DQp-~{`@wweGT^#}3HKyEnYSl}98KvPR>@-5hprOF|58mM=k{c# z4{(DN&05reL%G}Yi;-D=_wKdcZvKnsoK?BbIze#o=2$Z%Sbpw|kNVZ1c;5tEklN&_ z5U^EwexJ2zR8>{(nq_f$j*&;+0QA3C>oBn{JM`zQKv`a1Q%~JPC#xxR9R|g1V)BE# zKv6xbrmIU?b6#O~5}B^^LJ%%m$1lx4THk9d)|syAtcs24(6ZO=h>i7?`IX2rcHbS^ zhFTplvD0E5ktvy@)fgKalNFO8E0N6&+8piI4aD?y^sVn$9~0XS+-Vo$iba9sb$TH; zfyeg2}w ziT6H|mIP6#NFgj0Mv+9o=vIGPe>z|xk{z8{q{zgB$m7RIu?IJZh;js=P637I<%L5M zNF`VT15y^|20gu^n2Z;sPz)!=7q2KO;bXkAPWvQrpYZL6yfX2$zzgv08<;#1nrQV@ zPA;qMCV4ytk%yX>U;ihda22q7`Q3+wJc(V%>>ScXc&Pr6fR4O>KMj0j_k443sL*6+ zHOORaW~_Qcc20v9L$kus@jH1@`y(I~OVV?*XcA|qBsVWXcB4c+rZB|QxiD4ahdbX7 zY)78`Qbt(wwlY&&v#bEkD!}{r5CCY|=9XM25R?V|cGnX@aS4zQ zPP#uZ1^7VWO9!T+P}D(8s#8pkR>vW)5{kmbF0TY$sb7%wZ%+*(iJ-^r!iGI3GBupG z!9eWfv+3EHHifSpWAq$(DPR3oS+s#wmd@D6uR}*Y#~9$= z8VelxUI4fQTPAr@_5aj*2NaUWXI|%HsJ)5Aoy4Vgx6|>ddqwhi2;(T1oQfGy{E`nI zcZ1F#rXSXQS&3zF58hI);3(@d=2dVQkXrCGTM)vQ24dW4p9+QK&k%L(nmtxr_lCw6v)cG4?BIs|mGbarU3T3KWjrN)#(!YJ-GGxTZb1WREa1|XWd&}j?U4RFl1z7f(gl@r#6@u<# z39PqUaE#Ob)Hh_L|8xry(q?tsADa-FfJwsSMPk^?Ik<|{T5JtAJyo4?>WNi~#cj5C zvUlV-ak>q8LAOK^u^BLz$=#VU8)9=@C9Jza@HQ$S5yWoW~NJU zjrjCc19u$7+1@i{f8fK|?X|`Z94MZdF3X~3O<&FjMVLsq4(T!QVLCWe0C1x219C(c=mWMC%I)rk7L@mNRid?M($s`MNWalB9FX-WEt{p9veK~0eXNgt=IE!S`7tI`pGm(&BhuEjXXdGnD$6P3Zz?xj@^y+Lhy*u^1XgyXIq9n6_@MkM{n7N(h2iFkovcWYVTsuu09c0n)2Bf+c;@%7GiVSHYg}KoYHw+vaYEK! z$mxav>_KncLiPk`P(lx)-cDGCnD{-A39(HR!%pEvnX{zsew+dEssxFI3u=%h(q;9L z2*Qo9oi>UOfMC`r&txeT*>=fwz6JUEFDXn7cnV7g-+<)QLjOOo_r7dDWhhDFf7SJIB;ms3{ZgD|yw975f~Y*0j^SEMgA47(d+6g9Ki zvG{Z^R}_!QGreN0{-5^CN1SlxE^36TEMcvX^F5CqKsmZ9h%m4^qF%ktOstY#L=s7< zTQ`Q3Fp?;N^v$fGDN}Ve7K+y*V1+$aA0IZyttnG4w|Yx%GmO>oC2Wm|Wsule56FXHZUw}?%%Nu@ zS*&+6mXc?Th52n1)cWHiGa%mme)_L($R8GMCFV7NyPs-IPo zQ-4Oe)4FM_0Ty7%5PGKJCA$QlyJfYq-}*GuAM%IvMT7?!5K?)5eKo+m^V$rV{VBV- zr?eAeU#eL&8Eh8|00d| z8sl$1fI^a181HnCVlrkR2^8giJM!C)!mx{>S8hI&-Srp;2r@L!5D< z@udV~Ti0M5Ym#`$gchySoZir26eqsd+dyW=0x&R+jH#J_AIrBv8cf?wJ4_pc+DQ-@ zP$2SWGDNv{dKvtZrN`@I0>s)e5^Q9w9va}NAHnG3KC!z5TM0c191vam)@|vR|7q`- z1v5Mal)>{TaBSuNY*`;Vu%gE>8XA(Lk6i16`C&N zxBAkX9)}CCw4O&qS2CncCtDnS^D#YMK>8>)@+G#HVKeEk7^*6}?X`Mci>~9w&ib2# zP)=Gg>7rN1=7+l##ai+=QR*g(xv?R;f%3m0@?yYprBzIlxp6mheQ!EZ!B!CIgaxRs zm*=FhU<37jW|13h$>)=_l8$K~Pt;1h5Wa*%;pkcL_Q*0}Mh$|~;tkRdri#Y{7efKR zUX_W;`BP$Ez~G~aI?z2#c>NI>K~H}EbOIegKE5Ul^HsK8Ilmp*fn2@ny@=Z{T-mC! z>o$wrd+QR0NW{Qi+8`q87&TX(^F2pq>$1sP+vf7Jm#)bh_|X3$Z%s{h-qyLT>%Dzb zzEi@whRo4nkk{0^4KPshrBbIMz>}MWN%ZOHu-z66--Wpg+iEwgm!o$|_4A2v5K@FM zmjRLcy$s>qqgrsso@*_I5#6cTvW;%LvUT}#w~f2Nj3MsAK^94=`GIH;efy&|D&pB; z$@t3wq(#SjREXe;?w)d_0`BgHEBrjG1F9Wb9zjjGahwD{fCHP`9-ofI*KfaEZ6+uu z1opgUc8QMWwB66f{dvY1TfCU2VbLvv;#qq5}~6z=YZjNEjb4EEY1r`wt%<9TAN;@RsxC0QTGLl0Ua*4U`Lx#(4&B!{S4hXNKyF zq2wgs3&hFEVqhjj8bA%6TeG3QnIUZaG4;k^mwtjc)8vN-dqT7En>PGxzV zTV<^e@swGV;mi>|kx@_>yJOr?$W9ptmkQlby$}pakyvZT47x}lxBGv_ywZvRWkv!G zg0`8g@VkvVB<`;+%e8QVVunHe5BuFM84uK&WG>&03(VG70N`fs+dB1jlZEO&O!YlF z;^7|fBS}{r%t!(MtU5zQrz*Q*TeLDAugFv%Fl8bgk+x5>0JW;<0NawdIE_9c!ZOc1 z>xlvtBO=TbadF?|Sr`0A3!&NbxDj-osZKj!aAC_&I^Uwy^@o^uYA}$@sEmQBxx+lP zo`Rm?@TJyHu~7Dd@g&<;qST|%)R%XP7;16KJ}@MTkYOM4OJ%P~fOnaDAa)L8$)EQ_ zgIpe5#MD@xOJKC{F;or}6&yNywHX&XqLs}MAsCANEH^sBAl(Y`A^1e<>_e#>U3k)G ziU#H5Nex`I1i1opbRz&7N{v&Glg7{ppv!@;AWMp1`#@@_&OHYamzPSX?mXc0;>7}c zGw7*2u7l_v(4mIf2Ldqf?OiPr&J^Y!8_qP_q0mf@;(pB`etaCzhNv`MD9FHWeUmfOM@dA4ASF&cV7Xdvr zk`-p1I}(l;7L1EUK#8QO1bWdH0}gA}WWavVa^AjuOYws;;IZDCK~n^JIUGM^r4Obb zw$l;d0yH=UDERPIi7<4jkJ?(*wQ5Uy#}+F#$cJu3C}7Arg|^i$28ba&=ccNX~2e>fJu>UFSn-3Q(Egt2XTTG<3| zp!MtMDnr}pfVWc7%_GPOylyyX?;>#&@*xh9FYY8cnL}0@@Tq{zBKc3N&kCLhU9TeV zd^#W;nbF&rE`N9Ia(GUUcxl2`Fs7$rZcT1!Qr9JWKy#RNI^&*L!!h%gfnvCNkK5m> zjao+q>QcjBCzzF+3Rf1^0R3!_IN4S=yVfYRl0=e6+=EzyI7Ca{dSYlq-0tsr+^VfC zz+FEU4C_U}uG_y3wd3ss47e6oFC04h#H>NH;qc*9oSbS8>=*G^^CO2FHSSJr90FPp zX(JiZ0ze1hRbXV83T!67f}e@4AlN6EnYun;@3m{0jLbS&#*k%V7$)xZb-C$E75jJ$ z=p|IfjF=d-QiT`)K4aijx4-Yb>5S>aw6ye$1=IT`@5=#P-&dg)q>PM*0sDXk>gxfw zc?I1@?1|AKBB#2)5wO>0ckV=|M-uFQ`KD0a)OYn$lZF)4hBBgO=&krBjPF zEe0-()VOulsfiY*(*nWfbhUko`0eIVzMdhdMv|qpYtGO=hgq|D>XN3jfxhCdF0HIZ z>w`w})6Hc|oEim!BLAtyu`z)~j3fl@$aXlu*KG9g3kfq`=^4ZS>Kn4CHmSEjG7fOx zo};^O&FU5sRrq2cFLkG7YH7~Fjl?(-;`bkFcHe=!Pu-3k4@{;_9>&KdBs?@3H+dif zWo1=6cD%R5hj9t?bRej_3;@@Nrrq!H`0j-t@B`#W_Xl{5Rc4fW;r-gXEAF05Fn&8l zdATRvucMGTLp(D1eZz^WSKBVWUl)}x?gwl0LU0Lc%*$$fv{e^T7(88@rZ+{|+rQ0S>S zIt=>}IqP5CQ5A?xQ!mY{66AY6#oV8KW4_+Rc>S|o-hbQAQX$Iho+mN)hsfp-w1dNn zAbemhG|y6))D^VUu2HH~FI5lH1A8l!zB?^F@VKA=B#&jVyn3$qnZTLCqaWnO*#j^u z6+aYIGB8CsQ(Rn~9x<8i4ATDJww}Q4eJfk|=NM(A%NE zi7=)Ag#0l*aSooFhPM9E)EqdEYdm(hFjjL~voiJXVEA}5NBfmFr}=&}N9C0Y2V;aE zP`SV6gnxzaFSu$NwmgPEjRlZ{P4YkTete~B3S3+Jm{ic z!_yB@g~mVevDtB@*=ypmW7lM7pNRI%RBq7rxAE8B0NfDESsG=ZXU3)Ca&Z3VfrpT< z57Y)ppL@BwjBVG>Zi5#C;YGqnL^e2*=@8dWfpj4Xkw{?yZaT{~R+AgPF~}ysC)?;n zeAuVc6^w`f-9=cZD|32i;dNL3LNa%ss$`H&_d%@FHAglfG6b|{%d;>*2!Uc*X18o{P5;70RP}*aTQ+N~@ zGwPle@4wvC(JIcL~PCaaMGrQ^{6Q`2S<^B*j9>3sKf@Jnw5^r!6lpxON)tK zulDxNnJi(*z)G#_3P7fk0r@%^=K~hPI?O)@k!58>a;{xviKB>~TA2$BKaIt0U>wt4 zW_kj^7w_LF!fW+=fvQ6dpk#A@k|ozB+{7o)Fx_QUz^<9U{U~2Y=)~iyP-Bo!46w7? zqwc85c&_IYUVs|x=u&)U_`K%NsqjqTID0rgp8MVxnC{q-7A9&|Nms>b!#iu8)vaSG zcW$*cE6iKR{XQ3t9M!>>VFf=_>eT*wf6^E3?3&u5SoX{ymUPGCvo^uE zdWW{`CLp+LReZsVo2%1`Ot##cV~Q;%MQN*F+!UZ&lLiY-+U{Ki&{CYXN>JHW8Mi9E zPMnSg1pumBi*vA|PU$lgMv=Hsg9uH&%U(V-EOL;rUXE`J2|G;3wBTEeKWZuQ%yX2! z0G|}?7{er7&sBmh?T{)y2P^ykq0s}(YIF-k{4|nCj?<1d@^{^@pk>^!tnt>9rF;4h zf$bm1*EA7-O@FKa)4-Ab3PF)gXU=RwHY441WD^D@c?2_<>cWtC-JtT!P%8GY_1&f3 z%kJ77>WcGSZ9uWp`$XYUxhPz=b60t_z`J$@M(rp9%4dp@!q?9@RjSW~J%XDDNJ>q< z;2Pkm!pcc zzk`9pRFZ9_Q7V5ei-T0Ua5;z=RrhgmKzaPNd>-mxn<_F98>PmVlO1N)QoBLrzjIbp zF>NhPOdX)c(7;Wapqyqaz_2B2jd`fR<)e#%h{BuSV>pXCOOsZ$7SsAoP4Z+5dDEtP zix#!+GJLCQtGgN0O~`$n67Y520q^Z?YZG;RIp2#bp$Gpmx8#~vr9+#@(M=RdiexPj zM`D!7%`v}4;Iz-{w1DBG#mSpDZ*uI>#O6p!i(c%{m|?hff`w+c;vNOpl_J$ z^sjJAIH@YE6W$8`32IMSOE#of3IwGB;J_J>OARr7SVO6(fbGK=LV)T(lT$^sKCPcB zr#Vm}9ccs9fvuu*qOE$z((w>3UH@3546vgoai}7F5!H79O65FMQUb+wCz$bZP)P5z zOivnbHlT^^XZ%d|Y(};|;)>;`9put(5NYkd1F=|CU?Zu>?4Kv&mjA~~V z0;S*OzSQdRtKnarM>f1+16*wO22nt@V-z}tmmShc;3++PyCMngTJ5|JZH{&auThI{ zQR!&v+o0XZYp1l-4lQ%9c1@yP3*4Bx&zUzROym^^h-{2Y1kddD!H7kocQ% zEWc)!`%x8k%+*;J;B5z^fct1^d*ZrpxASyex8q+Ez9s&wpT;|7so!xPZI1j`b;9|P zI!OSY7#}@$a_HDmSuW~wJ}y0Syj!6p$w`3J9eF05mVTQK=(p2D#Nj5rofj8nzOq01 zln&*GgSsN!&Obt7hn`UPpg^va8HP;B;dmtzVL4|e&{BA zXbr)n)q!G9eCN2hu$&_Jt82w9<$+%3qHOk>q%t=E-e@|Vh~waQr*@Kog3q0`!K z{YsC?qJT^}s#ScgUyvafNyUGuND`p|EBPlX;&7-tZpb%OP~X<-d!^cmj;F8Pzg9NI zZhMZO6F}#FNZIH7P z0d>n^!vU!RKeozG`BEMe!M+^!A2-cPB)TdD1D3=2HlG?23 zO^Q!XU}5QRbV3yXB#1LM3>M2(JF(8Lez~Wig{pAnEq)L!KbJrZpcYA>G_0~zUnHT0e~a%!Ft{eez6n_fE?+P+PvLzh6ZxPl(tSGcrGsY zKXTO&BwNOS$F*SH0`3aRj%}|?LNLcqi-z*zjr_z@rX`>S zyQ}TAVWPBQTDJ2y6X6%Kjjreav2OgMr5_~#B1|abLMm;n^C6~OlvUldT|bP|ysX=P zoY(!l-wznd%Qk> zG><4Q`7O*MqrrV`DrooEJsHT>BiccR`3$_+nW*jD5K**aJ~Mp$E2e-?1Fi^!7gK=6Mpy_5nXlVQyHu;cNUR1qIdNb~<%Prgw*g1i2Q}iswq+ zxB=UG+{j_$(qN5FOmaxotQ6sqnb#<~lC!p#am7v!A7bk0r{2OPM%e5rLf{BJHpt+5 zWoE;sKbeiuDrQ$~hJKXms6Atf39t`MGKF_aQANn&VoLN~dbj3AzII;ywp23=!tI$O z)2XcvqWkcN-&rdrQ{g)GggL!LNE(eVx`d#60J7PQsqKQIiG<2gsj|L;@ZJidxkQ%- z#t@?OVo0$0RE!SX_Hs7Eep`E$I?~*`;EAAh2{jR9sZ6Gxejgkxma`K z&nSO#o+S+@KV@mor3&97fz{4nh}H$^gi+1dg43hV32{uY>qS(#IYZX|0v^a89t@u2 zi-yvpV{pEDrt?jFD{3e!%y}i5X1U?2egqcUb9uWY#B&`6JZn84Bh<>y+CtJ3!TE%Y zs8p)zydvRYtRPf(ETTKNvVk8OS51g5?PWL`?W0}(|Nmr7zc-;LV##od)%5nn`XOV> zfulK$Zq)h)8{q!SsI9ADfa?k!V9t5Nqq8Ga{P=`=UfR$+L#w7-Luog@Vwq|^$Y1R+ zZqLfLE_NBHj-yH6qe4|jE_Y61oFoXR*n1^G*5SDt#!kI|tJP#^tQLnA1T|&qM%*!( zlU3gZN{(3>Q#soewz+gR*cY#ujO7-O-MD!`l^!0;o--)if("interactive"===n[o].readyState){t=n[o].src;break}return t||n[r].src}();return n.dir=o.dir||t.substring(0,t.lastIndexOf("/")+1)}(),i=function(e,n){n=n||"log",t.console&&console[n]&&console[n]("layui error hint: "+e)},u="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),l=n.builtin={lay:"lay",layer:"layer",laydate:"laydate",laypage:"laypage",laytpl:"laytpl",layedit:"layedit",form:"form",upload:"upload",dropdown:"dropdown",transfer:"transfer",tree:"tree",table:"table",element:"element",rate:"rate",colorpicker:"colorpicker",slider:"slider",carousel:"carousel",flow:"flow",util:"util",code:"code",jquery:"jquery",all:"all","layui.all":"layui.all"};r.prototype.cache=n,r.prototype.define=function(t,e){var r=this,o="function"==typeof t,a=function(){var t=function(t,e){layui[t]=e,n.status[t]=!0};return"function"==typeof e&&e(function(r,o){t(r,o),n.callback[r]=function(){e(t)}}),this};return o&&(e=t,t=[]),r.use(t,a,null,"define"),r},r.prototype.use=function(r,o,c,s){function p(t,e){var r="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===t.type||r.test((t.currentTarget||t.srcElement).readyState))&&(n.modules[h]=e,v.removeChild(b),function o(){return++m>1e3*n.timeout/4?i(h+" is not a valid module","error"):void(n.status[h]?f():setTimeout(o,4))}())}function f(){c.push(layui[h]),r.length>1?y.use(r.slice(1),o,c,s):"function"==typeof o&&function(){return layui.jquery&&"function"==typeof layui.jquery&&"define"!==s?layui.jquery(function(){o.apply(layui,c)}):void o.apply(layui,c)}()}var y=this,d=n.dir=n.dir?n.dir:a,v=e.getElementsByTagName("head")[0];r=function(){return"string"==typeof r?[r]:"function"==typeof r?(o=r,["all"]):r}(),t.jQuery&&jQuery.fn.on&&(y.each(r,function(t,e){"jquery"===e&&r.splice(t,1)}),layui.jquery=layui.$=jQuery);var h=r[0],m=0;if(c=c||[],n.host=n.host||(d.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===r.length||layui["layui.all"]&&l[h])return f(),y;var g=(l[h]?d+"modules/":/^\{\/\}/.test(y.modules[h])?"":n.base||"")+(y.modules[h]||h)+".js";if(g=g.replace(/^\{\/\}/,""),!n.modules[h]&&layui[h]&&(n.modules[h]=g),n.modules[h])!function S(){return++m>1e3*n.timeout/4?i(h+" is not a valid module","error"):void("string"==typeof n.modules[h]&&n.status[h]?f():setTimeout(S,4))}();else{var b=e.createElement("script");b.async=!0,b.charset="utf-8",b.src=g+function(){var t=n.version===!0?n.v||(new Date).getTime():n.version||"";return t?"?v="+t:""}(),v.appendChild(b),!b.attachEvent||b.attachEvent.toString&&b.attachEvent.toString().indexOf("[native code")<0||u?b.addEventListener("load",function(t){p(t,g)},!1):b.attachEvent("onreadystatechange",function(t){p(t,g)}),n.modules[h]=g}return y},r.prototype.getStyle=function(e,n){var r=e.currentStyle?e.currentStyle:t.getComputedStyle(e,null);return r[r.getPropertyValue?"getPropertyValue":"getAttribute"](n)},r.prototype.link=function(t,r,o){var a=this,u=e.getElementsByTagName("head")[0],l=e.createElement("link");"string"==typeof r&&(o=r);var c=(o||t).replace(/\.|\//g,""),s=l.id="layuicss-"+c,p="creating",f=0;return l.rel="stylesheet",l.href=t+(n.debug?"?v="+(new Date).getTime():""),l.media="all",e.getElementById(s)||u.appendChild(l),"function"!=typeof r?a:(function y(o){var u=100,l=e.getElementById(s);return++f>1e3*n.timeout/u?i(t+" timeout"):void(1989===parseInt(a.getStyle(l,"width"))?(o===p&&l.removeAttribute("lay-status"),l.getAttribute("lay-status")===p?setTimeout(y,u):r()):(l.setAttribute("lay-status",p),setTimeout(function(){y(p)},u)))}(),a)},r.prototype.addcss=function(t,e,r){return layui.link(n.dir+"css/"+t,e,r)},n.callback={},r.prototype.factory=function(t){if(layui[t])return"function"==typeof n.callback[t]?n.callback[t]:null},r.prototype.img=function(t,e,n){var r=new Image;return r.src=t,r.complete?e(r):(r.onload=function(){r.onload=null,"function"==typeof e&&e(r)},void(r.onerror=function(t){r.onerror=null,"function"==typeof n&&n(t)}))},r.prototype.config=function(t){t=t||{};for(var e in t)n[e]=t[e];return this},r.prototype.modules=function(){var t={};for(var e in l)t[e]=l[e];return t}(),r.prototype.extend=function(t){var e=this;t=t||{};for(var n in t)e[n]||e.modules[n]?i(n+" Module already exists","error"):e.modules[n]=t[n];return e},r.prototype.router=function(t){var e=this,t=t||location.hash,n={path:[],search:{},hash:(t.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)?(t=t.replace(/^#\//,""),n.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],e.each(t,function(t,e){/^\w+=/.test(e)?function(){e=e.split("="),n.search[e[0]]=e[1]}():n.path.push(e)}),n):n},r.prototype.url=function(t){var e=this,n={pathname:function(){var e=t?function(){var e=(t.match(/\.[^.]+?\/.+/)||[])[0]||"";return e.replace(/^[^\/]+/,"").replace(/\?.+/,"")}():location.pathname;return e.replace(/^\//,"").split("/")}(),search:function(){var n={},r=(t?function(){var e=(t.match(/\?.+/)||[])[0]||"";return e.replace(/\#.+/,"")}():location.search).replace(/^\?+/,"").split("&");return e.each(r,function(t,e){var r=e.indexOf("="),o=function(){return r<0?e.substr(0,e.length):0!==r&&e.substr(0,r)}();o&&(n[o]=r>0?e.substr(r+1):null)}),n}(),hash:e.router(function(){return t?(t.match(/#.+/)||[])[0]||"/":location.hash}())};return n},r.prototype.data=function(e,n,r){if(e=e||"layui",r=r||localStorage,t.JSON&&t.JSON.parse){if(null===n)return delete r[e];n="object"==typeof n?n:{key:n};try{var o=JSON.parse(r[e])}catch(a){var o={}}return"value"in n&&(o[n.key]=n.value),n.remove&&delete o[n.key],r[e]=JSON.stringify(o),n.key?o[n.key]:o}},r.prototype.sessionData=function(t,e){return this.data(t,e,sessionStorage)},r.prototype.device=function(e){var n=navigator.userAgent.toLowerCase(),r=function(t){var e=new RegExp(t+"/([^\\s\\_\\-]+)");return t=(n.match(e)||[])[1],t||!1},o={os:function(){return/windows/.test(n)?"windows":/linux/.test(n)?"linux":/iphone|ipod|ipad|ios/.test(n)?"ios":/mac/.test(n)?"mac":void 0}(),ie:function(){return!!(t.ActiveXObject||"ActiveXObject"in t)&&((n.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:r("micromessenger")};return e&&!o[e]&&(o[e]=r(e)),o.android=/android/.test(n),o.ios="ios"===o.os,o.mobile=!(!o.android&&!o.ios),o},r.prototype.hint=function(){return{error:i}},r.prototype._typeof=function(t){return null===t?String(t):"object"==typeof t||"function"==typeof t?function(){var e=Object.prototype.toString.call(t).match(/\s(.+)\]$/)||[],n="Function|Array|Date|RegExp|Object|Error|Symbol";return e=e[1]||"Object",new RegExp("\\b("+n+")\\b").test(e)?e.toLowerCase():"object"}():typeof t},r.prototype._isArray=function(e){var n,r=this,o=r._typeof(e);return!(!e||"object"!=typeof e||e===t)&&(n="length"in e&&e.length,"array"===o||0===n||"number"==typeof n&&n>0&&n-1 in e)},r.prototype.each=function(t,e){var n,r=this,o=function(t,n){return e.call(n[t],t,n[t])};if("function"!=typeof e)return r;if(t=t||[],r._isArray(t))for(n=0;no?1:r(t.innerHeight||n.documentElement.clientHeight)},r.position=function(e,o,i){if(o){i=i||{},e!==n&&e!==r("body")[0]||(i.clickType="right");var c="right"===i.clickType?function(){var e=i.e||t.event||{};return{left:e.clientX,top:e.clientY,right:e.clientX,bottom:e.clientY}}():e.getBoundingClientRect(),u=o.offsetWidth,a=o.offsetHeight,f=function(t){return t=t?"scrollLeft":"scrollTop",n.body[t]|n.documentElement[t]},s=function(t){return n.documentElement[t?"clientWidth":"clientHeight"]},l=5,h=c.left,p=c.bottom;"center"===i.align?h-=(u-e.offsetWidth)/2:"right"===i.align&&(h=h-u+e.offsetWidth),h+u+l>s("width")&&(h=s("width")-u-l),hs()&&(c.top>a+l?p=c.top-a-2*l:"right"===i.clickType&&(p=s()-a-2*l,p<0&&(p=0)));var y=i.position;if(y&&(o.style.position=y),o.style.left=h+("fixed"===y?0:f(1))+"px",o.style.top=p+("fixed"===y?0:f())+"px",!r.hasScrollbar()){var d=o.getBoundingClientRect();!i.SYSTEM_RELOAD&&d.bottom+l>s()&&(i.SYSTEM_RELOAD=!0,setTimeout(function(){r.position(e,o,i)},50))}}},r.options=function(t,e){var n=r(t),o=e||"lay-options";try{return new Function("return "+(n.attr(o)||"{}"))()}catch(i){return hint.error("parseerror\uff1a"+i,"error"),{}}},r.isTopElem=function(t){var e=[n,r("body")[0]],o=!1;return r.each(e,function(e,n){if(n===t)return o=!0}),o},o.addStr=function(t,e){return t=t.replace(/\s+/," "),e=e.replace(/\s+/," ").split(" "),r.each(e,function(e,n){new RegExp("\\b"+n+"\\b").test(t)||(t=t+" "+n)}),t.replace(/^\s|\s$/,"")},o.removeStr=function(t,e){return t=t.replace(/\s+/," "),e=e.replace(/\s+/," ").split(" "),r.each(e,function(e,n){var r=new RegExp("\\b"+n+"\\b");r.test(t)&&(t=t.replace(r,""))}),t.replace(/\s+/," ").replace(/^\s|\s$/,"")},o.prototype.find=function(t){var e=this,n=0,o=[],i="object"==typeof t;return this.each(function(r,c){for(var u=i?c.contains(t):c.querySelectorAll(t||null);n0)return n[0].style[t]}():n.each(function(n,i){"object"==typeof t?r.each(t,function(t,e){i.style[t]=o(e)}):i.style[t]=o(e)})},o.prototype.width=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].offsetWidth}():e.each(function(n,r){e.css("width",t)})},o.prototype.height=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].offsetHeight}():e.each(function(n,r){e.css("height",t)})},o.prototype.attr=function(t,e){var n=this;return void 0===e?function(){if(n.length>0)return n[0].getAttribute(t)}():n.each(function(n,r){r.setAttribute(t,e)})},o.prototype.removeAttr=function(t){return this.each(function(e,n){n.removeAttribute(t)})},o.prototype.html=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].innerHTML}():this.each(function(e,n){n.innerHTML=t})},o.prototype.val=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].value}():this.each(function(e,n){n.value=t})},o.prototype.append=function(t){return this.each(function(e,n){"object"==typeof t?n.appendChild(t):n.innerHTML=n.innerHTML+t})},o.prototype.remove=function(t){return this.each(function(e,n){t?n.removeChild(t):n.parentNode.removeChild(n)})},o.prototype.on=function(t,e){return this.each(function(n,r){r.attachEvent?r.attachEvent("on"+t,function(t){t.target=t.srcElement,e.call(r,t)}):r.addEventListener(t,e,!1)})},o.prototype.off=function(t,e){return this.each(function(n,r){r.detachEvent?r.detachEvent("on"+t,e):r.removeEventListener(t,e,!1)})},t.lay=r,t.layui&&layui.define&&layui.define(function(t){t(e,r)})}(window,window.document);layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error: ";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\(.)/g,"$1")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\(.)/g,"$1")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push(''+(a.first||1)+"");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r2&&e.push('');r<=u;r++)r===a.curr?e.push('"+r+""):e.push(''+r+"");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1…'),0!==t&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'\u5171 '+a.count+" \u6761",limit:function(){var e=['"}(),refresh:['','',""].join(""),skip:function(){return['到第','','页',""].join("")}()};return['
',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"
"].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;oi.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});!function(e,t){"use strict";var a=e.layui&&layui.define,n={getPath:e.lay&&lay.getPath?lay.getPath:"",link:function(t,a,n){l.path&&e.lay&&lay.layui&&lay.layui.link(l.path+t,a,n)}},i=e.LAYUI_GLOBAL||{},l={v:"5.3.1",config:{},index:e.laydate&&e.laydate.v?1e5:0,path:i.laydate_dir||n.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",i="",r=(a?"modules/laydate/":"theme/")+"default/laydate.css?v="+l.v+i;return a?layui.addcss(r,e,t):n.link(r,e,t),this}},r=function(){var e=this,t=e.config,a=t.id;return r.that[a]=e,{hint:function(t){e.hint.call(e,t)},config:e.config}},o="laydate",s=".layui-laydate",y="layui-this",d="laydate-disabled",m=[100,2e5],c="layui-laydate-static",u="layui-laydate-list",h="layui-laydate-hint",f="layui-laydate-footer",p=".laydate-btns-confirm",g="laydate-time-text",v="laydate-btns-time",T="layui-laydate-preview",D=function(e){var t=this;t.index=++l.index,t.config=lay.extend({},t.config,l.config,e),e=t.config,e.id="id"in e?e.id:t.index,l.ready(function(){t.init()})},w="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s";r.formatArr=function(e){return(e||"").match(new RegExp(w+"|.","g"))||[]},D.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},D.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,isInitValue:!0,min:"1900-1-1",max:"2099-12-31",trigger:"click",show:!1,showBottom:!0,isPreview:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},D.prototype.lang=function(){var e=this,t=e.config,a={cn:{weeks:["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"],time:["\u65f6","\u5206","\u79d2"],timeTips:"\u9009\u62e9\u65f6\u95f4",startTime:"\u5f00\u59cb\u65f6\u95f4",endTime:"\u7ed3\u675f\u65f6\u95f4",dateTips:"\u8fd4\u56de\u65e5\u671f",month:["\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d","\u4e03","\u516b","\u4e5d","\u5341","\u5341\u4e00","\u5341\u4e8c"],tools:{confirm:"\u786e\u5b9a",clear:"\u6e05\u7a7a",now:"\u73b0\u5728"},timeout:"\u7ed3\u675f\u65f6\u95f4\u4e0d\u80fd\u65e9\u4e8e\u5f00\u59cb\u65f6\u95f4
\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
\u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
","
\u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
Please re-select",invalidDate:"Invalid date",formatError:["The date format error
Must be followed\uff1a
","
It has been reset"],preview:"The selected result"}};return a[t.lang]||a.cn},D.prototype.init=function(){var t=this,a=t.config,n="static"===a.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};a.elem=lay(a.elem),a.eventElem=lay(a.eventElem),a.elem[0]&&(t.rangeStr=a.range?"string"==typeof a.range?a.range:"-":"","array"===layui._typeof(a.range)&&(t.rangeElem=[lay(a.range[0]),lay(a.range[1])]),i[a.type]||(e.console&&console.error&&console.error("laydate type error:'"+a.type+"' is not supported"),a.type="date"),a.format===i.date&&(a.format=i[a.type]||i.date),t.format=r.formatArr(a.format),t.EXP_IF="",t.EXP_SPLIT="",lay.each(t.format,function(e,a){var n=new RegExp(w).test(a)?"\\d{"+function(){return new RegExp(w).test(t.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;t.EXP_IF=t.EXP_IF+n,t.EXP_SPLIT=t.EXP_SPLIT+"("+n+")"}),t.EXP_IF_ONE=new RegExp("^"+t.EXP_IF+"$"),t.EXP_IF=new RegExp("^"+(a.range?t.EXP_IF+"\\s\\"+t.rangeStr+"\\s"+t.EXP_IF:t.EXP_IF)+"$"),t.EXP_SPLIT=new RegExp("^"+t.EXP_SPLIT+"$",""),t.isInput(a.elem[0])||"focus"===a.trigger&&(a.trigger="click"),a.elem.attr("lay-key")||(a.elem.attr("lay-key",t.index),a.eventElem.attr("lay-key",t.index)),a.mark=lay.extend({},a.calendar&&"cn"===a.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-9-18":"\u56fd\u803b","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},a.mark),lay.each(["min","max"],function(e,t){var n=[],i=[];if("number"==typeof a[t]){var l=a[t],r=(new Date).getTime(),o=864e5,s=new Date(l?l0)return!0;var t=lay.elem("div",{"class":"layui-laydate-header"}),i=[function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=lay.elem("div",{"class":"laydate-set-ym"}),t=lay.elem("span"),a=lay.elem("span");return e.appendChild(t),e.appendChild(a),e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],l=lay.elem("div",{"class":"layui-laydate-content"}),r=lay.elem("table"),m=lay.elem("thead"),c=lay.elem("tr");lay.each(i,function(e,a){t.appendChild(a)}),m.appendChild(c),lay.each(new Array(6),function(e){var t=r.insertRow(0);lay.each(new Array(7),function(a){if(0===e){var i=lay.elem("th");i.innerHTML=n.weeks[a],c.appendChild(i)}t.insertCell(a)})}),r.insertBefore(m,r.children[0]),l.appendChild(r),o[e]=lay.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),o[e].appendChild(t),o[e].appendChild(l),s.push(i),y.push(l),d.push(r)}),lay(m).html(function(){var e=[],t=[];return"datetime"===a.type&&e.push(''+n.timeTips+""),(a.range||"datetime"!==a.type)&&e.push(''),lay.each(a.btns,function(e,l){var r=n.tools[l]||"btn";a.range&&"now"===l||(i&&"clear"===l&&(r="cn"===a.lang?"\u91cd\u7f6e":"Reset"),t.push(''+r+""))}),e.push('"),e.join("")}()),lay.each(o,function(e,t){r.appendChild(t)}),a.showBottom&&r.appendChild(m),/^#/.test(a.theme)){var u=lay.elem("style"),h=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,a.theme);"styleSheet"in u?(u.setAttribute("type","text/css"),u.styleSheet.cssText=h):u.innerHTML=h,lay(r).addClass("laydate-theme-molv"),r.appendChild(u)}l.thisId=a.id,e.remove(D.thisElemDate),i?a.elem.append(r):(t.body.appendChild(r),e.position()),e.checkDate().calendar(null,0,"init"),e.changeEvent(),D.thisElemDate=e.elemID,"function"==typeof a.ready&&a.ready(lay.extend({},a.dateTime,{month:a.dateTime.month+1})),e.preview()},D.prototype.remove=function(e){var t=this,a=(t.config,lay("#"+(e||t.elemID)));return a[0]?(a.hasClass(c)||t.checkDate(function(){a.remove()}),t):t},D.prototype.position=function(){var e=this,t=e.config;return lay.position(e.bindElem||t.elem[0],e.elem,{position:t.position}),e},D.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":h}));t.elem&&(a.innerHTML=e||"",lay(t.elem).find("."+h).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+h).remove()},3e3))},D.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},D.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},D.prototype.checkDate=function(e){var t,a,n=this,i=(new Date,n.config),r=n.lang(),o=i.dateTime=i.dateTime||n.systemDate(),s=n.bindElem||i.elem[0],y=(n.isInput(s)?"val":"html",function(){if(n.rangeElem){var e=[n.rangeElem[0].val(),n.rangeElem[1].val()];if(e[0]&&e[1])return e.join(" "+n.rangeStr+" ")}return n.isInput(s)?s.value:"static"===i.position?"":lay(s).attr("lay-date")}()),d=function(e){e.year>m[1]&&(e.year=m[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=l.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},c=function(e,t,l){var r=["startTime","endTime"];t=(t.match(n.EXP_SPLIT)||[]).slice(1),l=l||0,i.range&&(n[r[l]]=n[r[l]]||{}),lay.each(n.format,function(o,s){var y=parseFloat(t[o]);t[o].lengthh(i.max)||h(o)h(i.max))&&(n.endDate=lay.extend({},i.max)),e&&e(),n},D.prototype.mark=function(e,t){var a,n=this,i=n.config;return lay.each(i.mark,function(e,n){var i=e.split("-");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(a=n||t[2])}),a&&e.html(''+a+""),n},D.prototype.limit=function(e,t,a,n){var i,l=this,r=l.config,o={},s=r[a>41?"endDate":"dateTime"],y=lay.extend({},s,t||{});return lay.each({now:y,min:r.min,max:r.max},function(e,t){o[e]=l.newDate(lay.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return lay.each(n,function(a,n){e[n]=t[n]}),e}())).getTime()}),i=o.nowo.max,e&&e[i?"addClass":"removeClass"](d),i},D.prototype.thisDateTime=function(e){var t=this,a=t.config;return e?t.endDate:a.dateTime},D.prototype.calendar=function(e,t,a){var n,i,r,o=this,s=o.config,t=t?1:0,d=e||o.thisDateTime(t),c=new Date,u=o.lang(),h="date"!==s.type&&"datetime"!==s.type,f=lay(o.table[t]).find("td"),g=lay(o.elemHeader[t][2]).find("span");return d.yearm[1]&&(d.year=m[1],o.hint(u.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),c.setFullYear(d.year,d.month,1),n=c.getDay(),i=l.getEndDate(d.month||12,d.year),r=l.getEndDate(d.month+1,d.year),lay.each(f,function(e,t){var a=[d.year,d.month],l=0;t=lay(t),t.removeAttr("class"),e=n&&e=a.firstDate.year&&(l.month=n.max.month,l.date=n.max.date),a.limit(lay(i),l,t),M++}),lay(m[f?0:1]).attr("lay-ym",M-8+"-"+D[1]).html(E+T+" - "+(M-1+T))}else if("month"===e)lay.each(new Array(12),function(e){var i=lay.elem("li",{"lay-ym":e}),r={year:D[0],month:e};e+1==D[1]&&lay(i).addClass(y),i.innerHTML=l.month[e]+(f?"\u6708":""),o.appendChild(i),D[0]=a.firstDate.year&&(r.date=n.max.date),a.limit(lay(i),r,t)}),lay(m[f?0:1]).attr("lay-ym",D[0]+"-"+D[1]).html(D[0]+T);else if("time"===e){var C=function(){lay(o).find("ol").each(function(e,n){lay(n).find("li").each(function(n,i){a.limit(lay(i),[{hours:n},{hours:a[x].hours,minutes:n},{hours:a[x].hours,minutes:a[x].minutes,seconds:n}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),n.range||a.limit(lay(a.footer).find(p),a[x],0,["hours","minutes","seconds"])};n.range?a[x]||(a[x]="startTime"===x?i:a.endDate):a[x]=i,lay.each([24,60,60],function(e,t){var n=lay.elem("li"),i=["

"+l.time[e]+"

    "];lay.each(new Array(t),function(t){i.push(""+lay.digit(t,2)+"")}),n.innerHTML=i.join("")+"
",o.appendChild(n)}),C()}if(h&&c.removeChild(h),c.appendChild(o),"year"===e||"month"===e)lay(a.elemMain[t]).addClass("laydate-ym-show"),lay(o).find("li").on("click",function(){var l=0|lay(this).attr("lay-ym");if(!lay(this).hasClass(d)){0===t?(i[e]=l,a.limit(lay(a.footer).find(p),null,0)):a.endDate[e]=l;var s="year"===n.type||"month"===n.type;s?(lay(o).find("."+y).removeClass(y),lay(this).addClass(y),"month"===n.type&&"year"===e&&(a.listYM[t][0]=l,r&&((t?a.endDate:i).year=l),a.list("month",t))):(a.checkDate("limit").calendar(null,t),a.closeList()),a.setBtnStatus(),n.range||("month"===n.type&&"month"===e||"year"===n.type&&"year"===e)&&a.setValue(a.parse()).remove().done(),a.done(null,"change"),lay(a.footer).find("."+v).removeClass(d)}});else{var I=lay.elem("span",{"class":g}),k=function(){lay(o).find("ol").each(function(e){var t=this,n=lay(t).find("li");t.scrollTop=30*(a[x][w[e]]-2),t.scrollTop<=0&&n.each(function(e,a){if(!lay(this).hasClass(d))return t.scrollTop=30*(e-2),!0})})},b=lay(s[2]).find("."+g);k(),I.innerHTML=n.range?[l.startTime,l.endTime][t]:l.timeTips,lay(a.elemMain[t]).addClass("laydate-time-show"),b[0]&&b.remove(),s[2].appendChild(I),lay(o).find("ol").each(function(e){var t=this;lay(t).find("li").on("click",function(){var l=0|this.innerHTML;lay(this).hasClass(d)||(n.range?a[x][w[e]]=l:i[w[e]]=l,lay(t).find("."+y).removeClass(y),lay(this).addClass(y),C(),k(),(a.endDate||"time"===n.type)&&a.done(null,"change"),a.setBtnStatus())})})}return a},D.prototype.listYM=[],D.prototype.closeList=function(){var e=this;e.config;lay.each(e.elemCont,function(t,a){lay(this).find("."+u).remove(),lay(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),lay(e.elem).find("."+g).remove()},D.prototype.setBtnStatus=function(e,t,a){var n,i=this,l=i.config,r=i.lang(),o=lay(i.footer).find(p);l.range&&"time"!==l.type&&(t=t||l.dateTime,a=a||i.endDate,n=i.newDate(t).getTime()>i.newDate(a).getTime(),i.limit(null,t)||i.limit(null,a)?o.addClass(d):o[n?"addClass":"removeClass"](d),e&&n&&i.hint("string"==typeof e?r.timeout.replace(/\u65e5\u671f/g,e):r.timeout))},D.prototype.parse=function(e,t){var a=this,n=a.config,i=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},n.dateTime,a.startTime):n.dateTime),r=l.parse(i,a.format,1);return n.range&&void 0===e?r+" "+a.rangeStr+" "+a.parse("end"):r},D.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},D.prototype.setValue=function(e){var t=this,a=t.config,n=t.bindElem||a.elem[0];return"static"===a.position?t:(e=e||"",t.isInput(n)?lay(n).val(e):t.rangeElem?(t.rangeElem[0].val(e?t.parse("start"):""),t.rangeElem[1].val(e?t.parse("end"):"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e)),t)},D.prototype.preview=function(){var e=this,t=e.config;if(t.isPreview){var a=lay(e.elem).find("."+T),n=t.range?e.endDate?e.parse():"":e.parse();a.html(n).css({color:"#5FB878"}),setTimeout(function(){a.css({color:"#666"})},300)}},D.prototype.done=function(e,t){var a=this,n=a.config,i=lay.extend({},lay.extend(n.dateTime,a.startTime)),l=lay.extend({},lay.extend(a.endDate,a.endTime));return lay.each([i,l],function(e,t){"month"in t&&lay.extend(t,{month:t.month+1})}),a.preview(),e=e||[a.parse(),i,l],"function"==typeof n[t||"done"]&&n[t||"done"].apply(n,e),a},D.prototype.choose=function(e,t){var a=this,n=a.config,i=a.thisDateTime(t),l=(lay(a.elem).find("td"),e.attr("lay-ymd").split("-"));l={year:0|l[0],month:(0|l[1])-1,date:0|l[2]},e.hasClass(d)||(lay.extend(i,l),n.range?(lay.each(["startTime","endTime"],function(e,t){a[t]=a[t]||{hours:0,minutes:0,seconds:0}}),a.calendar(null,t).done(null,"change")):"static"===n.position?a.calendar().done().done(null,"change"):"date"===n.type?a.setValue(a.parse()).remove().done():"datetime"===n.type&&a.calendar().done(null,"change"))},D.prototype.tool=function(e,t){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(e).hasClass(d)||(a.list("time",0),n.range&&a.list("time",1),lay(e).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(e).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue("").remove(),a.done(["",{},{}])},now:function(){var e=new Date;lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()).remove(),r&&a.calendar(),a.done()},confirm:function(){if(n.range){if(lay(e).hasClass(d))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(e).hasClass(d))return a.hint(i.invalidDate);a.done(),a.setValue(a.parse()).remove()}};o[t]&&o[t]()},D.prototype.change=function(e){var t=this,a=t.config,n=t.thisDateTime(e),i=a.range&&("year"===a.type||"month"===a.type),l=t.elemCont[e||0],r=t.listYM[e],o=function(o){var s=lay(l).find(".laydate-year-list")[0],y=lay(l).find(".laydate-month-list")[0];return s&&(r[0]=o?r[0]-15:r[0]+15,t.list("year",e)),y&&(o?r[0]--:r[0]++,t.list("month",e)),(s||y)&&(lay.extend(n,{year:r[0]}),i&&(n.year=r[0]),a.range||t.done(null,"change"),a.range||t.limit(lay(t.footer).find(p),{year:r[0]})),t.setBtnStatus(),s||y};return{prevYear:function(){o("sub")||(n.year--,t.checkDate("limit").calendar(null,e),t.done(null,"change"))},prevMonth:function(){var a=t.getAsYM(n.year,n.month,"sub");lay.extend(n,{year:a[0],month:a[1]}),t.checkDate("limit").calendar(null,e),t.done(null,"change")},nextMonth:function(){var a=t.getAsYM(n.year,n.month);lay.extend(n,{year:a[0],month:a[1]}),t.checkDate("limit").calendar(null,e),t.done(null,"change")},nextYear:function(){o()||(n.year++,t.checkDate("limit").calendar(null,e),t.done(null,"change"))}}},D.prototype.changeEvent=function(){var e=this;e.config;lay(e.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(e.elemHeader,function(t,a){lay(a[0]).on("click",function(a){e.change(t).prevYear()}),lay(a[1]).on("click",function(a){e.change(t).prevMonth()}),lay(a[2]).find("span").on("click",function(a){var n=lay(this),i=n.attr("lay-ym"),l=n.attr("lay-type");i&&(i=i.split("-"),e.listYM[t]=[0|i[0],0|i[1]],e.list(l,t),lay(e.footer).find("."+v).addClass(d))}),lay(a[3]).on("click",function(a){e.change(t).nextMonth()}),lay(a[4]).on("click",function(a){e.change(t).nextYear()})}),lay.each(e.table,function(t,a){var n=lay(a).find("td");n.on("click",function(){e.choose(lay(this),t)})}),lay(e.footer).find("span").on("click",function(){var t=lay(this).attr("lay-type");e.tool(this,t)})},D.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())},D.prototype.events=function(){var e=this,t=e.config,a=function(a,n){a.on(t.trigger,function(){n&&(e.bindElem=this),e.render()})};t.elem[0]&&!t.elem[0].eventHandler&&(a(t.elem,"bind"),a(t.eventElem),t.elem[0].eventHandler=!0)},r.that={},r.getThis=function(e){var t=r.that[e];return!t&&a&&layui.hint().error(e?o+" instance with ID '"+e+"' not found":"ID argument required"),t},n.run=function(a){a(t).on("mousedown",function(e){if(l.thisId){var t=r.getThis(l.thisId);if(t){var n=t.config;e.target!==n.elem[0]&&e.target!==n.eventElem[0]&&e.target!==a(n.closeStop)[0]&&t.remove()}}}).on("keydown",function(e){if(l.thisId){var t=r.getThis(l.thisId);t&&13===e.keyCode&&a("#"+t.elemID)[0]&&t.elemID===D.thisElemDate&&(e.preventDefault(),a(t.footer).find(p)[0].click())}}),a(e).on("resize",function(){if(l.thisId){var e=r.getThis(l.thisId);if(e)return!(!e.elem||!a(s)[0])&&void e.position()}})},l.render=function(e){var t=new D(e);return r.call(t)},l.parse=function(e,t,a){return e=e||{},"string"==typeof t&&(t=r.formatArr(t)),t=(t||[]).concat(),lay.each(t,function(n,i){/yyyy|y/.test(i)?t[n]=lay.digit(e.year,i.length):/MM|M/.test(i)?t[n]=lay.digit(e.month+(a||0),i.length):/dd|d/.test(i)?t[n]=lay.digit(e.date,i.length):/HH|H/.test(i)?t[n]=lay.digit(e.hours,i.length):/mm|m/.test(i)?t[n]=lay.digit(e.minutes,i.length):/ss|s/.test(i)&&(t[n]=lay.digit(e.seconds,i.length))}),t.join("")},l.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},a?(l.ready(),layui.define("lay",function(e){l.path=layui.cache.dir,n.run(lay),e(o,l)})):"function"==typeof define&&define.amd?define(function(){return n.run(lay),l}):function(){l.ready(),n.run(e.lay),e.laydate=l}()}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"function"!==n&&!pe.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ce.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]=!0}),t}function a(){re.addEventListener?(re.removeEventListener("DOMContentLoaded",s),e.removeEventListener("load",s)):(re.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(re.addEventListener||"load"===e.event.type||"complete"===re.readyState)&&(a(),pe.ready())}function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(_e,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:qe.test(n)?pe.parseJSON(n):n)}catch(i){}pe.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.cache:e,l=s?e[a]:e[a]&&a;if(l&&u[l]&&(r||u[l].data)||void 0!==n||"string"!=typeof t)return l||(l=s?e[a]=ne.pop()||pe.guid++:a),u[l]||(u[l]=s?{}:{toJSON:pe.noop}),"object"!=typeof t&&"function"!=typeof t||(r?u[l]=pe.extend(u[l],t):u[l].data=pe.extend(u[l].data,t)),o=u[l],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[pe.camelCase(t)])):i=o,i}}function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in r?t=[t]:(t=pe.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!l(r):!pe.isEmptyObject(r))return}(n||(delete a[s].data,l(a[s])))&&(o?pe.cleanData([e],!0):fe.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return pe.css(e,t,"")},u=s(),l=n&&n[3]||(pe.cssNumber[t]?"":"px"),c=(pe.cssNumber[t]||"px"!==l&&+u)&&Me.exec(pe.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do o=o||".5",c/=o,pe.style(e,t,c+l);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||pe.nodeName(r,t)?o.push(r):pe.merge(o,h(r,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval",!t||pe._data(t[r],"globalEval"))}function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x"!==f[1]||Ve.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(v,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=y.lastChild}else v.push(t.createTextNode(a));for(u&&y.removeChild(u),fe.appendChecked||pe.grep(h(v,"input"),m),x=0;a=v[x++];)if(r&&pe.inArray(a,r)>-1)i&&i.push(a);else if(s=pe.contains(a.ownerDocument,a),u=h(y.appendChild(a),"script"),s&&g(u),n)for(o=0;a=u[o++];)Ie.test(a.type||"")&&n.push(a);return u=null,y}function v(){return!0}function x(){return!1}function b(){try{return re.activeElement}catch(e){}}function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)w(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=x;else if(!i)return e;return 1===o&&(a=i,i=function(e){return pe().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,i,r,n)})}function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;r1&&"string"==typeof p&&!fe.checkClone&&rt.test(p))return e.each(function(i){var o=e.eq(i);g&&(t[0]=p.call(this,i,o.html())),S(o,t,n,r)});if(f&&(l=y(t,e[0].ownerDocument,!1,e,r),i=l.firstChild,1===l.childNodes.length&&(l=i),i||r)){for(s=pe.map(h(l,"script"),C),a=s.length;c")).appendTo(t.documentElement),t=(ut[0].contentWindow||ut[0].contentDocument).document,t.write(),t.close(),n=D(e,t),ut.detach()),lt[e]=n),n}function L(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Ct.length;n--;)if(e=Ct[n]+t,e in Et)return e}function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a=0&&n=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==pe.type(e)||e.nodeType||pe.isWindow(e))return!1;try{if(e.constructor&&!ce.call(e,"constructor")&&!ce.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!fe.ownFirst)for(t in e)return ce.call(e,t);for(t in e);return void 0===t||ce.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?ue[le.call(e)]||"object":typeof e},globalEval:function(t){t&&pe.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ge,"ms-").replace(me,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;iT.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[P]=!0,e}function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function f(){}function d(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i-1&&(r[l]=!(a[l]=f))}}else x=m(x===a?x.splice(h,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[" "],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s1&&h(c),s>1&&d(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s0,o=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h="0",g=r&&[],y=[],v=A,x=r||o&&T.find.TAG("*",l),b=W+=null==v?1:Math.random()||.1,w=x.length;for(l&&(A=a===H||a||l);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===H||(L(c),s=!_);d=e[f++];)if(d(c,a||H,s)){u.push(c);break}l&&(W=b)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,y,a,s);if(r){if(p>0)for(;h--;)g[h]||y[h]||(y[h]=G.call(u));y=m(y)}Q.apply(u,y),l&&!r&&y.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(W=b,A=v),g};return i?r(a):a}var b,w,T,C,E,N,k,S,A,D,j,L,H,q,_,F,M,O,R,P="sizzle"+1*new Date,B=e.document,W=0,I=0,$=n(),z=n(),X=n(),U=function(e,t){return e===t&&(j=!0),0},V=1<<31,Y={}.hasOwnProperty,J=[],G=J.pop,K=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),de=new RegExp("^"+re+"$"),pe={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ye=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ve=/[+~]/,xe=/'|\\/g,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){L()};try{Q.apply(J=Z.call(B.childNodes),B.childNodes),J[B.childNodes.length].nodeType}catch(Ce){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B;return r!==H&&9===r.nodeType&&r.documentElement?(H=r,q=H.documentElement,_=!E(H),(n=H.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(H.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=me.test(H.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=P,!H.getElementsByName||!H.getElementsByName(P).length}),w.getById?(T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&_){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute("id")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&_)return t.getElementsByClassName(e)},M=[],F=[],(w.qsa=me.test(H.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||F.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+P+"-]").length||F.push("~="),e.querySelectorAll(":checked").length||F.push(":checked"),e.querySelectorAll("a#"+P+"+*").length||F.push(".#.+[+~]")}),i(function(e){var t=H.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&F.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||F.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),F.push(",.*:")})),(w.matchesSelector=me.test(O=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),M.push("!=",oe)}),F=F.length&&new RegExp(F.join("|")),M=M.length&&new RegExp(M.join("|")),t=me.test(q.compareDocumentPosition),R=t||me.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===H||e.ownerDocument===B&&R(B,e)?-1:t===H||t.ownerDocument===B&&R(B,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===H?-1:t===H?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===B?-1:u[r]===B?1:0},H):H},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==H&&L(e),n=n.replace(ce,"='$1']"),w.matchesSelector&&_&&!X[n+" "]&&(!M||!M.test(n))&&(!F||!F.test(n)))try{var r=O.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,H,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==H&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==H&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!_):void 0;return void 0!==r?r:w.attributes||!_?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(U),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},C=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||"").replace(be,we),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=N(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=$[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&$(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s,x=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(d=m,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p&&l[2], -d=p&&m.childNodes[p];d=++p&&d&&d[g]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[W,p,x];break}}else if(v&&(d=t,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p),x===!1)for(;(d=++p&&d&&d[g]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++x||(v&&(f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[W,x]),d!==t)););return x-=i,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[P]?o(n):o.length>1?(i=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(se,"$1"));return i[P]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=_?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===q},focus:function(e){return e===H.activeElement&&(!H.hasFocus||H.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&_&&T.relative[o[1].type]){if(t=(T.find.ID(a.matches[0].replace(be,we),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(be,we),ve.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Q.apply(n,r),n;break}}return(l||k(e,f))(r,t,!_,n,!t||ve.test(e)&&c(t.parentNode)||t),n},w.sortStable=P.split("").sort(U).join("")===P,w.detectDuplicates=!!j,L(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(H.createElement("div"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);pe.find=ve,pe.expr=ve.selectors,pe.expr[":"]=pe.expr.pseudos,pe.uniqueSort=pe.unique=ve.uniqueSort,pe.text=ve.getText,pe.isXMLDoc=ve.isXML,pe.contains=ve.contains;var xe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&pe(e).is(n))break;r.push(e)}return r},be=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},we=pe.expr.match.needsContext,Te=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ce=/^.[^:#\[\.,]*$/;pe.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?pe.find.matchesSelector(r,e)?[r]:[]:pe.find.matches(e,pe.grep(t,function(e){return 1===e.nodeType}))},pe.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(pe(e).filter(function(){for(t=0;t1?pe.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,"string"==typeof e&&we.test(e)?pe(e):e||[],!1).length}});var Ee,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ke=pe.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ee,"string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof pe?t[0]:t,pe.merge(this,pe.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:re,!0)),Te.test(r[1])&&pe.isPlainObject(t))for(r in t)pe.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=re.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Ee.find(e);this.length=1,this[0]=i}return this.context=re,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):pe.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(pe):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),pe.makeArray(e,this))};ke.prototype=pe.fn,Ee=pe(re);var Se=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};pe.fn.extend({has:function(e){var t,n=pe(e,this),r=n.length;return this.filter(function(){for(t=0;t-1:1===n.nodeType&&pe.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?pe.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?pe.inArray(this[0],pe(e)):pe.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(pe.uniqueSort(pe.merge(this.get(),pe(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),pe.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,"parentNode")},parentsUntil:function(e,t,n){return xe(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return xe(e,"nextSibling")},prevAll:function(e){return xe(e,"previousSibling")},nextUntil:function(e,t,n){return xe(e,"nextSibling",n)},prevUntil:function(e,t,n){return xe(e,"previousSibling",n)},siblings:function(e){return be((e.parentNode||{}).firstChild,e)},children:function(e){return be(e.firstChild)},contents:function(e){return pe.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:pe.merge([],e.childNodes)}},function(e,t){pe.fn[e]=function(n,r){var i=pe.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=pe.filter(r,i)),this.length>1&&(Ae[e]||(i=pe.uniqueSort(i)),Se.test(e)&&(i=i.reverse())),this.pushStack(i)}});var De=/\S+/g;pe.Callbacks=function(e){e="string"==typeof e?o(e):pe.extend({},e);var t,n,r,i,a=[],s=[],u=-1,l=function(){for(i=e.once,r=t=!0;s.length;u=-1)for(n=s.shift();++u-1;)a.splice(n,1),n<=u&&u--}),this},has:function(e){return e?pe.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=s=[],a=n="",this},disabled:function(){return!a},lock:function(){return i=!0,n||c.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},pe.extend({Deferred:function(e){var t=[["resolve","done",pe.Callbacks("once memory"),"resolved"],["reject","fail",pe.Callbacks("once memory"),"rejected"],["notify","progress",pe.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return pe.Deferred(function(n){pe.each(t,function(t,o){var a=pe.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&pe.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?pe.extend(e,r):r}},i={};return r.pipe=r.then,pe.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=ie.call(arguments),a=o.length,s=1!==a||e&&pe.isFunction(e.promise)?a:0,u=1===s?e:pe.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ie.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);i0||(je.resolveWith(re,[pe]),pe.fn.triggerHandler&&(pe(re).triggerHandler("ready"),pe(re).off("ready"))))}}),pe.ready.promise=function(t){if(!je)if(je=pe.Deferred(),"complete"===re.readyState||"loading"!==re.readyState&&!re.documentElement.doScroll)e.setTimeout(pe.ready);else if(re.addEventListener)re.addEventListener("DOMContentLoaded",s),e.addEventListener("load",s);else{re.attachEvent("onreadystatechange",s),e.attachEvent("onload",s);var n=!1;try{n=null==e.frameElement&&re.documentElement}catch(r){}n&&n.doScroll&&!function i(){if(!pe.isReady){try{n.doScroll("left")}catch(t){return e.setTimeout(i,50)}a(),pe.ready()}}()}return je.promise(t)},pe.ready.promise();var Le;for(Le in pe(fe))break;fe.ownFirst="0"===Le,fe.inlineBlockNeedsLayout=!1,pe(function(){var e,t,n,r;n=re.getElementsByTagName("body")[0],n&&n.style&&(t=re.createElement("div"),r=re.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",fe.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=re.createElement("div");fe.deleteExpando=!0;try{delete e.test}catch(t){fe.deleteExpando=!1}e=null}();var He=function(e){var t=pe.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return(1===n||9===n)&&(!t||t!==!0&&e.getAttribute("classid")===t)},qe=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,_e=/([A-Z])/g;pe.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?pe.cache[e[pe.expando]]:e[pe.expando],!!e&&!l(e)},data:function(e,t,n){return c(e,t,n)},removeData:function(e,t){return f(e,t)},_data:function(e,t,n){return c(e,t,n,!0)},_removeData:function(e,t){return f(e,t,!0)}}),pe.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=pe.data(o),1===o.nodeType&&!pe._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=pe.camelCase(r.slice(5)),u(o,r,i[r])));pe._data(o,"parsedAttrs",!0)}return i}return"object"==typeof e?this.each(function(){pe.data(this,e)}):arguments.length>1?this.each(function(){pe.data(this,e,t)}):o?u(o,e,pe.data(o,e)):void 0},removeData:function(e){return this.each(function(){pe.removeData(this,e)})}}),pe.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=pe._data(e,t),n&&(!r||pe.isArray(n)?r=pe._data(e,t,pe.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=pe.queue(e,t),r=n.length,i=n.shift(),o=pe._queueHooks(e,t),a=function(){pe.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return pe._data(e,n)||pe._data(e,n,{empty:pe.Callbacks("once memory").add(function(){pe._removeData(e,t+"queue"),pe._removeData(e,n)})})}}),pe.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length
a",fe.leadingWhitespace=3===e.firstChild.nodeType,fe.tbody=!e.getElementsByTagName("tbody").length,fe.htmlSerialize=!!e.getElementsByTagName("link").length,fe.html5Clone="<:nav>"!==re.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),fe.appendChecked=n.checked,e.innerHTML="",fe.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=re.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),fe.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.noCloneEvent=!!e.addEventListener,e[pe.expando]=1,fe.attributes=!e.getAttribute(pe.expando)}();var Xe={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:fe.htmlSerialize?[0,"",""]:[1,"X
","
"]};Xe.optgroup=Xe.option,Xe.tbody=Xe.tfoot=Xe.colgroup=Xe.caption=Xe.thead,Xe.th=Xe.td;var Ue=/<|&#?\w+;/,Ve=/-1&&(h=p.split("."),p=h.shift(),h.sort()),a=p.indexOf(":")<0&&"on"+p,t=t[pe.expando]?t:new pe.Event(p,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:pe.makeArray(n,[t]),l=pe.event.special[p]||{},i||!l.trigger||l.trigger.apply(r,n)!==!1)){if(!i&&!l.noBubble&&!pe.isWindow(r)){for(u=l.delegateType||p,Ke.test(u+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),c=s;c===(r.ownerDocument||re)&&d.push(c.defaultView||c.parentWindow||e)}for(f=0;(s=d[f++])&&!t.isPropagationStopped();)t.type=f>1?u:l.bindType||p,o=(pe._data(s,"events")||{})[t.type]&&pe._data(s,"handle"),o&&o.apply(s,n),o=a&&s[a],o&&o.apply&&He(s)&&(t.result=o.apply(s,n),t.result===!1&&t.preventDefault());if(t.type=p,!i&&!t.isDefaultPrevented()&&(!l._default||l._default.apply(d.pop(),n)===!1)&&He(r)&&a&&r[p]&&!pe.isWindow(r)){c=r[a],c&&(r[a]=null),pe.event.triggered=p;try{r[p]()}catch(g){}pe.event.triggered=void 0,c&&(r[a]=c)}return t.result}},dispatch:function(e){e=pe.event.fix(e);var t,n,r,i,o,a=[],s=ie.call(arguments),u=(pe._data(this,"events")||{})[e.type]||[],l=pe.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(a=pe.event.handlers.call(this,e,u),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((pe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(r=[],n=0;n-1:pe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s]","i"),tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,nt=/\s*$/g,at=p(re),st=at.appendChild(re.createElement("div"));pe.extend({htmlPrefilter:function(e){return e.replace(tt,"<$1>")},clone:function(e,t,n){var r,i,o,a,s,u=pe.contains(e.ownerDocument,e);if(fe.html5Clone||pe.isXMLDoc(e)||!et.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(st.innerHTML=e.outerHTML,st.removeChild(o=st.firstChild)),!(fe.noCloneEvent&&fe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||pe.isXMLDoc(e)))for(r=h(o),s=h(e),a=0;null!=(i=s[a]);++a)r[a]&&k(i,r[a]);if(t)if(n)for(s=s||h(e),r=r||h(o),a=0;null!=(i=s[a]);a++)N(i,r[a]);else N(e,o);return r=h(o,"script"),r.length>0&&g(r,!u&&h(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=pe.expando,u=pe.cache,l=fe.attributes,c=pe.event.special;null!=(n=e[a]);a++)if((t||He(n))&&(i=n[s],o=i&&u[i])){if(o.events)for(r in o.events)c[r]?pe.event.remove(n,r):pe.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ne.push(i))}}}),pe.fn.extend({domManip:S,detach:function(e){return A(this,e,!0)},remove:function(e){return A(this,e)},text:function(e){return Pe(this,function(e){return void 0===e?pe.text(this):this.empty().append((this[0]&&this[0].ownerDocument||re).createTextNode(e))},null,e,arguments.length)},append:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.appendChild(e)}})},prepend:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&pe.cleanData(h(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&pe.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return pe.clone(this,e,t)})},html:function(e){return Pe(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Ze,""):void 0;if("string"==typeof e&&!nt.test(e)&&(fe.htmlSerialize||!et.test(e))&&(fe.leadingWhitespace||!$e.test(e))&&!Xe[(We.exec(e)||["",""])[1].toLowerCase()]){e=pe.htmlPrefilter(e);try{for(;nt",l.childNodes[0].style.borderCollapse="separate",t=l.getElementsByTagName("td"),t[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===t[0].offsetHeight,o&&(t[0].style.display="",t[1].style.display="none",o=0===t[0].offsetHeight)),f.removeChild(u)}var n,r,i,o,a,s,u=re.createElement("div"),l=re.createElement("div");l.style&&(l.style.cssText="float:left;opacity:.5",fe.opacity="0.5"===l.style.opacity,fe.cssFloat=!!l.style.cssFloat,l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",fe.clearCloneStyle="content-box"===l.style.backgroundClip,u=re.createElement("div"),u.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",l.innerHTML="",u.appendChild(l),fe.boxSizing=""===l.style.boxSizing||""===l.style.MozBoxSizing||""===l.style.WebkitBoxSizing,pe.extend(fe,{reliableHiddenOffsets:function(){return null==n&&t(),o},boxSizingReliable:function(){return null==n&&t(),i},pixelMarginRight:function(){return null==n&&t(),r},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),a},reliableMarginLeft:function(){return null==n&&t(),s}}))}();var ht,gt,mt=/^(top|right|bottom|left)$/;e.getComputedStyle?(ht=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||pe.contains(e.ownerDocument,e)||(a=pe.style(e,t)),n&&!fe.pixelMarginRight()&&ft.test(a)&&ct.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o),void 0===a?a:a+""}):pt.currentStyle&&(ht=function(e){return e.currentStyle},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),ft.test(a)&&!mt.test(t)&&(r=s.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=r,o&&(i.left=o)),void 0===a?a:a+""||"auto"});var yt=/alpha\([^)]*\)/i,vt=/opacity\s*=\s*([^)]*)/i,xt=/^(none|table(?!-c[ea]).+)/,bt=new RegExp("^("+Fe+")(.*)$","i"),wt={position:"absolute",visibility:"hidden",display:"block"},Tt={letterSpacing:"0",fontWeight:"400"},Ct=["Webkit","O","Moz","ms"],Et=re.createElement("div").style;pe.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=gt(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":fe.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=pe.camelCase(t),u=e.style;if(t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];if(o=typeof n,"string"===o&&(i=Me.exec(n))&&i[1]&&(n=d(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(pe.cssNumber[s]?"":"px")),fe.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,r)))))try{u[t]=n}catch(l){}}},css:function(e,t,n,r){var i,o,a,s=pe.camelCase(t);return t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=gt(e,t,r)),"normal"===o&&t in Tt&&(o=Tt[t]),""===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),pe.each(["height","width"],function(e,t){pe.cssHooks[t]={get:function(e,n,r){if(n)return xt.test(pe.css(e,"display"))&&0===e.offsetWidth?dt(e,wt,function(){return M(e,t,r)}):M(e,t,r)},set:function(e,n,r){var i=r&&ht(e);return _(e,n,r?F(e,t,r,fe.boxSizing&&"border-box"===pe.css(e,"boxSizing",!1,i),i):0)}}}),fe.opacity||(pe.cssHooks.opacity={get:function(e,t){return vt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=pe.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===pe.trim(o.replace(yt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=yt.test(o)?o.replace(yt,i):o+" "+i)}}),pe.cssHooks.marginRight=L(fe.reliableMarginRight,function(e,t){if(t)return dt(e,{display:"inline-block"},gt,[e,"marginRight"])}),pe.cssHooks.marginLeft=L(fe.reliableMarginLeft,function(e,t){if(t)return(parseFloat(gt(e,"marginLeft"))||(pe.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-dt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px"}),pe.each({margin:"",padding:"",border:"Width"},function(e,t){pe.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+Oe[r]+t]=o[r]||o[r-2]||o[0];return i}},ct.test(e)||(pe.cssHooks[e+t].set=_)}),pe.fn.extend({css:function(e,t){return Pe(this,function(e,t,n){var r,i,o={},a=0;if(pe.isArray(t)){for(r=ht(e),i=t.length;a1)},show:function(){return q(this,!0)},hide:function(){return q(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Re(this)?pe(this).show():pe(this).hide()})}}),pe.Tween=O,O.prototype={constructor:O,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||pe.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(pe.cssNumber[n]?"":"px")},cur:function(){var e=O.propHooks[this.prop];return e&&e.get?e.get(this):O.propHooks._default.get(this)},run:function(e){var t,n=O.propHooks[this.prop];return this.options.duration?this.pos=t=pe.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):O.propHooks._default.set(this),this}},O.prototype.init.prototype=O.prototype,O.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=pe.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){pe.fx.step[e.prop]?pe.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[pe.cssProps[e.prop]]&&!pe.cssHooks[e.prop]?e.elem[e.prop]=e.now:pe.style(e.elem,e.prop,e.now+e.unit)}}},O.propHooks.scrollTop=O.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},pe.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},pe.fx=O.prototype.init,pe.fx.step={};var Nt,kt,St=/^(?:toggle|show|hide)$/,At=/queueHooks$/;pe.Animation=pe.extend($,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,Me.exec(t),n),n}]},tweener:function(e,t){pe.isFunction(e)?(t=e,e=["*"]):e=e.match(De);for(var n,r=0,i=e.length;r
a",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",fe.getSetAttribute="t"!==n.className,fe.style=/top/.test(e.getAttribute("style")),fe.hrefNormalized="/a"===e.getAttribute("href"),fe.checkOn=!!t.value,fe.optSelected=i.selected,fe.enctype=!!re.createElement("form").enctype,r.disabled=!0,fe.optDisabled=!i.disabled,t=re.createElement("input"),t.setAttribute("value",""),fe.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),fe.radioValue="t"===t.value}();var Dt=/\r/g,jt=/[\x20\t\r\n\f]+/g;pe.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=pe.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,pe(this).val()):e,null==i?i="":"number"==typeof i?i+="":pe.isArray(i)&&(i=pe.map(i,function(e){return null==e?"":e+""})),t=pe.valHooks[this.type]||pe.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return t=pe.valHooks[i.type]||pe.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(Dt,""):null==n?"":n)}}}),pe.extend({valHooks:{option:{get:function(e){var t=pe.find.attr(e,"value");return null!=t?t:pe.trim(pe.text(e)).replace(jt," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u-1)try{r.selected=n=!0}catch(s){r.scrollHeight}else r.selected=!1;return n||(e.selectedIndex=-1),i}}}}),pe.each(["radio","checkbox"],function(){pe.valHooks[this]={set:function(e,t){if(pe.isArray(t))return e.checked=pe.inArray(pe(e).val(),t)>-1}},fe.checkOn||(pe.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Lt,Ht,qt=pe.expr.attrHandle,_t=/^(?:checked|selected)$/i,Ft=fe.getSetAttribute,Mt=fe.input;pe.fn.extend({attr:function(e,t){return Pe(this,pe.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){pe.removeAttr(this,e)})}}),pe.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?pe.prop(e,t,n):(1===o&&pe.isXMLDoc(e)||(t=t.toLowerCase(),i=pe.attrHooks[t]||(pe.expr.match.bool.test(t)?Ht:Lt)),void 0!==n?null===n?void pe.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=pe.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!fe.radioValue&&"radio"===t&&pe.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(De);if(o&&1===e.nodeType)for(;n=o[i++];)r=pe.propFix[n]||n,pe.expr.match.bool.test(n)?Mt&&Ft||!_t.test(n)?e[r]=!1:e[pe.camelCase("default-"+n)]=e[r]=!1:pe.attr(e,n,""),e.removeAttribute(Ft?n:r)}}),Ht={set:function(e,t,n){return t===!1?pe.removeAttr(e,n):Mt&&Ft||!_t.test(n)?e.setAttribute(!Ft&&pe.propFix[n]||n,n):e[pe.camelCase("default-"+n)]=e[n]=!0,n}},pe.each(pe.expr.match.bool.source.match(/\w+/g),function(e,t){var n=qt[t]||pe.find.attr;Mt&&Ft||!_t.test(t)?qt[t]=function(e,t,r){var i,o;return r||(o=qt[t],qt[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,qt[t]=o),i}:qt[t]=function(e,t,n){if(!n)return e[pe.camelCase("default-"+t)]?t.toLowerCase():null}}),Mt&&Ft||(pe.attrHooks.value={set:function(e,t,n){return pe.nodeName(e,"input")?void(e.defaultValue=t):Lt&&Lt.set(e,t,n)}}),Ft||(Lt={set:function(e,t,n){var r=e.getAttributeNode(n);if(r||e.setAttributeNode(r=e.ownerDocument.createAttribute(n)),r.value=t+="","value"===n||t===e.getAttribute(n))return t}},qt.id=qt.name=qt.coords=function(e,t,n){var r;if(!n)return(r=e.getAttributeNode(t))&&""!==r.value?r.value:null},pe.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);if(n&&n.specified)return n.value},set:Lt.set},pe.attrHooks.contenteditable={set:function(e,t,n){Lt.set(e,""!==t&&t,n)}},pe.each(["width","height"],function(e,t){pe.attrHooks[t]={set:function(e,n){if(""===n)return e.setAttribute(t,"auto"),n}}})),fe.style||(pe.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var Ot=/^(?:input|select|textarea|button|object)$/i,Rt=/^(?:a|area)$/i;pe.fn.extend({prop:function(e,t){return Pe(this,pe.prop,e,t,arguments.length>1)},removeProp:function(e){return e=pe.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),pe.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&pe.isXMLDoc(e)||(t=pe.propFix[t]||t,i=pe.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=pe.find.attr(e,"tabindex");return t?parseInt(t,10):Ot.test(e.nodeName)||Rt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),fe.hrefNormalized||pe.each(["href","src"],function(e,t){pe.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),fe.optSelected||(pe.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),pe.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){pe.propFix[this.toLowerCase()]=this}),fe.enctype||(pe.propFix.enctype="encoding");var Pt=/[\t\r\n\f]/g;pe.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).addClass(e.call(this,t,z(this)))});if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).removeClass(e.call(this,t,z(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):pe.isFunction(e)?this.each(function(n){pe(this).toggleClass(e.call(this,n,z(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=pe(this),o=e.match(De)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=z(this),t&&pe._data(this,"__className__",t),pe.attr(this,"class",t||e===!1?"":pe._data(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(n)+" ").replace(Pt," ").indexOf(t)>-1)return!0;return!1}}),pe.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){pe.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),pe.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Bt=e.location,Wt=pe.now(),It=/\?/,$t=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;pe.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+"");var n,r=null,i=pe.trim(t+"");return i&&!pe.trim(i.replace($t,function(e,t,i,o){return n&&t&&(r=0),0===r?e:(n=i||t,r+=!o-!i,"")}))?Function("return "+i)():pe.error("Invalid JSON: "+t)},pe.parseXML=function(t){var n,r;if(!t||"string"!=typeof t)return null;try{e.DOMParser?(r=new e.DOMParser,n=r.parseFromString(t,"text/xml")):(n=new e.ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t))}catch(i){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName("parsererror").length||pe.error("Invalid XML: "+t),n};var zt=/#.*$/,Xt=/([?&])_=[^&]*/,Ut=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Vt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Yt=/^(?:GET|HEAD)$/,Jt=/^\/\//,Gt=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Kt={},Qt={},Zt="*/".concat("*"),en=Bt.href,tn=Gt.exec(en.toLowerCase())||[];pe.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:en,type:"GET",isLocal:Vt.test(tn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":pe.parseJSON,"text xml":pe.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?V(V(e,pe.ajaxSettings),t):V(pe.ajaxSettings,e)},ajaxPrefilter:X(Kt),ajaxTransport:X(Qt),ajax:function(t,n){function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c=void 0,s=i||"",T.readyState=t>0?4:0,o=t>=200&&t<300||304===t,r&&(x=Y(d,T,r)),x=J(d,x,T,o),o?(d.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(pe.lastModified[a]=w),w=T.getResponseHeader("etag"),w&&(pe.etag[a]=w)),204===t||"HEAD"===d.type?C="nocontent":304===t?C="notmodified":(C=x.state,f=x.data,v=x.error,o=!v)):(v=C,!t&&C||(C="error",t<0&&(t=0))),T.status=t,T.statusText=(n||C)+"",o?g.resolveWith(p,[f,C,T]):g.rejectWith(p,[T,C,v]),T.statusCode(y),y=void 0,l&&h.trigger(o?"ajaxSuccess":"ajaxError",[T,d,o?f:v]),m.fireWith(p,[T,C]),l&&(h.trigger("ajaxComplete",[T,d]),--pe.active||pe.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,d=pe.ajaxSetup({},n),p=d.context||d,h=d.context&&(p.nodeType||p.jquery)?pe(p):pe.event,g=pe.Deferred(),m=pe.Callbacks("once memory"),y=d.statusCode||{},v={},x={},b=0,w="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!f)for(f={};t=Ut.exec(s);)f[t[1].toLowerCase()]=t[2];t=f[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=x[n]=x[n]||e,v[e]=t),this},overrideMimeType:function(e){return b||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)y[t]=[y[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return c&&c.abort(t),r(0,t),this}};if(g.promise(T).complete=m.add,T.success=T.done,T.error=T.fail,d.url=((t||d.url||en)+"").replace(zt,"").replace(Jt,tn[1]+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=pe.trim(d.dataType||"*").toLowerCase().match(De)||[""],null==d.crossDomain&&(i=Gt.exec(d.url.toLowerCase()),d.crossDomain=!(!i||i[1]===tn[1]&&i[2]===tn[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(tn[3]||("http:"===tn[1]?"80":"443")))),d.data&&d.processData&&"string"!=typeof d.data&&(d.data=pe.param(d.data,d.traditional)),U(Kt,d,n,T),2===b)return T;l=pe.event&&d.global,l&&0===pe.active++&&pe.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Yt.test(d.type),a=d.url,d.hasContent||(d.data&&(a=d.url+=(It.test(a)?"&":"?")+d.data,delete d.data),d.cache===!1&&(d.url=Xt.test(a)?a.replace(Xt,"$1_="+Wt++):a+(It.test(a)?"&":"?")+"_="+Wt++)),d.ifModified&&(pe.lastModified[a]&&T.setRequestHeader("If-Modified-Since",pe.lastModified[a]),pe.etag[a]&&T.setRequestHeader("If-None-Match",pe.etag[a])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",d.contentType),T.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Zt+"; q=0.01":""):d.accepts["*"]);for(o in d.headers)T.setRequestHeader(o,d.headers[o]);if(d.beforeSend&&(d.beforeSend.call(p,T,d)===!1||2===b))return T.abort();w="abort";for(o in{success:1,error:1,complete:1})T[o](d[o]);if(c=U(Qt,d,n,T)){if(T.readyState=1,l&&h.trigger("ajaxSend",[T,d]),2===b)return T;d.async&&d.timeout>0&&(u=e.setTimeout(function(){T.abort("timeout")},d.timeout));try{b=1,c.send(v,r)}catch(C){if(!(b<2))throw C;r(-1,C)}}else r(-1,"No Transport");return T},getJSON:function(e,t,n){return pe.get(e,t,n,"json")},getScript:function(e,t){return pe.get(e,void 0,t,"script")}}),pe.each(["get","post"],function(e,t){pe[t]=function(e,n,r,i){return pe.isFunction(n)&&(i=i||r,r=n,n=void 0),pe.ajax(pe.extend({url:e,type:t,dataType:i,data:n,success:r},pe.isPlainObject(e)&&e))}}),pe._evalUrl=function(e){return pe.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},pe.fn.extend({wrapAll:function(e){if(pe.isFunction(e))return this.each(function(t){pe(this).wrapAll(e.call(this,t))});if(this[0]){var t=pe(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return pe.isFunction(e)?this.each(function(t){pe(this).wrapInner(e.call(this,t))}):this.each(function(){var t=pe(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=pe.isFunction(e);return this.each(function(n){pe(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){pe.nodeName(this,"body")||pe(this).replaceWith(this.childNodes)}).end()}}),pe.expr.filters.hidden=function(e){return fe.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:K(e)},pe.expr.filters.visible=function(e){return!pe.expr.filters.hidden(e)};var nn=/%20/g,rn=/\[\]$/,on=/\r?\n/g,an=/^(?:submit|button|image|reset|file)$/i,sn=/^(?:input|select|textarea|keygen)/i;pe.param=function(e,t){var n,r=[],i=function(e,t){t=pe.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=pe.ajaxSettings&&pe.ajaxSettings.traditional),pe.isArray(e)||e.jquery&&!pe.isPlainObject(e))pe.each(e,function(){i(this.name,this.value)});else for(n in e)Q(n,e[n],t,i);return r.join("&").replace(nn,"+")},pe.fn.extend({serialize:function(){return pe.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=pe.prop(this,"elements");return e?pe.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!pe(this).is(":disabled")&&sn.test(this.nodeName)&&!an.test(e)&&(this.checked||!Be.test(e))}).map(function(e,t){var n=pe(this).val();return null==n?null:pe.isArray(n)?pe.map(n,function(e){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),pe.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return this.isLocal?ee():re.documentMode>8?Z():/^(get|post|head|put|delete|options)$/i.test(this.type)&&Z()||ee()}:Z;var un=0,ln={},cn=pe.ajaxSettings.xhr();e.attachEvent&&e.attachEvent("onunload",function(){for(var e in ln)ln[e](void 0,!0)}),fe.cors=!!cn&&"withCredentials"in cn,cn=fe.ajax=!!cn,cn&&pe.ajaxTransport(function(t){if(!t.crossDomain||fe.cors){var n;return{send:function(r,i){var o,a=t.xhr(),s=++un;if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(o in t.xhrFields)a[o]=t.xhrFields[o];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(o in r)void 0!==r[o]&&a.setRequestHeader(o,r[o]+"");a.send(t.hasContent&&t.data||null),n=function(e,r){var o,u,l;if(n&&(r||4===a.readyState))if(delete ln[s],n=void 0,a.onreadystatechange=pe.noop,r)4!==a.readyState&&a.abort();else{l={},o=a.status,"string"==typeof a.responseText&&(l.text=a.responseText);try{u=a.statusText}catch(c){u=""}o||!t.isLocal||t.crossDomain?1223===o&&(o=204):o=l.text?200:404}l&&i(o,u,l,a.getAllResponseHeaders())},t.async?4===a.readyState?e.setTimeout(n):a.onreadystatechange=ln[s]=n:n()},abort:function(){n&&n(void 0,!0)}}}}),pe.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return pe.globalEval(e),e}}}),pe.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),pe.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=re.head||pe("head")[0]||re.documentElement;return{send:function(r,i){t=re.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var fn=[],dn=/(=)\?(?=&|$)|\?\?/;pe.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=fn.pop()||pe.expando+"_"+Wt++;return this[e]=!0,e}}),pe.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=pe.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(It.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||pe.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?pe(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,fn.push(i)),a&&pe.isFunction(o)&&o(a[0]),a=o=void 0}),"script"}),pe.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||re;var r=Te.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=y([e],t,i),i&&i.length&&pe(i).remove(),pe.merge([],r.childNodes))};var pn=pe.fn.load;return pe.fn.load=function(e,t,n){if("string"!=typeof e&&pn)return pn.apply(this,arguments);var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=pe.trim(e.slice(s,e.length)),e=e.slice(0,s)),pe.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&pe.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?pe("
").append(pe.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},pe.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){pe.fn[t]=function(e){return this.on(t,e)}}),pe.expr.filters.animated=function(e){return pe.grep(pe.timers,function(t){return e===t.elem}).length},pe.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=pe.css(e,"position"),f=pe(e),d={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=pe.css(e,"top"),u=pe.css(e,"left"),l=("absolute"===c||"fixed"===c)&&pe.inArray("auto",[o,u])>-1,l?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),pe.isFunction(t)&&(t=t.call(e,n,pe.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+i),"using"in t?t.using.call(e,d):f.css(d)}},pe.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){pe.offset.setOffset(this,e,t)});var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(o)return t=o.documentElement,pe.contains(t,i)?("undefined"!=typeof i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=te(o),{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):r},position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===pe.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),pe.nodeName(e[0],"html")||(n=e.offset()),n.top+=pe.css(e[0],"borderTopWidth",!0),n.left+=pe.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-pe.css(r,"marginTop",!0),left:t.left-n.left-pe.css(r,"marginLeft",!0)}}},offsetParent:function(){ -return this.map(function(){for(var e=this.offsetParent;e&&!pe.nodeName(e,"html")&&"static"===pe.css(e,"position");)e=e.offsetParent;return e||pt})}}),pe.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);pe.fn[e]=function(r){return Pe(this,function(e,r,i){var o=te(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?pe(o).scrollLeft():i,n?i:pe(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),pe.each(["top","left"],function(e,t){pe.cssHooks[t]=L(fe.pixelPosition,function(e,n){if(n)return n=gt(e,t),ft.test(n)?pe(e).position()[t]+"px":n})}),pe.each({Height:"height",Width:"width"},function(e,t){pe.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){pe.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),a=n||(r===!0||i===!0?"margin":"border");return Pe(this,function(t,n,r){var i;return pe.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?pe.css(t,n,a):pe.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),pe.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),pe.fn.size=function(){return this.length},pe.fn.andSelf=pe.fn.addBack,layui.define(function(e){layui.$=pe,e("jquery",pe)}),pe});!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var t=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if("interactive"===t[n].readyState){e=t[n].src;break}return e||t[i].src}(),i=e.LAYUI_GLOBAL||{};return i.layer_dir||t.substring(0,t.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c="creating",u=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function d(t){var n=100,a=document.getElementById(f);return++u>1e4/n?e.console&&console.error(l+".css: Invalid"):void(1989===parseInt(o.getStyle(a,"width"))?(t===c&&a.removeAttribute("lay-status"),a.getAttribute("lay-status")===c?setTimeout(d,n):i()):(a.setAttribute("lay-status",c),setTimeout(function(){d(c)},n)))}()}}},r={v:"3.5.1",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("theme/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:260},n))}},s=function(e){var t=this,a=function(){t.creat()};t.index=++r.index,t.config.maxWidth=i(n).width()-30,t.config=i.extend({},t.config,o.config,e),document.body?a():setTimeout(function(){a()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim-00","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],l.SHADE="layui-layer-shade",l.MOVE="layui-layer-move",s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,minStack:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'
'+(f?r.title[0]:r.title)+"
":"";return r.zIndex=s,t([r.shade?'
':"",'
'+(e&&2!=r.type?"":u)+'
'+(0==r.type&&r.icon!==-1?'':"")+(1==r.type&&e?"":r.content||"")+'
'+function(){var e=c?'':"";return r.closeBtn&&(e+=''),e}()+""+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t'+r.btn[t]+"";return'
'+e+"
"}():"")+(r.resize?'':"")+"
"],u,i('
')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i("#"+l.MOVE)[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),e.shadeo=i("#"+l.SHADE+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),e.shadeo.css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():function(){e.offset(),parseInt(o.getStyle(document.getElementById(l.MOVE),"z-index"))||function(){e.layero.css("visibility","hidden"),r.ready(function(){e.offset(),e.layero.css("visibility","visible")})}()}(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index,t)}):a.success(n,t.index,t)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&t.shadeo.on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n,t.index);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n,t.index)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n,t.index)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){t=t||{};var a=i("#"+l[0]+e),s=i("#"+l.SHADE+e),f=a.find(l[1]).outerHeight()||0,c=a.attr("minLeft")||181*o.minIndex+"px",u=a.css("position"),d={width:180,height:f,position:"fixed",overflow:"hidden"};o.record(a),o.minLeft[0]&&(c=o.minLeft[0],o.minLeft.shift()),t.minStack&&(d.left=c,d.top=n.height()-f,a.attr("minLeft")||o.minIndex++,a.attr("minLeft",c)),a.attr("position",u),r.style(e,d,!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),s.hide()},r.restore=function(e){var t=i("#"+l[0]+e),n=i("#"+l.SHADE+e),a=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(a[0]),height:parseFloat(a[1]),top:parseFloat(a[2]),left:parseFloat(a[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e),n.show()},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e,t){var n=i("#"+l[0]+e),a=n.attr("type"),s="layer-anim-close";if(n[0]){var f="layui-layer-wrap",c=function(){if(a===o.type[1]&&"object"===n.attr("conType")){n.children(":not(."+l[5]+")").remove();for(var r=n.find("."+f),s=0;s<2;s++)r.unwrap();r.css("display",r.data("display")).removeClass(f)}else{if(a===o.type[2])try{var c=i("#"+l[4]+e)[0];c.contentWindow.document.write(""),c.contentWindow.close(),n.find("."+l[5])[0].removeChild(c)}catch(u){}n[0].innerHTML="",n.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e],"function"==typeof t&&t()};n.data("isOutAnim")&&n.addClass("layer-anim "+s),i("#layui-layer-moves, #"+l.SHADE+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),n.attr("minLeft")&&(o.minIndex--,o.minLeft.push(n.attr("minLeft"))),r.ie&&r.ie<10||!n.data("isOutAnim")?c():setTimeout(function(){c()},200)}},r.closeAll=function(e,t){"function"==typeof e&&(t=e,e=null);var n=i("."+l[0]);i.each(n,function(a){var o=i(this),s=e?o.attr("type")===e:1;s&&r.close(o.attr("times"),a===n.length-1?t:null),s=null}),0===n.length&&"function"==typeof t&&t()};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(t){s=t.find(".layui-layer-input"),s.val(e.value||"").focus(),"function"==typeof f&&f(t)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+"";i"+t[i].title+"";return a}(),content:'
    '+function(){var e=t.length,i=1,a="";if(e>0)for(a='
  • '+(t[0].content||"no content")+"
  • ";i'+(t[i].content||"no content")+"";return a}()+"
",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=!("string"==typeof t.photos||t.photos instanceof i),f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){h();var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0)}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev(!0)}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext(!0)}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),a&&(t.anim=-1),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||'+function(){return u.length>1?'
'+(u[d].alt||"")+""+s.imgIndex+" / "+u.length+"
":""}()+"
",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){r.ready(),o.run(e.jQuery)}()}(window);layui.define("jquery",function(e){"use strict";var t=layui.$,i=layui.hint(),n={fixbar:function(e){var i,n,r="layui-fixbar",a="layui-fixbar-top",o=t(document),l=t("body");e=t.extend({showHeight:200},e),e.bar1=e.bar1===!0?"":e.bar1,e.bar2=e.bar2===!0?"":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var c=[e.bar1,e.bar2,""],g=t(['
    ',e.bar1?'
  • '+c[0]+"
  • ":"",e.bar2?'
  • '+c[1]+"
  • ":"",'
  • '+c[2]+"
  • ","
"].join("")),u=g.find("."+a),s=function(){var t=o.scrollTop();t>=e.showHeight?i||(u.show(),i=1):i&&(u.hide(),i=0)};t("."+r)[0]||("object"==typeof e.css&&g.css(e.css),l.append(g),s(),g.find("li").on("click",function(){var i=t(this),n=i.attr("lay-type");"top"===n&&t("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,n)}),o.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){s()},100)}))},countdown:function(e,t,i){var n=this,r="function"==typeof t,a=new Date(e).getTime(),o=new Date(!t||r?(new Date).getTime():t).getTime(),l=a-o,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];r&&(i=t);var g=setTimeout(function(){n.countdown(e,o+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],t,g),l<=0&&clearTimeout(g),g},timeAgo:function(e,t){var i=this,n=[[],[]],r=(new Date).getTime()-new Date(e).getTime();return r>26784e5?(r=new Date(e),n[0][0]=i.digit(r.getFullYear(),4),n[0][1]=i.digit(r.getMonth()+1),n[0][2]=i.digit(r.getDate()),t||(n[1][0]=i.digit(r.getHours()),n[1][1]=i.digit(r.getMinutes()),n[1][2]=i.digit(r.getSeconds())),n[0].join("-")+" "+n[1].join(":")):r>=864e5?(r/1e3/60/60/24|0)+"\u5929\u524d":r>=36e5?(r/1e3/60/60|0)+"\u5c0f\u65f6\u524d":r>=18e4?(r/1e3/60|0)+"\u5206\u949f\u524d":r<0?"\u672a\u6765":"\u521a\u521a"},digit:function(e,t){var i="";e=String(e),t=t||2;for(var n=e.length;n/g,">").replace(/'/g,"'").replace(/"/g,""")},unescape:function(e){return String(e||"").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/,"'").replace(/\"/,'"')},toVisibleArea:function(e){if(e=t.extend({margin:160,duration:200,type:"y"},e),e.scrollElem[0]&&e.thisElem[0]){var i=e.scrollElem,n=e.thisElem,r="y"===e.type,a=r?"scrollTop":"scrollLeft",o=r?"top":"left",l=i[a](),c=i[r?"height":"width"](),g=i.offset()[o],u=n.offset()[o]-g,s={};(u>c-e.margin||u0&&t.unshift(""),t.join(" ")}()+">"+(a.title||"unnaming")+"";return s[0]?s.before(r):n.append(r),o.append('
'+(a.content||"")+"
"),b.hideTabMore(!0),b.tabAuto(),this},s.prototype.tabDelete=function(t,a){var e=".layui-tab-title",l=i(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+a+'"]');return b.tabDelete(null,s),this},s.prototype.tabChange=function(t,a){var e=".layui-tab-title",l=i(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+a+'"]');return b.tabClick.call(s[0],null,null,s),this},s.prototype.tab=function(t){t=t||{},m.on("click",t.headerElem,function(a){var e=i(this).index();b.tabClick.call(this,a,e,null,t)})},s.prototype.progress=function(t,a){var e="layui-progress",l=i("."+e+"[lay-filter="+t+"]"),n=l.find("."+e+"-bar"),s=n.find("."+e+"-text");return n.css("width",a).attr("lay-percent",a),s.text(a),this};var o=".layui-nav",r="layui-nav-item",c="layui-nav-bar",u="layui-nav-tree",y="layui-nav-child",d="layui-nav-child-c",f="layui-nav-more",h="layui-icon-down",p="layui-anim layui-anim-upbit",b={tabClick:function(t,a,s,o){o=o||{};var r=s||i(this),a=a||r.parent().children("li").index(r),c=o.headerElem?r.parent():r.parents(".layui-tab").eq(0),u=o.bodyElem?i(o.bodyElem):c.children(".layui-tab-content").children(".layui-tab-item"),y=r.find("a"),d="javascript:;"!==y.attr("href")&&"_blank"===y.attr("target"),f="string"==typeof r.attr("lay-unselect"),h=c.attr("lay-filter");d||f||(r.addClass(l).siblings().removeClass(l),u.eq(a).addClass(n).siblings().removeClass(n)),layui.event.call(this,e,"tab("+h+")",{elem:c,index:a})},tabDelete:function(t,a){var n=a||i(this).parent(),s=n.index(),o=n.parents(".layui-tab").eq(0),r=o.children(".layui-tab-content").children(".layui-tab-item"),c=o.attr("lay-filter");n.hasClass(l)&&(n.next()[0]?b.tabClick.call(n.next()[0],null,s+1):n.prev()[0]&&b.tabClick.call(n.prev()[0],null,s-1)),n.remove(),r.eq(s).remove(),setTimeout(function(){b.tabAuto()},50),layui.event.call(this,e,"tabDelete("+c+")",{elem:o,index:s})},tabAuto:function(){var t="layui-tab-more",e="layui-tab-bar",l="layui-tab-close",n=this;i(".layui-tab").each(function(){var s=i(this),o=s.children(".layui-tab-title"),r=(s.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),c=i('');if(n===window&&8!=a.ie&&b.hideTabMore(!0),s.attr("lay-allowClose")&&o.find("li").each(function(){var t=i(this);if(!t.find("."+l)[0]){var a=i('');a.on("click",b.tabDelete),t.append(a)}}),"string"!=typeof s.attr("lay-unauto"))if(o.prop("scrollWidth")>o.outerWidth()+1){if(o.find("."+e)[0])return;o.append(c),s.attr("overflow",""),c.on("click",function(i){o[this.title?"removeClass":"addClass"](t),this.title=this.title?"":"\u6536\u7f29"})}else o.find("."+e).remove(),s.removeAttr("overflow")})},hideTabMore:function(t){var a=i(".layui-tab-title");t!==!0&&"tabmore"===i(t.target).attr("lay-stope")||(a.removeClass("layui-tab-more"),a.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=i(this),a=t.parents(o),n=a.attr("lay-filter"),s=t.parent(),c=t.siblings("."+y),d="string"==typeof s.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||d||c[0]||(a.find("."+l).removeClass(l),s.addClass(l)),a.hasClass(u)&&(c.removeClass(p),c[0]&&(s["none"===c.css("display")?"addClass":"removeClass"](r+"ed"),"all"===a.attr("lay-shrink")&&s.siblings().removeClass(r+"ed"))),layui.event.call(this,e,"nav("+n+")",t)},collapse:function(){var t=i(this),a=t.find(".layui-colla-icon"),l=t.siblings(".layui-colla-content"),s=t.parents(".layui-collapse").eq(0),o=s.attr("lay-filter"),r="none"===l.css("display");if("string"==typeof s.attr("lay-accordion")){var c=s.children(".layui-colla-item").children("."+n);c.siblings(".layui-colla-title").children(".layui-colla-icon").html(""),c.removeClass(n)}l[r?"addClass":"removeClass"](n),a.html(r?"":""),layui.event.call(this,e,"collapse("+o+")",{title:t,content:l,show:r})}};s.prototype.init=function(t,e){var l=function(){return e?'[lay-filter="'+e+'"]':""}(),s={tab:function(){b.tabAuto.call({})},nav:function(){var t=200,e={},s={},v={},m="layui-nav-title",C=function(l,o,r){var c=i(this),h=c.find("."+y);if(o.hasClass(u)){if(!h[0]){var b=c.children("."+m);l.css({top:c.offset().top-o.offset().top,height:(b[0]?b:c).outerHeight(),opacity:1})}}else h.addClass(p),h.hasClass(d)&&h.css({left:-(h.outerWidth()-c.width())/2}),h[0]?l.css({left:l.position().left+l.width()/2,width:0,opacity:0}):l.css({left:c.position().left+parseFloat(c.css("marginLeft")),top:c.position().top+c.height()-l.height()}),e[r]=setTimeout(function(){l.css({width:h[0]?0:c.width(),opacity:h[0]?0:1})},a.ie&&a.ie<10?0:t),clearTimeout(v[r]),"block"===h.css("display")&&clearTimeout(s[r]),s[r]=setTimeout(function(){h.addClass(n),c.find("."+f).addClass(f+"d")},300)};i(o+l).each(function(a){var l=i(this),o=i(''),d=l.find("."+r);l.find("."+c)[0]||(l.append(o),(l.hasClass(u)?d.find("dd,>."+m):d).on("mouseenter",function(){C.call(this,o,l,a)}).on("mouseleave",function(){l.hasClass(u)?o.css({height:0,opacity:0}):(clearTimeout(s[a]),s[a]=setTimeout(function(){l.find("."+y).removeClass(n),l.find("."+f).removeClass(f+"d")},300))}),l.on("mouseleave",function(){clearTimeout(e[a]),v[a]=setTimeout(function(){l.hasClass(u)||o.css({width:0,left:o.position().left+o.width()/2,opacity:0})},t)})),d.find("a").each(function(){var t=i(this),a=(t.parent(),t.siblings("."+y));a[0]&&!t.children("."+f)[0]&&t.append(''),t.off("click",b.clickThis).on("click",b.clickThis)})})},breadcrumb:function(){var t=".layui-breadcrumb";i(t+l).each(function(){var t=i(this),a="lay-separator",e=t.attr(a)||"/",l=t.find("a");l.next("span["+a+"]")[0]||(l.each(function(t){t!==l.length-1&&i(this).after(""+e+"")}),t.css("visibility","visible"))})},progress:function(){var t="layui-progress";i("."+t+l).each(function(){var a=i(this),e=a.find(".layui-progress-bar"),l=e.attr("lay-percent");e.css("width",function(){return/^.+\/.+$/.test(l)?100*new Function("return "+l)()+"%":l}()),a.attr("lay-showPercent")&&setTimeout(function(){e.html(''+l+"")},350)})},collapse:function(){var t="layui-collapse";i("."+t+l).each(function(){var t=i(this).find(".layui-colla-item");t.each(function(){var t=i(this),a=t.find(".layui-colla-title"),e=t.find(".layui-colla-content"),l="none"===e.css("display");a.find(".layui-colla-icon").remove(),a.append(''+(l?"":"")+""),a.off("click",b.collapse).on("click",b.collapse)})})}};return s[t]?s[t]():layui.each(s,function(t,i){i()})},s.prototype.render=s.prototype.init;var v=new s,m=i(document);i(function(){v.render()});var C=".layui-tab-title li";m.on("click",C,b.tabClick),m.on("click",b.hideTabMore),i(window).on("resize",b.tabAuto),t(e,v)});layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,n=layui.hint(),o=layui.device(),a={config:{},set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,r,e,t)}},l=function(){var e=this;return{upload:function(t){e.upload.call(e,t)},reload:function(t){e.reload.call(e,t)},config:e.config}},r="upload",u="layui-upload-file",c="layui-upload-form",f="layui-upload-iframe",s="layui-upload-choose",p=function(e){var i=this;i.config=t.extend({},i.config,a.config,e),i.render()};p.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var i=this,e=i.config;e.elem=t(e.elem),e.bindAction=t(e.bindAction),i.file(),i.events()},p.prototype.file=function(){var e=this,i=e.config,n=e.elemFile=t(['"].join("")),a=i.elem.next();(a.hasClass(u)||a.hasClass(c))&&a.remove(),o.ie&&o.ie<10&&i.elem.wrap('
'),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(n),o.ie&&o.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,i=e.config,n=t(''),o=t(['
',"
"].join(""));t("#"+f)[0]||t("body").append(n),i.elem.next().hasClass(c)||(e.elemFile.wrap(o),i.elem.next("."+c).append(function(){var e=[];return layui.each(i.data,function(t,i){i="function"==typeof i?i():i,e.push('')}),e.join("")}()))},p.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},p.prototype.preview=function(e){var t=this;window.FileReader&&layui.each(t.chooseFiles,function(t,i){var n=new FileReader;n.readAsDataURL(i),n.onload=function(){e&&e(t,i,this.result)}})},p.prototype.upload=function(e,i){var n,a=this,l=a.config,r=a.elemFile[0],u=function(){var i=0,n=0,o=e||a.files||a.chooseFiles||r.files,u=function(){l.multiple&&i+n===a.fileLength&&"function"==typeof l.allDone&&l.allDone({total:a.fileLength,successful:i,aborted:n})};layui.each(o,function(e,o){var r=new FormData;layui.each(l.data,function(e,t){t="function"==typeof t?t():t,r.append(e,t)}),r.append(l.field,o);var c={url:l.url,type:"post",data:r,contentType:!1,processData:!1,dataType:"text",headers:l.headers||{},success:function(t){i++,d(e,t),u()},error:function(){n++,a.msg("\u8bf7\u6c42\u4e0a\u4f20\u63a5\u53e3\u51fa\u73b0\u5f02\u5e38"),m(e),u()}};"function"==typeof l.progress&&(c.xhr=function(){var i=t.ajaxSettings.xhr();return i.upload.addEventListener("progress",function(t){if(t.lengthComputable){var i=Math.floor(t.loaded/t.total*100);l.progress(i,l.item?l.item[0]:l.elem[0],t,e)}}),i}),t.ajax(c)})},c=function(){var e=t("#"+f);a.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var t,i=e.contents().find("body");try{t=i.text()}catch(n){a.msg("\u83b7\u53d6\u4e0a\u4f20\u540e\u7684\u54cd\u5e94\u4fe1\u606f\u51fa\u73b0\u5f02\u5e38"),clearInterval(p.timer),m()}t&&(clearInterval(p.timer),i.html(""),d(0,t))},30)},d=function(e,t){if(a.elemFile.next("."+s).remove(),r.value="","object"!=typeof t)try{t=JSON.parse(t)}catch(i){t={}}"function"==typeof l.done&&l.done(t,e||0,function(e){a.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){a.upload(e)})},h=l.exts,v=function(){var t=[];return layui.each(e||a.chooseFiles,function(e,i){t.push(i.name)}),t}(),g={preview:function(e){a.preview(e)},upload:function(e,t){var i={};i[e]=t,a.upload(i)},pushFile:function(){return a.files=a.files||{},layui.each(a.chooseFiles,function(e,t){a.files[e]=t}),a.files},resetFile:function(e,t,i){var n=new File([t],i);a.files=a.files||{},a.files[e]=n}},y=function(){if(!(("choose"===i||l.auto)&&(l.choose&&l.choose(g),"choose"===i)||l.before&&l.before(g)===!1))return o.ie?o.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":v,0!==v.length){switch(l.accept){case"file":if(h&&!RegExp("\\w\\.("+h+")$","i").test(escape(v)))return a.msg("\u9009\u62e9\u7684\u6587\u4ef6\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return a.msg("\u9009\u62e9\u7684\u89c6\u9891\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return a.msg("\u9009\u62e9\u7684\u97f3\u9891\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),r.value="";break;default:if(layui.each(v,function(e,t){RegExp("\\w\\.("+(h||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(t))||(n=!0)}),n)return a.msg("\u9009\u62e9\u7684\u56fe\u7247\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),r.value=""}if(a.fileLength=function(){var t=0,i=e||a.files||a.chooseFiles||r.files;return layui.each(i,function(){t++}),t}(),l.number&&a.fileLength>l.number)return a.msg("\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20\u7684\u6570\u91cf\u4e3a\uff1a"+l.number);if(l.size>0&&!(o.ie&&o.ie<10)){var F;if(layui.each(a.chooseFiles,function(e,t){if(t.size>1024*l.size){var i=l.size/1024;i=i>=1?i.toFixed(2)+"MB":l.size+"KB",r.value="",F=i}}),F)return a.msg("\u6587\u4ef6\u4e0d\u80fd\u8d85\u8fc7"+F)}y()}},p.prototype.reload=function(e){e=e||{},delete e.elem,delete e.bindAction;var i=this,e=i.config=t.extend({},i.config,a.config,e),n=e.elem.next();n.attr({name:e.name,accept:e.acceptMime,multiple:e.multiple})},p.prototype.events=function(){var e=this,i=e.config,a=function(t){e.chooseFiles={},layui.each(t,function(t,i){var n=(new Date).getTime();e.chooseFiles[n+"-"+t]=i})},l=function(t,n){var o=e.elemFile,a=(i.item?i.item:i.elem,t.length>1?t.length+"\u4e2a\u6587\u4ef6":(t[0]||{}).name||o[0].value.match(/[^\/\\]+\..+/g)||[]||"");o.next().hasClass(s)&&o.next().remove(),e.upload(null,"choose"),e.isFile()||i.choose||o.after(''+a+"")};i.elem.off("upload.start").on("upload.start",function(){var o=t(this),a=o.attr("lay-data");if(a)try{a=new Function("return "+a)(),e.config=t.extend({},i,a)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+a)}e.config.item=o,e.elemFile[0].click()}),o.ie&&o.ie<10||i.elem.off("upload.over").on("upload.over",function(){var e=t(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=t(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,o){var r=t(this),u=o.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),a(u),i.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var t=this.files||[];a(t),i.auto?e.upload():l(t)}),i.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),i.elem.data("haveEvents")||(e.elemFile.on("change",function(){t(this).trigger("upload.change")}),i.elem.on("click",function(){e.isFile()||t(this).trigger("upload.start")}),i.drag&&i.elem.on("dragover",function(e){e.preventDefault(),t(this).trigger("upload.over")}).on("dragleave",function(e){t(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),t(this).trigger("upload.drop",e)}),i.bindAction.on("click",function(){t(this).trigger("upload.action")}),i.elem.data("haveEvents",!0))},a.render=function(e){var t=new p(e);return l.call(t)},e(r,a)});layui.define(["jquery","laytpl","lay"],function(e){"use strict";var i=layui.$,n=layui.laytpl,t=layui.hint(),a=layui.device(),l=a.mobile?"click":"mousedown",r="dropdown",o="layui_"+r+"_index",u={config:{},index:layui[r]?layui[r].index+1e4:0,set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,r,e,i)}},d=function(){var e=this,i=e.config,n=i.id;return d.that[n]=e,{config:i,reload:function(i){e.reload.call(e,i)}}},s="layui-dropdown",m="layui-menu-item-up",c="layui-menu-item-down",p="layui-menu-body-title",y="layui-menu-item-group",f="layui-menu-item-parent",v="layui-menu-item-divider",g="layui-menu-item-checked",h="layui-menu-item-checked2",w="layui-menu-body-panel",C="layui-menu-body-panel-left",V="."+y+">."+p,k=function(e){var n=this;n.index=++u.index,n.config=i.extend({},n.config,u.config,e),n.init()};k.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300},k.prototype.reload=function(e){var n=this;n.config=i.extend({},n.config,e),n.init(!0)},k.prototype.init=function(e){var n=this,t=n.config,a=t.elem=i(t.elem);if(a.length>1)return layui.each(a,function(){u.render(i.extend({},t,{elem:this}))}),n;if(!e&&a[0]&&a.data(o)){var l=d.getThis(a.data(o));if(!l)return;return l.reload(t)}t.id="id"in t?t.id:n.index,t.show&&n.render(e),n.events()},k.prototype.render=function(e){var t=this,a=t.config,r=i("body"),s=function(){var e=i('
    ');return a.data.length>0?m(e,a.data):e.html('
  • no menu
  • '),e},m=function(e,t){return layui.each(t,function(t,l){var r=l.child&&l.child.length>0,o="isSpreadItem"in l?l.isSpreadItem:a.isSpreadItem,u=l.templet?n(l.templet).render(l):a.templet?n(a.templet).render(l):l.title,d=function(){return r&&(l.type=l.type||"parent"),l.type?{group:"group",parent:"parent","-":"-"}[l.type]||"parent":""}();if("-"===d||l.title||l.id||r){var s=i(["",function(){var e="href"in l?''+u+"":u;return r?'
    '+e+function(){return"parent"===d?'':"group"===d&&a.isAllowSpread?'':""}()+"
    ":'
    '+e+"
    "}(),""].join(""));if(s.data("item",l),r){var c=i('
    '),y=i("
      ");"parent"===d?(c.append(m(y,l.child)),s.append(c)):s.append(m(y,l.child))}e.append(s)}}),e},c=['
      ',"
      "].join("");("contextmenu"===a.trigger||lay.isTopElem(a.elem[0]))&&(e=!0),!e&&a.elem.data(o+"_opened")||(t.elemView=i(c),t.elemView.append(a.content||s()),a.className&&t.elemView.addClass(a.className),a.style&&t.elemView.attr("style",a.style),u.thisId=a.id,t.remove(),r.append(t.elemView),a.elem.data(o+"_opened",!0),t.position(),d.prevElem=t.elemView,d.prevElem.data("prevElem",a.elem),t.elemView.find(".layui-menu").on(l,function(e){layui.stope(e)}),t.elemView.find(".layui-menu li").on("click",function(e){var n=i(this),l=n.data("item")||{},r=l.child&&l.child.length>0;r||"-"===l.type||(t.remove(),"function"==typeof a.click&&a.click(l,n))}),t.elemView.find(V).on("click",function(e){var n=i(this),t=n.parent(),l=t.data("item")||{};"group"===l.type&&a.isAllowSpread&&d.spread(t)}),"mouseenter"===a.trigger&&t.elemView.on("mouseenter",function(){clearTimeout(d.timer)}).on("mouseleave",function(){t.delayRemove()}))},k.prototype.position=function(e){var i=this,n=i.config;lay.position(n.elem[0],i.elemView[0],{position:n.position,e:i.e,clickType:"contextmenu"===n.trigger?"right":null,align:n.align||null})},k.prototype.remove=function(){var e=this,i=(e.config,d.prevElem);i&&(i.data("prevElem")&&i.data("prevElem").data(o+"_opened",!1),i.remove())},k.prototype.delayRemove=function(){var e=this,i=e.config;clearTimeout(d.timer),d.timer=setTimeout(function(){e.remove()},i.delay)},k.prototype.events=function(){var e=this,i=e.config;"hover"===i.trigger&&(i.trigger="mouseenter"),e.prevElem&&e.prevElem.off(i.trigger,e.prevElemCallback),e.prevElem=i.elem,e.prevElemCallback=function(n){clearTimeout(d.timer),e.e=n,e.render(),n.preventDefault(),"function"==typeof i.ready&&i.ready(e.elemView,i.elem,e.e.target)},i.elem.on(i.trigger,e.prevElemCallback),"mouseenter"===i.trigger&&i.elem.on("mouseleave",function(){e.delayRemove()})},d.that={},d.getThis=function(e){var i=d.that[e];return i||t.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},d.spread=function(e){var i=e.children("."+p).find(".layui-icon");e.hasClass(m)?(e.removeClass(m).addClass(c),i.removeClass("layui-icon-down").addClass("layui-icon-up")):(e.removeClass(c).addClass(m),i.removeClass("layui-icon-up").addClass("layui-icon-down"))},!function(){var e=i(window),n=i(document);e.on("resize",function(){if(u.thisId){var e=d.getThis(u.thisId);if(e){if(!e.elemView[0]||!i("."+s)[0])return!1;var n=e.config;"contextmenu"===n.trigger?e.remove():e.position()}}}),n.on(l,function(e){if(u.thisId){var i=d.getThis(u.thisId);if(i){var n=i.config;!lay.isTopElem(n.elem[0])&&"contextmenu"!==n.trigger&&(e.target===n.elem[0]||n.elem.find(e.target)[0]||e.target===i.elemView[0]||i.elemView&&i.elemView.find(e.target)[0])||i.remove()}}});var t=".layui-menu:not(.layui-dropdown-menu) li";n.on("click",t,function(e){var n=i(this),t=n.parents(".layui-menu").eq(0),a=n.hasClass(y)||n.hasClass(f),l=t.attr("lay-filter")||t.attr("id"),o=lay.options(this);n.hasClass(v)||a||(t.find("."+g).removeClass(g),t.find("."+h).removeClass(h),n.addClass(g),n.parents("."+f).addClass(h),layui.event.call(this,r,"click("+l+")",o))}),n.on("click",t+V,function(e){var n=i(this),t=n.parents("."+y+":eq(0)"),a=lay.options(t[0]);"isAllowSpread"in a&&!a.isAllowSpread||d.spread(t)});var a=".layui-menu ."+f;n.on("mouseenter",a,function(n){var t=i(this),a=t.find("."+w);if(a[0]){var l=a[0].getBoundingClientRect();l.right>e.width()&&(a.addClass(C),l=a[0].getBoundingClientRect(),l.left<0&&a.removeClass(C)),l.bottom>e.height()&&a.eq(0).css("margin-top",-(l.bottom-e.height()))}}).on("mouseleave",a,function(e){var n=i(this),t=n.children("."+w);t.removeClass(C),t.css("margin-top",0)})}(),u.reload=function(e,i){var n=d.getThis(e);return n?(n.reload(i),d.call(n)):this},u.render=function(e){var i=new k(e);return d.call(i)},e(r,u)});layui.define("jquery",function(e){"use strict";var i=layui.jquery,t={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,n,e,i)}},a=function(){var e=this,i=e.config;return{setValue:function(t,a){return i.value=t,e.slide("set",t,a||0)},config:i}},n="slider",l="layui-disabled",s="layui-slider",r="layui-slider-bar",o="layui-slider-wrap",u="layui-slider-wrap-btn",d="layui-slider-tips",v="layui-slider-input",c="layui-slider-input-txt",p="layui-slider-input-btn",m="layui-slider-hover",f=function(e){var a=this;a.index=++t.index,a.config=i.extend({},a.config,t.config,e),a.render()};f.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#009688"},f.prototype.render=function(){var e=this,t=e.config;if(t.step<1&&(t.step=1),t.maxt.min?a:t.min,t.value[1]=n>t.min?n:t.min,t.value[0]=t.value[0]>t.max?t.max:t.value[0],t.value[1]=t.value[1]>t.max?t.max:t.value[1];var r=Math.floor((t.value[0]-t.min)/(t.max-t.min)*100),v=Math.floor((t.value[1]-t.min)/(t.max-t.min)*100),p=v-r+"%";r+="%",v+="%"}else{"object"==typeof t.value&&(t.value=Math.min.apply(null,t.value)),t.valuet.max&&(t.value=t.max);var p=Math.floor((t.value-t.min)/(t.max-t.min)*100)+"%"}var m=t.disabled?"#c2c2c2":t.theme,f='
      '+(t.tips?'
      ':"")+'
      '+(t.range?'
      ':"")+"
      ",h=i(t.elem),y=h.next("."+s);if(y[0]&&y.remove(),e.elemTemp=i(f),t.range?(e.elemTemp.find("."+o).eq(0).data("value",t.value[0]),e.elemTemp.find("."+o).eq(1).data("value",t.value[1])):e.elemTemp.find("."+o).data("value",t.value),h.html(e.elemTemp),"vertical"===t.type&&e.elemTemp.height(t.height+"px"),t.showstep){for(var g=(t.max-t.min)/t.step,b="",x=1;x')}e.elemTemp.append(b)}if(t.input&&!t.range){var w=i('
      ');h.css("position","relative"),h.append(w),h.find("."+c).children("input").val(t.value),"vertical"===t.type?w.css({left:0,top:-48}):e.elemTemp.css("margin-right",w.outerWidth()+15)}t.disabled?(e.elemTemp.addClass(l),e.elemTemp.find("."+u).addClass(l)):e.slide(),e.elemTemp.find("."+u).on("mouseover",function(){var a="vertical"===t.type?t.height:e.elemTemp[0].offsetWidth,n=e.elemTemp.find("."+o),l="vertical"===t.type?a-i(this).parent()[0].offsetTop-n.height():i(this).parent()[0].offsetLeft,s=l/a*100,r=i(this).parent().data("value"),u=t.setTips?t.setTips(r):r;e.elemTemp.find("."+d).html(u),"vertical"===t.type?e.elemTemp.find("."+d).css({bottom:s+"%","margin-bottom":"20px",display:"inline-block"}):e.elemTemp.find("."+d).css({left:s+"%",display:"inline-block"})}).on("mouseout",function(){e.elemTemp.find("."+d).css("display","none")})},f.prototype.slide=function(e,t,a){var n=this,l=n.config,s=n.elemTemp,f=function(){return"vertical"===l.type?l.height:s[0].offsetWidth},h=s.find("."+o),y=s.next("."+v),g=y.children("."+c).children("input").val(),b=100/((l.max-l.min)/Math.ceil(l.step)),x=function(e,i){e=Math.ceil(e)*b>100?Math.ceil(e)*b:Math.round(e)*b,e=e>100?100:e,h.eq(i).css("vertical"===l.type?"bottom":"left",e+"%");var t=T(h[0].offsetLeft),a=l.range?T(h[1].offsetLeft):0;"vertical"===l.type?(s.find("."+d).css({bottom:e+"%","margin-bottom":"20px"}),t=T(f()-h[0].offsetTop-h.height()),a=l.range?T(f()-h[1].offsetTop-h.height()):0):s.find("."+d).css("left",e+"%"),t=t>100?100:t,a=a>100?100:a;var n=Math.min(t,a),o=Math.abs(t-a);"vertical"===l.type?s.find("."+r).css({height:o+"%",bottom:n+"%"}):s.find("."+r).css({width:o+"%",left:n+"%"});var u=l.min+Math.round((l.max-l.min)*e/100);if(g=u,y.children("."+c).children("input").val(g),h.eq(i).data("value",u),s.find("."+d).html(l.setTips?l.setTips(u):u),l.range){var v=[h.eq(0).data("value"),h.eq(1).data("value")];v[0]>v[1]&&v.reverse()}l.change&&l.change(l.range?v:u)},T=function(e){var i=e/f()*100/b,t=Math.round(i)*b;return e==f()&&(t=Math.ceil(i)*b),t},w=i(['
      f()&&(r=f());var o=r/f()*100/b;x(o,e),t.addClass(m),s.find("."+d).show(),i.preventDefault()},o=function(){t.removeClass(m),s.find("."+d).hide()};M(r,o)})}),s.on("click",function(e){var t=i("."+u);if(!t.is(event.target)&&0===t.has(event.target).length&&t.length){var a,n="vertical"===l.type?f()-e.clientY+i(this).offset().top:e.clientX-i(this).offset().left;n<0&&(n=0),n>f()&&(n=f());var s=n/f()*100/b;a=l.range?"vertical"===l.type?Math.abs(n-parseInt(i(h[0]).css("bottom")))>Math.abs(n-parseInt(i(h[1]).css("bottom")))?1:0:Math.abs(n-h[0].offsetLeft)>Math.abs(n-h[1].offsetLeft)?1:0:0,x(s,a),e.preventDefault()}}),y.children("."+p).children("i").each(function(e){i(this).on("click",function(){g=y.children("."+c).children("input").val(),g=1==e?g-l.stepl.max?l.max:Number(g)+l.step;var i=(g-l.min)/(l.max-l.min)*100/b;x(i,0)})});var q=function(){var e=this.value;e=isNaN(e)?0:e,e=el.max?l.max:e,this.value=e;var i=(e-l.min)/(l.max-l.min)*100/b;x(i,0)};y.children("."+c).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),q.call(this))}).on("change",q)},f.prototype.events=function(){var e=this;e.config},t.render=function(e){var i=new f(e);return a.call(i)},e(n,t)});layui.define(["jquery","lay"],function(e){"use strict";var i=layui.jquery,r=layui.lay,o=layui.device(),n=o.mobile?"click":"mousedown",l={config:{},index:layui.colorpicker?layui.colorpicker.index+1e4:0,set:function(e){var r=this;return r.config=i.extend({},r.config,e),r},on:function(e,i){return layui.onevent.call(this,"colorpicker",e,i)}},t=function(){var e=this,i=e.config;return{config:i}},c="colorpicker",a="layui-show",s="layui-colorpicker",f=".layui-colorpicker-main",d="layui-icon-down",u="layui-icon-close",p="layui-colorpicker-trigger-span",g="layui-colorpicker-trigger-i",v="layui-colorpicker-side",h="layui-colorpicker-side-slider",b="layui-colorpicker-basis",k="layui-colorpicker-alpha-bgcolor",y="layui-colorpicker-alpha-slider",m="layui-colorpicker-basis-cursor",x="layui-colorpicker-main-input",P=function(e){var i={h:0,s:0,b:0},r=Math.min(e.r,e.g,e.b),o=Math.max(e.r,e.g,e.b),n=o-r;return i.b=o,i.s=0!=o?255*n/o:0,0!=i.s?e.r==o?i.h=(e.g-e.b)/n:e.g==o?i.h=2+(e.b-e.r)/n:i.h=4+(e.r-e.g)/n:i.h=-1,o==r&&(i.h=0),i.h*=60,i.h<0&&(i.h+=360),i.s*=100/255,i.b*=100/255,i},C=function(e){var e=e.indexOf("#")>-1?e.substring(1):e;if(3==e.length){var i=e.split("");e=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]}e=parseInt(e,16);var r={r:e>>16,g:(65280&e)>>8,b:255&e};return P(r)},B=function(e){var i={},r=e.h,o=255*e.s/100,n=255*e.b/100;if(0==o)i.r=i.g=i.b=n;else{var l=n,t=(255-o)*n/255,c=(l-t)*(r%60)/60;360==r&&(r=0),r<60?(i.r=l,i.b=t,i.g=t+c):r<120?(i.g=l,i.b=t,i.r=l-c):r<180?(i.g=l,i.r=t,i.b=t+c):r<240?(i.b=l,i.r=t,i.g=l-c):r<300?(i.b=l,i.g=t,i.r=t+c):r<360?(i.r=l,i.g=t,i.b=l-c):(i.r=0,i.g=0,i.b=0)}return{r:Math.round(i.r),g:Math.round(i.g),b:Math.round(i.b)}},w=function(e){var r=B(e),o=[r.r.toString(16),r.g.toString(16),r.b.toString(16)];return i.each(o,function(e,i){1==i.length&&(o[e]="0"+i)}),o.join("")},D=function(e){var i=/[0-9]{1,3}/g,r=e.match(i)||[];return{r:r[0],g:r[1],b:r[2]}},j=i(window),E=i(document),F=function(e){var r=this;r.index=++l.index,r.config=i.extend({},r.config,l.config,e),r.render()};F.prototype.config={color:"",size:null,alpha:!1,format:"hex",predefine:!1,colors:["#009688","#5FB878","#1E9FFF","#FF5722","#FFB800","#01AAED","#999","#c00","#ff8c00","#ffd700","#90ee90","#00ced1","#1e90ff","#c71585","rgb(0, 186, 189)","rgb(255, 120, 0)","rgb(250, 212, 0)","#393D49","rgba(0,0,0,.5)","rgba(255, 69, 0, 0.68)","rgba(144, 240, 144, 0.5)","rgba(31, 147, 255, 0.73)"]},F.prototype.render=function(){var e=this,r=e.config,o=i(['
      ',"",'3&&(r.alpha&&"rgb"==r.format||(e="#"+w(P(D(r.color))))),"background: "+e):e}()+'">','',"","","
      "].join("")),n=i(r.elem);r.size&&o.addClass("layui-colorpicker-"+r.size),n.addClass("layui-inline").html(e.elemColorBox=o),e.color=e.elemColorBox.find("."+p)[0].style.background,e.events()},F.prototype.renderPicker=function(){var e=this,r=e.config,o=e.elemColorBox[0],n=e.elemPicker=i(['
      ','
      ','
      ','
      ','
      ','
      ',"
      ",'
      ','
      ',"
      ","
      ",'
      ','
      ','
      ',"
      ","
      ",function(){if(r.predefine){var e=['
      '];return layui.each(r.colors,function(i,r){e.push(['
      ','
      ',"
      "].join(""))}),e.push("
      "),e.join("")}return""}(),'
      ','
      ','',"
      ",'
      ','','',"","
      "].join(""));e.elemColorBox.find("."+p)[0];i(f)[0]&&i(f).data("index")==e.index?e.removePicker(F.thisElemInd):(e.removePicker(F.thisElemInd),i("body").append(n)),F.thisElemInd=e.index,F.thisColor=o.style.background,e.position(),e.pickerEvents()},F.prototype.removePicker=function(e){var r=this;r.config;return i("#layui-colorpicker"+(e||r.index)).remove(),r},F.prototype.position=function(){var e=this,i=e.config;return r.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},F.prototype.val=function(){var e=this,i=(e.config,e.elemColorBox.find("."+p)),r=e.elemPicker.find("."+x),o=i[0],n=o.style.backgroundColor;if(n){var l=P(D(n)),t=i.attr("lay-type");if(e.select(l.h,l.s,l.b),"torgb"===t&&r.find("input").val(n),"rgba"===t){var c=D(n);if(3==(n.match(/[0-9]{1,3}/g)||[]).length)r.find("input").val("rgba("+c.r+", "+c.g+", "+c.b+", 1)"),e.elemPicker.find("."+y).css("left",280);else{r.find("input").val(n);var a=280*n.slice(n.lastIndexOf(",")+1,n.length-1);e.elemPicker.find("."+y).css("left",a)}e.elemPicker.find("."+k)[0].style.background="linear-gradient(to right, rgba("+c.r+", "+c.g+", "+c.b+", 0), rgb("+c.r+", "+c.g+", "+c.b+"))"}}else e.select(0,100,100),r.find("input").val(""),e.elemPicker.find("."+k)[0].style.background="",e.elemPicker.find("."+y).css("left",280)},F.prototype.side=function(){var e=this,r=e.config,o=e.elemColorBox.find("."+p),n=o.attr("lay-type"),l=e.elemPicker.find("."+v),t=e.elemPicker.find("."+h),c=e.elemPicker.find("."+b),a=e.elemPicker.find("."+m),s=e.elemPicker.find("."+k),f=e.elemPicker.find("."+y),C=t[0].offsetTop/180*360,w=100-(a[0].offsetTop+3)/180*100,E=(a[0].offsetLeft+3)/260*100,F=Math.round(f[0].offsetLeft/280*100)/100,H=e.elemColorBox.find("."+g),M=e.elemPicker.find(".layui-colorpicker-pre").children("div"),Y=function(i,l,t,c){e.select(i,l,t);var a=B({h:i,s:l,b:t});if(H.addClass(d).removeClass(u),o[0].style.background="rgb("+a.r+", "+a.g+", "+a.b+")","torgb"===n&&e.elemPicker.find("."+x).find("input").val("rgb("+a.r+", "+a.g+", "+a.b+")"),"rgba"===n){var p=0;p=280*c,f.css("left",p),e.elemPicker.find("."+x).find("input").val("rgba("+a.r+", "+a.g+", "+a.b+", "+c+")"),o[0].style.background="rgba("+a.r+", "+a.g+", "+a.b+", "+c+")",s[0].style.background="linear-gradient(to right, rgba("+a.r+", "+a.g+", "+a.b+", 0), rgb("+a.r+", "+a.g+", "+a.b+"))"}r.change&&r.change(e.elemPicker.find("."+x).find("input").val())},I=i(['
      '].join("")),L=function(e){i("#LAY-colorpicker-moving")[0]||i("body").append(I),I.on("mousemove",e),I.on("mouseup",function(){I.remove()}).on("mouseleave",function(){I.remove()})};t.on("mousedown",function(e){var i=this.offsetTop,r=e.clientY,o=function(e){var o=i+(e.clientY-r),n=l[0].offsetHeight;o<0&&(o=0),o>n&&(o=n);var t=o/180*360;C=t,Y(t,E,w,F),e.preventDefault()};L(o),e.preventDefault()}),l.on("click",function(e){var r=e.clientY-i(this).offset().top;r<0&&(r=0),r>this.offsetHeight&&(r=this.offsetHeight);var o=r/180*360;C=o,Y(o,E,w,F),e.preventDefault()}),a.on("mousedown",function(e){var i=this.offsetTop,r=this.offsetLeft,o=e.clientY,n=e.clientX,l=function(e){var l=i+(e.clientY-o),t=r+(e.clientX-n),a=c[0].offsetHeight-3,s=c[0].offsetWidth-3;l<-3&&(l=-3),l>a&&(l=a),t<-3&&(t=-3),t>s&&(t=s);var f=(t+3)/260*100,d=100-(l+3)/180*100;w=d,E=f,Y(C,f,d,F),e.preventDefault()};layui.stope(e),L(l),e.preventDefault()}),c.on("mousedown",function(e){var r=e.clientY-i(this).offset().top-3+j.scrollTop(),o=e.clientX-i(this).offset().left-3+j.scrollLeft();r<-3&&(r=-3),r>this.offsetHeight-3&&(r=this.offsetHeight-3),o<-3&&(o=-3),o>this.offsetWidth-3&&(o=this.offsetWidth-3);var n=(o+3)/260*100,l=100-(r+3)/180*100;w=l,E=n,Y(C,n,l,F),layui.stope(e),e.preventDefault(),a.trigger(e,"mousedown")}),f.on("mousedown",function(e){var i=this.offsetLeft,r=e.clientX,o=function(e){var o=i+(e.clientX-r),n=s[0].offsetWidth;o<0&&(o=0),o>n&&(o=n);var l=Math.round(o/280*100)/100;F=l,Y(C,E,w,l),e.preventDefault()};L(o),e.preventDefault()}),s.on("click",function(e){var r=e.clientX-i(this).offset().left;r<0&&(r=0),r>this.offsetWidth&&(r=this.offsetWidth);var o=Math.round(r/280*100)/100;F=o,Y(C,E,w,o),e.preventDefault()}),M.each(function(){i(this).on("click",function(){i(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e,r=this.style.backgroundColor,o=P(D(r)),n=r.slice(r.lastIndexOf(",")+1,r.length-1);C=o.h,E=o.s,w=o.b,3==(r.match(/[0-9]{1,3}/g)||[]).length&&(n=1),F=n,e=280*n,Y(o.h,o.s,o.b,n)})})},F.prototype.select=function(e,i,r,o){var n=this,l=(n.config,w({h:e,s:100,b:100})),t=w({h:e,s:i,b:r}),c=e/360*180,a=180-r/100*180-3,s=i/100*260-3;n.elemPicker.find("."+h).css("top",c),n.elemPicker.find("."+b)[0].style.background="#"+l,n.elemPicker.find("."+m).css({top:a,left:s}),"change"!==o&&n.elemPicker.find("."+x).find("input").val("#"+t)},F.prototype.pickerEvents=function(){var e=this,r=e.config,o=e.elemColorBox.find("."+p),n=e.elemPicker.find("."+x+" input"),l={clear:function(i){o[0].style.background="",e.elemColorBox.find("."+g).removeClass(d).addClass(u),e.color="",r.done&&r.done(""),e.removePicker()},confirm:function(i,l){var t=n.val(),c=t,a={};if(t.indexOf(",")>-1){if(a=P(D(t)),e.select(a.h,a.s,a.b),o[0].style.background=c="#"+w(a),(t.match(/[0-9]{1,3}/g)||[]).length>3&&"rgba"===o.attr("lay-type")){var s=280*t.slice(t.lastIndexOf(",")+1,t.length-1);e.elemPicker.find("."+y).css("left",s),o[0].style.background=t,c=t}}else a=C(t),o[0].style.background=c="#"+w(a),e.elemColorBox.find("."+g).removeClass(u).addClass(d);return"change"===l?(e.select(a.h,a.s,a.b,l),void(r.change&&r.change(c))):(e.color=t,r.done&&r.done(t),void e.removePicker())}};e.elemPicker.on("click","*[colorpicker-events]",function(){var e=i(this),r=e.attr("colorpicker-events");l[r]&&l[r].call(this,e)}),n.on("keyup",function(e){var r=i(this);l.confirm.call(this,r,13===e.keyCode?null:"change")})},F.prototype.events=function(){var e=this,r=e.config,o=e.elemColorBox.find("."+p);e.elemColorBox.on("click",function(){e.renderPicker(),i(f)[0]&&(e.val(),e.side())}),r.elem[0]&&!e.elemColorBox[0].eventHandler&&(E.on(n,function(r){if(!i(r.target).hasClass(s)&&!i(r.target).parents("."+s)[0]&&!i(r.target).hasClass(f.replace(/\./g,""))&&!i(r.target).parents(f)[0]&&e.elemPicker){if(e.color){var n=P(D(e.color));e.select(n.h,n.s,n.b)}else e.elemColorBox.find("."+g).removeClass(d).addClass(u);o[0].style.background=e.color||"",e.removePicker()}}),j.on("resize",function(){return!(!e.elemPicker||!i(f)[0])&&void e.position()}),e.elemColorBox[0].eventHandler=!0)},l.render=function(e){var i=new F(e);return t.call(i)},e(c,l)});layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,a=layui.hint(),n=layui.device(),l="form",r=".layui-form",o="layui-this",s="layui-hide",c="layui-disabled",u=function(){this.config={verify:{required:[/[\S]+/,"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"],phone:[/^1\d{10}$/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"],url:[/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/,"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"],number:function(e){if(!e||isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u8eab\u4efd\u8bc1\u53f7"]},autocomplete:null}};u.prototype.set=function(e){var i=this;return t.extend(!0,i.config,e),i},u.prototype.verify=function(e){var i=this;return t.extend(!0,i.config.verify,e),i},u.prototype.on=function(e,t){return layui.onevent.call(this,l,e,t)},u.prototype.val=function(e,i){var a=this,n=t(r+'[lay-filter="'+e+'"]');return n.each(function(e,a){var n=t(this);layui.each(i,function(e,t){var i,a=n.find('[name="'+e+'"]');a[0]&&(i=a[0].type,"checkbox"===i?a[0].checked=t:"radio"===i?a.each(function(){this.value==t&&(this.checked=!0)}):a.val(t))})}),f.render(null,e),a.getValue(e)},u.prototype.getValue=function(e,i){i=i||t(r+'[lay-filter="'+e+'"]').eq(0);var a={},n={},l=i.find("input,select,textarea");return layui.each(l,function(e,i){var l;t(this);if(i.name=(i.name||"").replace(/^\s*|\s*&/,""),i.name){if(/^.*\[\]$/.test(i.name)){var r=i.name.match(/^(.*)\[\]$/g)[0];a[r]=0|a[r],l=i.name.replace(/^(.*)\[\]$/,"$1["+a[r]++ +"]")}/^checkbox|radio$/.test(i.type)&&!i.checked||(n[l||i.name]=i.value)}}),n},u.prototype.render=function(e,i){var n=this,u=n.config,d=t(r+function(){return i?'[lay-filter="'+i+'"]':""}()),f={input:function(){var e=d.find("input,textarea");u.autocomplete&&e.attr("autocomplete",u.autocomplete)},select:function(){var e,i="\u8bf7\u9009\u62e9",a="layui-form-select",n="layui-select-title",r="layui-select-none",u="",f=d.find("select"),v=function(i,l){t(i.target).parent().hasClass(n)&&!l||(t("."+a).removeClass(a+"ed "+a+"up"),e&&u&&e.val(u)),e=null},y=function(i,d,f){var y,p=t(this),m=i.find("."+n),g=m.find("input"),k=i.find("dl"),x=k.children("dd"),b=this.selectedIndex;if(!d){var C=function(){var e=i.offset().top+i.outerHeight()+5-h.scrollTop(),t=k.outerHeight();b=p[0].selectedIndex,i.addClass(a+"ed"),x.removeClass(s),y=null,x.eq(b).addClass(o).siblings().removeClass(o),e+t>h.height()&&e>=t&&i.addClass(a+"up"),T()},w=function(e){i.removeClass(a+"ed "+a+"up"),g.blur(),y=null,e||$(g.val(),function(e){var i=p[0].selectedIndex;e&&(u=t(p[0].options[i]).html(),0===i&&u===g.attr("placeholder")&&(u=""),g.val(u||""))})},T=function(){var e=k.children("dd."+o);if(e[0]){var t=e.position().top,i=k.height(),a=e.height();t>i&&k.scrollTop(t+k.scrollTop()-i+a-5),t<0&&k.scrollTop(t+k.scrollTop()-5)}};m.on("click",function(e){i.hasClass(a+"ed")?w():(v(e,!0),C()),k.find("."+r).remove()}),m.find(".layui-edge").on("click",function(){g.focus()}),g.on("keyup",function(e){var t=e.keyCode;9===t&&C()}).on("keydown",function(e){var t=e.keyCode;9===t&&w();var i=function(t,a){var n,l;e.preventDefault();var r=function(){var e=k.children("dd."+o);if(k.children("dd."+s)[0]&&"next"===t){var i=k.children("dd:not(."+s+",."+c+")"),n=i.eq(0).index();if(n>=0&&n\u65e0\u5339\u914d\u9879

      '):k.find("."+r).remove()},"keyup"),""===t&&k.find("."+r).remove(),void T())};f&&g.on("keyup",q).on("blur",function(i){var a=p[0].selectedIndex;e=g,u=t(p[0].options[a]).html(),0===a&&u===g.attr("placeholder")&&(u=""),setTimeout(function(){$(g.val(),function(e){u||g.val("")},"blur")},200)}),x.on("click",function(){var e=t(this),a=e.attr("lay-value"),n=p.attr("lay-filter");return!e.hasClass(c)&&(e.hasClass("layui-select-tips")?g.val(""):(g.val(e.text()),e.addClass(o)),e.siblings().removeClass(o),p.val(a).removeClass("layui-form-danger"),layui.event.call(this,l,"select("+n+")",{elem:p[0],value:a,othis:i}),w(!0),!1)}),i.find("dl>dt").on("click",function(e){return!1}),t(document).off("click",v).on("click",v)}};f.each(function(e,l){var r=t(this),s=r.next("."+a),u=this.disabled,d=l.value,f=t(l.options[l.selectedIndex]),v=l.options[0];if("string"==typeof r.attr("lay-ignore"))return r.show();var h="string"==typeof r.attr("lay-search"),p=v?v.value?i:v.innerHTML||i:i,m=t(['
      ','
      ','','
      ','
      ',function(e){var a=[];return layui.each(e,function(e,n){0!==e||n.value?"optgroup"===n.tagName.toLowerCase()?a.push("
      "+n.label+"
      "):a.push('
      '+t.trim(n.innerHTML)+"
      "):a.push('
      '+t.trim(n.innerHTML||i)+"
      ")}),0===a.length&&a.push('
      \u6ca1\u6709\u9009\u9879
      '),a.join("")}(r.find("*"))+"
      ","
      "].join(""));s[0]&&s.remove(),r.after(m),y.call(this,m,u,h)})},checkbox:function(){var e={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],_switch:["layui-form-switch","layui-form-onswitch","switch"]},i=d.find("input[type=checkbox]"),a=function(e,i){var a=t(this);e.on("click",function(){var t=a.attr("lay-filter"),n=(a.attr("lay-text")||"").split("|");a[0].disabled||(a[0].checked?(a[0].checked=!1,e.removeClass(i[1]).find("em").text(n[1])):(a[0].checked=!0,e.addClass(i[1]).find("em").text(n[0])),layui.event.call(a[0],l,i[2]+"("+t+")",{elem:a[0],value:a[0].value,othis:e}))})};i.each(function(i,n){var l=t(this),r=l.attr("lay-skin"),o=(l.attr("lay-text")||"").split("|"),s=this.disabled;"switch"===r&&(r="_"+r);var u=e[r]||e.checkbox;if("string"==typeof l.attr("lay-ignore"))return l.show();var d=l.next("."+u[0]),f=t(['
      ",function(){var e=n.title.replace(/\s/g,""),t={checkbox:[e?""+n.title+"":"",''].join(""),_switch:""+((n.checked?o[0]:o[1])||"")+""};return t[r]||t.checkbox}(),"
      "].join(""));d[0]&&d.remove(),l.after(f),a.call(this,f,u)})},radio:function(){var e="layui-form-radio",i=["",""],a=d.find("input[type=radio]"),n=function(a){var n=t(this),o="layui-anim-scaleSpring";a.on("click",function(){var s=n[0].name,c=n.parents(r),u=n.attr("lay-filter"),d=c.find("input[name="+s.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(d,function(){var a=t(this).next("."+e);this.checked=!1,a.removeClass(e+"ed"),a.find(".layui-icon").removeClass(o).html(i[1])}),n[0].checked=!0,a.addClass(e+"ed"),a.find(".layui-icon").addClass(o).html(i[0]),layui.event.call(n[0],l,"radio("+u+")",{elem:n[0],value:n[0].value,othis:a}))})};a.each(function(a,l){var r=t(this),o=r.next("."+e),s=this.disabled;if("string"==typeof r.attr("lay-ignore"))return r.show();o[0]&&o.remove();var u=t(['
      ',''+i[l.checked?0:1]+"","
      "+function(){var e=l.title||"";return"string"==typeof r.next().attr("lay-radio")&&(e=r.next().html()),e}()+"
      ","
      "].join(""));r.after(u),n.call(this,u)})}};return e?f[e]?f[e]():a.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):layui.each(f,function(e,t){t()}),n};var d=function(){var e=null,a=f.config.verify,o="layui-form-danger",s={},c=t(this),u=c.parents(r).eq(0),d=u.find("*[lay-verify]"),h=c.parents("form")[0],y=c.attr("lay-filter");return layui.each(d,function(l,r){var s=t(this),c=s.attr("lay-verify").split("|"),u=s.attr("lay-verType"),d=s.val();if(s.removeClass(o),layui.each(c,function(t,l){var c,f="",h="function"==typeof a[l];if(a[l]){var c=h?f=a[l](d,r):!a[l][0].test(d),y="select"===r.tagName.toLowerCase()||/^checkbox|radio$/.test(r.type);if(f=f||a[l][1],"required"===l&&(f=s.attr("lay-reqText")||f),c)return"tips"===u?i.tips(f,function(){return"string"!=typeof s.attr("lay-ignore")&&y?s.next():s}(),{tips:1}):"alert"===u?i.alert(f,{title:"\u63d0\u793a",shadeClose:!0}):/\bstring|number\b/.test(typeof f)&&i.msg(f,{icon:5,shift:6}),n.mobile?v.scrollTop(function(){try{return(y?s.next():s).offset().top-15}catch(e){return 0}}()):setTimeout(function(){(y?s.next().find("input"):r).focus()},7),s.addClass(o),e=!0}}),e)return e}),!e&&(s=f.getValue(null,u),layui.event.call(this,l,"submit("+y+")",{elem:this,form:h,field:s}))},f=new u,v=t(document),h=t(window);t(function(){f.render()}),v.on("reset",r,function(){var e=t(this).attr("lay-filter");setTimeout(function(){f.render(null,e)},50)}),v.on("submit",r,d).on("click","*[lay-submit]",d),e(l,f)});layui.define("form",function(e){"use strict";var i=layui.$,a=layui.form,n=layui.layer,t="tree",r={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var a=this;return a.config=i.extend({},a.config,e),a},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var e=this,i=e.config,a=i.id||e.index;return l.that[a]=e,l.config[a]=i,{config:i,reload:function(i){e.reload.call(e,i)},getChecked:function(){return e.getChecked.call(e)},setChecked:function(i){return e.setChecked.call(e,i)}}},c="layui-hide",d="layui-disabled",s="layui-tree-set",o="layui-tree-iconClick",h="layui-icon-addition",u="layui-icon-subtraction",p="layui-tree-entry",f="layui-tree-main",y="layui-tree-txt",v="layui-tree-pack",C="layui-tree-spread",k="layui-tree-setLineShort",m="layui-tree-showLine",x="layui-tree-lineExtend",b=function(e){var a=this;a.index=++r.index,a.config=i.extend({},a.config,r.config,e),a.render()};b.prototype.config={data:[],showCheckbox:!1,showLine:!0,accordion:!1,onlyIconControl:!1,isJump:!1,edit:!1,text:{defaultNodeName:"\u672a\u547d\u540d",none:"\u65e0\u6570\u636e"}},b.prototype.reload=function(e){var a=this;layui.each(e,function(e,i){"array"===layui._typeof(i)&&delete a.config[e]}),a.config=i.extend(!0,{},a.config,e),a.render()},b.prototype.render=function(){var e=this,a=e.config;e.checkids=[];var n=i('
      ');e.tree(n);var t=a.elem=i(a.elem);if(t[0]){if(e.key=a.id||e.index,e.elem=n,e.elemNone=i('
      '+a.text.none+"
      "),t.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);a.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=i(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(k),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(k)}),e.events()}},b.prototype.renderForm=function(e){a.render(e,"LAY-tree-"+this.index)},b.prototype.tree=function(e,a){var n=this,t=n.config,r=a||t.data;layui.each(r,function(a,r){var l=r.children&&r.children.length>0,o=i('
      "),h=i(['
      ','
      ','
      ',function(){return t.showLine?l?'':'':''}(),function(){return t.showCheckbox?'':""}(),function(){return t.isJump&&r.href?''+(r.title||r.label||t.text.defaultNodeName)+"":''+(r.title||r.label||t.text.defaultNodeName)+""}(),"
      ",function(){if(!t.edit)return"";var e={add:'',update:'',del:''},i=['
      '];return t.edit===!0&&(t.edit=["update","del"]),"object"==typeof t.edit?(layui.each(t.edit,function(a,n){i.push(e[n]||"")}),i.join("")+"
      "):void 0}(),"
      "].join(""));l&&(h.append(o),n.tree(o,r.children)),e.append(h),h.prev("."+s)[0]&&h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),l||h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),n.spread(h,r),t.showCheckbox&&(r.checked&&n.checkids.push(r.id),n.checkClick(h,r)),t.edit&&n.operate(h,r)})},b.prototype.spread=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f),c=r.find("."+o),k=r.find("."+y),m=t.onlyIconControl?c:l,x="";m.on("click",function(i){var a=e.children("."+v),n=m.children(".layui-icon")[0]?m.children(".layui-icon"):m.find(".layui-tree-icon").children(".layui-icon");if(a[0]){if(e.hasClass(C))e.removeClass(C),a.slideUp(200),n.removeClass(u).addClass(h);else if(e.addClass(C),a.slideDown(200),n.addClass(u).removeClass(h),t.accordion){var r=e.siblings("."+s);r.removeClass(C),r.children("."+v).slideUp(200),r.find(".layui-tree-icon").children(".layui-icon").removeClass(u).addClass(h)}}else x="normal"}),k.on("click",function(){var n=i(this);n.hasClass(d)||(x=e.hasClass(C)?t.onlyIconControl?"open":"close":t.onlyIconControl?"close":"open",t.click&&t.click({elem:e,state:x,data:a}))})},b.prototype.setCheckbox=function(e,i,a){var n=this,t=(n.config,a.prop("checked"));if(!a.prop("disabled")){if("object"==typeof i.children||e.find("."+v)[0]){var r=e.find("."+v).find('input[same="layuiTreeCheck"]');r.each(function(){this.disabled||(this.checked=t)})}var l=function(e){if(e.parents("."+s)[0]){var i,a=e.parent("."+v),n=a.parent(),r=a.prev().find('input[same="layuiTreeCheck"]');t?r.prop("checked",t):(a.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||r.prop("checked",!1)),l(n)}};l(e),n.renderForm("checkbox")}},b.prototype.checkClick=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f);l.on("click",'input[same="layuiTreeCheck"]+',function(r){layui.stope(r);var l=i(this).prev(),c=l.prop("checked");l.prop("disabled")||(n.setCheckbox(e,a,l),t.oncheck&&t.oncheck({elem:e,checked:c,data:a}))})},b.prototype.operate=function(e,a){var t=this,r=t.config,l=e.children("."+p),d=l.children("."+f);l.children(".layui-tree-btnGroup").on("click",".layui-icon",function(l){layui.stope(l);var f=i(this).data("type"),b=e.children("."+v),g={data:a,type:f,elem:e};if("add"==f){b[0]||(r.showLine?(d.find("."+o).addClass("layui-tree-icon"),d.find("."+o).children(".layui-icon").addClass(h).removeClass("layui-icon-file")):d.find(".layui-tree-iconArrow").removeClass(c),e.append('
      '));var w=r.operate&&r.operate(g),N={};if(N.title=r.text.defaultNodeName,N.id=w,t.tree(e.children("."+v),[N]),r.showLine)if(b[0])b.hasClass(x)||b.addClass(x),e.find("."+v).each(function(){i(this).children("."+s).last().addClass(k)}),b.children("."+s).last().prev().hasClass(k)?b.children("."+s).last().prev().removeClass(k):b.children("."+s).last().removeClass(k),!e.parent("."+v)[0]&&e.next()[0]&&b.children("."+s).last().removeClass(k);else{var T=e.siblings("."+s),L=1,I=e.parent("."+v);layui.each(T,function(e,a){i(a).children("."+v)[0]||(L=0)}),1==L?(T.children("."+v).addClass(m),T.children("."+v).children("."+s).removeClass(k),e.children("."+v).addClass(m),I.removeClass(x),I.children("."+s).last().children("."+v).children("."+s).last().addClass(k)):e.children("."+v).children("."+s).addClass(k)}if(!r.showCheckbox)return;if(d.find('input[same="layuiTreeCheck"]')[0].checked){var A=e.children("."+v).children("."+s).last();A.find('input[same="layuiTreeCheck"]')[0].checked=!0}t.renderForm("checkbox")}else if("update"==f){var F=d.children("."+y).html();d.children("."+y).html(""),d.append(''),d.children(".layui-tree-editInput").val(F).focus();var j=function(e){var i=e.val().trim();i=i?i:r.text.defaultNodeName,e.remove(),d.children("."+y).html(i),g.data.title=i,r.operate&&r.operate(g)};d.children(".layui-tree-editInput").blur(function(){j(i(this))}),d.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),j(i(this)))})}else n.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(a.title||"")+'" \u5417\uff1f',function(a){if(r.operate&&r.operate(g),g.status="remove",n.close(a),!e.prev("."+s)[0]&&!e.next("."+s)[0]&&!e.parent("."+v)[0])return e.remove(),void t.elem.append(t.elemNone);if(e.siblings("."+s).children("."+p)[0]){if(r.showCheckbox){var l=function(e){if(e.parents("."+s)[0]){var a=e.siblings("."+s).children("."+p),n=e.parent("."+v).prev(),r=n.find('input[same="layuiTreeCheck"]')[0],c=1,d=0;0==r.checked&&(a.each(function(e,a){var n=i(a).find('input[same="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(c=0),n.disabled||(d=1)}),1==c&&1==d&&(r.checked=!0,t.renderForm("checkbox"),l(n.parent("."+s))))}};l(e)}if(r.showLine){var d=e.siblings("."+s),h=1,f=e.parent("."+v);layui.each(d,function(e,a){i(a).children("."+v)[0]||(h=0)}),1==h?(b[0]||(f.removeClass(x),d.children("."+v).addClass(m),d.children("."+v).children("."+s).removeClass(k)),e.next()[0]?f.children("."+s).last().children("."+v).children("."+s).last().addClass(k):e.prev().children("."+v).children("."+s).last().addClass(k),e.next()[0]||e.parents("."+s)[1]||e.parents("."+s).eq(0).next()[0]||e.prev("."+s).addClass(k)):!e.next()[0]&&e.hasClass(k)&&e.prev().addClass(k)}}else{var y=e.parent("."+v).prev();if(r.showLine){y.find("."+o).removeClass("layui-tree-icon"),y.find("."+o).children(".layui-icon").removeClass(u).addClass("layui-icon-file");var w=y.parents("."+v).eq(0);w.addClass(x),w.children("."+s).each(function(){i(this).children("."+v).children("."+s).last().addClass(k)})}else y.find(".layui-tree-iconArrow").addClass(c);e.parents("."+s).eq(0).removeClass(C),e.parent("."+v).remove()}e.remove()})})},b.prototype.events=function(){var e=this,a=e.config;e.elem.find(".layui-tree-checkedFirst");e.setChecked(e.checkids),e.elem.find(".layui-tree-search").on("keyup",function(){var n=i(this),t=n.val(),r=n.nextAll(),l=[];r.find("."+y).each(function(){var e=i(this).parents("."+p);if(i(this).html().indexOf(t)!=-1){l.push(i(this).parent());var a=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+v)[0]&&a(e.parent("."+v).parent("."+s))};a(e.parent("."+s))}}),r.find("."+p).each(function(){var e=i(this).parent("."+s);e.hasClass("layui-tree-searchShow")||e.addClass(c)}),0==r.find(".layui-tree-searchShow").length&&e.elem.append(e.elemNone),a.onsearch&&a.onsearch({elem:l})}),e.elem.find(".layui-tree-search").on("keydown",function(){i(this).nextAll().find("."+p).each(function(){var e=i(this).parent("."+s);e.removeClass("layui-tree-searchShow "+c)}),i(".layui-tree-emptyText")[0]&&i(".layui-tree-emptyText").remove()})},b.prototype.getChecked=function(){var e=this,a=e.config,n=[],t=[];e.elem.find(".layui-form-checked").each(function(){n.push(i(this).prev()[0].value)});var r=function(e,a){layui.each(e,function(e,t){layui.each(n,function(e,n){if(t.id==n){var l=i.extend({},t);return delete l.children,a.push(l),t.children&&(l.children=[],r(t.children,l.children)),!0}})})};return r(i.extend({},a.data),t),t},b.prototype.setChecked=function(e){var a=this;a.config;a.elem.find("."+s).each(function(a,n){var t=i(this).data("id"),r=i(n).children("."+p).find('input[same="layuiTreeCheck"]'),l=r.next();if("number"==typeof e){if(t==e)return r[0].checked||l.click(),!1}else"object"==typeof e&&layui.each(e,function(e,i){if(i==t&&!r[0].checked)return l.click(),!0})})},l.that={},l.config={},r.reload=function(e,i){var a=l.that[e];return a.reload(i),l.call(a)},r.getChecked=function(e){var i=l.that[e];return i.getChecked()},r.setChecked=function(e,i){var a=l.that[e];return a.setChecked(i)},r.render=function(e){var i=new b(e);return l.call(i)},e(t,r)});layui.define(["laytpl","form"],function(e){"use strict";var a=layui.$,t=layui.laytpl,i=layui.form,n="transfer",l={config:{},index:layui[n]?layui[n].index+1e4:0,set:function(e){var t=this;return t.config=a.extend({},t.config,e),t},on:function(e,a){return layui.onevent.call(this,n,e,a)}},r=function(){var e=this,a=e.config,t=a.id||e.index;return r.that[t]=e,r.config[t]=a,{config:a,reload:function(a){e.reload.call(e,a)},getData:function(){return e.getData.call(e)}}},c="layui-hide",o="layui-btn-disabled",d="layui-none",s="layui-transfer-box",u="layui-transfer-header",h="layui-transfer-search",f="layui-transfer-active",y="layui-transfer-data",p=function(e){return e=e||{},['
      ','
      ','","
      ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
        ',"
        "].join("")},v=['
        ',p({index:0,checkAllName:"layTransferLeftCheckAll"}),'
        ','",'","
        ",p({index:1,checkAllName:"layTransferRightCheckAll"}),"
        "].join(""),x=function(e){var t=this;t.index=++l.index,t.config=a.extend({},t.config,l.config,e),t.render()};x.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},x.prototype.reload=function(e){var t=this;t.config=a.extend({},t.config,e),t.render()},x.prototype.render=function(){var e=this,i=e.config,n=e.elem=a(t(v).render({data:i,index:e.index})),l=i.elem=a(i.elem);l[0]&&(i.data=i.data||[],i.value=i.value||[],e.key=i.id||e.index,l.html(e.elem),e.layBox=e.elem.find("."+s),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+h),e.layData=n.find("."+y),e.layBtn=n.find("."+f+" .layui-btn"),e.layBox.css({width:i.width,height:i.height}),e.layData.css({height:function(){return i.height-e.layHeader.outerHeight()-e.laySearch.outerHeight()-2}()}),e.renderData(),e.events())},x.prototype.renderData=function(){var e=this,a=(e.config,[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}]);e.parseData(function(e){var t=e.selected?1:0,i=["
      • ",'',"
      • "].join("");a[t].views.push(i),delete e.selected}),e.layData.eq(0).html(a[0].views.join("")),e.layData.eq(1).html(a[1].views.join("")),e.renderCheckBtn()},x.prototype.renderForm=function(e){i.render(e,"LAY-transfer-"+this.index)},x.prototype.renderCheckBtn=function(e){var t=this,i=t.config;e=e||{},t.layBox.each(function(n){var l=a(this),r=l.find("."+y),d=l.find("."+u).find('input[type="checkbox"]'),s=r.find('input[type="checkbox"]'),h=0,f=!1;if(s.each(function(){var e=a(this).data("hide");(this.checked||this.disabled||e)&&h++,this.checked&&!e&&(f=!0)}),d.prop("checked",f&&h===s.length),t.layBtn.eq(n)[f?"removeClass":"addClass"](o),!e.stopNone){var p=r.children("li:not(."+c+")").length;t.noneView(r,p?"":i.text.none)}}),t.renderForm("checkbox")},x.prototype.noneView=function(e,t){var i=a('

        '+(t||"")+"

        ");e.find("."+d)[0]&&e.find("."+d).remove(),t.replace(/\s/g,"")&&e.append(i)},x.prototype.setValue=function(){var e=this,t=e.config,i=[];return e.layBox.eq(1).find("."+y+' input[type="checkbox"]').each(function(){var e=a(this).data("hide");e||i.push(this.value)}),t.value=i,e},x.prototype.parseData=function(e){var t=this,i=t.config,n=[];return layui.each(i.data,function(t,l){l=("function"==typeof i.parseData?i.parseData(l):l)||l,n.push(l=a.extend({},l)),layui.each(i.value,function(e,a){a==l.value&&(l.selected=!0)}),e&&e(l)}),i.data=n,t},x.prototype.getData=function(e){var a=this,t=a.config,i=[];return a.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},x.prototype.events=function(){var e=this,t=e.config;e.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var t=a(this).prev(),i=t[0].checked,n=t.parents("."+s).eq(0).find("."+y);t[0].disabled||("all"===t.attr("lay-type")&&n.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=i)}),e.renderCheckBtn({stopNone:!0}))}),e.layBtn.on("click",function(){var i=a(this),n=i.data("index"),l=e.layBox.eq(n),r=[];if(!i.hasClass(o)){e.layBox.eq(n).each(function(t){var i=a(this),n=i.find("."+y);n.children("li").each(function(){var t=a(this),i=t.find('input[type="checkbox"]'),n=i.data("hide");i[0].checked&&!n&&(i[0].checked=!1,l.siblings("."+s).find("."+y).append(t.clone()),t.remove(),r.push(i[0].value)),e.setValue()})}),e.renderCheckBtn();var c=l.siblings("."+s).find("."+h+" input");""===c.val()||c.trigger("keyup"),t.onchange&&t.onchange(e.getData(r),n)}}),e.laySearch.find("input").on("keyup",function(){var i=this.value,n=a(this).parents("."+h).eq(0).siblings("."+y),l=n.children("li");l.each(function(){var e=a(this),t=e.find('input[type="checkbox"]'),n=t[0].title.indexOf(i)!==-1;e[n?"removeClass":"addClass"](c),t.data("hide",!n)}),e.renderCheckBtn();var r=l.length===n.children("li."+c).length;e.noneView(n,r?t.text.searchNone:"")})},r.that={},r.config={},l.reload=function(e,a){var t=r.that[e];return t.reload(a),r.call(t)},l.getData=function(e){var a=r.that[e];return a.getData()},l.render=function(e){var a=new x(e);return r.call(a)},e(n,l)});layui.define(["laytpl","laypage","layer","form","util"],function(e){"use strict";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=layui.util,r=layui.hint(),c=layui.device(),d={config:{checkName:"LAY_CHECKED",indexName:"LAY_TABLE_INDEX"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,h,e,t)}},s=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(s.that[i]=e,s.config[i]=t),{config:t,reload:function(t,i){e.reload.call(e,t,i)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)}}},u=function(e){var t=s.config[e];return t||r.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},y=function(e,a,l,n){var r=this.config||{};r.escape&&(a=o.escape(a));var c=e.templet?function(){return"function"==typeof e.templet?e.templet(l):i(t(e.templet).html()||String(a)).render(l)}():a;return n?t("
        "+c+"
        ").text():c},h="table",f=".layui-table",p="layui-hide",v="layui-none",m="layui-table-view",g=".layui-table-tool",b=".layui-table-box",x=".layui-table-init",k=".layui-table-header",C=".layui-table-body",w=".layui-table-main",T=".layui-table-fixed",N=".layui-table-fixed-l",L=".layui-table-fixed-r",_=".layui-table-total",S=".layui-table-page",A=".layui-table-sort",R="layui-table-edit",W="layui-table-hover",z=function(e){var t='{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';return e=e||{},['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',function(){return e.fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':""}(),"{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
        ','
        ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
        ","
        "].join("")},E=['',"","
        "].join(""),j=['
        ',"{{# if(d.data.toolbar){ }}",'
        ','
        ','
        ',"
        ","{{# } }}",'
        ',"{{# if(d.data.loading){ }}",'
        ','',"
        ","{{# } }}","{{# var left, right; }}",'
        ',z(),"
        ",'
        ',E,"
        ","{{# if(left){ }}",'
        ','
        ',z({fixed:!0}),"
        ",'
        ',E,"
        ","
        ","{{# }; }}","{{# if(right){ }}",'
        ','
        ',z({fixed:"right"}),'
        ',"
        ",'
        ',E,"
        ","
        ","{{# }; }}","
        ","{{# if(d.data.totalRow){ }}",'
        ','','',"
        ","
        ","{{# } }}","{{# if(d.data.page){ }}",'
        ','
        ',"
        ","{{# } }}","","
        "].join(""),F=t(window),I=t(document),H=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};H.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:["filter","exports","print"],autoSort:!0,text:{none:"\u65e0\u6570\u636e"}},H.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr("id")||e.index,a.request=t.extend({pageName:"page",limitName:"limit"},a.request),a.response=t.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split("-")[1],a.height=F.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next("."+m),o=e.elem=t(i(j).render({VIEW_CLASS:m,data:a,index:e.index}));if(a.index=e.index,e.key=a.id||a.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(g),e.layBox=o.find(b),e.layHeader=o.find(k),e.layMain=o.find(w),e.layBody=o.find(C),e.layFixed=o.find(T),e.layFixLeft=o.find(N),e.layFixRight=o.find(L),e.layTotal=o.find(_),e.layPage=o.find(S),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(k).find("th");r.height(e.layHeader.height()-1-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom")))}e.pullData(e.page),e.events()},H.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||i[e.type])},H.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l="none"===t.css("display")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),"width"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+"-"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+"-"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},H.prototype.renderToolbar=function(){var e=this,a=e.config,l=['
        ','
        ','
        '].join(""),n=e.layTool.find(".layui-table-tool-temp");if("default"===a.toolbar)n.html(l);else if("string"==typeof a.toolbar){var o=t(a.toolbar).html()||"";o&&n.html(i(o).render(a))}var r={filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}},c=[];"object"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i="string"==typeof t?r[t]:t;i&&c.push('
        ')}),e.layTool.find(".layui-table-tool-self").html(c.join(""))},H.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key="'+a.index+"-"+t+'"]'),n=parseInt(l.attr("colspan"))||0;if(l[0]){var o=t.split("-"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr("colspan",n),l[n<1?"addClass":"removeClass"](p),r.colspan=n,r.hide=n<1;var c=l.data("parentkey");c&&i.setParentCol(e,c)}},H.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},H.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit("width");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return"line"===t.skin||"nob"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,c){var d=0,s=c.minWidth||t.cellMinWidth;return c?void(c.colGroup||c.hide||(e?l&&ln&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+"px"}):/\d+%$/.test(a.width)&&e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+"px"}))});var c=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children("table").outerWidth();if(e.autoColNums&&c>=-i&&c<=i){var d=function(t){var i;return t=t||e.layHeader.eq(0).find("thead th:last-child"),i=t.data("field"),!i&&t.prev()[0]?d(t.prev()):t},s=d(),u=s.data("key");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+c+"px",e.layMain.height()-e.layMain.prop("clientHeight")>0&&(t.style.width=parseFloat(t.style.width)-1+"px")})}e.loading(!0)},H.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},H.prototype.reload=function(e,i){var a=this;e=e||{},delete a.haveInit,layui.each(e,function(e,t){"array"===layui._typeof(t)&&delete a.config[e]}),a.config=t.extend(i,{},a.config,e),a.render()},H.prototype.errorView=function(e){var i=this,a=i.layMain.find("."+v),l=t('
        '+(e||"Error")+"
        ");a[0]&&(i.layNone.remove(),a.remove()),i.layFixed.addClass(p),i.layMain.find("tbody").html(""),i.layMain.append(i.layNone=l),d.cache[i.key]=[]},H.prototype.page=1,H.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){"object"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var c=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf("application/json")&&(c=JSON.stringify(c)),i.loading(),t.ajax({type:a.method||"get",url:a.url,contentType:a.contentType,data:c,dataType:"json",headers:a.headers||{},success:function(t){"function"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.errorView(t[n.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+n.statusName+'": '+n.statusCode)):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+" ms"),i.setColsWidth(),"function"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),i.renderForm(),i.setColsWidth(),"function"==typeof a.error&&a.error(e,t)}})}else if("array"===layui._typeof(a.data)){var d={},s=e*a.limit-a.limit;d[n.dataName]=a.data.concat().splice(s,a.limit),d[n.countName]=a.data.length,"object"==typeof a.totalRow&&(d[n.totalRowName]=t.extend({},a.totalRow)),i.renderData(d,e,d[n.countName]),o(),i.setColsWidth(),"function"==typeof a.done&&a.done(d,e,d[n.countName])}},H.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},H.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,u=e[s.response.dataName]||[],h=e[s.response.totalRowName],f=[],m=[],g=[],b=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(u,function(a,l){var o=[],u=[],h=[],v=a+s.limit*(n-1)+1;"array"===layui._typeof(l)&&0===l.length||(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var f=r.field||n,m=s.index+"-"+r.key,g=l[f];if(void 0!==g&&null!==g||(g=""),!r.colGroup){var b=['','
        '+function(){var n=t.extend(!0,{LAY_INDEX:v,LAY_COL:r},l),o=d.config.checkName;switch(r.type){case"checkbox":return'";case"radio":return n[o]&&(e=a),'';case"numbers":return v}return r.toolbar?i(t(r.toolbar).html()||"").render(n):y.call(c,r,g,n)}(),"
        "].join("");o.push(b),r.fixed&&"right"!==r.fixed&&u.push(b),"right"===r.fixed&&h.push(b)}}),f.push(''+o.join("")+""),m.push(''+u.join("")+""),g.push(''+h.join("")+""))}),c.layBody.scrollTop(0),c.layMain.find("."+v).remove(),c.layMain.find("tbody").html(f.join("")),c.layFixLeft.find("tbody").html(m.join("")),c.layFixRight.find("tbody").html(g.join("")),c.renderForm(),"number"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return d.cache[c.key]=u,c.layPage[0==o||0===u.length&&1==n?"addClass":"removeClass"](p),0===u.length?(c.renderForm(),c.errorView(s.text.none)):(c.layFixed.removeClass(p),r?b():(b(),c.renderTotal(u,h),void(s.page&&(s.page=t.extend({elem:"layui-table-page"+s.index,count:o,limit:s.limit,limits:s.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(c.page=e.curr,s.limit=e.limit,c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page)))))},H.prototype.renderTotal=function(e,a){var l=this,n=l.config,o={};if(n.totalRow){layui.each(e,function(e,t){"array"===layui._typeof(t)&&0===t.length||l.eachCols(function(e,i){var a=i.field||e,l=t[a];i.totalRow&&(o[a]=(o[a]||0)+(parseFloat(l)||0))})}),l.dataTotal={};var r=[];l.eachCols(function(e,c){var d=c.field||e,s=function(){var e,t=c.totalRowText||"",i=parseFloat(o[d]).toFixed(2),n={};return n[d]=i,e=c.totalRow?y.call(l,c,i,n)||t:t,a?a[c.field]||e:e}(),u=['','
        '+function(){var e=c.totalRow||n.totalRow;return"string"==typeof e?i(e).render(t.extend({TOTAL_NUMS:s},c)):s}(),"
        "].join("");c.field&&(l.dataTotal[d]=s),r.push(u)}),l.layTotal.find("tbody").html(""+r.join("")+"")}},H.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(".laytable-cell-"+(a.index+"-"+t)+":eq(0)")},H.prototype.renderForm=function(e){n.render(e,"LAY-table-"+this.index)},H.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,"layui-table-click"),a=t.layBody.find('tr[data-index="'+e+'"]');a.addClass(i).siblings("tr").removeClass(i)},H.prototype.sort=function(e,i,a,l){var n,o,c=this,s={},u=c.config,y=u.elem.attr("lay-filter"),f=d.cache[c.key];"string"==typeof e&&(n=e,c.layHeader.find("th").each(function(i,a){var l=t(this),o=l.data("field");if(o===e)return e=l,n=o,!1}));try{var n=n||e.data("field"),p=e.data("key");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find("th .laytable-cell-"+p).find(A);c.layHeader.find("th").find(A).removeAttr("lay-sort"),v.attr("lay-sort",i||null),c.layFixed.find("th")}catch(m){r.error("Table modules: sort field '"+n+"' not matched")}c.sortKey={field:n,sort:i},u.autoSort&&("asc"===i?o=layui.sort(f,n):"desc"===i?o=layui.sort(f,n,!0):(o=layui.sort(f,d.config.indexName),delete c.sortKey)),s[u.response.dataName]=o||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,h,"sort("+y+")",{field:n,type:i})},H.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(x).remove()):(i.layInit=t(['
        ','',"
        "].join("")),i.layBox.append(i.layInit)))},H.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&"array"!==layui._typeof(l[e])&&(l[e][a.checkName]=t)},H.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){"checkbox"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),e.renderForm("checkbox")),a(!0)):(i[0].checked&&(i.prop("checked",!1),e.renderForm("checkbox")),a(!1)))},H.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===".laytable-cell-"+e)return t(a),!0})},H.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=F.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css("height",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e-=t.layPage.outerHeight()||41),t.layMain.css("height",e-2))},H.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement("div"),e.style.width="100px",e.style.height="100px",e.style.overflowY="scroll",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},H.prototype.scrollPatch=function(){var e=this,i=e.layMain.children("table"),a=e.layMain.width()-e.layMain.prop("clientWidth"),l=e.layMain.height()-e.layMain.prop("clientHeight"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(".layui-table-patch")[0]){var i=t('
        ');i.find("div").css({width:a}),e.find("tr").append(i)}}else e.find(".layui-table-patch").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),c=r-l;e.layFixed.find(C).css("height",i.height()>=c?c:"auto"),e.layFixRight[n>0?"removeClass":"addClass"](p),e.layFixRight.css("right",a-1)},H.prototype.events=function(){var e,i=this,a=i.config,o=t("body"),r={},s=i.layHeader.find("th"),u=".layui-table-cell",f=a.elem.attr("lay-filter");i.layTool.on("click","*[lay-event]",function(e){var o=t(this),r=o.attr("lay-event"),s=function(e){var l=t(e.list),n=t('
          ');n.html(l),a.height&&n.css("max-height",a.height-(i.layTool.outerHeight()||50)),o.find(".layui-table-tool-panel")[0]||o.append(n),i.renderForm(),n.on("click",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),I.trigger("table.tool.panel.remove"),l.close(i.tipsIndex),r){case"LAYTABLE_COLS":s({list:function(){var e=[];return i.eachCols(function(t,i){i.field&&"normal"==i.type&&e.push('
        • ')}),e.join("")}(),done:function(){n.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var l=t(e.elem),n=this.checked,o=l.data("key"),r=l.data("parentkey");layui.each(a.cols,function(e,t){layui.each(t,function(t,l){if(e+"-"+t===o){var c=l.hide;l.hide=!n,i.elem.find('*[data-key="'+a.index+"-"+o+'"]')[n?"removeClass":"addClass"](p),c!=l.hide&&i.setParentCol(!n,r),i.resize()}})})})}});break;case"LAYTABLE_EXPORT":c.ie?l.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):s({list:function(){return['
        • \u5bfc\u51fa\u5230 Csv \u6587\u4ef6
        • ','
        • \u5bfc\u51fa\u5230 Excel \u6587\u4ef6
        • '].join("")}(),done:function(e,l){l.on("click",function(){var e=t(this).data("type");d.exportFile.call(i,a.id,null,e)})}});break;case"LAYTABLE_PRINT":var u=window.open("\u6253\u5370\u7a97\u53e3","_blank"),y=[""].join(""),v=t(i.layHeader.html());v.append(i.layMain.find("table").html()),v.append(i.layTotal.find("table").html()),v.find("th.layui-table-patch").remove(),v.find(".layui-table-col-special").remove(),u.document.write(y+v.prop("outerHTML")),u.document.close(),u.print(),u.close()}layui.event.call(this,h,"toolbar("+f+")",t.extend({event:r,config:a},{}))}),s.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||r.resizeStart||(r.allowResize=i.width()-l<=10,o.css("cursor",r.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);r.resizeStart||o.css("cursor","")}).on("mousedown",function(e){var l=t(this);if(r.allowResize){var n=l.data("key");e.preventDefault(),r.resizeStart=!0,r.offset=[e.clientX,e.clientY],i.getCssRule(n,function(e){var t=e.style.width||l.outerWidth();r.rule=e,r.ruleWidth=parseFloat(t),r.minWidth=l.data("minwidth")||a.cellMinWidth})}}),I.on("mousemove",function(t){if(r.resizeStart){if(t.preventDefault(),r.rule){var a=r.ruleWidth+t.clientX-r.offset[0];a');return n[0].value=i.data("content")||l.text(),i.find("."+R)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on("mouseenter","td",function(){b.call(this)}).on("mouseleave","td",function(){b.call(this,"hide")});var g="layui-table-grid-down",b=function(e){var i=t(this),a=i.children(u);if(!i.data("off"))if(e)i.find(".layui-table-grid-down").remove();else if(a.prop("scrollWidth")>a.outerWidth()){if(a.find("."+g)[0])return;i.append('
          ')}};i.layBody.on("click","."+g,function(e){var n=t(this),o=n.parent(),r=o.children(u);i.tipsIndex=l.tips(['
          ',r.html(),"
          ",''].join(""),r[0],{tips:[3,""],time:-1,anim:-1,maxWidth:c.ios||c.android?300:i.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}),layui.stope(e)}),i.layBody.on("click","*[lay-event]",function(){var e=t(this),a=e.parents("tr").eq(0).data("index");layui.event.call(this,h,"tool("+f+")",v.call(this,{event:e.attr("lay-event")})),i.setThisRowChecked(a)}),i.layMain.on("scroll",function(){var e=t(this),a=e.scrollLeft(),n=e.scrollTop();i.layHeader.scrollLeft(a),i.layTotal.scrollLeft(a),i.layFixed.find(C).scrollTop(n),l.close(i.tipsIndex)}),F.on("resize",function(){i.resize()})},function(){I.on("click",function(){I.trigger("table.remove.tool.panel")}),I.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()})}(),d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':f+"[lay-data]"),n="Table element property lay-data configuration item has a syntax error: ";return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(o){r.error(n+l,"error")}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},d.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(o){return r.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr("colspan")||0,rowspan:a.attr("rowspan")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},s.that={},s.config={},d.eachCols=function(e,i,a){var l=s.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void("function"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return"array"===layui._typeof(l)?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.getData=function(e){var t=[],i=d.cache[e]||[];return layui.each(i,function(e,i){"array"!==layui._typeof(i)&&t.push(d.clearCacheKey(i))}),t},d.exportFile=function(e,t,i){var a=this;t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var l=s.that[e],n=s.config[e]||{},o={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],u=document.createElement("a");return c.ie?r.error("IE_NOT_SUPPORT_EXPORTS"):(u.href="data:"+o+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],n=[],o=[];return layui.each(t,function(t,a){var o=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(a),function(e,t){o.push('"'+(t||"")+'"')})):d.eachCols(e,function(e,n){if(n.field&&"normal"==n.type&&!n.hide){var r=a[n.field];void 0!==r&&null!==r||(r=""),0==t&&i.push(n.title||""),o.push('"'+y.call(l,n,r,a,"text")+'"')}}),n.push(o.join(","))}),layui.each(a.dataTotal,function(e,t){o.push(t)}),i.join(",")+"\r\n"+n.join("\r\n")+"\r\n"+o.join(",")}()),u.download=(n.title||"table_"+(n.index||""))+"."+i,document.body.appendChild(u),u.click(),void document.body.removeChild(u))},d.resize=function(e){if(e){var t=u(e);if(!t)return;s.that[e].resize()}else layui.each(s.that,function(){ -this.resize()})},d.reload=function(e,t,i){var a=u(e);if(a){var l=s.that[e];return l.reload(t,i),s.call(l)}},d.render=function(e){var t=new H(e);return s.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},t(function(){d.init()}),e(h,d)});layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['",'"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['
            ',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("")}),i.join("")}(),"
          "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):al.length&&(l.value=l.length),parseInt(l.value)!==l.value&&(l.half||(l.value=Math.ceil(l.value)-l.value<.5?Math.ceil(l.value):Math.floor(l.value)));for(var n='
            ",s=1;s<=l.length;s++){var r='
          • ";l.half&&parseInt(l.value)!==l.value&&s==Math.ceil(l.value)?n=n+'
          • ":n+=r}n+="
          "+(l.text?''+l.value+"\u661f":"")+"";var c=l.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),l.span=e.elemTemp.next("span"),l.setText&&l.setText(l.value),c.html(e.elemTemp),c.addClass("layui-inline"),l.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,l=a.config;l.value=e,a.render()},v.prototype.action=function(){var e=this,l=e.config,i=e.elemTemp,n=i.find("i").width();i.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(l.value=t,l.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(l.value=l.value-.5)}l.text&&i.next("span").text(l.value+"\u661f"),l.choose&&l.choose(l.value),l.setText&&l.setText(l.value)}),v.on("mousemove",function(e){if(i.find("i").each(function(){a(this).addClass(o).removeClass(r)}),i.find("i:lt("+t+")").each(function(){a(this).addClass(u).removeClass(f)}),l.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(s).removeClass(u)}}),v.on("mouseleave",function(){i.find("i").each(function(){a(this).addClass(o).removeClass(r)}),i.find("i:lt("+Math.floor(l.value)+")").each(function(){a(this).addClass(u).removeClass(f)}),l.half&&parseInt(l.value)!==l.value&&i.children("li:eq("+Math.floor(l.value)+")").children("i").addClass(s).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},l.render=function(e){var a=new v(e);return i.call(a)},e(n,l)});layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var m=l(e.elem);if(m[0]){var f=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,y=e.end||"\u6ca1\u6709\u66f4\u591a\u4e86",v=e.scrollElem&&e.scrollElem!==document,d="\u52a0\u8f7d\u66f4\u591a",h=l('");m.find(".layui-flow-more")[0]||m.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(y):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(f.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),!i&&m.width()&&(r=setTimeout(function(){var i=v?e.height():l(window).height(),n=v?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&e.attr("lay-src")){var f=e.attr("lay-src");layui.img(f,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",f).removeAttr("lay-src"),l[0]&&m(l),i++},function(){t.lazyimg.elem.eq(i);e.removeAttr("lay-src")})}},m=function(e,o){var m=a?(o||n).height():l(window).height(),f=n.scrollTop(),u=f+m;if(t.lazyimg.elem=l(r),e)c(e,m);else for(var s=0;su)break}};if(m(),!o){var f;n.on("scroll",function(){var e=l(this);f&&clearTimeout(f),f=setTimeout(function(){m(null,e)},50)}),o=!0}return m},e("flow",new o)});layui.define(["layer","form"],function(t){"use strict";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n="layedit",o="layui-show",r="layui-disabled",c=function(){var t=this;t.index=0,t.config={tool:["strong","italic","underline","del","|","left","center","right","|","link","unlink","face","image"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r="layui-layedit",c=e("string"==typeof t?"#"+t:t),u="LAY_layedit_"+ ++a.index,d=c.next("."+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join("")}(),m=e(['
          ','
          '+f+"
          ",'
          ','',"
          ","
          "].join(""));return l.ie&&l.ie<8?c.removeClass("layui-hide").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass("layui-hide").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e("#"+i[1].attr("textarea"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find("iframe");n.css({height:a.height}).on("load",function(){var o=n.contents(),r=n.prop("contentWindow"),c=o.find("head"),s=e([""].join("")),u=o.find("body");c.append(s),u.attr("contenteditable","true").css({"min-height":a.height}).html(i.value||""),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e("#LAY_layedit_"+t),a=i.prop("contentWindow");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on("keydown",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if("pre"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg("\u8bf7\u6682\u65f6\u7528shift+enter"),!1}r.execCommand("formatBlock",!1,"

          ")}}),e(n).parents("form").on("submit",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on("paste",function(e){r.execCommand("formatBlock",!1,"

          "),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find("*[style]").each(function(){var t=this.style.textAlign;this.removeAttribute("style"),e(this).css({"text-align":t||""})}),t.find("table").addClass("layui-table"),t.find("script,link").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute("text"),l.selection){var r=a.text||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop("outerHTML")),a.select()}else{var r=a.toString()||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l="layedit-tool-active",n=p(m(a)),o=function(e){return t.find(".layedit-tool-"+e)};i&&i[i.hasClass(l)?"removeClass":"addClass"](l),t.find(">i").removeClass(l),o("unlink").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;"b"!==t&&"strong"!==t||o("b").addClass(l),"i"!==t&&"em"!==t||o("i").addClass(l),"u"===t&&o("u").addClass(l),"strike"===t&&o("d").addClass(l),"p"===t&&("center"===e?o("center").addClass(l):"right"===e?o("right").addClass(l):o("left").addClass(l)),"a"===t&&(o("link").addClass(l),o("unlink").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr("href"),target:l.attr("target")},function(e){var a=l[0];"A"===a.tagName?a.href=e.url:v.call(t,"a",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand("unlink")},face:function(e){x.call(this,function(i){v.call(t,"img",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use("upload",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find("input")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,"img",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||"\u4e0a\u4f20\u5931\u8d25")}})})},code:function(e){k.call(o,function(i){v.call(t,"pre",{text:i.code,"lay-lang":i.lang},e)})},help:function(){i.open({type:2,title:"\u5e2e\u52a9",area:["600px","380px"],shadeClose:!0,shade:.1,skin:"layui-layer-msg",content:["","no"]})}},s=a.find(".layui-layedit-tool"),u=function(){var i=e(this),a=i.attr("layedit-event"),l=i.attr("lay-command");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand("formatBlock",!1,"

          "),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(">i").on("mousedown",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)||u.call(this)}).on("click",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)&&u.call(this)}),o.on("click",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:"LAY_layedit_link",area:"350px",shade:.05,shadeClose:!0,moveType:1,title:"\u8d85\u94fe\u63a5",skin:"layui-layer-msg",content:['

            ','
          • ','','
            ','',"
            ","
          • ",'
          • ','','
            ','",'","
            ","
          • ",'
          • ','','',"
          • ","
          "].join(""),success:function(t,n){var o="submit(layedit-link-yes)";a.render("radio"),t.find(".layui-btn-primary").on("click",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=["[\u5fae\u7b11]","[\u563b\u563b]","[\u54c8\u54c8]","[\u53ef\u7231]","[\u53ef\u601c]","[\u6316\u9f3b]","[\u5403\u60ca]","[\u5bb3\u7f9e]","[\u6324\u773c]","[\u95ed\u5634]","[\u9119\u89c6]","[\u7231\u4f60]","[\u6cea]","[\u5077\u7b11]","[\u4eb2\u4eb2]","[\u751f\u75c5]","[\u592a\u5f00\u5fc3]","[\u767d\u773c]","[\u53f3\u54fc\u54fc]","[\u5de6\u54fc\u54fc]","[\u5618]","[\u8870]","[\u59d4\u5c48]","[\u5410]","[\u54c8\u6b20]","[\u62b1\u62b1]","[\u6012]","[\u7591\u95ee]","[\u998b\u5634]","[\u62dc\u62dc]","[\u601d\u8003]","[\u6c57]","[\u56f0]","[\u7761]","[\u94b1]","[\u5931\u671b]","[\u9177]","[\u8272]","[\u54fc]","[\u9f13\u638c]","[\u6655]","[\u60b2\u4f24]","[\u6293\u72c2]","[\u9ed1\u7ebf]","[\u9634\u9669]","[\u6012\u9a82]","[\u4e92\u7c89]","[\u5fc3]","[\u4f24\u5fc3]","[\u732a\u5934]","[\u718a\u732b]","[\u5154\u5b50]","[ok]","[\u8036]","[good]","[NO]","[\u8d5e]","[\u6765]","[\u5f31]","[\u8349\u6ce5\u9a6c]","[\u795e\u9a6c]","[\u56e7]","[\u6d6e\u4e91]","[\u7ed9\u529b]","[\u56f4\u89c2]","[\u5a01\u6b66]","[\u5965\u7279\u66fc]","[\u793c\u7269]","[\u949f]","[\u8bdd\u7b52]","[\u8721\u70db]","[\u86cb\u7cd5]"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+"images/face/"+t+".gif"}),e}();return x.hide=x.hide||function(t){"face"!==e(t.target).attr("layedit-event")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('
        • '+e+'
        • ')}),'
            '+t.join("")+"
          "}(),this,{tips:1,time:0,skin:"layui-box layui-util-face",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(".layui-clear>li").on("click",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off("click",x.hide).on("click",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:"LAY_layedit_code",area:"550px",shade:.05,shadeClose:!0,moveType:1,title:"\u63d2\u5165\u4ee3\u7801",skin:"layui-layer-msg",content:['
            ','
          • ','','
            ','","
            ","
          • ",'
          • ','','
            ','',"
            ","
          • ",'
          • ','','',"
          • ","
          "].join(""),success:function(l,n){var o="submit(layedit-code-yes)";a.render("select"),l.find(".layui-btn-primary").on("click",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'',strong:'',italic:'',underline:'',del:'',"|":'',left:'',center:'',right:'',link:'',unlink:'',face:'',image:'',code:'',help:''},L=new c;t(n,L)});layui.define("jquery",function(a){"use strict";var e=layui.$;a("code",function(a){var l=[];a=a||{},a.elem=e(a.elem||".layui-code"),a.lang="lang"in a?a.lang:"code",a.elem.each(function(){l.push(this)}),layui.each(l.reverse(),function(l,i){var t=e(i),c=t.html();(t.attr("lay-encode")||a.encode)&&(c=c.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),t.html('
          1. '+c.replace(/[\r\t\n]+/g,"
          2. ")+"
          "),t.find(">.layui-code-h3")[0]||t.prepend('

          '+(t.attr("lay-title")||a.title||"</>")+''+(t.attr("lay-lang")||a.lang||"")+"

          ");var n=t.find(">.layui-code-ol");t.addClass("layui-box layui-code-view"),(t.attr("lay-skin")||a.skin)&&t.addClass("layui-code-"+(t.attr("lay-skin")||a.skin)),(n.find("li").length/100|0)>0&&n.css("margin-left",(n.find("li").length/100|0)+"px"),(t.attr("lay-height")||a.height)&&n.css("max-height",t.attr("lay-height")||a.height)})})}).addcss("modules/code.css?v=2","skincodecss"); \ No newline at end of file diff --git a/public/static/plugs/layui_exts/excel.js b/public/static/plugs/layui_exts/excel.js deleted file mode 100644 index 57b53fb57..000000000 --- a/public/static/plugs/layui_exts/excel.js +++ /dev/null @@ -1,10 +0,0 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=343)}([function(e,t,r){var n=r(2),a=r(22),i=r(13),s=r(12),o=r(21),c=function(e,t,r){var l,f,u,h,d=e&c.F,p=e&c.G,g=e&c.S,m=e&c.P,v=e&c.B,b=p?n:g?n[t]||(n[t]={}):(n[t]||{}).prototype,w=p?a:a[t]||(a[t]={}),E=w.prototype||(w.prototype={});for(l in p&&(r=t),r)u=((f=!d&&b&&void 0!==b[l])?b:r)[l],h=v&&f?o(u,n):m&&"function"==typeof u?o(Function.call,u):u,b&&s(b,l,u,e&c.U),w[l]!=u&&i(w,l,h),m&&E[l]!=u&&(E[l]=u)};n.core=a,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,r){var n=r(4);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},function(e,t){var r=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,r){var n=r(52)("wks"),a=r(41),i=r(2).Symbol,s="function"==typeof i;(e.exports=function(e){return n[e]||(n[e]=s&&i[e]||(s?i:a)("Symbol."+e))}).store=n},function(e,t,r){var n=r(19),a=Math.min;e.exports=function(e){return e>0?a(n(e),9007199254740991):0}},function(e,t,r){e.exports=!r(3)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,r){var n=r(1),a=r(130),i=r(26),s=Object.defineProperty;t.f=r(7)?Object.defineProperty:function(e,t,r){if(n(e),t=i(t,!0),n(r),a)try{return s(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},function(e,t,r){var n=r(25);e.exports=function(e){return Object(n(e))}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,r){var n=r(0),a=r(3),i=r(25),s=/"/g,o=function(e,t,r,n){var a=String(i(e)),o="<"+t;return""!==r&&(o+=" "+r+'="'+String(n).replace(s,""")+'"'),o+">"+a+""};e.exports=function(e,t){var r={};r[e]=t(o),n(n.P+n.F*a(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",r)}},function(e,t,r){var n=r(2),a=r(13),i=r(17),s=r(41)("src"),o=r(339),c=(""+o).split("toString");r(22).inspectSource=function(e){return o.call(e)},(e.exports=function(e,t,r,o){var l="function"==typeof r;l&&(i(r,"name")||a(r,"name",t)),e[t]!==r&&(l&&(i(r,s)||a(r,s,e[t]?""+e[t]:c.join(String(t)))),e===n?e[t]=r:o?e[t]?e[t]=r:a(e,t,r):(delete e[t],a(e,t,r)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[s]||o.call(this)})},function(e,t,r){var n=r(8),a=r(42);e.exports=r(7)?function(e,t,r){return n.f(e,t,a(1,r))}:function(e,t,r){return e[t]=r,e}},function(e,t,r){var n=r(17),a=r(9),i=r(91)("IE_PROTO"),s=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=a(e),n(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?s:null}},function(e,t,r){var n=r(50),a=r(42),i=r(16),s=r(26),o=r(17),c=r(130),l=Object.getOwnPropertyDescriptor;t.f=r(7)?l:function(e,t){if(e=i(e),t=s(t,!0),c)try{return l(e,t)}catch(e){}if(o(e,t))return a(!n.f.call(e,t),e[t])}},function(e,t,r){var n=r(51),a=r(25);e.exports=function(e){return n(a(e))}},function(e,t){var r={}.hasOwnProperty;e.exports=function(e,t){return r.call(e,t)}},function(e,t,r){"use strict";var n=r(3);e.exports=function(e,t){return!!e&&n(function(){t?e.call(null,function(){},1):e.call(null)})}},function(e,t){var r=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:r)(e)}},function(e,t){var r={}.toString;e.exports=function(e){return r.call(e).slice(8,-1)}},function(e,t,r){var n=r(10);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,a){return e.call(t,r,n,a)}}return function(){return e.apply(t,arguments)}}},function(e,t){var r=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=r)},function(e,t,r){var n=r(21),a=r(51),i=r(9),s=r(6),o=r(75);e.exports=function(e,t){var r=1==e,c=2==e,l=3==e,f=4==e,u=6==e,h=5==e||u,d=t||o;return function(t,o,p){for(var g,m,v=i(t),b=a(v),w=n(o,p,3),E=s(b.length),S=0,y=r?d(t,E):c?d(t,0):void 0;E>S;S++)if((h||S in b)&&(m=w(g=b[S],S,v),e))if(r)y[S]=m;else if(m)switch(e){case 3:return!0;case 5:return g;case 6:return S;case 2:y.push(g)}else if(f)return!1;return u?-1:l||f?f:y}}},function(e,t,r){var n=r(0),a=r(22),i=r(3);e.exports=function(e,t){var r=(a.Object||{})[e]||Object[e],s={};s[e]=t(r),n(n.S+n.F*i(function(){r(1)}),"Object",s)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,r){var n=r(4);e.exports=function(e,t){if(!n(e))return e;var r,a;if(t&&"function"==typeof(r=e.toString)&&!n(a=r.call(e)))return a;if("function"==typeof(r=e.valueOf)&&!n(a=r.call(e)))return a;if(!t&&"function"==typeof(r=e.toString)&&!n(a=r.call(e)))return a;throw TypeError("Can't convert object to primitive value")}},function(e,t,r){var n=r(107),a=r(0),i=r(52)("metadata"),s=i.store||(i.store=new(r(104))),o=function(e,t,r){var a=s.get(e);if(!a){if(!r)return;s.set(e,a=new n)}var i=a.get(t);if(!i){if(!r)return;a.set(t,i=new n)}return i};e.exports={store:s,map:o,has:function(e,t,r){var n=o(t,r,!1);return void 0!==n&&n.has(e)},get:function(e,t,r){var n=o(t,r,!1);return void 0===n?void 0:n.get(e)},set:function(e,t,r,n){o(r,n,!0).set(e,t)},keys:function(e,t){var r=o(e,t,!1),n=[];return r&&r.forEach(function(e,t){n.push(t)}),n},key:function(e){return void 0===e||"symbol"==typeof e?e:String(e)},exp:function(e){a(a.S,"Reflect",e)}}},function(e,t,r){"use strict";if(r(7)){var n=r(31),a=r(2),i=r(3),s=r(0),o=r(56),c=r(67),l=r(21),f=r(35),u=r(42),h=r(13),d=r(33),p=r(19),g=r(6),m=r(102),v=r(39),b=r(26),w=r(17),E=r(45),S=r(4),y=r(9),_=r(78),C=r(38),x=r(14),T=r(37).f,B=r(76),k=r(41),A=r(5),I=r(23),R=r(66),O=r(48),F=r(73),P=r(43),D=r(61),N=r(36),M=r(74),L=r(113),U=r(8),W=r(15),V=U.f,H=W.f,z=a.RangeError,X=a.TypeError,G=a.Uint8Array,j=Array.prototype,Y=c.ArrayBuffer,$=c.DataView,K=I(0),Z=I(2),J=I(3),Q=I(4),q=I(5),ee=I(6),te=R(!0),re=R(!1),ne=F.values,ae=F.keys,ie=F.entries,se=j.lastIndexOf,oe=j.reduce,ce=j.reduceRight,le=j.join,fe=j.sort,ue=j.slice,he=j.toString,de=j.toLocaleString,pe=A("iterator"),ge=A("toStringTag"),me=k("typed_constructor"),ve=k("def_constructor"),be=o.CONSTR,we=o.TYPED,Ee=o.VIEW,Se=I(1,function(e,t){return Te(O(e,e[ve]),t)}),ye=i(function(){return 1===new G(new Uint16Array([1]).buffer)[0]}),_e=!!G&&!!G.prototype.set&&i(function(){new G(1).set({})}),Ce=function(e,t){var r=p(e);if(r<0||r%t)throw z("Wrong offset!");return r},xe=function(e){if(S(e)&&we in e)return e;throw X(e+" is not a typed array!")},Te=function(e,t){if(!(S(e)&&me in e))throw X("It is not a typed array constructor!");return new e(t)},Be=function(e,t){return ke(O(e,e[ve]),t)},ke=function(e,t){for(var r=0,n=t.length,a=Te(e,n);n>r;)a[r]=t[r++];return a},Ae=function(e,t,r){V(e,t,{get:function(){return this._d[r]}})},Ie=function(e){var t,r,n,a,i,s,o=y(e),c=arguments.length,f=c>1?arguments[1]:void 0,u=void 0!==f,h=B(o);if(void 0!=h&&!_(h)){for(s=h.call(o),n=[],t=0;!(i=s.next()).done;t++)n.push(i.value);o=n}for(u&&c>2&&(f=l(f,arguments[2],2)),t=0,r=g(o.length),a=Te(this,r);r>t;t++)a[t]=u?f(o[t],t):o[t];return a},Re=function(){for(var e=0,t=arguments.length,r=Te(this,t);t>e;)r[e]=arguments[e++];return r},Oe=!!G&&i(function(){de.call(new G(1))}),Fe=function(){return de.apply(Oe?ue.call(xe(this)):xe(this),arguments)},Pe={copyWithin:function(e,t){return L.call(xe(this),e,t,arguments.length>2?arguments[2]:void 0)},every:function(e){return Q(xe(this),e,arguments.length>1?arguments[1]:void 0)},fill:function(e){return M.apply(xe(this),arguments)},filter:function(e){return Be(this,Z(xe(this),e,arguments.length>1?arguments[1]:void 0))},find:function(e){return q(xe(this),e,arguments.length>1?arguments[1]:void 0)},findIndex:function(e){return ee(xe(this),e,arguments.length>1?arguments[1]:void 0)},forEach:function(e){K(xe(this),e,arguments.length>1?arguments[1]:void 0)},indexOf:function(e){return re(xe(this),e,arguments.length>1?arguments[1]:void 0)},includes:function(e){return te(xe(this),e,arguments.length>1?arguments[1]:void 0)},join:function(e){return le.apply(xe(this),arguments)},lastIndexOf:function(e){return se.apply(xe(this),arguments)},map:function(e){return Se(xe(this),e,arguments.length>1?arguments[1]:void 0)},reduce:function(e){return oe.apply(xe(this),arguments)},reduceRight:function(e){return ce.apply(xe(this),arguments)},reverse:function(){for(var e,t=xe(this).length,r=Math.floor(t/2),n=0;n1?arguments[1]:void 0)},sort:function(e){return fe.call(xe(this),e)},subarray:function(e,t){var r=xe(this),n=r.length,a=v(e,n);return new(O(r,r[ve]))(r.buffer,r.byteOffset+a*r.BYTES_PER_ELEMENT,g((void 0===t?n:v(t,n))-a))}},De=function(e,t){return Be(this,ue.call(xe(this),e,t))},Ne=function(e){xe(this);var t=Ce(arguments[1],1),r=this.length,n=y(e),a=g(n.length),i=0;if(a+t>r)throw z("Wrong length!");for(;i255?255:255&n),a.v[d](r*t+a.o,n,ye)}(this,r,e)},enumerable:!0})};w?(p=r(function(e,r,n,a){f(e,p,l,"_d");var i,s,o,c,u=0,d=0;if(S(r)){if(!(r instanceof Y||"ArrayBuffer"==(c=E(r))||"SharedArrayBuffer"==c))return we in r?ke(p,r):Ie.call(p,r);i=r,d=Ce(n,t);var v=r.byteLength;if(void 0===a){if(v%t)throw z("Wrong length!");if((s=v-d)<0)throw z("Wrong length!")}else if((s=g(a)*t)+d>v)throw z("Wrong length!");o=s/t}else o=m(r),i=new Y(s=o*t);for(h(e,"_d",{b:i,o:d,l:s,e:o,v:new $(i)});uw;w++)if((m=t?b(s(p=e[w])[0],p[1]):b(e[w]))===l||m===f)return m}else for(g=v.call(e);!(p=g.next()).done;)if((m=a(g,b,p.value,t))===l||m===f)return m}).BREAK=l,t.RETURN=f},function(e,t){e.exports=function(e,t,r,n){if(!(e instanceof t)||void 0!==n&&n in e)throw TypeError(r+": incorrect invocation!");return e}},function(e,t,r){"use strict";var n=r(2),a=r(8),i=r(7),s=r(5)("species");e.exports=function(e){var t=n[e];i&&t&&!t[s]&&a.f(t,s,{configurable:!0,get:function(){return this}})}},function(e,t,r){var n=r(128),a=r(90).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,a)}},function(e,t,r){var n=r(1),a=r(127),i=r(90),s=r(91)("IE_PROTO"),o=function(){},c=function(){var e,t=r(93)("iframe"),n=i.length;for(t.style.display="none",r(89).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write(" \ No newline at end of file diff --git a/static/template/layout.vue b/static/template/layout.vue new file mode 100644 index 000000000..650ca64d2 --- /dev/null +++ b/static/template/layout.vue @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/think b/think deleted file mode 100755 index 31f8a4456..000000000 --- a/think +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env php -doConsoleInit(); \ No newline at end of file