commit 6389bb36f96097c5b7571cf1dc0d6b718196aa0f
Author: ryx <2736755949@qq.com>
Date: Tue Jan 20 14:26:38 2026 +0800
完整上传所有项目文件
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ad26d09
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,31 @@
+# Binaries for programs and plugins
+*.exe
+*.exe~
+*.dll
+*.out
+*.so
+*.dylib
+*.pem
+*.log
+*.glb
+*.zip
+*.rar
+*.pdf
+*.docx
+*.xls
+*.doc
+*.gltf
+*.mp3
+*.mp4
+
+# Dependency directories (remove the comment below to include it)
+资料/*
+web/ud/docs/*
+web/ud/2025/*
+web/ud/2026/*
+web/ud/2027/*
+web/ud/2028/*
+**/unpackage/
+**/tmp/
+web.ini
+gitup.bat
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..9fbb181
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,18 @@
+{
+ // 使用 IntelliSense 了解相关属性。
+ // 悬停以查看现有属性的描述。
+ // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "ciyon main",
+ "type": "go",
+ "request": "launch",
+ "mode": "auto",
+ "program": "${workspaceRoot}",
+ "env": {},
+ "args": [],
+ "showLog": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..327df4c
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,4 @@
+{
+ "editor.unicodeHighlight.includeComments": false,
+ "editor.unicodeHighlight.includeStrings": false
+}
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000..54bb9d5
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,18 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "刷新CDN缓存",
+ "type": "shell",
+ "command": "node ../../nodejs/refreshcdn/refreshcdn.js ${workspaceFolder}",
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "presentation": {
+ "reveal": "always"
+ },
+ "problemMatcher": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..17cb286
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,117 @@
+GNU GENERAL PUBLIC LICENSE
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
+
+ one line to give the program's name and an idea of what it does. Copyright (C) yyyy name of author
+
+ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9783d70
--- /dev/null
+++ b/README.md
@@ -0,0 +1,145 @@
+# Ciyon - 众产全栈开发框架
+## 技术特点
+### AI辅助决策
+ 基于Function Call和JSON的AI能力,实现了定期AI决策及渐进式主动决策执行能力。
+
+ 利用置信度缓解AI幻觉难题,基于量化函数可实现专用AI能力。
+
+### Web3D地球
+ 基于Cesium与ThreeJS,实现了三维场景可视化配置和开发JS独立组件。
+
+ 支持多种地图源、地形图、GLB模型、光照、无人机建模等。
+
+### 原生重构组件
+ 内生发展,尽量不引用第三方库,拆解掌握原理后重写。
+
+ PC端组件20+,移动端组件60+,不断扩展中。
+
+### PHP+Golang
+ PHP在项目原型验证阶段快速开发上线。
+
+ Golang作为服务器集群降成本的高并发优化。
+
+### 免编译模式
+ 尽量用免编译模式开发,降低老旧代码维护难度。
+
+ 是未来演进的重要研究基础。
+
+### 代码生成器
+ 支持基于数据表的通用功能的代码生成能力。
+
+ 数据表注解定义,自动生成代码,再利用AI补全微调。
+
+ 遵循一定的开发规范,能产生90%高质量直接运行代码。
+
+
+## 软件架构
+### 总控端原生JS
+ 使用原生JS实现一系列的常用函数封装。
+
+ 包括websocket、bigscreen、openai、sse、i18n等。
+
+ 结合Web3D的数据大屏驾驶舱示例代码实现。
+
+### 总控端PHP
+ 原生实现独立开发框架,输入安全校验、唯一访问入口。
+
+ 拆解吸收多种大型框架源码。本框架结构简单,可读性强。
+
+### 总控端Golang
+ 原生实现独立开发框架,未实现函数自动转至PHP执行。
+
+ 支持mock、连接池、自更新等。
+
+### 移动端Vue3
+ 在Vue3基础上极简封装各类常用组件。
+
+ 统一封装常见函数,页面全面可自定义,多语言。
+
+ 提供路由工具,一键生成路由代码。
+
+### Web站原生JS库
+ 让Web呈现扁平的价值传达,减少酷炫效果对阅读的干扰,整站SEO可完整解析。
+
+### Web站缓存机制
+ 自定义的动态页面缓存模式,结合各类CDN回源策略减轻对源服务器请求。
+
+
+## 软件工程
+### 项目可行性验证阶段
+ 用原生JS+PHP+微信小程序开发。
+
+ 在数周内完成项目快速开发。
+
+ 低成本投入市场验证迭代。
+
+### 项目快速发展阶段
+ Web服务器集群规模或数据库服务器连接数承压后,
+
+ 用Golang重写高并发请求的函数接口,逐步替代。
+
+### 项目稳定运营阶段
+ Golang将业务侧数据全部重写,完全替换PHP低效代码。
+
+ 根据业务特点拆分,扩展成多地多中心异构拓扑。
+
+
+## 未来演进
+### 全量区块链
+ 创新的实现区块链底层架构,将上传的文件图片视频资源、数据库资源全部完整上链。
+
+ 非简单的hash上链。
+
+### 无后端时代
+ 底层研发基于海量矿机的多中心(无中心)异构拓扑,
+
+ 实现统一的JS访问入口,实现区块链级分布式事务。
+
+### 大前端时代
+ 从区块链上下载前端包后,加载到用户端(PC/手机/XR眼镜等),任何交互操作均直接请求区块链接口。
+
+### 代码可审计
+ 区块链基于共识算法开放协议,天然可审计。
+
+ 前端代码不允许混淆和编译。
+
+ 用户端可随时调阅源码分析。
+
+
+# 在线演示
+
+https://ciyon.ciy.cn/
+
+https://ciyon.ciy.cn/admin/
+
+# Windows开发环境部署
+安装环境: Nginx、PHP8、MariaDB10、Golang
+开发必备: Git、VSCode(Cursor、Claude Code等替代)、HBuilder、微信开发者工具
+开发推荐: Navicat 17+、WinSCP5+、Chrome、Apifox、S3 Browser、Node.js
+工具推荐: Notepad3、draw.io、XMind、Everything
+
+nginx关键配置(PHP):
+server {
+ listen 443 ssl http2;
+ server_name ciyon.local.ciy.cn;
+ root D:/Dreams/ciy/ciyon/web;
+ include ssl_params;
+ include ciyon5_params;
+}
+
+nginx关键配置(Golang):
+server {
+ listen 443 ssl http2;
+ server_name ciyongo.local.ciy.cn;
+ root D:/Dreams/ciy/ciyon/web;
+ include ssl_params;
+ set $ipport http://127.0.0.1:4003;
+ include ciyon5go_params;
+}
+
+*.local.ciy.cn SSL证书下载 https://ciyon.ciy.cn/ud/install/ssl_local.zip
+webserver打包下载 https://ciyon.ciy.cn/ud/install/webserver.zip
+mariadb下载 https://ciyon.ciy.cn/ud/install/mariadb-10.5.10-winx64.msi
+
+# Linux生产环境部署
+
diff --git a/c5_ciyon.ciy_arearpc.sql b/c5_ciyon.ciy_arearpc.sql
new file mode 100644
index 0000000..ea73240
--- /dev/null
+++ b/c5_ciyon.ciy_arearpc.sql
@@ -0,0 +1,3655 @@
+
+-- ----------------------------
+-- Table structure for ciy_arearpc
+-- ----------------------------
+DROP TABLE IF EXISTS `ciy_arearpc`;
+CREATE TABLE `ciy_arearpc` (
+ `id` int(11) NOT NULL COMMENT '代码',
+ `upid` int(11) NOT NULL COMMENT '上级代码',
+ `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '地名',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '静态省市区表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ciy_arearpc
+-- ----------------------------
+INSERT INTO `ciy_arearpc` VALUES (110000, 0, '北京市');
+INSERT INTO `ciy_arearpc` VALUES (110100, 110000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (110101, 110100, '东城区');
+INSERT INTO `ciy_arearpc` VALUES (110102, 110100, '西城区');
+INSERT INTO `ciy_arearpc` VALUES (110105, 110100, '朝阳区');
+INSERT INTO `ciy_arearpc` VALUES (110106, 110100, '丰台区');
+INSERT INTO `ciy_arearpc` VALUES (110107, 110100, '石景山区');
+INSERT INTO `ciy_arearpc` VALUES (110108, 110100, '海淀区');
+INSERT INTO `ciy_arearpc` VALUES (110109, 110100, '门头沟区');
+INSERT INTO `ciy_arearpc` VALUES (110111, 110100, '房山区');
+INSERT INTO `ciy_arearpc` VALUES (110112, 110100, '通州区');
+INSERT INTO `ciy_arearpc` VALUES (110113, 110100, '顺义区');
+INSERT INTO `ciy_arearpc` VALUES (110114, 110100, '昌平区');
+INSERT INTO `ciy_arearpc` VALUES (110115, 110100, '大兴区');
+INSERT INTO `ciy_arearpc` VALUES (110116, 110100, '怀柔区');
+INSERT INTO `ciy_arearpc` VALUES (110117, 110100, '平谷区');
+INSERT INTO `ciy_arearpc` VALUES (110118, 110100, '密云区');
+INSERT INTO `ciy_arearpc` VALUES (110119, 110100, '延庆区');
+INSERT INTO `ciy_arearpc` VALUES (120000, 0, '天津市');
+INSERT INTO `ciy_arearpc` VALUES (120100, 120000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (120101, 120100, '和平区');
+INSERT INTO `ciy_arearpc` VALUES (120102, 120100, '河东区');
+INSERT INTO `ciy_arearpc` VALUES (120103, 120100, '河西区');
+INSERT INTO `ciy_arearpc` VALUES (120104, 120100, '南开区');
+INSERT INTO `ciy_arearpc` VALUES (120105, 120100, '河北区');
+INSERT INTO `ciy_arearpc` VALUES (120106, 120100, '红桥区');
+INSERT INTO `ciy_arearpc` VALUES (120110, 120100, '东丽区');
+INSERT INTO `ciy_arearpc` VALUES (120111, 120100, '西青区');
+INSERT INTO `ciy_arearpc` VALUES (120112, 120100, '津南区');
+INSERT INTO `ciy_arearpc` VALUES (120113, 120100, '北辰区');
+INSERT INTO `ciy_arearpc` VALUES (120114, 120100, '武清区');
+INSERT INTO `ciy_arearpc` VALUES (120115, 120100, '宝坻区');
+INSERT INTO `ciy_arearpc` VALUES (120116, 120100, '滨海新区');
+INSERT INTO `ciy_arearpc` VALUES (120117, 120100, '宁河区');
+INSERT INTO `ciy_arearpc` VALUES (120118, 120100, '静海区');
+INSERT INTO `ciy_arearpc` VALUES (120119, 120100, '蓟州区');
+INSERT INTO `ciy_arearpc` VALUES (130000, 0, '河北省');
+INSERT INTO `ciy_arearpc` VALUES (130100, 130000, '石家庄市');
+INSERT INTO `ciy_arearpc` VALUES (130101, 130100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (130102, 130100, '长安区');
+INSERT INTO `ciy_arearpc` VALUES (130104, 130100, '桥西区');
+INSERT INTO `ciy_arearpc` VALUES (130105, 130100, '新华区');
+INSERT INTO `ciy_arearpc` VALUES (130107, 130100, '井陉矿区');
+INSERT INTO `ciy_arearpc` VALUES (130108, 130100, '裕华区');
+INSERT INTO `ciy_arearpc` VALUES (130109, 130100, '藁城区');
+INSERT INTO `ciy_arearpc` VALUES (130110, 130100, '鹿泉区');
+INSERT INTO `ciy_arearpc` VALUES (130111, 130100, '栾城区');
+INSERT INTO `ciy_arearpc` VALUES (130121, 130100, '井陉县');
+INSERT INTO `ciy_arearpc` VALUES (130123, 130100, '正定县');
+INSERT INTO `ciy_arearpc` VALUES (130125, 130100, '行唐县');
+INSERT INTO `ciy_arearpc` VALUES (130126, 130100, '灵寿县');
+INSERT INTO `ciy_arearpc` VALUES (130127, 130100, '高邑县');
+INSERT INTO `ciy_arearpc` VALUES (130128, 130100, '深泽县');
+INSERT INTO `ciy_arearpc` VALUES (130129, 130100, '赞皇县');
+INSERT INTO `ciy_arearpc` VALUES (130130, 130100, '无极县');
+INSERT INTO `ciy_arearpc` VALUES (130131, 130100, '平山县');
+INSERT INTO `ciy_arearpc` VALUES (130132, 130100, '元氏县');
+INSERT INTO `ciy_arearpc` VALUES (130133, 130100, '赵县');
+INSERT INTO `ciy_arearpc` VALUES (130171, 130100, '石家庄高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (130172, 130100, '石家庄循环化工园区');
+INSERT INTO `ciy_arearpc` VALUES (130181, 130100, '辛集市');
+INSERT INTO `ciy_arearpc` VALUES (130183, 130100, '晋州市');
+INSERT INTO `ciy_arearpc` VALUES (130184, 130100, '新乐市');
+INSERT INTO `ciy_arearpc` VALUES (130200, 130000, '唐山市');
+INSERT INTO `ciy_arearpc` VALUES (130201, 130200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (130202, 130200, '路南区');
+INSERT INTO `ciy_arearpc` VALUES (130203, 130200, '路北区');
+INSERT INTO `ciy_arearpc` VALUES (130204, 130200, '古冶区');
+INSERT INTO `ciy_arearpc` VALUES (130205, 130200, '开平区');
+INSERT INTO `ciy_arearpc` VALUES (130207, 130200, '丰南区');
+INSERT INTO `ciy_arearpc` VALUES (130208, 130200, '丰润区');
+INSERT INTO `ciy_arearpc` VALUES (130209, 130200, '曹妃甸区');
+INSERT INTO `ciy_arearpc` VALUES (130224, 130200, '滦南县');
+INSERT INTO `ciy_arearpc` VALUES (130225, 130200, '乐亭县');
+INSERT INTO `ciy_arearpc` VALUES (130227, 130200, '迁西县');
+INSERT INTO `ciy_arearpc` VALUES (130229, 130200, '玉田县');
+INSERT INTO `ciy_arearpc` VALUES (130271, 130200, '河北唐山芦台经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (130272, 130200, '唐山市汉沽管理区');
+INSERT INTO `ciy_arearpc` VALUES (130273, 130200, '唐山高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (130274, 130200, '河北唐山海港经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (130281, 130200, '遵化市');
+INSERT INTO `ciy_arearpc` VALUES (130283, 130200, '迁安市');
+INSERT INTO `ciy_arearpc` VALUES (130284, 130200, '滦州市');
+INSERT INTO `ciy_arearpc` VALUES (130300, 130000, '秦皇岛市');
+INSERT INTO `ciy_arearpc` VALUES (130301, 130300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (130302, 130300, '海港区');
+INSERT INTO `ciy_arearpc` VALUES (130303, 130300, '山海关区');
+INSERT INTO `ciy_arearpc` VALUES (130304, 130300, '北戴河区');
+INSERT INTO `ciy_arearpc` VALUES (130306, 130300, '抚宁区');
+INSERT INTO `ciy_arearpc` VALUES (130321, 130300, '青龙满族自治县');
+INSERT INTO `ciy_arearpc` VALUES (130322, 130300, '昌黎县');
+INSERT INTO `ciy_arearpc` VALUES (130324, 130300, '卢龙县');
+INSERT INTO `ciy_arearpc` VALUES (130371, 130300, '秦皇岛市经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (130372, 130300, '北戴河新区');
+INSERT INTO `ciy_arearpc` VALUES (130400, 130000, '邯郸市');
+INSERT INTO `ciy_arearpc` VALUES (130401, 130400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (130402, 130400, '邯山区');
+INSERT INTO `ciy_arearpc` VALUES (130403, 130400, '丛台区');
+INSERT INTO `ciy_arearpc` VALUES (130404, 130400, '复兴区');
+INSERT INTO `ciy_arearpc` VALUES (130406, 130400, '峰峰矿区');
+INSERT INTO `ciy_arearpc` VALUES (130407, 130400, '肥乡区');
+INSERT INTO `ciy_arearpc` VALUES (130408, 130400, '永年区');
+INSERT INTO `ciy_arearpc` VALUES (130423, 130400, '临漳县');
+INSERT INTO `ciy_arearpc` VALUES (130424, 130400, '成安县');
+INSERT INTO `ciy_arearpc` VALUES (130425, 130400, '大名县');
+INSERT INTO `ciy_arearpc` VALUES (130426, 130400, '涉县');
+INSERT INTO `ciy_arearpc` VALUES (130427, 130400, '磁县');
+INSERT INTO `ciy_arearpc` VALUES (130430, 130400, '邱县');
+INSERT INTO `ciy_arearpc` VALUES (130431, 130400, '鸡泽县');
+INSERT INTO `ciy_arearpc` VALUES (130432, 130400, '广平县');
+INSERT INTO `ciy_arearpc` VALUES (130433, 130400, '馆陶县');
+INSERT INTO `ciy_arearpc` VALUES (130434, 130400, '魏县');
+INSERT INTO `ciy_arearpc` VALUES (130435, 130400, '曲周县');
+INSERT INTO `ciy_arearpc` VALUES (130471, 130400, '邯郸经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (130473, 130400, '邯郸冀南新区');
+INSERT INTO `ciy_arearpc` VALUES (130481, 130400, '武安市');
+INSERT INTO `ciy_arearpc` VALUES (130500, 130000, '邢台市');
+INSERT INTO `ciy_arearpc` VALUES (130501, 130500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (130502, 130500, '襄都区');
+INSERT INTO `ciy_arearpc` VALUES (130503, 130500, '信都区');
+INSERT INTO `ciy_arearpc` VALUES (130505, 130500, '任泽区');
+INSERT INTO `ciy_arearpc` VALUES (130506, 130500, '南和区');
+INSERT INTO `ciy_arearpc` VALUES (130522, 130500, '临城县');
+INSERT INTO `ciy_arearpc` VALUES (130523, 130500, '内丘县');
+INSERT INTO `ciy_arearpc` VALUES (130524, 130500, '柏乡县');
+INSERT INTO `ciy_arearpc` VALUES (130525, 130500, '隆尧县');
+INSERT INTO `ciy_arearpc` VALUES (130528, 130500, '宁晋县');
+INSERT INTO `ciy_arearpc` VALUES (130529, 130500, '巨鹿县');
+INSERT INTO `ciy_arearpc` VALUES (130530, 130500, '新河县');
+INSERT INTO `ciy_arearpc` VALUES (130531, 130500, '广宗县');
+INSERT INTO `ciy_arearpc` VALUES (130532, 130500, '平乡县');
+INSERT INTO `ciy_arearpc` VALUES (130533, 130500, '威县');
+INSERT INTO `ciy_arearpc` VALUES (130534, 130500, '清河县');
+INSERT INTO `ciy_arearpc` VALUES (130535, 130500, '临西县');
+INSERT INTO `ciy_arearpc` VALUES (130571, 130500, '河北邢台经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (130581, 130500, '南宫市');
+INSERT INTO `ciy_arearpc` VALUES (130582, 130500, '沙河市');
+INSERT INTO `ciy_arearpc` VALUES (130600, 130000, '保定市');
+INSERT INTO `ciy_arearpc` VALUES (130601, 130600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (130602, 130600, '竞秀区');
+INSERT INTO `ciy_arearpc` VALUES (130606, 130600, '莲池区');
+INSERT INTO `ciy_arearpc` VALUES (130607, 130600, '满城区');
+INSERT INTO `ciy_arearpc` VALUES (130608, 130600, '清苑区');
+INSERT INTO `ciy_arearpc` VALUES (130609, 130600, '徐水区');
+INSERT INTO `ciy_arearpc` VALUES (130623, 130600, '涞水县');
+INSERT INTO `ciy_arearpc` VALUES (130624, 130600, '阜平县');
+INSERT INTO `ciy_arearpc` VALUES (130626, 130600, '定兴县');
+INSERT INTO `ciy_arearpc` VALUES (130627, 130600, '唐县');
+INSERT INTO `ciy_arearpc` VALUES (130628, 130600, '高阳县');
+INSERT INTO `ciy_arearpc` VALUES (130629, 130600, '容城县');
+INSERT INTO `ciy_arearpc` VALUES (130630, 130600, '涞源县');
+INSERT INTO `ciy_arearpc` VALUES (130631, 130600, '望都县');
+INSERT INTO `ciy_arearpc` VALUES (130632, 130600, '安新县');
+INSERT INTO `ciy_arearpc` VALUES (130633, 130600, '易县');
+INSERT INTO `ciy_arearpc` VALUES (130634, 130600, '曲阳县');
+INSERT INTO `ciy_arearpc` VALUES (130635, 130600, '蠡县');
+INSERT INTO `ciy_arearpc` VALUES (130636, 130600, '顺平县');
+INSERT INTO `ciy_arearpc` VALUES (130637, 130600, '博野县');
+INSERT INTO `ciy_arearpc` VALUES (130638, 130600, '雄县');
+INSERT INTO `ciy_arearpc` VALUES (130671, 130600, '保定高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (130672, 130600, '保定白沟新城');
+INSERT INTO `ciy_arearpc` VALUES (130681, 130600, '涿州市');
+INSERT INTO `ciy_arearpc` VALUES (130682, 130600, '定州市');
+INSERT INTO `ciy_arearpc` VALUES (130683, 130600, '安国市');
+INSERT INTO `ciy_arearpc` VALUES (130684, 130600, '高碑店市');
+INSERT INTO `ciy_arearpc` VALUES (130700, 130000, '张家口市');
+INSERT INTO `ciy_arearpc` VALUES (130701, 130700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (130702, 130700, '桥东区');
+INSERT INTO `ciy_arearpc` VALUES (130703, 130700, '桥西区');
+INSERT INTO `ciy_arearpc` VALUES (130705, 130700, '宣化区');
+INSERT INTO `ciy_arearpc` VALUES (130706, 130700, '下花园区');
+INSERT INTO `ciy_arearpc` VALUES (130708, 130700, '万全区');
+INSERT INTO `ciy_arearpc` VALUES (130709, 130700, '崇礼区');
+INSERT INTO `ciy_arearpc` VALUES (130722, 130700, '张北县');
+INSERT INTO `ciy_arearpc` VALUES (130723, 130700, '康保县');
+INSERT INTO `ciy_arearpc` VALUES (130724, 130700, '沽源县');
+INSERT INTO `ciy_arearpc` VALUES (130725, 130700, '尚义县');
+INSERT INTO `ciy_arearpc` VALUES (130726, 130700, '蔚县');
+INSERT INTO `ciy_arearpc` VALUES (130727, 130700, '阳原县');
+INSERT INTO `ciy_arearpc` VALUES (130728, 130700, '怀安县');
+INSERT INTO `ciy_arearpc` VALUES (130730, 130700, '怀来县');
+INSERT INTO `ciy_arearpc` VALUES (130731, 130700, '涿鹿县');
+INSERT INTO `ciy_arearpc` VALUES (130732, 130700, '赤城县');
+INSERT INTO `ciy_arearpc` VALUES (130771, 130700, '张家口经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (130772, 130700, '张家口市察北管理区');
+INSERT INTO `ciy_arearpc` VALUES (130773, 130700, '张家口市塞北管理区');
+INSERT INTO `ciy_arearpc` VALUES (130800, 130000, '承德市');
+INSERT INTO `ciy_arearpc` VALUES (130801, 130800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (130802, 130800, '双桥区');
+INSERT INTO `ciy_arearpc` VALUES (130803, 130800, '双滦区');
+INSERT INTO `ciy_arearpc` VALUES (130804, 130800, '鹰手营子矿区');
+INSERT INTO `ciy_arearpc` VALUES (130821, 130800, '承德县');
+INSERT INTO `ciy_arearpc` VALUES (130822, 130800, '兴隆县');
+INSERT INTO `ciy_arearpc` VALUES (130824, 130800, '滦平县');
+INSERT INTO `ciy_arearpc` VALUES (130825, 130800, '隆化县');
+INSERT INTO `ciy_arearpc` VALUES (130826, 130800, '丰宁满族自治县');
+INSERT INTO `ciy_arearpc` VALUES (130827, 130800, '宽城满族自治县');
+INSERT INTO `ciy_arearpc` VALUES (130828, 130800, '围场满族蒙古族自治县');
+INSERT INTO `ciy_arearpc` VALUES (130871, 130800, '承德高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (130881, 130800, '平泉市');
+INSERT INTO `ciy_arearpc` VALUES (130900, 130000, '沧州市');
+INSERT INTO `ciy_arearpc` VALUES (130901, 130900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (130902, 130900, '新华区');
+INSERT INTO `ciy_arearpc` VALUES (130903, 130900, '运河区');
+INSERT INTO `ciy_arearpc` VALUES (130921, 130900, '沧县');
+INSERT INTO `ciy_arearpc` VALUES (130922, 130900, '青县');
+INSERT INTO `ciy_arearpc` VALUES (130923, 130900, '东光县');
+INSERT INTO `ciy_arearpc` VALUES (130924, 130900, '海兴县');
+INSERT INTO `ciy_arearpc` VALUES (130925, 130900, '盐山县');
+INSERT INTO `ciy_arearpc` VALUES (130926, 130900, '肃宁县');
+INSERT INTO `ciy_arearpc` VALUES (130927, 130900, '南皮县');
+INSERT INTO `ciy_arearpc` VALUES (130928, 130900, '吴桥县');
+INSERT INTO `ciy_arearpc` VALUES (130929, 130900, '献县');
+INSERT INTO `ciy_arearpc` VALUES (130930, 130900, '孟村回族自治县');
+INSERT INTO `ciy_arearpc` VALUES (130971, 130900, '河北沧州经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (130972, 130900, '沧州高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (130973, 130900, '沧州渤海新区');
+INSERT INTO `ciy_arearpc` VALUES (130981, 130900, '泊头市');
+INSERT INTO `ciy_arearpc` VALUES (130982, 130900, '任丘市');
+INSERT INTO `ciy_arearpc` VALUES (130983, 130900, '黄骅市');
+INSERT INTO `ciy_arearpc` VALUES (130984, 130900, '河间市');
+INSERT INTO `ciy_arearpc` VALUES (131000, 130000, '廊坊市');
+INSERT INTO `ciy_arearpc` VALUES (131001, 131000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (131002, 131000, '安次区');
+INSERT INTO `ciy_arearpc` VALUES (131003, 131000, '广阳区');
+INSERT INTO `ciy_arearpc` VALUES (131022, 131000, '固安县');
+INSERT INTO `ciy_arearpc` VALUES (131023, 131000, '永清县');
+INSERT INTO `ciy_arearpc` VALUES (131024, 131000, '香河县');
+INSERT INTO `ciy_arearpc` VALUES (131025, 131000, '大城县');
+INSERT INTO `ciy_arearpc` VALUES (131026, 131000, '文安县');
+INSERT INTO `ciy_arearpc` VALUES (131028, 131000, '大厂回族自治县');
+INSERT INTO `ciy_arearpc` VALUES (131071, 131000, '廊坊经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (131081, 131000, '霸州市');
+INSERT INTO `ciy_arearpc` VALUES (131082, 131000, '三河市');
+INSERT INTO `ciy_arearpc` VALUES (131100, 130000, '衡水市');
+INSERT INTO `ciy_arearpc` VALUES (131101, 131100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (131102, 131100, '桃城区');
+INSERT INTO `ciy_arearpc` VALUES (131103, 131100, '冀州区');
+INSERT INTO `ciy_arearpc` VALUES (131121, 131100, '枣强县');
+INSERT INTO `ciy_arearpc` VALUES (131122, 131100, '武邑县');
+INSERT INTO `ciy_arearpc` VALUES (131123, 131100, '武强县');
+INSERT INTO `ciy_arearpc` VALUES (131124, 131100, '饶阳县');
+INSERT INTO `ciy_arearpc` VALUES (131125, 131100, '安平县');
+INSERT INTO `ciy_arearpc` VALUES (131126, 131100, '故城县');
+INSERT INTO `ciy_arearpc` VALUES (131127, 131100, '景县');
+INSERT INTO `ciy_arearpc` VALUES (131128, 131100, '阜城县');
+INSERT INTO `ciy_arearpc` VALUES (131171, 131100, '河北衡水高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (131172, 131100, '衡水滨湖新区');
+INSERT INTO `ciy_arearpc` VALUES (131182, 131100, '深州市');
+INSERT INTO `ciy_arearpc` VALUES (140000, 0, '山西省');
+INSERT INTO `ciy_arearpc` VALUES (140100, 140000, '太原市');
+INSERT INTO `ciy_arearpc` VALUES (140101, 140100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (140105, 140100, '小店区');
+INSERT INTO `ciy_arearpc` VALUES (140106, 140100, '迎泽区');
+INSERT INTO `ciy_arearpc` VALUES (140107, 140100, '杏花岭区');
+INSERT INTO `ciy_arearpc` VALUES (140108, 140100, '尖草坪区');
+INSERT INTO `ciy_arearpc` VALUES (140109, 140100, '万柏林区');
+INSERT INTO `ciy_arearpc` VALUES (140110, 140100, '晋源区');
+INSERT INTO `ciy_arearpc` VALUES (140121, 140100, '清徐县');
+INSERT INTO `ciy_arearpc` VALUES (140122, 140100, '阳曲县');
+INSERT INTO `ciy_arearpc` VALUES (140123, 140100, '娄烦县');
+INSERT INTO `ciy_arearpc` VALUES (140171, 140100, '山西转型综合改革示范区');
+INSERT INTO `ciy_arearpc` VALUES (140181, 140100, '古交市');
+INSERT INTO `ciy_arearpc` VALUES (140200, 140000, '大同市');
+INSERT INTO `ciy_arearpc` VALUES (140201, 140200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (140212, 140200, '新荣区');
+INSERT INTO `ciy_arearpc` VALUES (140213, 140200, '平城区');
+INSERT INTO `ciy_arearpc` VALUES (140214, 140200, '云冈区');
+INSERT INTO `ciy_arearpc` VALUES (140215, 140200, '云州区');
+INSERT INTO `ciy_arearpc` VALUES (140221, 140200, '阳高县');
+INSERT INTO `ciy_arearpc` VALUES (140222, 140200, '天镇县');
+INSERT INTO `ciy_arearpc` VALUES (140223, 140200, '广灵县');
+INSERT INTO `ciy_arearpc` VALUES (140224, 140200, '灵丘县');
+INSERT INTO `ciy_arearpc` VALUES (140225, 140200, '浑源县');
+INSERT INTO `ciy_arearpc` VALUES (140226, 140200, '左云县');
+INSERT INTO `ciy_arearpc` VALUES (140271, 140200, '山西大同经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (140300, 140000, '阳泉市');
+INSERT INTO `ciy_arearpc` VALUES (140301, 140300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (140302, 140300, '城区');
+INSERT INTO `ciy_arearpc` VALUES (140303, 140300, '矿区');
+INSERT INTO `ciy_arearpc` VALUES (140311, 140300, '郊区');
+INSERT INTO `ciy_arearpc` VALUES (140321, 140300, '平定县');
+INSERT INTO `ciy_arearpc` VALUES (140322, 140300, '盂县');
+INSERT INTO `ciy_arearpc` VALUES (140400, 140000, '长治市');
+INSERT INTO `ciy_arearpc` VALUES (140401, 140400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (140403, 140400, '潞州区');
+INSERT INTO `ciy_arearpc` VALUES (140404, 140400, '上党区');
+INSERT INTO `ciy_arearpc` VALUES (140405, 140400, '屯留区');
+INSERT INTO `ciy_arearpc` VALUES (140406, 140400, '潞城区');
+INSERT INTO `ciy_arearpc` VALUES (140423, 140400, '襄垣县');
+INSERT INTO `ciy_arearpc` VALUES (140425, 140400, '平顺县');
+INSERT INTO `ciy_arearpc` VALUES (140426, 140400, '黎城县');
+INSERT INTO `ciy_arearpc` VALUES (140427, 140400, '壶关县');
+INSERT INTO `ciy_arearpc` VALUES (140428, 140400, '长子县');
+INSERT INTO `ciy_arearpc` VALUES (140429, 140400, '武乡县');
+INSERT INTO `ciy_arearpc` VALUES (140430, 140400, '沁县');
+INSERT INTO `ciy_arearpc` VALUES (140431, 140400, '沁源县');
+INSERT INTO `ciy_arearpc` VALUES (140471, 140400, '山西长治高新技术产业园区');
+INSERT INTO `ciy_arearpc` VALUES (140500, 140000, '晋城市');
+INSERT INTO `ciy_arearpc` VALUES (140501, 140500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (140502, 140500, '城区');
+INSERT INTO `ciy_arearpc` VALUES (140521, 140500, '沁水县');
+INSERT INTO `ciy_arearpc` VALUES (140522, 140500, '阳城县');
+INSERT INTO `ciy_arearpc` VALUES (140524, 140500, '陵川县');
+INSERT INTO `ciy_arearpc` VALUES (140525, 140500, '泽州县');
+INSERT INTO `ciy_arearpc` VALUES (140581, 140500, '高平市');
+INSERT INTO `ciy_arearpc` VALUES (140600, 140000, '朔州市');
+INSERT INTO `ciy_arearpc` VALUES (140601, 140600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (140602, 140600, '朔城区');
+INSERT INTO `ciy_arearpc` VALUES (140603, 140600, '平鲁区');
+INSERT INTO `ciy_arearpc` VALUES (140621, 140600, '山阴县');
+INSERT INTO `ciy_arearpc` VALUES (140622, 140600, '应县');
+INSERT INTO `ciy_arearpc` VALUES (140623, 140600, '右玉县');
+INSERT INTO `ciy_arearpc` VALUES (140671, 140600, '山西朔州经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (140681, 140600, '怀仁市');
+INSERT INTO `ciy_arearpc` VALUES (140700, 140000, '晋中市');
+INSERT INTO `ciy_arearpc` VALUES (140701, 140700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (140702, 140700, '榆次区');
+INSERT INTO `ciy_arearpc` VALUES (140703, 140700, '太谷区');
+INSERT INTO `ciy_arearpc` VALUES (140721, 140700, '榆社县');
+INSERT INTO `ciy_arearpc` VALUES (140722, 140700, '左权县');
+INSERT INTO `ciy_arearpc` VALUES (140723, 140700, '和顺县');
+INSERT INTO `ciy_arearpc` VALUES (140724, 140700, '昔阳县');
+INSERT INTO `ciy_arearpc` VALUES (140725, 140700, '寿阳县');
+INSERT INTO `ciy_arearpc` VALUES (140727, 140700, '祁县');
+INSERT INTO `ciy_arearpc` VALUES (140728, 140700, '平遥县');
+INSERT INTO `ciy_arearpc` VALUES (140729, 140700, '灵石县');
+INSERT INTO `ciy_arearpc` VALUES (140781, 140700, '介休市');
+INSERT INTO `ciy_arearpc` VALUES (140800, 140000, '运城市');
+INSERT INTO `ciy_arearpc` VALUES (140801, 140800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (140802, 140800, '盐湖区');
+INSERT INTO `ciy_arearpc` VALUES (140821, 140800, '临猗县');
+INSERT INTO `ciy_arearpc` VALUES (140822, 140800, '万荣县');
+INSERT INTO `ciy_arearpc` VALUES (140823, 140800, '闻喜县');
+INSERT INTO `ciy_arearpc` VALUES (140824, 140800, '稷山县');
+INSERT INTO `ciy_arearpc` VALUES (140825, 140800, '新绛县');
+INSERT INTO `ciy_arearpc` VALUES (140826, 140800, '绛县');
+INSERT INTO `ciy_arearpc` VALUES (140827, 140800, '垣曲县');
+INSERT INTO `ciy_arearpc` VALUES (140828, 140800, '夏县');
+INSERT INTO `ciy_arearpc` VALUES (140829, 140800, '平陆县');
+INSERT INTO `ciy_arearpc` VALUES (140830, 140800, '芮城县');
+INSERT INTO `ciy_arearpc` VALUES (140881, 140800, '永济市');
+INSERT INTO `ciy_arearpc` VALUES (140882, 140800, '河津市');
+INSERT INTO `ciy_arearpc` VALUES (140900, 140000, '忻州市');
+INSERT INTO `ciy_arearpc` VALUES (140901, 140900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (140902, 140900, '忻府区');
+INSERT INTO `ciy_arearpc` VALUES (140921, 140900, '定襄县');
+INSERT INTO `ciy_arearpc` VALUES (140922, 140900, '五台县');
+INSERT INTO `ciy_arearpc` VALUES (140923, 140900, '代县');
+INSERT INTO `ciy_arearpc` VALUES (140924, 140900, '繁峙县');
+INSERT INTO `ciy_arearpc` VALUES (140925, 140900, '宁武县');
+INSERT INTO `ciy_arearpc` VALUES (140926, 140900, '静乐县');
+INSERT INTO `ciy_arearpc` VALUES (140927, 140900, '神池县');
+INSERT INTO `ciy_arearpc` VALUES (140928, 140900, '五寨县');
+INSERT INTO `ciy_arearpc` VALUES (140929, 140900, '岢岚县');
+INSERT INTO `ciy_arearpc` VALUES (140930, 140900, '河曲县');
+INSERT INTO `ciy_arearpc` VALUES (140931, 140900, '保德县');
+INSERT INTO `ciy_arearpc` VALUES (140932, 140900, '偏关县');
+INSERT INTO `ciy_arearpc` VALUES (140971, 140900, '五台山风景名胜区');
+INSERT INTO `ciy_arearpc` VALUES (140981, 140900, '原平市');
+INSERT INTO `ciy_arearpc` VALUES (141000, 140000, '临汾市');
+INSERT INTO `ciy_arearpc` VALUES (141001, 141000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (141002, 141000, '尧都区');
+INSERT INTO `ciy_arearpc` VALUES (141021, 141000, '曲沃县');
+INSERT INTO `ciy_arearpc` VALUES (141022, 141000, '翼城县');
+INSERT INTO `ciy_arearpc` VALUES (141023, 141000, '襄汾县');
+INSERT INTO `ciy_arearpc` VALUES (141024, 141000, '洪洞县');
+INSERT INTO `ciy_arearpc` VALUES (141025, 141000, '古县');
+INSERT INTO `ciy_arearpc` VALUES (141026, 141000, '安泽县');
+INSERT INTO `ciy_arearpc` VALUES (141027, 141000, '浮山县');
+INSERT INTO `ciy_arearpc` VALUES (141028, 141000, '吉县');
+INSERT INTO `ciy_arearpc` VALUES (141029, 141000, '乡宁县');
+INSERT INTO `ciy_arearpc` VALUES (141030, 141000, '大宁县');
+INSERT INTO `ciy_arearpc` VALUES (141031, 141000, '隰县');
+INSERT INTO `ciy_arearpc` VALUES (141032, 141000, '永和县');
+INSERT INTO `ciy_arearpc` VALUES (141033, 141000, '蒲县');
+INSERT INTO `ciy_arearpc` VALUES (141034, 141000, '汾西县');
+INSERT INTO `ciy_arearpc` VALUES (141081, 141000, '侯马市');
+INSERT INTO `ciy_arearpc` VALUES (141082, 141000, '霍州市');
+INSERT INTO `ciy_arearpc` VALUES (141100, 140000, '吕梁市');
+INSERT INTO `ciy_arearpc` VALUES (141101, 141100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (141102, 141100, '离石区');
+INSERT INTO `ciy_arearpc` VALUES (141121, 141100, '文水县');
+INSERT INTO `ciy_arearpc` VALUES (141122, 141100, '交城县');
+INSERT INTO `ciy_arearpc` VALUES (141123, 141100, '兴县');
+INSERT INTO `ciy_arearpc` VALUES (141124, 141100, '临县');
+INSERT INTO `ciy_arearpc` VALUES (141125, 141100, '柳林县');
+INSERT INTO `ciy_arearpc` VALUES (141126, 141100, '石楼县');
+INSERT INTO `ciy_arearpc` VALUES (141127, 141100, '岚县');
+INSERT INTO `ciy_arearpc` VALUES (141128, 141100, '方山县');
+INSERT INTO `ciy_arearpc` VALUES (141129, 141100, '中阳县');
+INSERT INTO `ciy_arearpc` VALUES (141130, 141100, '交口县');
+INSERT INTO `ciy_arearpc` VALUES (141181, 141100, '孝义市');
+INSERT INTO `ciy_arearpc` VALUES (141182, 141100, '汾阳市');
+INSERT INTO `ciy_arearpc` VALUES (150000, 0, '内蒙古自治区');
+INSERT INTO `ciy_arearpc` VALUES (150100, 150000, '呼和浩特市');
+INSERT INTO `ciy_arearpc` VALUES (150101, 150100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (150102, 150100, '新城区');
+INSERT INTO `ciy_arearpc` VALUES (150103, 150100, '回民区');
+INSERT INTO `ciy_arearpc` VALUES (150104, 150100, '玉泉区');
+INSERT INTO `ciy_arearpc` VALUES (150105, 150100, '赛罕区');
+INSERT INTO `ciy_arearpc` VALUES (150121, 150100, '土默特左旗');
+INSERT INTO `ciy_arearpc` VALUES (150122, 150100, '托克托县');
+INSERT INTO `ciy_arearpc` VALUES (150123, 150100, '和林格尔县');
+INSERT INTO `ciy_arearpc` VALUES (150124, 150100, '清水河县');
+INSERT INTO `ciy_arearpc` VALUES (150125, 150100, '武川县');
+INSERT INTO `ciy_arearpc` VALUES (150172, 150100, '呼和浩特经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (150200, 150000, '包头市');
+INSERT INTO `ciy_arearpc` VALUES (150201, 150200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (150202, 150200, '东河区');
+INSERT INTO `ciy_arearpc` VALUES (150203, 150200, '昆都仑区');
+INSERT INTO `ciy_arearpc` VALUES (150204, 150200, '青山区');
+INSERT INTO `ciy_arearpc` VALUES (150205, 150200, '石拐区');
+INSERT INTO `ciy_arearpc` VALUES (150206, 150200, '白云鄂博矿区');
+INSERT INTO `ciy_arearpc` VALUES (150207, 150200, '九原区');
+INSERT INTO `ciy_arearpc` VALUES (150221, 150200, '土默特右旗');
+INSERT INTO `ciy_arearpc` VALUES (150222, 150200, '固阳县');
+INSERT INTO `ciy_arearpc` VALUES (150223, 150200, '达尔罕茂明安联合旗');
+INSERT INTO `ciy_arearpc` VALUES (150271, 150200, '包头稀土高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (150300, 150000, '乌海市');
+INSERT INTO `ciy_arearpc` VALUES (150301, 150300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (150302, 150300, '海勃湾区');
+INSERT INTO `ciy_arearpc` VALUES (150303, 150300, '海南区');
+INSERT INTO `ciy_arearpc` VALUES (150304, 150300, '乌达区');
+INSERT INTO `ciy_arearpc` VALUES (150400, 150000, '赤峰市');
+INSERT INTO `ciy_arearpc` VALUES (150401, 150400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (150402, 150400, '红山区');
+INSERT INTO `ciy_arearpc` VALUES (150403, 150400, '元宝山区');
+INSERT INTO `ciy_arearpc` VALUES (150404, 150400, '松山区');
+INSERT INTO `ciy_arearpc` VALUES (150421, 150400, '阿鲁科尔沁旗');
+INSERT INTO `ciy_arearpc` VALUES (150422, 150400, '巴林左旗');
+INSERT INTO `ciy_arearpc` VALUES (150423, 150400, '巴林右旗');
+INSERT INTO `ciy_arearpc` VALUES (150424, 150400, '林西县');
+INSERT INTO `ciy_arearpc` VALUES (150425, 150400, '克什克腾旗');
+INSERT INTO `ciy_arearpc` VALUES (150426, 150400, '翁牛特旗');
+INSERT INTO `ciy_arearpc` VALUES (150428, 150400, '喀喇沁旗');
+INSERT INTO `ciy_arearpc` VALUES (150429, 150400, '宁城县');
+INSERT INTO `ciy_arearpc` VALUES (150430, 150400, '敖汉旗');
+INSERT INTO `ciy_arearpc` VALUES (150500, 150000, '通辽市');
+INSERT INTO `ciy_arearpc` VALUES (150501, 150500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (150502, 150500, '科尔沁区');
+INSERT INTO `ciy_arearpc` VALUES (150521, 150500, '科尔沁左翼中旗');
+INSERT INTO `ciy_arearpc` VALUES (150522, 150500, '科尔沁左翼后旗');
+INSERT INTO `ciy_arearpc` VALUES (150523, 150500, '开鲁县');
+INSERT INTO `ciy_arearpc` VALUES (150524, 150500, '库伦旗');
+INSERT INTO `ciy_arearpc` VALUES (150525, 150500, '奈曼旗');
+INSERT INTO `ciy_arearpc` VALUES (150526, 150500, '扎鲁特旗');
+INSERT INTO `ciy_arearpc` VALUES (150571, 150500, '通辽经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (150581, 150500, '霍林郭勒市');
+INSERT INTO `ciy_arearpc` VALUES (150600, 150000, '鄂尔多斯市');
+INSERT INTO `ciy_arearpc` VALUES (150601, 150600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (150602, 150600, '东胜区');
+INSERT INTO `ciy_arearpc` VALUES (150603, 150600, '康巴什区');
+INSERT INTO `ciy_arearpc` VALUES (150621, 150600, '达拉特旗');
+INSERT INTO `ciy_arearpc` VALUES (150622, 150600, '准格尔旗');
+INSERT INTO `ciy_arearpc` VALUES (150623, 150600, '鄂托克前旗');
+INSERT INTO `ciy_arearpc` VALUES (150624, 150600, '鄂托克旗');
+INSERT INTO `ciy_arearpc` VALUES (150625, 150600, '杭锦旗');
+INSERT INTO `ciy_arearpc` VALUES (150626, 150600, '乌审旗');
+INSERT INTO `ciy_arearpc` VALUES (150627, 150600, '伊金霍洛旗');
+INSERT INTO `ciy_arearpc` VALUES (150700, 150000, '呼伦贝尔市');
+INSERT INTO `ciy_arearpc` VALUES (150701, 150700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (150702, 150700, '海拉尔区');
+INSERT INTO `ciy_arearpc` VALUES (150703, 150700, '扎赉诺尔区');
+INSERT INTO `ciy_arearpc` VALUES (150721, 150700, '阿荣旗');
+INSERT INTO `ciy_arearpc` VALUES (150722, 150700, '莫力达瓦达斡尔族自治旗');
+INSERT INTO `ciy_arearpc` VALUES (150723, 150700, '鄂伦春自治旗');
+INSERT INTO `ciy_arearpc` VALUES (150724, 150700, '鄂温克族自治旗');
+INSERT INTO `ciy_arearpc` VALUES (150725, 150700, '陈巴尔虎旗');
+INSERT INTO `ciy_arearpc` VALUES (150726, 150700, '新巴尔虎左旗');
+INSERT INTO `ciy_arearpc` VALUES (150727, 150700, '新巴尔虎右旗');
+INSERT INTO `ciy_arearpc` VALUES (150781, 150700, '满洲里市');
+INSERT INTO `ciy_arearpc` VALUES (150782, 150700, '牙克石市');
+INSERT INTO `ciy_arearpc` VALUES (150783, 150700, '扎兰屯市');
+INSERT INTO `ciy_arearpc` VALUES (150784, 150700, '额尔古纳市');
+INSERT INTO `ciy_arearpc` VALUES (150785, 150700, '根河市');
+INSERT INTO `ciy_arearpc` VALUES (150800, 150000, '巴彦淖尔市');
+INSERT INTO `ciy_arearpc` VALUES (150801, 150800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (150802, 150800, '临河区');
+INSERT INTO `ciy_arearpc` VALUES (150821, 150800, '五原县');
+INSERT INTO `ciy_arearpc` VALUES (150822, 150800, '磴口县');
+INSERT INTO `ciy_arearpc` VALUES (150823, 150800, '乌拉特前旗');
+INSERT INTO `ciy_arearpc` VALUES (150824, 150800, '乌拉特中旗');
+INSERT INTO `ciy_arearpc` VALUES (150825, 150800, '乌拉特后旗');
+INSERT INTO `ciy_arearpc` VALUES (150826, 150800, '杭锦后旗');
+INSERT INTO `ciy_arearpc` VALUES (150900, 150000, '乌兰察布市');
+INSERT INTO `ciy_arearpc` VALUES (150901, 150900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (150902, 150900, '集宁区');
+INSERT INTO `ciy_arearpc` VALUES (150921, 150900, '卓资县');
+INSERT INTO `ciy_arearpc` VALUES (150922, 150900, '化德县');
+INSERT INTO `ciy_arearpc` VALUES (150923, 150900, '商都县');
+INSERT INTO `ciy_arearpc` VALUES (150924, 150900, '兴和县');
+INSERT INTO `ciy_arearpc` VALUES (150925, 150900, '凉城县');
+INSERT INTO `ciy_arearpc` VALUES (150926, 150900, '察哈尔右翼前旗');
+INSERT INTO `ciy_arearpc` VALUES (150927, 150900, '察哈尔右翼中旗');
+INSERT INTO `ciy_arearpc` VALUES (150928, 150900, '察哈尔右翼后旗');
+INSERT INTO `ciy_arearpc` VALUES (150929, 150900, '四子王旗');
+INSERT INTO `ciy_arearpc` VALUES (150981, 150900, '丰镇市');
+INSERT INTO `ciy_arearpc` VALUES (152200, 150000, '兴安盟');
+INSERT INTO `ciy_arearpc` VALUES (152201, 152200, '乌兰浩特市');
+INSERT INTO `ciy_arearpc` VALUES (152202, 152200, '阿尔山市');
+INSERT INTO `ciy_arearpc` VALUES (152221, 152200, '科尔沁右翼前旗');
+INSERT INTO `ciy_arearpc` VALUES (152222, 152200, '科尔沁右翼中旗');
+INSERT INTO `ciy_arearpc` VALUES (152223, 152200, '扎赉特旗');
+INSERT INTO `ciy_arearpc` VALUES (152224, 152200, '突泉县');
+INSERT INTO `ciy_arearpc` VALUES (152500, 150000, '锡林郭勒盟');
+INSERT INTO `ciy_arearpc` VALUES (152501, 152500, '二连浩特市');
+INSERT INTO `ciy_arearpc` VALUES (152502, 152500, '锡林浩特市');
+INSERT INTO `ciy_arearpc` VALUES (152522, 152500, '阿巴嘎旗');
+INSERT INTO `ciy_arearpc` VALUES (152523, 152500, '苏尼特左旗');
+INSERT INTO `ciy_arearpc` VALUES (152524, 152500, '苏尼特右旗');
+INSERT INTO `ciy_arearpc` VALUES (152525, 152500, '东乌珠穆沁旗');
+INSERT INTO `ciy_arearpc` VALUES (152526, 152500, '西乌珠穆沁旗');
+INSERT INTO `ciy_arearpc` VALUES (152527, 152500, '太仆寺旗');
+INSERT INTO `ciy_arearpc` VALUES (152528, 152500, '镶黄旗');
+INSERT INTO `ciy_arearpc` VALUES (152529, 152500, '正镶白旗');
+INSERT INTO `ciy_arearpc` VALUES (152530, 152500, '正蓝旗');
+INSERT INTO `ciy_arearpc` VALUES (152531, 152500, '多伦县');
+INSERT INTO `ciy_arearpc` VALUES (152571, 152500, '乌拉盖管委会');
+INSERT INTO `ciy_arearpc` VALUES (152900, 150000, '阿拉善盟');
+INSERT INTO `ciy_arearpc` VALUES (152921, 152900, '阿拉善左旗');
+INSERT INTO `ciy_arearpc` VALUES (152922, 152900, '阿拉善右旗');
+INSERT INTO `ciy_arearpc` VALUES (152923, 152900, '额济纳旗');
+INSERT INTO `ciy_arearpc` VALUES (152971, 152900, '内蒙古阿拉善高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (210000, 0, '辽宁省');
+INSERT INTO `ciy_arearpc` VALUES (210100, 210000, '沈阳市');
+INSERT INTO `ciy_arearpc` VALUES (210101, 210100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (210102, 210100, '和平区');
+INSERT INTO `ciy_arearpc` VALUES (210103, 210100, '沈河区');
+INSERT INTO `ciy_arearpc` VALUES (210104, 210100, '大东区');
+INSERT INTO `ciy_arearpc` VALUES (210105, 210100, '皇姑区');
+INSERT INTO `ciy_arearpc` VALUES (210106, 210100, '铁西区');
+INSERT INTO `ciy_arearpc` VALUES (210111, 210100, '苏家屯区');
+INSERT INTO `ciy_arearpc` VALUES (210112, 210100, '浑南区');
+INSERT INTO `ciy_arearpc` VALUES (210113, 210100, '沈北新区');
+INSERT INTO `ciy_arearpc` VALUES (210114, 210100, '于洪区');
+INSERT INTO `ciy_arearpc` VALUES (210115, 210100, '辽中区');
+INSERT INTO `ciy_arearpc` VALUES (210123, 210100, '康平县');
+INSERT INTO `ciy_arearpc` VALUES (210124, 210100, '法库县');
+INSERT INTO `ciy_arearpc` VALUES (210181, 210100, '新民市');
+INSERT INTO `ciy_arearpc` VALUES (210200, 210000, '大连市');
+INSERT INTO `ciy_arearpc` VALUES (210201, 210200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (210202, 210200, '中山区');
+INSERT INTO `ciy_arearpc` VALUES (210203, 210200, '西岗区');
+INSERT INTO `ciy_arearpc` VALUES (210204, 210200, '沙河口区');
+INSERT INTO `ciy_arearpc` VALUES (210211, 210200, '甘井子区');
+INSERT INTO `ciy_arearpc` VALUES (210212, 210200, '旅顺口区');
+INSERT INTO `ciy_arearpc` VALUES (210213, 210200, '金州区');
+INSERT INTO `ciy_arearpc` VALUES (210214, 210200, '普兰店区');
+INSERT INTO `ciy_arearpc` VALUES (210224, 210200, '长海县');
+INSERT INTO `ciy_arearpc` VALUES (210281, 210200, '瓦房店市');
+INSERT INTO `ciy_arearpc` VALUES (210283, 210200, '庄河市');
+INSERT INTO `ciy_arearpc` VALUES (210300, 210000, '鞍山市');
+INSERT INTO `ciy_arearpc` VALUES (210301, 210300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (210302, 210300, '铁东区');
+INSERT INTO `ciy_arearpc` VALUES (210303, 210300, '铁西区');
+INSERT INTO `ciy_arearpc` VALUES (210304, 210300, '立山区');
+INSERT INTO `ciy_arearpc` VALUES (210311, 210300, '千山区');
+INSERT INTO `ciy_arearpc` VALUES (210321, 210300, '台安县');
+INSERT INTO `ciy_arearpc` VALUES (210323, 210300, '岫岩满族自治县');
+INSERT INTO `ciy_arearpc` VALUES (210381, 210300, '海城市');
+INSERT INTO `ciy_arearpc` VALUES (210400, 210000, '抚顺市');
+INSERT INTO `ciy_arearpc` VALUES (210401, 210400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (210402, 210400, '新抚区');
+INSERT INTO `ciy_arearpc` VALUES (210403, 210400, '东洲区');
+INSERT INTO `ciy_arearpc` VALUES (210404, 210400, '望花区');
+INSERT INTO `ciy_arearpc` VALUES (210411, 210400, '顺城区');
+INSERT INTO `ciy_arearpc` VALUES (210421, 210400, '抚顺县');
+INSERT INTO `ciy_arearpc` VALUES (210422, 210400, '新宾满族自治县');
+INSERT INTO `ciy_arearpc` VALUES (210423, 210400, '清原满族自治县');
+INSERT INTO `ciy_arearpc` VALUES (210500, 210000, '本溪市');
+INSERT INTO `ciy_arearpc` VALUES (210501, 210500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (210502, 210500, '平山区');
+INSERT INTO `ciy_arearpc` VALUES (210503, 210500, '溪湖区');
+INSERT INTO `ciy_arearpc` VALUES (210504, 210500, '明山区');
+INSERT INTO `ciy_arearpc` VALUES (210505, 210500, '南芬区');
+INSERT INTO `ciy_arearpc` VALUES (210521, 210500, '本溪满族自治县');
+INSERT INTO `ciy_arearpc` VALUES (210522, 210500, '桓仁满族自治县');
+INSERT INTO `ciy_arearpc` VALUES (210600, 210000, '丹东市');
+INSERT INTO `ciy_arearpc` VALUES (210601, 210600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (210602, 210600, '元宝区');
+INSERT INTO `ciy_arearpc` VALUES (210603, 210600, '振兴区');
+INSERT INTO `ciy_arearpc` VALUES (210604, 210600, '振安区');
+INSERT INTO `ciy_arearpc` VALUES (210624, 210600, '宽甸满族自治县');
+INSERT INTO `ciy_arearpc` VALUES (210681, 210600, '东港市');
+INSERT INTO `ciy_arearpc` VALUES (210682, 210600, '凤城市');
+INSERT INTO `ciy_arearpc` VALUES (210700, 210000, '锦州市');
+INSERT INTO `ciy_arearpc` VALUES (210701, 210700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (210702, 210700, '古塔区');
+INSERT INTO `ciy_arearpc` VALUES (210703, 210700, '凌河区');
+INSERT INTO `ciy_arearpc` VALUES (210711, 210700, '太和区');
+INSERT INTO `ciy_arearpc` VALUES (210726, 210700, '黑山县');
+INSERT INTO `ciy_arearpc` VALUES (210727, 210700, '义县');
+INSERT INTO `ciy_arearpc` VALUES (210781, 210700, '凌海市');
+INSERT INTO `ciy_arearpc` VALUES (210782, 210700, '北镇市');
+INSERT INTO `ciy_arearpc` VALUES (210800, 210000, '营口市');
+INSERT INTO `ciy_arearpc` VALUES (210801, 210800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (210802, 210800, '站前区');
+INSERT INTO `ciy_arearpc` VALUES (210803, 210800, '西市区');
+INSERT INTO `ciy_arearpc` VALUES (210804, 210800, '鲅鱼圈区');
+INSERT INTO `ciy_arearpc` VALUES (210811, 210800, '老边区');
+INSERT INTO `ciy_arearpc` VALUES (210881, 210800, '盖州市');
+INSERT INTO `ciy_arearpc` VALUES (210882, 210800, '大石桥市');
+INSERT INTO `ciy_arearpc` VALUES (210900, 210000, '阜新市');
+INSERT INTO `ciy_arearpc` VALUES (210901, 210900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (210902, 210900, '海州区');
+INSERT INTO `ciy_arearpc` VALUES (210903, 210900, '新邱区');
+INSERT INTO `ciy_arearpc` VALUES (210904, 210900, '太平区');
+INSERT INTO `ciy_arearpc` VALUES (210905, 210900, '清河门区');
+INSERT INTO `ciy_arearpc` VALUES (210911, 210900, '细河区');
+INSERT INTO `ciy_arearpc` VALUES (210921, 210900, '阜新蒙古族自治县');
+INSERT INTO `ciy_arearpc` VALUES (210922, 210900, '彰武县');
+INSERT INTO `ciy_arearpc` VALUES (211000, 210000, '辽阳市');
+INSERT INTO `ciy_arearpc` VALUES (211001, 211000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (211002, 211000, '白塔区');
+INSERT INTO `ciy_arearpc` VALUES (211003, 211000, '文圣区');
+INSERT INTO `ciy_arearpc` VALUES (211004, 211000, '宏伟区');
+INSERT INTO `ciy_arearpc` VALUES (211005, 211000, '弓长岭区');
+INSERT INTO `ciy_arearpc` VALUES (211011, 211000, '太子河区');
+INSERT INTO `ciy_arearpc` VALUES (211021, 211000, '辽阳县');
+INSERT INTO `ciy_arearpc` VALUES (211081, 211000, '灯塔市');
+INSERT INTO `ciy_arearpc` VALUES (211100, 210000, '盘锦市');
+INSERT INTO `ciy_arearpc` VALUES (211101, 211100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (211102, 211100, '双台子区');
+INSERT INTO `ciy_arearpc` VALUES (211103, 211100, '兴隆台区');
+INSERT INTO `ciy_arearpc` VALUES (211104, 211100, '大洼区');
+INSERT INTO `ciy_arearpc` VALUES (211122, 211100, '盘山县');
+INSERT INTO `ciy_arearpc` VALUES (211200, 210000, '铁岭市');
+INSERT INTO `ciy_arearpc` VALUES (211201, 211200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (211202, 211200, '银州区');
+INSERT INTO `ciy_arearpc` VALUES (211204, 211200, '清河区');
+INSERT INTO `ciy_arearpc` VALUES (211221, 211200, '铁岭县');
+INSERT INTO `ciy_arearpc` VALUES (211223, 211200, '西丰县');
+INSERT INTO `ciy_arearpc` VALUES (211224, 211200, '昌图县');
+INSERT INTO `ciy_arearpc` VALUES (211281, 211200, '调兵山市');
+INSERT INTO `ciy_arearpc` VALUES (211282, 211200, '开原市');
+INSERT INTO `ciy_arearpc` VALUES (211300, 210000, '朝阳市');
+INSERT INTO `ciy_arearpc` VALUES (211301, 211300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (211302, 211300, '双塔区');
+INSERT INTO `ciy_arearpc` VALUES (211303, 211300, '龙城区');
+INSERT INTO `ciy_arearpc` VALUES (211321, 211300, '朝阳县');
+INSERT INTO `ciy_arearpc` VALUES (211322, 211300, '建平县');
+INSERT INTO `ciy_arearpc` VALUES (211324, 211300, '喀喇沁左翼蒙古族自治县');
+INSERT INTO `ciy_arearpc` VALUES (211381, 211300, '北票市');
+INSERT INTO `ciy_arearpc` VALUES (211382, 211300, '凌源市');
+INSERT INTO `ciy_arearpc` VALUES (211400, 210000, '葫芦岛市');
+INSERT INTO `ciy_arearpc` VALUES (211401, 211400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (211402, 211400, '连山区');
+INSERT INTO `ciy_arearpc` VALUES (211403, 211400, '龙港区');
+INSERT INTO `ciy_arearpc` VALUES (211404, 211400, '南票区');
+INSERT INTO `ciy_arearpc` VALUES (211421, 211400, '绥中县');
+INSERT INTO `ciy_arearpc` VALUES (211422, 211400, '建昌县');
+INSERT INTO `ciy_arearpc` VALUES (211481, 211400, '兴城市');
+INSERT INTO `ciy_arearpc` VALUES (220000, 0, '吉林省');
+INSERT INTO `ciy_arearpc` VALUES (220100, 220000, '长春市');
+INSERT INTO `ciy_arearpc` VALUES (220101, 220100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (220102, 220100, '南关区');
+INSERT INTO `ciy_arearpc` VALUES (220103, 220100, '宽城区');
+INSERT INTO `ciy_arearpc` VALUES (220104, 220100, '朝阳区');
+INSERT INTO `ciy_arearpc` VALUES (220105, 220100, '二道区');
+INSERT INTO `ciy_arearpc` VALUES (220106, 220100, '绿园区');
+INSERT INTO `ciy_arearpc` VALUES (220112, 220100, '双阳区');
+INSERT INTO `ciy_arearpc` VALUES (220113, 220100, '九台区');
+INSERT INTO `ciy_arearpc` VALUES (220122, 220100, '农安县');
+INSERT INTO `ciy_arearpc` VALUES (220171, 220100, '长春经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (220172, 220100, '长春净月高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (220173, 220100, '长春高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (220174, 220100, '长春汽车经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (220182, 220100, '榆树市');
+INSERT INTO `ciy_arearpc` VALUES (220183, 220100, '德惠市');
+INSERT INTO `ciy_arearpc` VALUES (220184, 220100, '公主岭市');
+INSERT INTO `ciy_arearpc` VALUES (220200, 220000, '吉林市');
+INSERT INTO `ciy_arearpc` VALUES (220201, 220200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (220202, 220200, '昌邑区');
+INSERT INTO `ciy_arearpc` VALUES (220203, 220200, '龙潭区');
+INSERT INTO `ciy_arearpc` VALUES (220204, 220200, '船营区');
+INSERT INTO `ciy_arearpc` VALUES (220211, 220200, '丰满区');
+INSERT INTO `ciy_arearpc` VALUES (220221, 220200, '永吉县');
+INSERT INTO `ciy_arearpc` VALUES (220271, 220200, '吉林经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (220272, 220200, '吉林高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (220273, 220200, '吉林中国新加坡食品区');
+INSERT INTO `ciy_arearpc` VALUES (220281, 220200, '蛟河市');
+INSERT INTO `ciy_arearpc` VALUES (220282, 220200, '桦甸市');
+INSERT INTO `ciy_arearpc` VALUES (220283, 220200, '舒兰市');
+INSERT INTO `ciy_arearpc` VALUES (220284, 220200, '磐石市');
+INSERT INTO `ciy_arearpc` VALUES (220300, 220000, '四平市');
+INSERT INTO `ciy_arearpc` VALUES (220301, 220300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (220302, 220300, '铁西区');
+INSERT INTO `ciy_arearpc` VALUES (220303, 220300, '铁东区');
+INSERT INTO `ciy_arearpc` VALUES (220322, 220300, '梨树县');
+INSERT INTO `ciy_arearpc` VALUES (220323, 220300, '伊通满族自治县');
+INSERT INTO `ciy_arearpc` VALUES (220382, 220300, '双辽市');
+INSERT INTO `ciy_arearpc` VALUES (220400, 220000, '辽源市');
+INSERT INTO `ciy_arearpc` VALUES (220401, 220400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (220402, 220400, '龙山区');
+INSERT INTO `ciy_arearpc` VALUES (220403, 220400, '西安区');
+INSERT INTO `ciy_arearpc` VALUES (220421, 220400, '东丰县');
+INSERT INTO `ciy_arearpc` VALUES (220422, 220400, '东辽县');
+INSERT INTO `ciy_arearpc` VALUES (220500, 220000, '通化市');
+INSERT INTO `ciy_arearpc` VALUES (220501, 220500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (220502, 220500, '东昌区');
+INSERT INTO `ciy_arearpc` VALUES (220503, 220500, '二道江区');
+INSERT INTO `ciy_arearpc` VALUES (220521, 220500, '通化县');
+INSERT INTO `ciy_arearpc` VALUES (220523, 220500, '辉南县');
+INSERT INTO `ciy_arearpc` VALUES (220524, 220500, '柳河县');
+INSERT INTO `ciy_arearpc` VALUES (220581, 220500, '梅河口市');
+INSERT INTO `ciy_arearpc` VALUES (220582, 220500, '集安市');
+INSERT INTO `ciy_arearpc` VALUES (220600, 220000, '白山市');
+INSERT INTO `ciy_arearpc` VALUES (220601, 220600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (220602, 220600, '浑江区');
+INSERT INTO `ciy_arearpc` VALUES (220605, 220600, '江源区');
+INSERT INTO `ciy_arearpc` VALUES (220621, 220600, '抚松县');
+INSERT INTO `ciy_arearpc` VALUES (220622, 220600, '靖宇县');
+INSERT INTO `ciy_arearpc` VALUES (220623, 220600, '长白朝鲜族自治县');
+INSERT INTO `ciy_arearpc` VALUES (220681, 220600, '临江市');
+INSERT INTO `ciy_arearpc` VALUES (220700, 220000, '松原市');
+INSERT INTO `ciy_arearpc` VALUES (220701, 220700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (220702, 220700, '宁江区');
+INSERT INTO `ciy_arearpc` VALUES (220721, 220700, '前郭尔罗斯蒙古族自治县');
+INSERT INTO `ciy_arearpc` VALUES (220722, 220700, '长岭县');
+INSERT INTO `ciy_arearpc` VALUES (220723, 220700, '乾安县');
+INSERT INTO `ciy_arearpc` VALUES (220771, 220700, '吉林松原经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (220781, 220700, '扶余市');
+INSERT INTO `ciy_arearpc` VALUES (220800, 220000, '白城市');
+INSERT INTO `ciy_arearpc` VALUES (220801, 220800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (220802, 220800, '洮北区');
+INSERT INTO `ciy_arearpc` VALUES (220821, 220800, '镇赉县');
+INSERT INTO `ciy_arearpc` VALUES (220822, 220800, '通榆县');
+INSERT INTO `ciy_arearpc` VALUES (220871, 220800, '吉林白城经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (220881, 220800, '洮南市');
+INSERT INTO `ciy_arearpc` VALUES (220882, 220800, '大安市');
+INSERT INTO `ciy_arearpc` VALUES (222400, 220000, '延边朝鲜族自治州');
+INSERT INTO `ciy_arearpc` VALUES (222401, 222400, '延吉市');
+INSERT INTO `ciy_arearpc` VALUES (222402, 222400, '图们市');
+INSERT INTO `ciy_arearpc` VALUES (222403, 222400, '敦化市');
+INSERT INTO `ciy_arearpc` VALUES (222404, 222400, '珲春市');
+INSERT INTO `ciy_arearpc` VALUES (222405, 222400, '龙井市');
+INSERT INTO `ciy_arearpc` VALUES (222406, 222400, '和龙市');
+INSERT INTO `ciy_arearpc` VALUES (222424, 222400, '汪清县');
+INSERT INTO `ciy_arearpc` VALUES (222426, 222400, '安图县');
+INSERT INTO `ciy_arearpc` VALUES (230000, 0, '黑龙江省');
+INSERT INTO `ciy_arearpc` VALUES (230100, 230000, '哈尔滨市');
+INSERT INTO `ciy_arearpc` VALUES (230101, 230100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (230102, 230100, '道里区');
+INSERT INTO `ciy_arearpc` VALUES (230103, 230100, '南岗区');
+INSERT INTO `ciy_arearpc` VALUES (230104, 230100, '道外区');
+INSERT INTO `ciy_arearpc` VALUES (230108, 230100, '平房区');
+INSERT INTO `ciy_arearpc` VALUES (230109, 230100, '松北区');
+INSERT INTO `ciy_arearpc` VALUES (230110, 230100, '香坊区');
+INSERT INTO `ciy_arearpc` VALUES (230111, 230100, '呼兰区');
+INSERT INTO `ciy_arearpc` VALUES (230112, 230100, '阿城区');
+INSERT INTO `ciy_arearpc` VALUES (230113, 230100, '双城区');
+INSERT INTO `ciy_arearpc` VALUES (230123, 230100, '依兰县');
+INSERT INTO `ciy_arearpc` VALUES (230124, 230100, '方正县');
+INSERT INTO `ciy_arearpc` VALUES (230125, 230100, '宾县');
+INSERT INTO `ciy_arearpc` VALUES (230126, 230100, '巴彦县');
+INSERT INTO `ciy_arearpc` VALUES (230127, 230100, '木兰县');
+INSERT INTO `ciy_arearpc` VALUES (230128, 230100, '通河县');
+INSERT INTO `ciy_arearpc` VALUES (230129, 230100, '延寿县');
+INSERT INTO `ciy_arearpc` VALUES (230183, 230100, '尚志市');
+INSERT INTO `ciy_arearpc` VALUES (230184, 230100, '五常市');
+INSERT INTO `ciy_arearpc` VALUES (230200, 230000, '齐齐哈尔市');
+INSERT INTO `ciy_arearpc` VALUES (230201, 230200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (230202, 230200, '龙沙区');
+INSERT INTO `ciy_arearpc` VALUES (230203, 230200, '建华区');
+INSERT INTO `ciy_arearpc` VALUES (230204, 230200, '铁锋区');
+INSERT INTO `ciy_arearpc` VALUES (230205, 230200, '昂昂溪区');
+INSERT INTO `ciy_arearpc` VALUES (230206, 230200, '富拉尔基区');
+INSERT INTO `ciy_arearpc` VALUES (230207, 230200, '碾子山区');
+INSERT INTO `ciy_arearpc` VALUES (230208, 230200, '梅里斯达斡尔族区');
+INSERT INTO `ciy_arearpc` VALUES (230221, 230200, '龙江县');
+INSERT INTO `ciy_arearpc` VALUES (230223, 230200, '依安县');
+INSERT INTO `ciy_arearpc` VALUES (230224, 230200, '泰来县');
+INSERT INTO `ciy_arearpc` VALUES (230225, 230200, '甘南县');
+INSERT INTO `ciy_arearpc` VALUES (230227, 230200, '富裕县');
+INSERT INTO `ciy_arearpc` VALUES (230229, 230200, '克山县');
+INSERT INTO `ciy_arearpc` VALUES (230230, 230200, '克东县');
+INSERT INTO `ciy_arearpc` VALUES (230231, 230200, '拜泉县');
+INSERT INTO `ciy_arearpc` VALUES (230281, 230200, '讷河市');
+INSERT INTO `ciy_arearpc` VALUES (230300, 230000, '鸡西市');
+INSERT INTO `ciy_arearpc` VALUES (230301, 230300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (230302, 230300, '鸡冠区');
+INSERT INTO `ciy_arearpc` VALUES (230303, 230300, '恒山区');
+INSERT INTO `ciy_arearpc` VALUES (230304, 230300, '滴道区');
+INSERT INTO `ciy_arearpc` VALUES (230305, 230300, '梨树区');
+INSERT INTO `ciy_arearpc` VALUES (230306, 230300, '城子河区');
+INSERT INTO `ciy_arearpc` VALUES (230307, 230300, '麻山区');
+INSERT INTO `ciy_arearpc` VALUES (230321, 230300, '鸡东县');
+INSERT INTO `ciy_arearpc` VALUES (230381, 230300, '虎林市');
+INSERT INTO `ciy_arearpc` VALUES (230382, 230300, '密山市');
+INSERT INTO `ciy_arearpc` VALUES (230400, 230000, '鹤岗市');
+INSERT INTO `ciy_arearpc` VALUES (230401, 230400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (230402, 230400, '向阳区');
+INSERT INTO `ciy_arearpc` VALUES (230403, 230400, '工农区');
+INSERT INTO `ciy_arearpc` VALUES (230404, 230400, '南山区');
+INSERT INTO `ciy_arearpc` VALUES (230405, 230400, '兴安区');
+INSERT INTO `ciy_arearpc` VALUES (230406, 230400, '东山区');
+INSERT INTO `ciy_arearpc` VALUES (230407, 230400, '兴山区');
+INSERT INTO `ciy_arearpc` VALUES (230421, 230400, '萝北县');
+INSERT INTO `ciy_arearpc` VALUES (230422, 230400, '绥滨县');
+INSERT INTO `ciy_arearpc` VALUES (230500, 230000, '双鸭山市');
+INSERT INTO `ciy_arearpc` VALUES (230501, 230500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (230502, 230500, '尖山区');
+INSERT INTO `ciy_arearpc` VALUES (230503, 230500, '岭东区');
+INSERT INTO `ciy_arearpc` VALUES (230505, 230500, '四方台区');
+INSERT INTO `ciy_arearpc` VALUES (230506, 230500, '宝山区');
+INSERT INTO `ciy_arearpc` VALUES (230521, 230500, '集贤县');
+INSERT INTO `ciy_arearpc` VALUES (230522, 230500, '友谊县');
+INSERT INTO `ciy_arearpc` VALUES (230523, 230500, '宝清县');
+INSERT INTO `ciy_arearpc` VALUES (230524, 230500, '饶河县');
+INSERT INTO `ciy_arearpc` VALUES (230600, 230000, '大庆市');
+INSERT INTO `ciy_arearpc` VALUES (230601, 230600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (230602, 230600, '萨尔图区');
+INSERT INTO `ciy_arearpc` VALUES (230603, 230600, '龙凤区');
+INSERT INTO `ciy_arearpc` VALUES (230604, 230600, '让胡路区');
+INSERT INTO `ciy_arearpc` VALUES (230605, 230600, '红岗区');
+INSERT INTO `ciy_arearpc` VALUES (230606, 230600, '大同区');
+INSERT INTO `ciy_arearpc` VALUES (230621, 230600, '肇州县');
+INSERT INTO `ciy_arearpc` VALUES (230622, 230600, '肇源县');
+INSERT INTO `ciy_arearpc` VALUES (230623, 230600, '林甸县');
+INSERT INTO `ciy_arearpc` VALUES (230624, 230600, '杜尔伯特蒙古族自治县');
+INSERT INTO `ciy_arearpc` VALUES (230671, 230600, '大庆高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (230700, 230000, '伊春市');
+INSERT INTO `ciy_arearpc` VALUES (230701, 230700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (230717, 230700, '伊美区');
+INSERT INTO `ciy_arearpc` VALUES (230718, 230700, '乌翠区');
+INSERT INTO `ciy_arearpc` VALUES (230719, 230700, '友好区');
+INSERT INTO `ciy_arearpc` VALUES (230722, 230700, '嘉荫县');
+INSERT INTO `ciy_arearpc` VALUES (230723, 230700, '汤旺县');
+INSERT INTO `ciy_arearpc` VALUES (230724, 230700, '丰林县');
+INSERT INTO `ciy_arearpc` VALUES (230725, 230700, '大箐山县');
+INSERT INTO `ciy_arearpc` VALUES (230726, 230700, '南岔县');
+INSERT INTO `ciy_arearpc` VALUES (230751, 230700, '金林区');
+INSERT INTO `ciy_arearpc` VALUES (230781, 230700, '铁力市');
+INSERT INTO `ciy_arearpc` VALUES (230800, 230000, '佳木斯市');
+INSERT INTO `ciy_arearpc` VALUES (230801, 230800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (230803, 230800, '向阳区');
+INSERT INTO `ciy_arearpc` VALUES (230804, 230800, '前进区');
+INSERT INTO `ciy_arearpc` VALUES (230805, 230800, '东风区');
+INSERT INTO `ciy_arearpc` VALUES (230811, 230800, '郊区');
+INSERT INTO `ciy_arearpc` VALUES (230822, 230800, '桦南县');
+INSERT INTO `ciy_arearpc` VALUES (230826, 230800, '桦川县');
+INSERT INTO `ciy_arearpc` VALUES (230828, 230800, '汤原县');
+INSERT INTO `ciy_arearpc` VALUES (230881, 230800, '同江市');
+INSERT INTO `ciy_arearpc` VALUES (230882, 230800, '富锦市');
+INSERT INTO `ciy_arearpc` VALUES (230883, 230800, '抚远市');
+INSERT INTO `ciy_arearpc` VALUES (230900, 230000, '七台河市');
+INSERT INTO `ciy_arearpc` VALUES (230901, 230900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (230902, 230900, '新兴区');
+INSERT INTO `ciy_arearpc` VALUES (230903, 230900, '桃山区');
+INSERT INTO `ciy_arearpc` VALUES (230904, 230900, '茄子河区');
+INSERT INTO `ciy_arearpc` VALUES (230921, 230900, '勃利县');
+INSERT INTO `ciy_arearpc` VALUES (231000, 230000, '牡丹江市');
+INSERT INTO `ciy_arearpc` VALUES (231001, 231000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (231002, 231000, '东安区');
+INSERT INTO `ciy_arearpc` VALUES (231003, 231000, '阳明区');
+INSERT INTO `ciy_arearpc` VALUES (231004, 231000, '爱民区');
+INSERT INTO `ciy_arearpc` VALUES (231005, 231000, '西安区');
+INSERT INTO `ciy_arearpc` VALUES (231025, 231000, '林口县');
+INSERT INTO `ciy_arearpc` VALUES (231071, 231000, '牡丹江经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (231081, 231000, '绥芬河市');
+INSERT INTO `ciy_arearpc` VALUES (231083, 231000, '海林市');
+INSERT INTO `ciy_arearpc` VALUES (231084, 231000, '宁安市');
+INSERT INTO `ciy_arearpc` VALUES (231085, 231000, '穆棱市');
+INSERT INTO `ciy_arearpc` VALUES (231086, 231000, '东宁市');
+INSERT INTO `ciy_arearpc` VALUES (231100, 230000, '黑河市');
+INSERT INTO `ciy_arearpc` VALUES (231101, 231100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (231102, 231100, '爱辉区');
+INSERT INTO `ciy_arearpc` VALUES (231123, 231100, '逊克县');
+INSERT INTO `ciy_arearpc` VALUES (231124, 231100, '孙吴县');
+INSERT INTO `ciy_arearpc` VALUES (231181, 231100, '北安市');
+INSERT INTO `ciy_arearpc` VALUES (231182, 231100, '五大连池市');
+INSERT INTO `ciy_arearpc` VALUES (231183, 231100, '嫩江市');
+INSERT INTO `ciy_arearpc` VALUES (231200, 230000, '绥化市');
+INSERT INTO `ciy_arearpc` VALUES (231201, 231200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (231202, 231200, '北林区');
+INSERT INTO `ciy_arearpc` VALUES (231221, 231200, '望奎县');
+INSERT INTO `ciy_arearpc` VALUES (231222, 231200, '兰西县');
+INSERT INTO `ciy_arearpc` VALUES (231223, 231200, '青冈县');
+INSERT INTO `ciy_arearpc` VALUES (231224, 231200, '庆安县');
+INSERT INTO `ciy_arearpc` VALUES (231225, 231200, '明水县');
+INSERT INTO `ciy_arearpc` VALUES (231226, 231200, '绥棱县');
+INSERT INTO `ciy_arearpc` VALUES (231281, 231200, '安达市');
+INSERT INTO `ciy_arearpc` VALUES (231282, 231200, '肇东市');
+INSERT INTO `ciy_arearpc` VALUES (231283, 231200, '海伦市');
+INSERT INTO `ciy_arearpc` VALUES (232700, 230000, '大兴安岭地区');
+INSERT INTO `ciy_arearpc` VALUES (232701, 232700, '漠河市');
+INSERT INTO `ciy_arearpc` VALUES (232721, 232700, '呼玛县');
+INSERT INTO `ciy_arearpc` VALUES (232722, 232700, '塔河县');
+INSERT INTO `ciy_arearpc` VALUES (232761, 232700, '加格达奇区');
+INSERT INTO `ciy_arearpc` VALUES (232762, 232700, '松岭区');
+INSERT INTO `ciy_arearpc` VALUES (232763, 232700, '新林区');
+INSERT INTO `ciy_arearpc` VALUES (232764, 232700, '呼中区');
+INSERT INTO `ciy_arearpc` VALUES (310000, 0, '上海市');
+INSERT INTO `ciy_arearpc` VALUES (310100, 310000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (310101, 310100, '黄浦区');
+INSERT INTO `ciy_arearpc` VALUES (310104, 310100, '徐汇区');
+INSERT INTO `ciy_arearpc` VALUES (310105, 310100, '长宁区');
+INSERT INTO `ciy_arearpc` VALUES (310106, 310100, '静安区');
+INSERT INTO `ciy_arearpc` VALUES (310107, 310100, '普陀区');
+INSERT INTO `ciy_arearpc` VALUES (310109, 310100, '虹口区');
+INSERT INTO `ciy_arearpc` VALUES (310110, 310100, '杨浦区');
+INSERT INTO `ciy_arearpc` VALUES (310112, 310100, '闵行区');
+INSERT INTO `ciy_arearpc` VALUES (310113, 310100, '宝山区');
+INSERT INTO `ciy_arearpc` VALUES (310114, 310100, '嘉定区');
+INSERT INTO `ciy_arearpc` VALUES (310115, 310100, '浦东新区');
+INSERT INTO `ciy_arearpc` VALUES (310116, 310100, '金山区');
+INSERT INTO `ciy_arearpc` VALUES (310117, 310100, '松江区');
+INSERT INTO `ciy_arearpc` VALUES (310118, 310100, '青浦区');
+INSERT INTO `ciy_arearpc` VALUES (310120, 310100, '奉贤区');
+INSERT INTO `ciy_arearpc` VALUES (310151, 310100, '崇明区');
+INSERT INTO `ciy_arearpc` VALUES (320000, 0, '江苏省');
+INSERT INTO `ciy_arearpc` VALUES (320100, 320000, '南京市');
+INSERT INTO `ciy_arearpc` VALUES (320101, 320100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (320102, 320100, '玄武区');
+INSERT INTO `ciy_arearpc` VALUES (320104, 320100, '秦淮区');
+INSERT INTO `ciy_arearpc` VALUES (320105, 320100, '建邺区');
+INSERT INTO `ciy_arearpc` VALUES (320106, 320100, '鼓楼区');
+INSERT INTO `ciy_arearpc` VALUES (320111, 320100, '浦口区');
+INSERT INTO `ciy_arearpc` VALUES (320113, 320100, '栖霞区');
+INSERT INTO `ciy_arearpc` VALUES (320114, 320100, '雨花台区');
+INSERT INTO `ciy_arearpc` VALUES (320115, 320100, '江宁区');
+INSERT INTO `ciy_arearpc` VALUES (320116, 320100, '六合区');
+INSERT INTO `ciy_arearpc` VALUES (320117, 320100, '溧水区');
+INSERT INTO `ciy_arearpc` VALUES (320118, 320100, '高淳区');
+INSERT INTO `ciy_arearpc` VALUES (320200, 320000, '无锡市');
+INSERT INTO `ciy_arearpc` VALUES (320201, 320200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (320205, 320200, '锡山区');
+INSERT INTO `ciy_arearpc` VALUES (320206, 320200, '惠山区');
+INSERT INTO `ciy_arearpc` VALUES (320211, 320200, '滨湖区');
+INSERT INTO `ciy_arearpc` VALUES (320213, 320200, '梁溪区');
+INSERT INTO `ciy_arearpc` VALUES (320214, 320200, '新吴区');
+INSERT INTO `ciy_arearpc` VALUES (320281, 320200, '江阴市');
+INSERT INTO `ciy_arearpc` VALUES (320282, 320200, '宜兴市');
+INSERT INTO `ciy_arearpc` VALUES (320300, 320000, '徐州市');
+INSERT INTO `ciy_arearpc` VALUES (320301, 320300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (320302, 320300, '鼓楼区');
+INSERT INTO `ciy_arearpc` VALUES (320303, 320300, '云龙区');
+INSERT INTO `ciy_arearpc` VALUES (320305, 320300, '贾汪区');
+INSERT INTO `ciy_arearpc` VALUES (320311, 320300, '泉山区');
+INSERT INTO `ciy_arearpc` VALUES (320312, 320300, '铜山区');
+INSERT INTO `ciy_arearpc` VALUES (320321, 320300, '丰县');
+INSERT INTO `ciy_arearpc` VALUES (320322, 320300, '沛县');
+INSERT INTO `ciy_arearpc` VALUES (320324, 320300, '睢宁县');
+INSERT INTO `ciy_arearpc` VALUES (320371, 320300, '徐州经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (320381, 320300, '新沂市');
+INSERT INTO `ciy_arearpc` VALUES (320382, 320300, '邳州市');
+INSERT INTO `ciy_arearpc` VALUES (320400, 320000, '常州市');
+INSERT INTO `ciy_arearpc` VALUES (320401, 320400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (320402, 320400, '天宁区');
+INSERT INTO `ciy_arearpc` VALUES (320404, 320400, '钟楼区');
+INSERT INTO `ciy_arearpc` VALUES (320411, 320400, '新北区');
+INSERT INTO `ciy_arearpc` VALUES (320412, 320400, '武进区');
+INSERT INTO `ciy_arearpc` VALUES (320413, 320400, '金坛区');
+INSERT INTO `ciy_arearpc` VALUES (320481, 320400, '溧阳市');
+INSERT INTO `ciy_arearpc` VALUES (320500, 320000, '苏州市');
+INSERT INTO `ciy_arearpc` VALUES (320501, 320500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (320505, 320500, '虎丘区');
+INSERT INTO `ciy_arearpc` VALUES (320506, 320500, '吴中区');
+INSERT INTO `ciy_arearpc` VALUES (320507, 320500, '相城区');
+INSERT INTO `ciy_arearpc` VALUES (320508, 320500, '姑苏区');
+INSERT INTO `ciy_arearpc` VALUES (320509, 320500, '吴江区');
+INSERT INTO `ciy_arearpc` VALUES (320571, 320500, '苏州工业园区');
+INSERT INTO `ciy_arearpc` VALUES (320581, 320500, '常熟市');
+INSERT INTO `ciy_arearpc` VALUES (320582, 320500, '张家港市');
+INSERT INTO `ciy_arearpc` VALUES (320583, 320500, '昆山市');
+INSERT INTO `ciy_arearpc` VALUES (320585, 320500, '太仓市');
+INSERT INTO `ciy_arearpc` VALUES (320600, 320000, '南通市');
+INSERT INTO `ciy_arearpc` VALUES (320601, 320600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (320612, 320600, '通州区');
+INSERT INTO `ciy_arearpc` VALUES (320613, 320600, '崇川区');
+INSERT INTO `ciy_arearpc` VALUES (320614, 320600, '海门区');
+INSERT INTO `ciy_arearpc` VALUES (320623, 320600, '如东县');
+INSERT INTO `ciy_arearpc` VALUES (320671, 320600, '南通经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (320681, 320600, '启东市');
+INSERT INTO `ciy_arearpc` VALUES (320682, 320600, '如皋市');
+INSERT INTO `ciy_arearpc` VALUES (320685, 320600, '海安市');
+INSERT INTO `ciy_arearpc` VALUES (320700, 320000, '连云港市');
+INSERT INTO `ciy_arearpc` VALUES (320701, 320700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (320703, 320700, '连云区');
+INSERT INTO `ciy_arearpc` VALUES (320706, 320700, '海州区');
+INSERT INTO `ciy_arearpc` VALUES (320707, 320700, '赣榆区');
+INSERT INTO `ciy_arearpc` VALUES (320722, 320700, '东海县');
+INSERT INTO `ciy_arearpc` VALUES (320723, 320700, '灌云县');
+INSERT INTO `ciy_arearpc` VALUES (320724, 320700, '灌南县');
+INSERT INTO `ciy_arearpc` VALUES (320771, 320700, '连云港经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (320772, 320700, '连云港高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (320800, 320000, '淮安市');
+INSERT INTO `ciy_arearpc` VALUES (320801, 320800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (320803, 320800, '淮安区');
+INSERT INTO `ciy_arearpc` VALUES (320804, 320800, '淮阴区');
+INSERT INTO `ciy_arearpc` VALUES (320812, 320800, '清江浦区');
+INSERT INTO `ciy_arearpc` VALUES (320813, 320800, '洪泽区');
+INSERT INTO `ciy_arearpc` VALUES (320826, 320800, '涟水县');
+INSERT INTO `ciy_arearpc` VALUES (320830, 320800, '盱眙县');
+INSERT INTO `ciy_arearpc` VALUES (320831, 320800, '金湖县');
+INSERT INTO `ciy_arearpc` VALUES (320871, 320800, '淮安经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (320900, 320000, '盐城市');
+INSERT INTO `ciy_arearpc` VALUES (320901, 320900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (320902, 320900, '亭湖区');
+INSERT INTO `ciy_arearpc` VALUES (320903, 320900, '盐都区');
+INSERT INTO `ciy_arearpc` VALUES (320904, 320900, '大丰区');
+INSERT INTO `ciy_arearpc` VALUES (320921, 320900, '响水县');
+INSERT INTO `ciy_arearpc` VALUES (320922, 320900, '滨海县');
+INSERT INTO `ciy_arearpc` VALUES (320923, 320900, '阜宁县');
+INSERT INTO `ciy_arearpc` VALUES (320924, 320900, '射阳县');
+INSERT INTO `ciy_arearpc` VALUES (320925, 320900, '建湖县');
+INSERT INTO `ciy_arearpc` VALUES (320971, 320900, '盐城经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (320981, 320900, '东台市');
+INSERT INTO `ciy_arearpc` VALUES (321000, 320000, '扬州市');
+INSERT INTO `ciy_arearpc` VALUES (321001, 321000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (321002, 321000, '广陵区');
+INSERT INTO `ciy_arearpc` VALUES (321003, 321000, '邗江区');
+INSERT INTO `ciy_arearpc` VALUES (321012, 321000, '江都区');
+INSERT INTO `ciy_arearpc` VALUES (321023, 321000, '宝应县');
+INSERT INTO `ciy_arearpc` VALUES (321071, 321000, '扬州经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (321081, 321000, '仪征市');
+INSERT INTO `ciy_arearpc` VALUES (321084, 321000, '高邮市');
+INSERT INTO `ciy_arearpc` VALUES (321100, 320000, '镇江市');
+INSERT INTO `ciy_arearpc` VALUES (321101, 321100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (321102, 321100, '京口区');
+INSERT INTO `ciy_arearpc` VALUES (321111, 321100, '润州区');
+INSERT INTO `ciy_arearpc` VALUES (321112, 321100, '丹徒区');
+INSERT INTO `ciy_arearpc` VALUES (321171, 321100, '镇江新区');
+INSERT INTO `ciy_arearpc` VALUES (321181, 321100, '丹阳市');
+INSERT INTO `ciy_arearpc` VALUES (321182, 321100, '扬中市');
+INSERT INTO `ciy_arearpc` VALUES (321183, 321100, '句容市');
+INSERT INTO `ciy_arearpc` VALUES (321200, 320000, '泰州市');
+INSERT INTO `ciy_arearpc` VALUES (321201, 321200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (321202, 321200, '海陵区');
+INSERT INTO `ciy_arearpc` VALUES (321203, 321200, '高港区');
+INSERT INTO `ciy_arearpc` VALUES (321204, 321200, '姜堰区');
+INSERT INTO `ciy_arearpc` VALUES (321271, 321200, '泰州医药高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (321281, 321200, '兴化市');
+INSERT INTO `ciy_arearpc` VALUES (321282, 321200, '靖江市');
+INSERT INTO `ciy_arearpc` VALUES (321283, 321200, '泰兴市');
+INSERT INTO `ciy_arearpc` VALUES (321300, 320000, '宿迁市');
+INSERT INTO `ciy_arearpc` VALUES (321301, 321300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (321302, 321300, '宿城区');
+INSERT INTO `ciy_arearpc` VALUES (321311, 321300, '宿豫区');
+INSERT INTO `ciy_arearpc` VALUES (321322, 321300, '沭阳县');
+INSERT INTO `ciy_arearpc` VALUES (321323, 321300, '泗阳县');
+INSERT INTO `ciy_arearpc` VALUES (321324, 321300, '泗洪县');
+INSERT INTO `ciy_arearpc` VALUES (321371, 321300, '宿迁经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (330000, 0, '浙江省');
+INSERT INTO `ciy_arearpc` VALUES (330100, 330000, '杭州市');
+INSERT INTO `ciy_arearpc` VALUES (330101, 330100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (330102, 330100, '上城区');
+INSERT INTO `ciy_arearpc` VALUES (330105, 330100, '拱墅区');
+INSERT INTO `ciy_arearpc` VALUES (330106, 330100, '西湖区');
+INSERT INTO `ciy_arearpc` VALUES (330108, 330100, '滨江区');
+INSERT INTO `ciy_arearpc` VALUES (330109, 330100, '萧山区');
+INSERT INTO `ciy_arearpc` VALUES (330110, 330100, '余杭区');
+INSERT INTO `ciy_arearpc` VALUES (330111, 330100, '富阳区');
+INSERT INTO `ciy_arearpc` VALUES (330112, 330100, '临安区');
+INSERT INTO `ciy_arearpc` VALUES (330113, 330100, '临平区');
+INSERT INTO `ciy_arearpc` VALUES (330114, 330100, '钱塘区');
+INSERT INTO `ciy_arearpc` VALUES (330122, 330100, '桐庐县');
+INSERT INTO `ciy_arearpc` VALUES (330127, 330100, '淳安县');
+INSERT INTO `ciy_arearpc` VALUES (330182, 330100, '建德市');
+INSERT INTO `ciy_arearpc` VALUES (330200, 330000, '宁波市');
+INSERT INTO `ciy_arearpc` VALUES (330201, 330200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (330203, 330200, '海曙区');
+INSERT INTO `ciy_arearpc` VALUES (330205, 330200, '江北区');
+INSERT INTO `ciy_arearpc` VALUES (330206, 330200, '北仑区');
+INSERT INTO `ciy_arearpc` VALUES (330211, 330200, '镇海区');
+INSERT INTO `ciy_arearpc` VALUES (330212, 330200, '鄞州区');
+INSERT INTO `ciy_arearpc` VALUES (330213, 330200, '奉化区');
+INSERT INTO `ciy_arearpc` VALUES (330225, 330200, '象山县');
+INSERT INTO `ciy_arearpc` VALUES (330226, 330200, '宁海县');
+INSERT INTO `ciy_arearpc` VALUES (330281, 330200, '余姚市');
+INSERT INTO `ciy_arearpc` VALUES (330282, 330200, '慈溪市');
+INSERT INTO `ciy_arearpc` VALUES (330300, 330000, '温州市');
+INSERT INTO `ciy_arearpc` VALUES (330301, 330300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (330302, 330300, '鹿城区');
+INSERT INTO `ciy_arearpc` VALUES (330303, 330300, '龙湾区');
+INSERT INTO `ciy_arearpc` VALUES (330304, 330300, '瓯海区');
+INSERT INTO `ciy_arearpc` VALUES (330305, 330300, '洞头区');
+INSERT INTO `ciy_arearpc` VALUES (330324, 330300, '永嘉县');
+INSERT INTO `ciy_arearpc` VALUES (330326, 330300, '平阳县');
+INSERT INTO `ciy_arearpc` VALUES (330327, 330300, '苍南县');
+INSERT INTO `ciy_arearpc` VALUES (330328, 330300, '文成县');
+INSERT INTO `ciy_arearpc` VALUES (330329, 330300, '泰顺县');
+INSERT INTO `ciy_arearpc` VALUES (330371, 330300, '温州经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (330381, 330300, '瑞安市');
+INSERT INTO `ciy_arearpc` VALUES (330382, 330300, '乐清市');
+INSERT INTO `ciy_arearpc` VALUES (330383, 330300, '龙港市');
+INSERT INTO `ciy_arearpc` VALUES (330400, 330000, '嘉兴市');
+INSERT INTO `ciy_arearpc` VALUES (330401, 330400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (330402, 330400, '南湖区');
+INSERT INTO `ciy_arearpc` VALUES (330411, 330400, '秀洲区');
+INSERT INTO `ciy_arearpc` VALUES (330421, 330400, '嘉善县');
+INSERT INTO `ciy_arearpc` VALUES (330424, 330400, '海盐县');
+INSERT INTO `ciy_arearpc` VALUES (330481, 330400, '海宁市');
+INSERT INTO `ciy_arearpc` VALUES (330482, 330400, '平湖市');
+INSERT INTO `ciy_arearpc` VALUES (330483, 330400, '桐乡市');
+INSERT INTO `ciy_arearpc` VALUES (330500, 330000, '湖州市');
+INSERT INTO `ciy_arearpc` VALUES (330501, 330500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (330502, 330500, '吴兴区');
+INSERT INTO `ciy_arearpc` VALUES (330503, 330500, '南浔区');
+INSERT INTO `ciy_arearpc` VALUES (330521, 330500, '德清县');
+INSERT INTO `ciy_arearpc` VALUES (330522, 330500, '长兴县');
+INSERT INTO `ciy_arearpc` VALUES (330523, 330500, '安吉县');
+INSERT INTO `ciy_arearpc` VALUES (330600, 330000, '绍兴市');
+INSERT INTO `ciy_arearpc` VALUES (330601, 330600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (330602, 330600, '越城区');
+INSERT INTO `ciy_arearpc` VALUES (330603, 330600, '柯桥区');
+INSERT INTO `ciy_arearpc` VALUES (330604, 330600, '上虞区');
+INSERT INTO `ciy_arearpc` VALUES (330624, 330600, '新昌县');
+INSERT INTO `ciy_arearpc` VALUES (330681, 330600, '诸暨市');
+INSERT INTO `ciy_arearpc` VALUES (330683, 330600, '嵊州市');
+INSERT INTO `ciy_arearpc` VALUES (330700, 330000, '金华市');
+INSERT INTO `ciy_arearpc` VALUES (330701, 330700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (330702, 330700, '婺城区');
+INSERT INTO `ciy_arearpc` VALUES (330703, 330700, '金东区');
+INSERT INTO `ciy_arearpc` VALUES (330723, 330700, '武义县');
+INSERT INTO `ciy_arearpc` VALUES (330726, 330700, '浦江县');
+INSERT INTO `ciy_arearpc` VALUES (330727, 330700, '磐安县');
+INSERT INTO `ciy_arearpc` VALUES (330781, 330700, '兰溪市');
+INSERT INTO `ciy_arearpc` VALUES (330782, 330700, '义乌市');
+INSERT INTO `ciy_arearpc` VALUES (330783, 330700, '东阳市');
+INSERT INTO `ciy_arearpc` VALUES (330784, 330700, '永康市');
+INSERT INTO `ciy_arearpc` VALUES (330800, 330000, '衢州市');
+INSERT INTO `ciy_arearpc` VALUES (330801, 330800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (330802, 330800, '柯城区');
+INSERT INTO `ciy_arearpc` VALUES (330803, 330800, '衢江区');
+INSERT INTO `ciy_arearpc` VALUES (330822, 330800, '常山县');
+INSERT INTO `ciy_arearpc` VALUES (330824, 330800, '开化县');
+INSERT INTO `ciy_arearpc` VALUES (330825, 330800, '龙游县');
+INSERT INTO `ciy_arearpc` VALUES (330881, 330800, '江山市');
+INSERT INTO `ciy_arearpc` VALUES (330900, 330000, '舟山市');
+INSERT INTO `ciy_arearpc` VALUES (330901, 330900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (330902, 330900, '定海区');
+INSERT INTO `ciy_arearpc` VALUES (330903, 330900, '普陀区');
+INSERT INTO `ciy_arearpc` VALUES (330921, 330900, '岱山县');
+INSERT INTO `ciy_arearpc` VALUES (330922, 330900, '嵊泗县');
+INSERT INTO `ciy_arearpc` VALUES (331000, 330000, '台州市');
+INSERT INTO `ciy_arearpc` VALUES (331001, 331000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (331002, 331000, '椒江区');
+INSERT INTO `ciy_arearpc` VALUES (331003, 331000, '黄岩区');
+INSERT INTO `ciy_arearpc` VALUES (331004, 331000, '路桥区');
+INSERT INTO `ciy_arearpc` VALUES (331022, 331000, '三门县');
+INSERT INTO `ciy_arearpc` VALUES (331023, 331000, '天台县');
+INSERT INTO `ciy_arearpc` VALUES (331024, 331000, '仙居县');
+INSERT INTO `ciy_arearpc` VALUES (331081, 331000, '温岭市');
+INSERT INTO `ciy_arearpc` VALUES (331082, 331000, '临海市');
+INSERT INTO `ciy_arearpc` VALUES (331083, 331000, '玉环市');
+INSERT INTO `ciy_arearpc` VALUES (331100, 330000, '丽水市');
+INSERT INTO `ciy_arearpc` VALUES (331101, 331100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (331102, 331100, '莲都区');
+INSERT INTO `ciy_arearpc` VALUES (331121, 331100, '青田县');
+INSERT INTO `ciy_arearpc` VALUES (331122, 331100, '缙云县');
+INSERT INTO `ciy_arearpc` VALUES (331123, 331100, '遂昌县');
+INSERT INTO `ciy_arearpc` VALUES (331124, 331100, '松阳县');
+INSERT INTO `ciy_arearpc` VALUES (331125, 331100, '云和县');
+INSERT INTO `ciy_arearpc` VALUES (331126, 331100, '庆元县');
+INSERT INTO `ciy_arearpc` VALUES (331127, 331100, '景宁畲族自治县');
+INSERT INTO `ciy_arearpc` VALUES (331181, 331100, '龙泉市');
+INSERT INTO `ciy_arearpc` VALUES (340000, 0, '安徽省');
+INSERT INTO `ciy_arearpc` VALUES (340100, 340000, '合肥市');
+INSERT INTO `ciy_arearpc` VALUES (340101, 340100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (340102, 340100, '瑶海区');
+INSERT INTO `ciy_arearpc` VALUES (340103, 340100, '庐阳区');
+INSERT INTO `ciy_arearpc` VALUES (340104, 340100, '蜀山区');
+INSERT INTO `ciy_arearpc` VALUES (340111, 340100, '包河区');
+INSERT INTO `ciy_arearpc` VALUES (340121, 340100, '长丰县');
+INSERT INTO `ciy_arearpc` VALUES (340122, 340100, '肥东县');
+INSERT INTO `ciy_arearpc` VALUES (340123, 340100, '肥西县');
+INSERT INTO `ciy_arearpc` VALUES (340124, 340100, '庐江县');
+INSERT INTO `ciy_arearpc` VALUES (340171, 340100, '合肥高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (340172, 340100, '合肥经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (340173, 340100, '合肥新站高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (340181, 340100, '巢湖市');
+INSERT INTO `ciy_arearpc` VALUES (340200, 340000, '芜湖市');
+INSERT INTO `ciy_arearpc` VALUES (340201, 340200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (340202, 340200, '镜湖区');
+INSERT INTO `ciy_arearpc` VALUES (340207, 340200, '鸠江区');
+INSERT INTO `ciy_arearpc` VALUES (340209, 340200, '弋江区');
+INSERT INTO `ciy_arearpc` VALUES (340210, 340200, '湾沚区');
+INSERT INTO `ciy_arearpc` VALUES (340212, 340200, '繁昌区');
+INSERT INTO `ciy_arearpc` VALUES (340223, 340200, '南陵县');
+INSERT INTO `ciy_arearpc` VALUES (340271, 340200, '芜湖经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (340272, 340200, '安徽芜湖三山经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (340281, 340200, '无为市');
+INSERT INTO `ciy_arearpc` VALUES (340300, 340000, '蚌埠市');
+INSERT INTO `ciy_arearpc` VALUES (340301, 340300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (340302, 340300, '龙子湖区');
+INSERT INTO `ciy_arearpc` VALUES (340303, 340300, '蚌山区');
+INSERT INTO `ciy_arearpc` VALUES (340304, 340300, '禹会区');
+INSERT INTO `ciy_arearpc` VALUES (340311, 340300, '淮上区');
+INSERT INTO `ciy_arearpc` VALUES (340321, 340300, '怀远县');
+INSERT INTO `ciy_arearpc` VALUES (340322, 340300, '五河县');
+INSERT INTO `ciy_arearpc` VALUES (340323, 340300, '固镇县');
+INSERT INTO `ciy_arearpc` VALUES (340371, 340300, '蚌埠市高新技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (340372, 340300, '蚌埠市经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (340400, 340000, '淮南市');
+INSERT INTO `ciy_arearpc` VALUES (340401, 340400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (340402, 340400, '大通区');
+INSERT INTO `ciy_arearpc` VALUES (340403, 340400, '田家庵区');
+INSERT INTO `ciy_arearpc` VALUES (340404, 340400, '谢家集区');
+INSERT INTO `ciy_arearpc` VALUES (340405, 340400, '八公山区');
+INSERT INTO `ciy_arearpc` VALUES (340406, 340400, '潘集区');
+INSERT INTO `ciy_arearpc` VALUES (340421, 340400, '凤台县');
+INSERT INTO `ciy_arearpc` VALUES (340422, 340400, '寿县');
+INSERT INTO `ciy_arearpc` VALUES (340500, 340000, '马鞍山市');
+INSERT INTO `ciy_arearpc` VALUES (340501, 340500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (340503, 340500, '花山区');
+INSERT INTO `ciy_arearpc` VALUES (340504, 340500, '雨山区');
+INSERT INTO `ciy_arearpc` VALUES (340506, 340500, '博望区');
+INSERT INTO `ciy_arearpc` VALUES (340521, 340500, '当涂县');
+INSERT INTO `ciy_arearpc` VALUES (340522, 340500, '含山县');
+INSERT INTO `ciy_arearpc` VALUES (340523, 340500, '和县');
+INSERT INTO `ciy_arearpc` VALUES (340600, 340000, '淮北市');
+INSERT INTO `ciy_arearpc` VALUES (340601, 340600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (340602, 340600, '杜集区');
+INSERT INTO `ciy_arearpc` VALUES (340603, 340600, '相山区');
+INSERT INTO `ciy_arearpc` VALUES (340604, 340600, '烈山区');
+INSERT INTO `ciy_arearpc` VALUES (340621, 340600, '濉溪县');
+INSERT INTO `ciy_arearpc` VALUES (340700, 340000, '铜陵市');
+INSERT INTO `ciy_arearpc` VALUES (340701, 340700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (340705, 340700, '铜官区');
+INSERT INTO `ciy_arearpc` VALUES (340706, 340700, '义安区');
+INSERT INTO `ciy_arearpc` VALUES (340711, 340700, '郊区');
+INSERT INTO `ciy_arearpc` VALUES (340722, 340700, '枞阳县');
+INSERT INTO `ciy_arearpc` VALUES (340800, 340000, '安庆市');
+INSERT INTO `ciy_arearpc` VALUES (340801, 340800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (340802, 340800, '迎江区');
+INSERT INTO `ciy_arearpc` VALUES (340803, 340800, '大观区');
+INSERT INTO `ciy_arearpc` VALUES (340811, 340800, '宜秀区');
+INSERT INTO `ciy_arearpc` VALUES (340822, 340800, '怀宁县');
+INSERT INTO `ciy_arearpc` VALUES (340825, 340800, '太湖县');
+INSERT INTO `ciy_arearpc` VALUES (340826, 340800, '宿松县');
+INSERT INTO `ciy_arearpc` VALUES (340827, 340800, '望江县');
+INSERT INTO `ciy_arearpc` VALUES (340828, 340800, '岳西县');
+INSERT INTO `ciy_arearpc` VALUES (340871, 340800, '安徽安庆经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (340881, 340800, '桐城市');
+INSERT INTO `ciy_arearpc` VALUES (340882, 340800, '潜山市');
+INSERT INTO `ciy_arearpc` VALUES (341000, 340000, '黄山市');
+INSERT INTO `ciy_arearpc` VALUES (341001, 341000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (341002, 341000, '屯溪区');
+INSERT INTO `ciy_arearpc` VALUES (341003, 341000, '黄山区');
+INSERT INTO `ciy_arearpc` VALUES (341004, 341000, '徽州区');
+INSERT INTO `ciy_arearpc` VALUES (341021, 341000, '歙县');
+INSERT INTO `ciy_arearpc` VALUES (341022, 341000, '休宁县');
+INSERT INTO `ciy_arearpc` VALUES (341023, 341000, '黟县');
+INSERT INTO `ciy_arearpc` VALUES (341024, 341000, '祁门县');
+INSERT INTO `ciy_arearpc` VALUES (341100, 340000, '滁州市');
+INSERT INTO `ciy_arearpc` VALUES (341101, 341100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (341102, 341100, '琅琊区');
+INSERT INTO `ciy_arearpc` VALUES (341103, 341100, '南谯区');
+INSERT INTO `ciy_arearpc` VALUES (341122, 341100, '来安县');
+INSERT INTO `ciy_arearpc` VALUES (341124, 341100, '全椒县');
+INSERT INTO `ciy_arearpc` VALUES (341125, 341100, '定远县');
+INSERT INTO `ciy_arearpc` VALUES (341126, 341100, '凤阳县');
+INSERT INTO `ciy_arearpc` VALUES (341171, 341100, '中新苏滁高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (341172, 341100, '滁州经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (341181, 341100, '天长市');
+INSERT INTO `ciy_arearpc` VALUES (341182, 341100, '明光市');
+INSERT INTO `ciy_arearpc` VALUES (341200, 340000, '阜阳市');
+INSERT INTO `ciy_arearpc` VALUES (341201, 341200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (341202, 341200, '颍州区');
+INSERT INTO `ciy_arearpc` VALUES (341203, 341200, '颍东区');
+INSERT INTO `ciy_arearpc` VALUES (341204, 341200, '颍泉区');
+INSERT INTO `ciy_arearpc` VALUES (341221, 341200, '临泉县');
+INSERT INTO `ciy_arearpc` VALUES (341222, 341200, '太和县');
+INSERT INTO `ciy_arearpc` VALUES (341225, 341200, '阜南县');
+INSERT INTO `ciy_arearpc` VALUES (341226, 341200, '颍上县');
+INSERT INTO `ciy_arearpc` VALUES (341271, 341200, '阜阳合肥现代产业园区');
+INSERT INTO `ciy_arearpc` VALUES (341272, 341200, '阜阳经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (341282, 341200, '界首市');
+INSERT INTO `ciy_arearpc` VALUES (341300, 340000, '宿州市');
+INSERT INTO `ciy_arearpc` VALUES (341301, 341300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (341302, 341300, '埇桥区');
+INSERT INTO `ciy_arearpc` VALUES (341321, 341300, '砀山县');
+INSERT INTO `ciy_arearpc` VALUES (341322, 341300, '萧县');
+INSERT INTO `ciy_arearpc` VALUES (341323, 341300, '灵璧县');
+INSERT INTO `ciy_arearpc` VALUES (341324, 341300, '泗县');
+INSERT INTO `ciy_arearpc` VALUES (341371, 341300, '宿州马鞍山现代产业园区');
+INSERT INTO `ciy_arearpc` VALUES (341372, 341300, '宿州经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (341500, 340000, '六安市');
+INSERT INTO `ciy_arearpc` VALUES (341501, 341500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (341502, 341500, '金安区');
+INSERT INTO `ciy_arearpc` VALUES (341503, 341500, '裕安区');
+INSERT INTO `ciy_arearpc` VALUES (341504, 341500, '叶集区');
+INSERT INTO `ciy_arearpc` VALUES (341522, 341500, '霍邱县');
+INSERT INTO `ciy_arearpc` VALUES (341523, 341500, '舒城县');
+INSERT INTO `ciy_arearpc` VALUES (341524, 341500, '金寨县');
+INSERT INTO `ciy_arearpc` VALUES (341525, 341500, '霍山县');
+INSERT INTO `ciy_arearpc` VALUES (341600, 340000, '亳州市');
+INSERT INTO `ciy_arearpc` VALUES (341601, 341600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (341602, 341600, '谯城区');
+INSERT INTO `ciy_arearpc` VALUES (341621, 341600, '涡阳县');
+INSERT INTO `ciy_arearpc` VALUES (341622, 341600, '蒙城县');
+INSERT INTO `ciy_arearpc` VALUES (341623, 341600, '利辛县');
+INSERT INTO `ciy_arearpc` VALUES (341700, 340000, '池州市');
+INSERT INTO `ciy_arearpc` VALUES (341701, 341700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (341702, 341700, '贵池区');
+INSERT INTO `ciy_arearpc` VALUES (341721, 341700, '东至县');
+INSERT INTO `ciy_arearpc` VALUES (341722, 341700, '石台县');
+INSERT INTO `ciy_arearpc` VALUES (341723, 341700, '青阳县');
+INSERT INTO `ciy_arearpc` VALUES (341800, 340000, '宣城市');
+INSERT INTO `ciy_arearpc` VALUES (341801, 341800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (341802, 341800, '宣州区');
+INSERT INTO `ciy_arearpc` VALUES (341821, 341800, '郎溪县');
+INSERT INTO `ciy_arearpc` VALUES (341823, 341800, '泾县');
+INSERT INTO `ciy_arearpc` VALUES (341824, 341800, '绩溪县');
+INSERT INTO `ciy_arearpc` VALUES (341825, 341800, '旌德县');
+INSERT INTO `ciy_arearpc` VALUES (341871, 341800, '宣城市经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (341881, 341800, '宁国市');
+INSERT INTO `ciy_arearpc` VALUES (341882, 341800, '广德市');
+INSERT INTO `ciy_arearpc` VALUES (350000, 0, '福建省');
+INSERT INTO `ciy_arearpc` VALUES (350100, 350000, '福州市');
+INSERT INTO `ciy_arearpc` VALUES (350101, 350100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (350102, 350100, '鼓楼区');
+INSERT INTO `ciy_arearpc` VALUES (350103, 350100, '台江区');
+INSERT INTO `ciy_arearpc` VALUES (350104, 350100, '仓山区');
+INSERT INTO `ciy_arearpc` VALUES (350105, 350100, '马尾区');
+INSERT INTO `ciy_arearpc` VALUES (350111, 350100, '晋安区');
+INSERT INTO `ciy_arearpc` VALUES (350112, 350100, '长乐区');
+INSERT INTO `ciy_arearpc` VALUES (350121, 350100, '闽侯县');
+INSERT INTO `ciy_arearpc` VALUES (350122, 350100, '连江县');
+INSERT INTO `ciy_arearpc` VALUES (350123, 350100, '罗源县');
+INSERT INTO `ciy_arearpc` VALUES (350124, 350100, '闽清县');
+INSERT INTO `ciy_arearpc` VALUES (350125, 350100, '永泰县');
+INSERT INTO `ciy_arearpc` VALUES (350128, 350100, '平潭县');
+INSERT INTO `ciy_arearpc` VALUES (350181, 350100, '福清市');
+INSERT INTO `ciy_arearpc` VALUES (350200, 350000, '厦门市');
+INSERT INTO `ciy_arearpc` VALUES (350201, 350200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (350203, 350200, '思明区');
+INSERT INTO `ciy_arearpc` VALUES (350205, 350200, '海沧区');
+INSERT INTO `ciy_arearpc` VALUES (350206, 350200, '湖里区');
+INSERT INTO `ciy_arearpc` VALUES (350211, 350200, '集美区');
+INSERT INTO `ciy_arearpc` VALUES (350212, 350200, '同安区');
+INSERT INTO `ciy_arearpc` VALUES (350213, 350200, '翔安区');
+INSERT INTO `ciy_arearpc` VALUES (350300, 350000, '莆田市');
+INSERT INTO `ciy_arearpc` VALUES (350301, 350300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (350302, 350300, '城厢区');
+INSERT INTO `ciy_arearpc` VALUES (350303, 350300, '涵江区');
+INSERT INTO `ciy_arearpc` VALUES (350304, 350300, '荔城区');
+INSERT INTO `ciy_arearpc` VALUES (350305, 350300, '秀屿区');
+INSERT INTO `ciy_arearpc` VALUES (350322, 350300, '仙游县');
+INSERT INTO `ciy_arearpc` VALUES (350400, 350000, '三明市');
+INSERT INTO `ciy_arearpc` VALUES (350401, 350400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (350404, 350400, '三元区');
+INSERT INTO `ciy_arearpc` VALUES (350405, 350400, '沙县区');
+INSERT INTO `ciy_arearpc` VALUES (350421, 350400, '明溪县');
+INSERT INTO `ciy_arearpc` VALUES (350423, 350400, '清流县');
+INSERT INTO `ciy_arearpc` VALUES (350424, 350400, '宁化县');
+INSERT INTO `ciy_arearpc` VALUES (350425, 350400, '大田县');
+INSERT INTO `ciy_arearpc` VALUES (350426, 350400, '尤溪县');
+INSERT INTO `ciy_arearpc` VALUES (350428, 350400, '将乐县');
+INSERT INTO `ciy_arearpc` VALUES (350429, 350400, '泰宁县');
+INSERT INTO `ciy_arearpc` VALUES (350430, 350400, '建宁县');
+INSERT INTO `ciy_arearpc` VALUES (350481, 350400, '永安市');
+INSERT INTO `ciy_arearpc` VALUES (350500, 350000, '泉州市');
+INSERT INTO `ciy_arearpc` VALUES (350501, 350500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (350502, 350500, '鲤城区');
+INSERT INTO `ciy_arearpc` VALUES (350503, 350500, '丰泽区');
+INSERT INTO `ciy_arearpc` VALUES (350504, 350500, '洛江区');
+INSERT INTO `ciy_arearpc` VALUES (350505, 350500, '泉港区');
+INSERT INTO `ciy_arearpc` VALUES (350521, 350500, '惠安县');
+INSERT INTO `ciy_arearpc` VALUES (350524, 350500, '安溪县');
+INSERT INTO `ciy_arearpc` VALUES (350525, 350500, '永春县');
+INSERT INTO `ciy_arearpc` VALUES (350526, 350500, '德化县');
+INSERT INTO `ciy_arearpc` VALUES (350527, 350500, '金门县');
+INSERT INTO `ciy_arearpc` VALUES (350581, 350500, '石狮市');
+INSERT INTO `ciy_arearpc` VALUES (350582, 350500, '晋江市');
+INSERT INTO `ciy_arearpc` VALUES (350583, 350500, '南安市');
+INSERT INTO `ciy_arearpc` VALUES (350600, 350000, '漳州市');
+INSERT INTO `ciy_arearpc` VALUES (350601, 350600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (350602, 350600, '芗城区');
+INSERT INTO `ciy_arearpc` VALUES (350603, 350600, '龙文区');
+INSERT INTO `ciy_arearpc` VALUES (350604, 350600, '龙海区');
+INSERT INTO `ciy_arearpc` VALUES (350605, 350600, '长泰区');
+INSERT INTO `ciy_arearpc` VALUES (350622, 350600, '云霄县');
+INSERT INTO `ciy_arearpc` VALUES (350623, 350600, '漳浦县');
+INSERT INTO `ciy_arearpc` VALUES (350624, 350600, '诏安县');
+INSERT INTO `ciy_arearpc` VALUES (350626, 350600, '东山县');
+INSERT INTO `ciy_arearpc` VALUES (350627, 350600, '南靖县');
+INSERT INTO `ciy_arearpc` VALUES (350628, 350600, '平和县');
+INSERT INTO `ciy_arearpc` VALUES (350629, 350600, '华安县');
+INSERT INTO `ciy_arearpc` VALUES (350700, 350000, '南平市');
+INSERT INTO `ciy_arearpc` VALUES (350701, 350700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (350702, 350700, '延平区');
+INSERT INTO `ciy_arearpc` VALUES (350703, 350700, '建阳区');
+INSERT INTO `ciy_arearpc` VALUES (350721, 350700, '顺昌县');
+INSERT INTO `ciy_arearpc` VALUES (350722, 350700, '浦城县');
+INSERT INTO `ciy_arearpc` VALUES (350723, 350700, '光泽县');
+INSERT INTO `ciy_arearpc` VALUES (350724, 350700, '松溪县');
+INSERT INTO `ciy_arearpc` VALUES (350725, 350700, '政和县');
+INSERT INTO `ciy_arearpc` VALUES (350781, 350700, '邵武市');
+INSERT INTO `ciy_arearpc` VALUES (350782, 350700, '武夷山市');
+INSERT INTO `ciy_arearpc` VALUES (350783, 350700, '建瓯市');
+INSERT INTO `ciy_arearpc` VALUES (350800, 350000, '龙岩市');
+INSERT INTO `ciy_arearpc` VALUES (350801, 350800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (350802, 350800, '新罗区');
+INSERT INTO `ciy_arearpc` VALUES (350803, 350800, '永定区');
+INSERT INTO `ciy_arearpc` VALUES (350821, 350800, '长汀县');
+INSERT INTO `ciy_arearpc` VALUES (350823, 350800, '上杭县');
+INSERT INTO `ciy_arearpc` VALUES (350824, 350800, '武平县');
+INSERT INTO `ciy_arearpc` VALUES (350825, 350800, '连城县');
+INSERT INTO `ciy_arearpc` VALUES (350881, 350800, '漳平市');
+INSERT INTO `ciy_arearpc` VALUES (350900, 350000, '宁德市');
+INSERT INTO `ciy_arearpc` VALUES (350901, 350900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (350902, 350900, '蕉城区');
+INSERT INTO `ciy_arearpc` VALUES (350921, 350900, '霞浦县');
+INSERT INTO `ciy_arearpc` VALUES (350922, 350900, '古田县');
+INSERT INTO `ciy_arearpc` VALUES (350923, 350900, '屏南县');
+INSERT INTO `ciy_arearpc` VALUES (350924, 350900, '寿宁县');
+INSERT INTO `ciy_arearpc` VALUES (350925, 350900, '周宁县');
+INSERT INTO `ciy_arearpc` VALUES (350926, 350900, '柘荣县');
+INSERT INTO `ciy_arearpc` VALUES (350981, 350900, '福安市');
+INSERT INTO `ciy_arearpc` VALUES (350982, 350900, '福鼎市');
+INSERT INTO `ciy_arearpc` VALUES (360000, 0, '江西省');
+INSERT INTO `ciy_arearpc` VALUES (360100, 360000, '南昌市');
+INSERT INTO `ciy_arearpc` VALUES (360101, 360100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (360102, 360100, '东湖区');
+INSERT INTO `ciy_arearpc` VALUES (360103, 360100, '西湖区');
+INSERT INTO `ciy_arearpc` VALUES (360104, 360100, '青云谱区');
+INSERT INTO `ciy_arearpc` VALUES (360111, 360100, '青山湖区');
+INSERT INTO `ciy_arearpc` VALUES (360112, 360100, '新建区');
+INSERT INTO `ciy_arearpc` VALUES (360113, 360100, '红谷滩区');
+INSERT INTO `ciy_arearpc` VALUES (360121, 360100, '南昌县');
+INSERT INTO `ciy_arearpc` VALUES (360123, 360100, '安义县');
+INSERT INTO `ciy_arearpc` VALUES (360124, 360100, '进贤县');
+INSERT INTO `ciy_arearpc` VALUES (360200, 360000, '景德镇市');
+INSERT INTO `ciy_arearpc` VALUES (360201, 360200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (360202, 360200, '昌江区');
+INSERT INTO `ciy_arearpc` VALUES (360203, 360200, '珠山区');
+INSERT INTO `ciy_arearpc` VALUES (360222, 360200, '浮梁县');
+INSERT INTO `ciy_arearpc` VALUES (360281, 360200, '乐平市');
+INSERT INTO `ciy_arearpc` VALUES (360300, 360000, '萍乡市');
+INSERT INTO `ciy_arearpc` VALUES (360301, 360300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (360302, 360300, '安源区');
+INSERT INTO `ciy_arearpc` VALUES (360313, 360300, '湘东区');
+INSERT INTO `ciy_arearpc` VALUES (360321, 360300, '莲花县');
+INSERT INTO `ciy_arearpc` VALUES (360322, 360300, '上栗县');
+INSERT INTO `ciy_arearpc` VALUES (360323, 360300, '芦溪县');
+INSERT INTO `ciy_arearpc` VALUES (360400, 360000, '九江市');
+INSERT INTO `ciy_arearpc` VALUES (360401, 360400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (360402, 360400, '濂溪区');
+INSERT INTO `ciy_arearpc` VALUES (360403, 360400, '浔阳区');
+INSERT INTO `ciy_arearpc` VALUES (360404, 360400, '柴桑区');
+INSERT INTO `ciy_arearpc` VALUES (360423, 360400, '武宁县');
+INSERT INTO `ciy_arearpc` VALUES (360424, 360400, '修水县');
+INSERT INTO `ciy_arearpc` VALUES (360425, 360400, '永修县');
+INSERT INTO `ciy_arearpc` VALUES (360426, 360400, '德安县');
+INSERT INTO `ciy_arearpc` VALUES (360428, 360400, '都昌县');
+INSERT INTO `ciy_arearpc` VALUES (360429, 360400, '湖口县');
+INSERT INTO `ciy_arearpc` VALUES (360430, 360400, '彭泽县');
+INSERT INTO `ciy_arearpc` VALUES (360481, 360400, '瑞昌市');
+INSERT INTO `ciy_arearpc` VALUES (360482, 360400, '共青城市');
+INSERT INTO `ciy_arearpc` VALUES (360483, 360400, '庐山市');
+INSERT INTO `ciy_arearpc` VALUES (360500, 360000, '新余市');
+INSERT INTO `ciy_arearpc` VALUES (360501, 360500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (360502, 360500, '渝水区');
+INSERT INTO `ciy_arearpc` VALUES (360521, 360500, '分宜县');
+INSERT INTO `ciy_arearpc` VALUES (360600, 360000, '鹰潭市');
+INSERT INTO `ciy_arearpc` VALUES (360601, 360600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (360602, 360600, '月湖区');
+INSERT INTO `ciy_arearpc` VALUES (360603, 360600, '余江区');
+INSERT INTO `ciy_arearpc` VALUES (360681, 360600, '贵溪市');
+INSERT INTO `ciy_arearpc` VALUES (360700, 360000, '赣州市');
+INSERT INTO `ciy_arearpc` VALUES (360701, 360700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (360702, 360700, '章贡区');
+INSERT INTO `ciy_arearpc` VALUES (360703, 360700, '南康区');
+INSERT INTO `ciy_arearpc` VALUES (360704, 360700, '赣县区');
+INSERT INTO `ciy_arearpc` VALUES (360722, 360700, '信丰县');
+INSERT INTO `ciy_arearpc` VALUES (360723, 360700, '大余县');
+INSERT INTO `ciy_arearpc` VALUES (360724, 360700, '上犹县');
+INSERT INTO `ciy_arearpc` VALUES (360725, 360700, '崇义县');
+INSERT INTO `ciy_arearpc` VALUES (360726, 360700, '安远县');
+INSERT INTO `ciy_arearpc` VALUES (360728, 360700, '定南县');
+INSERT INTO `ciy_arearpc` VALUES (360729, 360700, '全南县');
+INSERT INTO `ciy_arearpc` VALUES (360730, 360700, '宁都县');
+INSERT INTO `ciy_arearpc` VALUES (360731, 360700, '于都县');
+INSERT INTO `ciy_arearpc` VALUES (360732, 360700, '兴国县');
+INSERT INTO `ciy_arearpc` VALUES (360733, 360700, '会昌县');
+INSERT INTO `ciy_arearpc` VALUES (360734, 360700, '寻乌县');
+INSERT INTO `ciy_arearpc` VALUES (360735, 360700, '石城县');
+INSERT INTO `ciy_arearpc` VALUES (360781, 360700, '瑞金市');
+INSERT INTO `ciy_arearpc` VALUES (360783, 360700, '龙南市');
+INSERT INTO `ciy_arearpc` VALUES (360800, 360000, '吉安市');
+INSERT INTO `ciy_arearpc` VALUES (360801, 360800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (360802, 360800, '吉州区');
+INSERT INTO `ciy_arearpc` VALUES (360803, 360800, '青原区');
+INSERT INTO `ciy_arearpc` VALUES (360821, 360800, '吉安县');
+INSERT INTO `ciy_arearpc` VALUES (360822, 360800, '吉水县');
+INSERT INTO `ciy_arearpc` VALUES (360823, 360800, '峡江县');
+INSERT INTO `ciy_arearpc` VALUES (360824, 360800, '新干县');
+INSERT INTO `ciy_arearpc` VALUES (360825, 360800, '永丰县');
+INSERT INTO `ciy_arearpc` VALUES (360826, 360800, '泰和县');
+INSERT INTO `ciy_arearpc` VALUES (360827, 360800, '遂川县');
+INSERT INTO `ciy_arearpc` VALUES (360828, 360800, '万安县');
+INSERT INTO `ciy_arearpc` VALUES (360829, 360800, '安福县');
+INSERT INTO `ciy_arearpc` VALUES (360830, 360800, '永新县');
+INSERT INTO `ciy_arearpc` VALUES (360881, 360800, '井冈山市');
+INSERT INTO `ciy_arearpc` VALUES (360900, 360000, '宜春市');
+INSERT INTO `ciy_arearpc` VALUES (360901, 360900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (360902, 360900, '袁州区');
+INSERT INTO `ciy_arearpc` VALUES (360921, 360900, '奉新县');
+INSERT INTO `ciy_arearpc` VALUES (360922, 360900, '万载县');
+INSERT INTO `ciy_arearpc` VALUES (360923, 360900, '上高县');
+INSERT INTO `ciy_arearpc` VALUES (360924, 360900, '宜丰县');
+INSERT INTO `ciy_arearpc` VALUES (360925, 360900, '靖安县');
+INSERT INTO `ciy_arearpc` VALUES (360926, 360900, '铜鼓县');
+INSERT INTO `ciy_arearpc` VALUES (360981, 360900, '丰城市');
+INSERT INTO `ciy_arearpc` VALUES (360982, 360900, '樟树市');
+INSERT INTO `ciy_arearpc` VALUES (360983, 360900, '高安市');
+INSERT INTO `ciy_arearpc` VALUES (361000, 360000, '抚州市');
+INSERT INTO `ciy_arearpc` VALUES (361001, 361000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (361002, 361000, '临川区');
+INSERT INTO `ciy_arearpc` VALUES (361003, 361000, '东乡区');
+INSERT INTO `ciy_arearpc` VALUES (361021, 361000, '南城县');
+INSERT INTO `ciy_arearpc` VALUES (361022, 361000, '黎川县');
+INSERT INTO `ciy_arearpc` VALUES (361023, 361000, '南丰县');
+INSERT INTO `ciy_arearpc` VALUES (361024, 361000, '崇仁县');
+INSERT INTO `ciy_arearpc` VALUES (361025, 361000, '乐安县');
+INSERT INTO `ciy_arearpc` VALUES (361026, 361000, '宜黄县');
+INSERT INTO `ciy_arearpc` VALUES (361027, 361000, '金溪县');
+INSERT INTO `ciy_arearpc` VALUES (361028, 361000, '资溪县');
+INSERT INTO `ciy_arearpc` VALUES (361030, 361000, '广昌县');
+INSERT INTO `ciy_arearpc` VALUES (361100, 360000, '上饶市');
+INSERT INTO `ciy_arearpc` VALUES (361101, 361100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (361102, 361100, '信州区');
+INSERT INTO `ciy_arearpc` VALUES (361103, 361100, '广丰区');
+INSERT INTO `ciy_arearpc` VALUES (361104, 361100, '广信区');
+INSERT INTO `ciy_arearpc` VALUES (361123, 361100, '玉山县');
+INSERT INTO `ciy_arearpc` VALUES (361124, 361100, '铅山县');
+INSERT INTO `ciy_arearpc` VALUES (361125, 361100, '横峰县');
+INSERT INTO `ciy_arearpc` VALUES (361126, 361100, '弋阳县');
+INSERT INTO `ciy_arearpc` VALUES (361127, 361100, '余干县');
+INSERT INTO `ciy_arearpc` VALUES (361128, 361100, '鄱阳县');
+INSERT INTO `ciy_arearpc` VALUES (361129, 361100, '万年县');
+INSERT INTO `ciy_arearpc` VALUES (361130, 361100, '婺源县');
+INSERT INTO `ciy_arearpc` VALUES (361181, 361100, '德兴市');
+INSERT INTO `ciy_arearpc` VALUES (370000, 0, '山东省');
+INSERT INTO `ciy_arearpc` VALUES (370100, 370000, '济南市');
+INSERT INTO `ciy_arearpc` VALUES (370101, 370100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (370102, 370100, '历下区');
+INSERT INTO `ciy_arearpc` VALUES (370103, 370100, '市中区');
+INSERT INTO `ciy_arearpc` VALUES (370104, 370100, '槐荫区');
+INSERT INTO `ciy_arearpc` VALUES (370105, 370100, '天桥区');
+INSERT INTO `ciy_arearpc` VALUES (370112, 370100, '历城区');
+INSERT INTO `ciy_arearpc` VALUES (370113, 370100, '长清区');
+INSERT INTO `ciy_arearpc` VALUES (370114, 370100, '章丘区');
+INSERT INTO `ciy_arearpc` VALUES (370115, 370100, '济阳区');
+INSERT INTO `ciy_arearpc` VALUES (370116, 370100, '莱芜区');
+INSERT INTO `ciy_arearpc` VALUES (370117, 370100, '钢城区');
+INSERT INTO `ciy_arearpc` VALUES (370124, 370100, '平阴县');
+INSERT INTO `ciy_arearpc` VALUES (370126, 370100, '商河县');
+INSERT INTO `ciy_arearpc` VALUES (370171, 370100, '济南高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (370200, 370000, '青岛市');
+INSERT INTO `ciy_arearpc` VALUES (370201, 370200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (370202, 370200, '市南区');
+INSERT INTO `ciy_arearpc` VALUES (370203, 370200, '市北区');
+INSERT INTO `ciy_arearpc` VALUES (370211, 370200, '黄岛区');
+INSERT INTO `ciy_arearpc` VALUES (370212, 370200, '崂山区');
+INSERT INTO `ciy_arearpc` VALUES (370213, 370200, '李沧区');
+INSERT INTO `ciy_arearpc` VALUES (370214, 370200, '城阳区');
+INSERT INTO `ciy_arearpc` VALUES (370215, 370200, '即墨区');
+INSERT INTO `ciy_arearpc` VALUES (370271, 370200, '青岛高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (370281, 370200, '胶州市');
+INSERT INTO `ciy_arearpc` VALUES (370283, 370200, '平度市');
+INSERT INTO `ciy_arearpc` VALUES (370285, 370200, '莱西市');
+INSERT INTO `ciy_arearpc` VALUES (370300, 370000, '淄博市');
+INSERT INTO `ciy_arearpc` VALUES (370301, 370300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (370302, 370300, '淄川区');
+INSERT INTO `ciy_arearpc` VALUES (370303, 370300, '张店区');
+INSERT INTO `ciy_arearpc` VALUES (370304, 370300, '博山区');
+INSERT INTO `ciy_arearpc` VALUES (370305, 370300, '临淄区');
+INSERT INTO `ciy_arearpc` VALUES (370306, 370300, '周村区');
+INSERT INTO `ciy_arearpc` VALUES (370321, 370300, '桓台县');
+INSERT INTO `ciy_arearpc` VALUES (370322, 370300, '高青县');
+INSERT INTO `ciy_arearpc` VALUES (370323, 370300, '沂源县');
+INSERT INTO `ciy_arearpc` VALUES (370400, 370000, '枣庄市');
+INSERT INTO `ciy_arearpc` VALUES (370401, 370400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (370402, 370400, '市中区');
+INSERT INTO `ciy_arearpc` VALUES (370403, 370400, '薛城区');
+INSERT INTO `ciy_arearpc` VALUES (370404, 370400, '峄城区');
+INSERT INTO `ciy_arearpc` VALUES (370405, 370400, '台儿庄区');
+INSERT INTO `ciy_arearpc` VALUES (370406, 370400, '山亭区');
+INSERT INTO `ciy_arearpc` VALUES (370481, 370400, '滕州市');
+INSERT INTO `ciy_arearpc` VALUES (370500, 370000, '东营市');
+INSERT INTO `ciy_arearpc` VALUES (370501, 370500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (370502, 370500, '东营区');
+INSERT INTO `ciy_arearpc` VALUES (370503, 370500, '河口区');
+INSERT INTO `ciy_arearpc` VALUES (370505, 370500, '垦利区');
+INSERT INTO `ciy_arearpc` VALUES (370522, 370500, '利津县');
+INSERT INTO `ciy_arearpc` VALUES (370523, 370500, '广饶县');
+INSERT INTO `ciy_arearpc` VALUES (370571, 370500, '东营经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (370572, 370500, '东营港经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (370600, 370000, '烟台市');
+INSERT INTO `ciy_arearpc` VALUES (370601, 370600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (370602, 370600, '芝罘区');
+INSERT INTO `ciy_arearpc` VALUES (370611, 370600, '福山区');
+INSERT INTO `ciy_arearpc` VALUES (370612, 370600, '牟平区');
+INSERT INTO `ciy_arearpc` VALUES (370613, 370600, '莱山区');
+INSERT INTO `ciy_arearpc` VALUES (370614, 370600, '蓬莱区');
+INSERT INTO `ciy_arearpc` VALUES (370671, 370600, '烟台高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (370672, 370600, '烟台经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (370681, 370600, '龙口市');
+INSERT INTO `ciy_arearpc` VALUES (370682, 370600, '莱阳市');
+INSERT INTO `ciy_arearpc` VALUES (370683, 370600, '莱州市');
+INSERT INTO `ciy_arearpc` VALUES (370685, 370600, '招远市');
+INSERT INTO `ciy_arearpc` VALUES (370686, 370600, '栖霞市');
+INSERT INTO `ciy_arearpc` VALUES (370687, 370600, '海阳市');
+INSERT INTO `ciy_arearpc` VALUES (370700, 370000, '潍坊市');
+INSERT INTO `ciy_arearpc` VALUES (370701, 370700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (370702, 370700, '潍城区');
+INSERT INTO `ciy_arearpc` VALUES (370703, 370700, '寒亭区');
+INSERT INTO `ciy_arearpc` VALUES (370704, 370700, '坊子区');
+INSERT INTO `ciy_arearpc` VALUES (370705, 370700, '奎文区');
+INSERT INTO `ciy_arearpc` VALUES (370724, 370700, '临朐县');
+INSERT INTO `ciy_arearpc` VALUES (370725, 370700, '昌乐县');
+INSERT INTO `ciy_arearpc` VALUES (370772, 370700, '潍坊滨海经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (370781, 370700, '青州市');
+INSERT INTO `ciy_arearpc` VALUES (370782, 370700, '诸城市');
+INSERT INTO `ciy_arearpc` VALUES (370783, 370700, '寿光市');
+INSERT INTO `ciy_arearpc` VALUES (370784, 370700, '安丘市');
+INSERT INTO `ciy_arearpc` VALUES (370785, 370700, '高密市');
+INSERT INTO `ciy_arearpc` VALUES (370786, 370700, '昌邑市');
+INSERT INTO `ciy_arearpc` VALUES (370800, 370000, '济宁市');
+INSERT INTO `ciy_arearpc` VALUES (370801, 370800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (370811, 370800, '任城区');
+INSERT INTO `ciy_arearpc` VALUES (370812, 370800, '兖州区');
+INSERT INTO `ciy_arearpc` VALUES (370826, 370800, '微山县');
+INSERT INTO `ciy_arearpc` VALUES (370827, 370800, '鱼台县');
+INSERT INTO `ciy_arearpc` VALUES (370828, 370800, '金乡县');
+INSERT INTO `ciy_arearpc` VALUES (370829, 370800, '嘉祥县');
+INSERT INTO `ciy_arearpc` VALUES (370830, 370800, '汶上县');
+INSERT INTO `ciy_arearpc` VALUES (370831, 370800, '泗水县');
+INSERT INTO `ciy_arearpc` VALUES (370832, 370800, '梁山县');
+INSERT INTO `ciy_arearpc` VALUES (370871, 370800, '济宁高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (370881, 370800, '曲阜市');
+INSERT INTO `ciy_arearpc` VALUES (370883, 370800, '邹城市');
+INSERT INTO `ciy_arearpc` VALUES (370900, 370000, '泰安市');
+INSERT INTO `ciy_arearpc` VALUES (370901, 370900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (370902, 370900, '泰山区');
+INSERT INTO `ciy_arearpc` VALUES (370911, 370900, '岱岳区');
+INSERT INTO `ciy_arearpc` VALUES (370921, 370900, '宁阳县');
+INSERT INTO `ciy_arearpc` VALUES (370923, 370900, '东平县');
+INSERT INTO `ciy_arearpc` VALUES (370982, 370900, '新泰市');
+INSERT INTO `ciy_arearpc` VALUES (370983, 370900, '肥城市');
+INSERT INTO `ciy_arearpc` VALUES (371000, 370000, '威海市');
+INSERT INTO `ciy_arearpc` VALUES (371001, 371000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (371002, 371000, '环翠区');
+INSERT INTO `ciy_arearpc` VALUES (371003, 371000, '文登区');
+INSERT INTO `ciy_arearpc` VALUES (371071, 371000, '威海火炬高技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (371072, 371000, '威海经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (371073, 371000, '威海临港经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (371082, 371000, '荣成市');
+INSERT INTO `ciy_arearpc` VALUES (371083, 371000, '乳山市');
+INSERT INTO `ciy_arearpc` VALUES (371100, 370000, '日照市');
+INSERT INTO `ciy_arearpc` VALUES (371101, 371100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (371102, 371100, '东港区');
+INSERT INTO `ciy_arearpc` VALUES (371103, 371100, '岚山区');
+INSERT INTO `ciy_arearpc` VALUES (371121, 371100, '五莲县');
+INSERT INTO `ciy_arearpc` VALUES (371122, 371100, '莒县');
+INSERT INTO `ciy_arearpc` VALUES (371171, 371100, '日照经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (371300, 370000, '临沂市');
+INSERT INTO `ciy_arearpc` VALUES (371301, 371300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (371302, 371300, '兰山区');
+INSERT INTO `ciy_arearpc` VALUES (371311, 371300, '罗庄区');
+INSERT INTO `ciy_arearpc` VALUES (371312, 371300, '河东区');
+INSERT INTO `ciy_arearpc` VALUES (371321, 371300, '沂南县');
+INSERT INTO `ciy_arearpc` VALUES (371322, 371300, '郯城县');
+INSERT INTO `ciy_arearpc` VALUES (371323, 371300, '沂水县');
+INSERT INTO `ciy_arearpc` VALUES (371324, 371300, '兰陵县');
+INSERT INTO `ciy_arearpc` VALUES (371325, 371300, '费县');
+INSERT INTO `ciy_arearpc` VALUES (371326, 371300, '平邑县');
+INSERT INTO `ciy_arearpc` VALUES (371327, 371300, '莒南县');
+INSERT INTO `ciy_arearpc` VALUES (371328, 371300, '蒙阴县');
+INSERT INTO `ciy_arearpc` VALUES (371329, 371300, '临沭县');
+INSERT INTO `ciy_arearpc` VALUES (371371, 371300, '临沂高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (371400, 370000, '德州市');
+INSERT INTO `ciy_arearpc` VALUES (371401, 371400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (371402, 371400, '德城区');
+INSERT INTO `ciy_arearpc` VALUES (371403, 371400, '陵城区');
+INSERT INTO `ciy_arearpc` VALUES (371422, 371400, '宁津县');
+INSERT INTO `ciy_arearpc` VALUES (371423, 371400, '庆云县');
+INSERT INTO `ciy_arearpc` VALUES (371424, 371400, '临邑县');
+INSERT INTO `ciy_arearpc` VALUES (371425, 371400, '齐河县');
+INSERT INTO `ciy_arearpc` VALUES (371426, 371400, '平原县');
+INSERT INTO `ciy_arearpc` VALUES (371427, 371400, '夏津县');
+INSERT INTO `ciy_arearpc` VALUES (371428, 371400, '武城县');
+INSERT INTO `ciy_arearpc` VALUES (371471, 371400, '德州经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (371472, 371400, '德州运河经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (371481, 371400, '乐陵市');
+INSERT INTO `ciy_arearpc` VALUES (371482, 371400, '禹城市');
+INSERT INTO `ciy_arearpc` VALUES (371500, 370000, '聊城市');
+INSERT INTO `ciy_arearpc` VALUES (371501, 371500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (371502, 371500, '东昌府区');
+INSERT INTO `ciy_arearpc` VALUES (371503, 371500, '茌平区');
+INSERT INTO `ciy_arearpc` VALUES (371521, 371500, '阳谷县');
+INSERT INTO `ciy_arearpc` VALUES (371522, 371500, '莘县');
+INSERT INTO `ciy_arearpc` VALUES (371524, 371500, '东阿县');
+INSERT INTO `ciy_arearpc` VALUES (371525, 371500, '冠县');
+INSERT INTO `ciy_arearpc` VALUES (371526, 371500, '高唐县');
+INSERT INTO `ciy_arearpc` VALUES (371581, 371500, '临清市');
+INSERT INTO `ciy_arearpc` VALUES (371600, 370000, '滨州市');
+INSERT INTO `ciy_arearpc` VALUES (371601, 371600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (371602, 371600, '滨城区');
+INSERT INTO `ciy_arearpc` VALUES (371603, 371600, '沾化区');
+INSERT INTO `ciy_arearpc` VALUES (371621, 371600, '惠民县');
+INSERT INTO `ciy_arearpc` VALUES (371622, 371600, '阳信县');
+INSERT INTO `ciy_arearpc` VALUES (371623, 371600, '无棣县');
+INSERT INTO `ciy_arearpc` VALUES (371625, 371600, '博兴县');
+INSERT INTO `ciy_arearpc` VALUES (371681, 371600, '邹平市');
+INSERT INTO `ciy_arearpc` VALUES (371700, 370000, '菏泽市');
+INSERT INTO `ciy_arearpc` VALUES (371701, 371700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (371702, 371700, '牡丹区');
+INSERT INTO `ciy_arearpc` VALUES (371703, 371700, '定陶区');
+INSERT INTO `ciy_arearpc` VALUES (371721, 371700, '曹县');
+INSERT INTO `ciy_arearpc` VALUES (371722, 371700, '单县');
+INSERT INTO `ciy_arearpc` VALUES (371723, 371700, '成武县');
+INSERT INTO `ciy_arearpc` VALUES (371724, 371700, '巨野县');
+INSERT INTO `ciy_arearpc` VALUES (371725, 371700, '郓城县');
+INSERT INTO `ciy_arearpc` VALUES (371726, 371700, '鄄城县');
+INSERT INTO `ciy_arearpc` VALUES (371728, 371700, '东明县');
+INSERT INTO `ciy_arearpc` VALUES (371771, 371700, '菏泽经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (371772, 371700, '菏泽高新技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (410000, 0, '河南省');
+INSERT INTO `ciy_arearpc` VALUES (410100, 410000, '郑州市');
+INSERT INTO `ciy_arearpc` VALUES (410101, 410100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (410102, 410100, '中原区');
+INSERT INTO `ciy_arearpc` VALUES (410103, 410100, '二七区');
+INSERT INTO `ciy_arearpc` VALUES (410104, 410100, '管城回族区');
+INSERT INTO `ciy_arearpc` VALUES (410105, 410100, '金水区');
+INSERT INTO `ciy_arearpc` VALUES (410106, 410100, '上街区');
+INSERT INTO `ciy_arearpc` VALUES (410108, 410100, '惠济区');
+INSERT INTO `ciy_arearpc` VALUES (410122, 410100, '中牟县');
+INSERT INTO `ciy_arearpc` VALUES (410171, 410100, '郑州经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (410172, 410100, '郑州高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (410173, 410100, '郑州航空港经济综合实验区');
+INSERT INTO `ciy_arearpc` VALUES (410181, 410100, '巩义市');
+INSERT INTO `ciy_arearpc` VALUES (410182, 410100, '荥阳市');
+INSERT INTO `ciy_arearpc` VALUES (410183, 410100, '新密市');
+INSERT INTO `ciy_arearpc` VALUES (410184, 410100, '新郑市');
+INSERT INTO `ciy_arearpc` VALUES (410185, 410100, '登封市');
+INSERT INTO `ciy_arearpc` VALUES (410200, 410000, '开封市');
+INSERT INTO `ciy_arearpc` VALUES (410201, 410200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (410202, 410200, '龙亭区');
+INSERT INTO `ciy_arearpc` VALUES (410203, 410200, '顺河回族区');
+INSERT INTO `ciy_arearpc` VALUES (410204, 410200, '鼓楼区');
+INSERT INTO `ciy_arearpc` VALUES (410205, 410200, '禹王台区');
+INSERT INTO `ciy_arearpc` VALUES (410212, 410200, '祥符区');
+INSERT INTO `ciy_arearpc` VALUES (410221, 410200, '杞县');
+INSERT INTO `ciy_arearpc` VALUES (410222, 410200, '通许县');
+INSERT INTO `ciy_arearpc` VALUES (410223, 410200, '尉氏县');
+INSERT INTO `ciy_arearpc` VALUES (410225, 410200, '兰考县');
+INSERT INTO `ciy_arearpc` VALUES (410300, 410000, '洛阳市');
+INSERT INTO `ciy_arearpc` VALUES (410301, 410300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (410302, 410300, '老城区');
+INSERT INTO `ciy_arearpc` VALUES (410303, 410300, '西工区');
+INSERT INTO `ciy_arearpc` VALUES (410304, 410300, '瀍河回族区');
+INSERT INTO `ciy_arearpc` VALUES (410305, 410300, '涧西区');
+INSERT INTO `ciy_arearpc` VALUES (410307, 410300, '偃师区');
+INSERT INTO `ciy_arearpc` VALUES (410308, 410300, '孟津区');
+INSERT INTO `ciy_arearpc` VALUES (410311, 410300, '洛龙区');
+INSERT INTO `ciy_arearpc` VALUES (410323, 410300, '新安县');
+INSERT INTO `ciy_arearpc` VALUES (410324, 410300, '栾川县');
+INSERT INTO `ciy_arearpc` VALUES (410325, 410300, '嵩县');
+INSERT INTO `ciy_arearpc` VALUES (410326, 410300, '汝阳县');
+INSERT INTO `ciy_arearpc` VALUES (410327, 410300, '宜阳县');
+INSERT INTO `ciy_arearpc` VALUES (410328, 410300, '洛宁县');
+INSERT INTO `ciy_arearpc` VALUES (410329, 410300, '伊川县');
+INSERT INTO `ciy_arearpc` VALUES (410371, 410300, '洛阳高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (410400, 410000, '平顶山市');
+INSERT INTO `ciy_arearpc` VALUES (410401, 410400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (410402, 410400, '新华区');
+INSERT INTO `ciy_arearpc` VALUES (410403, 410400, '卫东区');
+INSERT INTO `ciy_arearpc` VALUES (410404, 410400, '石龙区');
+INSERT INTO `ciy_arearpc` VALUES (410411, 410400, '湛河区');
+INSERT INTO `ciy_arearpc` VALUES (410421, 410400, '宝丰县');
+INSERT INTO `ciy_arearpc` VALUES (410422, 410400, '叶县');
+INSERT INTO `ciy_arearpc` VALUES (410423, 410400, '鲁山县');
+INSERT INTO `ciy_arearpc` VALUES (410425, 410400, '郏县');
+INSERT INTO `ciy_arearpc` VALUES (410471, 410400, '平顶山高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (410472, 410400, '平顶山市城乡一体化示范区');
+INSERT INTO `ciy_arearpc` VALUES (410481, 410400, '舞钢市');
+INSERT INTO `ciy_arearpc` VALUES (410482, 410400, '汝州市');
+INSERT INTO `ciy_arearpc` VALUES (410500, 410000, '安阳市');
+INSERT INTO `ciy_arearpc` VALUES (410501, 410500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (410502, 410500, '文峰区');
+INSERT INTO `ciy_arearpc` VALUES (410503, 410500, '北关区');
+INSERT INTO `ciy_arearpc` VALUES (410505, 410500, '殷都区');
+INSERT INTO `ciy_arearpc` VALUES (410506, 410500, '龙安区');
+INSERT INTO `ciy_arearpc` VALUES (410522, 410500, '安阳县');
+INSERT INTO `ciy_arearpc` VALUES (410523, 410500, '汤阴县');
+INSERT INTO `ciy_arearpc` VALUES (410526, 410500, '滑县');
+INSERT INTO `ciy_arearpc` VALUES (410527, 410500, '内黄县');
+INSERT INTO `ciy_arearpc` VALUES (410571, 410500, '安阳高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (410581, 410500, '林州市');
+INSERT INTO `ciy_arearpc` VALUES (410600, 410000, '鹤壁市');
+INSERT INTO `ciy_arearpc` VALUES (410601, 410600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (410602, 410600, '鹤山区');
+INSERT INTO `ciy_arearpc` VALUES (410603, 410600, '山城区');
+INSERT INTO `ciy_arearpc` VALUES (410611, 410600, '淇滨区');
+INSERT INTO `ciy_arearpc` VALUES (410621, 410600, '浚县');
+INSERT INTO `ciy_arearpc` VALUES (410622, 410600, '淇县');
+INSERT INTO `ciy_arearpc` VALUES (410671, 410600, '鹤壁经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (410700, 410000, '新乡市');
+INSERT INTO `ciy_arearpc` VALUES (410701, 410700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (410702, 410700, '红旗区');
+INSERT INTO `ciy_arearpc` VALUES (410703, 410700, '卫滨区');
+INSERT INTO `ciy_arearpc` VALUES (410704, 410700, '凤泉区');
+INSERT INTO `ciy_arearpc` VALUES (410711, 410700, '牧野区');
+INSERT INTO `ciy_arearpc` VALUES (410721, 410700, '新乡县');
+INSERT INTO `ciy_arearpc` VALUES (410724, 410700, '获嘉县');
+INSERT INTO `ciy_arearpc` VALUES (410725, 410700, '原阳县');
+INSERT INTO `ciy_arearpc` VALUES (410726, 410700, '延津县');
+INSERT INTO `ciy_arearpc` VALUES (410727, 410700, '封丘县');
+INSERT INTO `ciy_arearpc` VALUES (410771, 410700, '新乡高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (410772, 410700, '新乡经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (410773, 410700, '新乡市平原城乡一体化示范区');
+INSERT INTO `ciy_arearpc` VALUES (410781, 410700, '卫辉市');
+INSERT INTO `ciy_arearpc` VALUES (410782, 410700, '辉县市');
+INSERT INTO `ciy_arearpc` VALUES (410783, 410700, '长垣市');
+INSERT INTO `ciy_arearpc` VALUES (410800, 410000, '焦作市');
+INSERT INTO `ciy_arearpc` VALUES (410801, 410800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (410802, 410800, '解放区');
+INSERT INTO `ciy_arearpc` VALUES (410803, 410800, '中站区');
+INSERT INTO `ciy_arearpc` VALUES (410804, 410800, '马村区');
+INSERT INTO `ciy_arearpc` VALUES (410811, 410800, '山阳区');
+INSERT INTO `ciy_arearpc` VALUES (410821, 410800, '修武县');
+INSERT INTO `ciy_arearpc` VALUES (410822, 410800, '博爱县');
+INSERT INTO `ciy_arearpc` VALUES (410823, 410800, '武陟县');
+INSERT INTO `ciy_arearpc` VALUES (410825, 410800, '温县');
+INSERT INTO `ciy_arearpc` VALUES (410871, 410800, '焦作城乡一体化示范区');
+INSERT INTO `ciy_arearpc` VALUES (410882, 410800, '沁阳市');
+INSERT INTO `ciy_arearpc` VALUES (410883, 410800, '孟州市');
+INSERT INTO `ciy_arearpc` VALUES (410900, 410000, '濮阳市');
+INSERT INTO `ciy_arearpc` VALUES (410901, 410900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (410902, 410900, '华龙区');
+INSERT INTO `ciy_arearpc` VALUES (410922, 410900, '清丰县');
+INSERT INTO `ciy_arearpc` VALUES (410923, 410900, '南乐县');
+INSERT INTO `ciy_arearpc` VALUES (410926, 410900, '范县');
+INSERT INTO `ciy_arearpc` VALUES (410927, 410900, '台前县');
+INSERT INTO `ciy_arearpc` VALUES (410928, 410900, '濮阳县');
+INSERT INTO `ciy_arearpc` VALUES (410971, 410900, '河南濮阳工业园区');
+INSERT INTO `ciy_arearpc` VALUES (410972, 410900, '濮阳经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (411000, 410000, '许昌市');
+INSERT INTO `ciy_arearpc` VALUES (411001, 411000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (411002, 411000, '魏都区');
+INSERT INTO `ciy_arearpc` VALUES (411003, 411000, '建安区');
+INSERT INTO `ciy_arearpc` VALUES (411024, 411000, '鄢陵县');
+INSERT INTO `ciy_arearpc` VALUES (411025, 411000, '襄城县');
+INSERT INTO `ciy_arearpc` VALUES (411071, 411000, '许昌经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (411081, 411000, '禹州市');
+INSERT INTO `ciy_arearpc` VALUES (411082, 411000, '长葛市');
+INSERT INTO `ciy_arearpc` VALUES (411100, 410000, '漯河市');
+INSERT INTO `ciy_arearpc` VALUES (411101, 411100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (411102, 411100, '源汇区');
+INSERT INTO `ciy_arearpc` VALUES (411103, 411100, '郾城区');
+INSERT INTO `ciy_arearpc` VALUES (411104, 411100, '召陵区');
+INSERT INTO `ciy_arearpc` VALUES (411121, 411100, '舞阳县');
+INSERT INTO `ciy_arearpc` VALUES (411122, 411100, '临颍县');
+INSERT INTO `ciy_arearpc` VALUES (411171, 411100, '漯河经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (411200, 410000, '三门峡市');
+INSERT INTO `ciy_arearpc` VALUES (411201, 411200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (411202, 411200, '湖滨区');
+INSERT INTO `ciy_arearpc` VALUES (411203, 411200, '陕州区');
+INSERT INTO `ciy_arearpc` VALUES (411221, 411200, '渑池县');
+INSERT INTO `ciy_arearpc` VALUES (411224, 411200, '卢氏县');
+INSERT INTO `ciy_arearpc` VALUES (411271, 411200, '河南三门峡经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (411281, 411200, '义马市');
+INSERT INTO `ciy_arearpc` VALUES (411282, 411200, '灵宝市');
+INSERT INTO `ciy_arearpc` VALUES (411300, 410000, '南阳市');
+INSERT INTO `ciy_arearpc` VALUES (411301, 411300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (411302, 411300, '宛城区');
+INSERT INTO `ciy_arearpc` VALUES (411303, 411300, '卧龙区');
+INSERT INTO `ciy_arearpc` VALUES (411321, 411300, '南召县');
+INSERT INTO `ciy_arearpc` VALUES (411322, 411300, '方城县');
+INSERT INTO `ciy_arearpc` VALUES (411323, 411300, '西峡县');
+INSERT INTO `ciy_arearpc` VALUES (411324, 411300, '镇平县');
+INSERT INTO `ciy_arearpc` VALUES (411325, 411300, '内乡县');
+INSERT INTO `ciy_arearpc` VALUES (411326, 411300, '淅川县');
+INSERT INTO `ciy_arearpc` VALUES (411327, 411300, '社旗县');
+INSERT INTO `ciy_arearpc` VALUES (411328, 411300, '唐河县');
+INSERT INTO `ciy_arearpc` VALUES (411329, 411300, '新野县');
+INSERT INTO `ciy_arearpc` VALUES (411330, 411300, '桐柏县');
+INSERT INTO `ciy_arearpc` VALUES (411371, 411300, '南阳高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (411372, 411300, '南阳市城乡一体化示范区');
+INSERT INTO `ciy_arearpc` VALUES (411381, 411300, '邓州市');
+INSERT INTO `ciy_arearpc` VALUES (411400, 410000, '商丘市');
+INSERT INTO `ciy_arearpc` VALUES (411401, 411400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (411402, 411400, '梁园区');
+INSERT INTO `ciy_arearpc` VALUES (411403, 411400, '睢阳区');
+INSERT INTO `ciy_arearpc` VALUES (411421, 411400, '民权县');
+INSERT INTO `ciy_arearpc` VALUES (411422, 411400, '睢县');
+INSERT INTO `ciy_arearpc` VALUES (411423, 411400, '宁陵县');
+INSERT INTO `ciy_arearpc` VALUES (411424, 411400, '柘城县');
+INSERT INTO `ciy_arearpc` VALUES (411425, 411400, '虞城县');
+INSERT INTO `ciy_arearpc` VALUES (411426, 411400, '夏邑县');
+INSERT INTO `ciy_arearpc` VALUES (411471, 411400, '豫东综合物流产业聚集区');
+INSERT INTO `ciy_arearpc` VALUES (411472, 411400, '河南商丘经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (411481, 411400, '永城市');
+INSERT INTO `ciy_arearpc` VALUES (411500, 410000, '信阳市');
+INSERT INTO `ciy_arearpc` VALUES (411501, 411500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (411502, 411500, '浉河区');
+INSERT INTO `ciy_arearpc` VALUES (411503, 411500, '平桥区');
+INSERT INTO `ciy_arearpc` VALUES (411521, 411500, '罗山县');
+INSERT INTO `ciy_arearpc` VALUES (411522, 411500, '光山县');
+INSERT INTO `ciy_arearpc` VALUES (411523, 411500, '新县');
+INSERT INTO `ciy_arearpc` VALUES (411524, 411500, '商城县');
+INSERT INTO `ciy_arearpc` VALUES (411525, 411500, '固始县');
+INSERT INTO `ciy_arearpc` VALUES (411526, 411500, '潢川县');
+INSERT INTO `ciy_arearpc` VALUES (411527, 411500, '淮滨县');
+INSERT INTO `ciy_arearpc` VALUES (411528, 411500, '息县');
+INSERT INTO `ciy_arearpc` VALUES (411571, 411500, '信阳高新技术产业开发区');
+INSERT INTO `ciy_arearpc` VALUES (411600, 410000, '周口市');
+INSERT INTO `ciy_arearpc` VALUES (411601, 411600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (411602, 411600, '川汇区');
+INSERT INTO `ciy_arearpc` VALUES (411603, 411600, '淮阳区');
+INSERT INTO `ciy_arearpc` VALUES (411621, 411600, '扶沟县');
+INSERT INTO `ciy_arearpc` VALUES (411622, 411600, '西华县');
+INSERT INTO `ciy_arearpc` VALUES (411623, 411600, '商水县');
+INSERT INTO `ciy_arearpc` VALUES (411624, 411600, '沈丘县');
+INSERT INTO `ciy_arearpc` VALUES (411625, 411600, '郸城县');
+INSERT INTO `ciy_arearpc` VALUES (411627, 411600, '太康县');
+INSERT INTO `ciy_arearpc` VALUES (411628, 411600, '鹿邑县');
+INSERT INTO `ciy_arearpc` VALUES (411671, 411600, '河南周口经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (411681, 411600, '项城市');
+INSERT INTO `ciy_arearpc` VALUES (411700, 410000, '驻马店市');
+INSERT INTO `ciy_arearpc` VALUES (411701, 411700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (411702, 411700, '驿城区');
+INSERT INTO `ciy_arearpc` VALUES (411721, 411700, '西平县');
+INSERT INTO `ciy_arearpc` VALUES (411722, 411700, '上蔡县');
+INSERT INTO `ciy_arearpc` VALUES (411723, 411700, '平舆县');
+INSERT INTO `ciy_arearpc` VALUES (411724, 411700, '正阳县');
+INSERT INTO `ciy_arearpc` VALUES (411725, 411700, '确山县');
+INSERT INTO `ciy_arearpc` VALUES (411726, 411700, '泌阳县');
+INSERT INTO `ciy_arearpc` VALUES (411727, 411700, '汝南县');
+INSERT INTO `ciy_arearpc` VALUES (411728, 411700, '遂平县');
+INSERT INTO `ciy_arearpc` VALUES (411729, 411700, '新蔡县');
+INSERT INTO `ciy_arearpc` VALUES (411771, 411700, '河南驻马店经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (419000, 410000, '省直辖县级行政区划');
+INSERT INTO `ciy_arearpc` VALUES (419001, 419000, '济源市');
+INSERT INTO `ciy_arearpc` VALUES (420000, 0, '湖北省');
+INSERT INTO `ciy_arearpc` VALUES (420100, 420000, '武汉市');
+INSERT INTO `ciy_arearpc` VALUES (420101, 420100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (420102, 420100, '江岸区');
+INSERT INTO `ciy_arearpc` VALUES (420103, 420100, '江汉区');
+INSERT INTO `ciy_arearpc` VALUES (420104, 420100, '硚口区');
+INSERT INTO `ciy_arearpc` VALUES (420105, 420100, '汉阳区');
+INSERT INTO `ciy_arearpc` VALUES (420106, 420100, '武昌区');
+INSERT INTO `ciy_arearpc` VALUES (420107, 420100, '青山区');
+INSERT INTO `ciy_arearpc` VALUES (420111, 420100, '洪山区');
+INSERT INTO `ciy_arearpc` VALUES (420112, 420100, '东西湖区');
+INSERT INTO `ciy_arearpc` VALUES (420113, 420100, '汉南区');
+INSERT INTO `ciy_arearpc` VALUES (420114, 420100, '蔡甸区');
+INSERT INTO `ciy_arearpc` VALUES (420115, 420100, '江夏区');
+INSERT INTO `ciy_arearpc` VALUES (420116, 420100, '黄陂区');
+INSERT INTO `ciy_arearpc` VALUES (420117, 420100, '新洲区');
+INSERT INTO `ciy_arearpc` VALUES (420200, 420000, '黄石市');
+INSERT INTO `ciy_arearpc` VALUES (420201, 420200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (420202, 420200, '黄石港区');
+INSERT INTO `ciy_arearpc` VALUES (420203, 420200, '西塞山区');
+INSERT INTO `ciy_arearpc` VALUES (420204, 420200, '下陆区');
+INSERT INTO `ciy_arearpc` VALUES (420205, 420200, '铁山区');
+INSERT INTO `ciy_arearpc` VALUES (420222, 420200, '阳新县');
+INSERT INTO `ciy_arearpc` VALUES (420281, 420200, '大冶市');
+INSERT INTO `ciy_arearpc` VALUES (420300, 420000, '十堰市');
+INSERT INTO `ciy_arearpc` VALUES (420301, 420300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (420302, 420300, '茅箭区');
+INSERT INTO `ciy_arearpc` VALUES (420303, 420300, '张湾区');
+INSERT INTO `ciy_arearpc` VALUES (420304, 420300, '郧阳区');
+INSERT INTO `ciy_arearpc` VALUES (420322, 420300, '郧西县');
+INSERT INTO `ciy_arearpc` VALUES (420323, 420300, '竹山县');
+INSERT INTO `ciy_arearpc` VALUES (420324, 420300, '竹溪县');
+INSERT INTO `ciy_arearpc` VALUES (420325, 420300, '房县');
+INSERT INTO `ciy_arearpc` VALUES (420381, 420300, '丹江口市');
+INSERT INTO `ciy_arearpc` VALUES (420500, 420000, '宜昌市');
+INSERT INTO `ciy_arearpc` VALUES (420501, 420500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (420502, 420500, '西陵区');
+INSERT INTO `ciy_arearpc` VALUES (420503, 420500, '伍家岗区');
+INSERT INTO `ciy_arearpc` VALUES (420504, 420500, '点军区');
+INSERT INTO `ciy_arearpc` VALUES (420505, 420500, '猇亭区');
+INSERT INTO `ciy_arearpc` VALUES (420506, 420500, '夷陵区');
+INSERT INTO `ciy_arearpc` VALUES (420525, 420500, '远安县');
+INSERT INTO `ciy_arearpc` VALUES (420526, 420500, '兴山县');
+INSERT INTO `ciy_arearpc` VALUES (420527, 420500, '秭归县');
+INSERT INTO `ciy_arearpc` VALUES (420528, 420500, '长阳土家族自治县');
+INSERT INTO `ciy_arearpc` VALUES (420529, 420500, '五峰土家族自治县');
+INSERT INTO `ciy_arearpc` VALUES (420581, 420500, '宜都市');
+INSERT INTO `ciy_arearpc` VALUES (420582, 420500, '当阳市');
+INSERT INTO `ciy_arearpc` VALUES (420583, 420500, '枝江市');
+INSERT INTO `ciy_arearpc` VALUES (420600, 420000, '襄阳市');
+INSERT INTO `ciy_arearpc` VALUES (420601, 420600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (420602, 420600, '襄城区');
+INSERT INTO `ciy_arearpc` VALUES (420606, 420600, '樊城区');
+INSERT INTO `ciy_arearpc` VALUES (420607, 420600, '襄州区');
+INSERT INTO `ciy_arearpc` VALUES (420624, 420600, '南漳县');
+INSERT INTO `ciy_arearpc` VALUES (420625, 420600, '谷城县');
+INSERT INTO `ciy_arearpc` VALUES (420626, 420600, '保康县');
+INSERT INTO `ciy_arearpc` VALUES (420682, 420600, '老河口市');
+INSERT INTO `ciy_arearpc` VALUES (420683, 420600, '枣阳市');
+INSERT INTO `ciy_arearpc` VALUES (420684, 420600, '宜城市');
+INSERT INTO `ciy_arearpc` VALUES (420700, 420000, '鄂州市');
+INSERT INTO `ciy_arearpc` VALUES (420701, 420700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (420702, 420700, '梁子湖区');
+INSERT INTO `ciy_arearpc` VALUES (420703, 420700, '华容区');
+INSERT INTO `ciy_arearpc` VALUES (420704, 420700, '鄂城区');
+INSERT INTO `ciy_arearpc` VALUES (420800, 420000, '荆门市');
+INSERT INTO `ciy_arearpc` VALUES (420801, 420800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (420802, 420800, '东宝区');
+INSERT INTO `ciy_arearpc` VALUES (420804, 420800, '掇刀区');
+INSERT INTO `ciy_arearpc` VALUES (420822, 420800, '沙洋县');
+INSERT INTO `ciy_arearpc` VALUES (420881, 420800, '钟祥市');
+INSERT INTO `ciy_arearpc` VALUES (420882, 420800, '京山市');
+INSERT INTO `ciy_arearpc` VALUES (420900, 420000, '孝感市');
+INSERT INTO `ciy_arearpc` VALUES (420901, 420900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (420902, 420900, '孝南区');
+INSERT INTO `ciy_arearpc` VALUES (420921, 420900, '孝昌县');
+INSERT INTO `ciy_arearpc` VALUES (420922, 420900, '大悟县');
+INSERT INTO `ciy_arearpc` VALUES (420923, 420900, '云梦县');
+INSERT INTO `ciy_arearpc` VALUES (420981, 420900, '应城市');
+INSERT INTO `ciy_arearpc` VALUES (420982, 420900, '安陆市');
+INSERT INTO `ciy_arearpc` VALUES (420984, 420900, '汉川市');
+INSERT INTO `ciy_arearpc` VALUES (421000, 420000, '荆州市');
+INSERT INTO `ciy_arearpc` VALUES (421001, 421000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (421002, 421000, '沙市区');
+INSERT INTO `ciy_arearpc` VALUES (421003, 421000, '荆州区');
+INSERT INTO `ciy_arearpc` VALUES (421022, 421000, '公安县');
+INSERT INTO `ciy_arearpc` VALUES (421024, 421000, '江陵县');
+INSERT INTO `ciy_arearpc` VALUES (421071, 421000, '荆州经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (421081, 421000, '石首市');
+INSERT INTO `ciy_arearpc` VALUES (421083, 421000, '洪湖市');
+INSERT INTO `ciy_arearpc` VALUES (421087, 421000, '松滋市');
+INSERT INTO `ciy_arearpc` VALUES (421088, 421000, '监利市');
+INSERT INTO `ciy_arearpc` VALUES (421100, 420000, '黄冈市');
+INSERT INTO `ciy_arearpc` VALUES (421101, 421100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (421102, 421100, '黄州区');
+INSERT INTO `ciy_arearpc` VALUES (421121, 421100, '团风县');
+INSERT INTO `ciy_arearpc` VALUES (421122, 421100, '红安县');
+INSERT INTO `ciy_arearpc` VALUES (421123, 421100, '罗田县');
+INSERT INTO `ciy_arearpc` VALUES (421124, 421100, '英山县');
+INSERT INTO `ciy_arearpc` VALUES (421125, 421100, '浠水县');
+INSERT INTO `ciy_arearpc` VALUES (421126, 421100, '蕲春县');
+INSERT INTO `ciy_arearpc` VALUES (421127, 421100, '黄梅县');
+INSERT INTO `ciy_arearpc` VALUES (421171, 421100, '龙感湖管理区');
+INSERT INTO `ciy_arearpc` VALUES (421181, 421100, '麻城市');
+INSERT INTO `ciy_arearpc` VALUES (421182, 421100, '武穴市');
+INSERT INTO `ciy_arearpc` VALUES (421200, 420000, '咸宁市');
+INSERT INTO `ciy_arearpc` VALUES (421201, 421200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (421202, 421200, '咸安区');
+INSERT INTO `ciy_arearpc` VALUES (421221, 421200, '嘉鱼县');
+INSERT INTO `ciy_arearpc` VALUES (421222, 421200, '通城县');
+INSERT INTO `ciy_arearpc` VALUES (421223, 421200, '崇阳县');
+INSERT INTO `ciy_arearpc` VALUES (421224, 421200, '通山县');
+INSERT INTO `ciy_arearpc` VALUES (421281, 421200, '赤壁市');
+INSERT INTO `ciy_arearpc` VALUES (421300, 420000, '随州市');
+INSERT INTO `ciy_arearpc` VALUES (421301, 421300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (421303, 421300, '曾都区');
+INSERT INTO `ciy_arearpc` VALUES (421321, 421300, '随县');
+INSERT INTO `ciy_arearpc` VALUES (421381, 421300, '广水市');
+INSERT INTO `ciy_arearpc` VALUES (422800, 420000, '恩施土家族苗族自治州');
+INSERT INTO `ciy_arearpc` VALUES (422801, 422800, '恩施市');
+INSERT INTO `ciy_arearpc` VALUES (422802, 422800, '利川市');
+INSERT INTO `ciy_arearpc` VALUES (422822, 422800, '建始县');
+INSERT INTO `ciy_arearpc` VALUES (422823, 422800, '巴东县');
+INSERT INTO `ciy_arearpc` VALUES (422825, 422800, '宣恩县');
+INSERT INTO `ciy_arearpc` VALUES (422826, 422800, '咸丰县');
+INSERT INTO `ciy_arearpc` VALUES (422827, 422800, '来凤县');
+INSERT INTO `ciy_arearpc` VALUES (422828, 422800, '鹤峰县');
+INSERT INTO `ciy_arearpc` VALUES (429000, 420000, '省直辖县级行政区划');
+INSERT INTO `ciy_arearpc` VALUES (429004, 429000, '仙桃市');
+INSERT INTO `ciy_arearpc` VALUES (429005, 429000, '潜江市');
+INSERT INTO `ciy_arearpc` VALUES (429006, 429000, '天门市');
+INSERT INTO `ciy_arearpc` VALUES (429021, 429000, '神农架林区');
+INSERT INTO `ciy_arearpc` VALUES (430000, 0, '湖南省');
+INSERT INTO `ciy_arearpc` VALUES (430100, 430000, '长沙市');
+INSERT INTO `ciy_arearpc` VALUES (430101, 430100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (430102, 430100, '芙蓉区');
+INSERT INTO `ciy_arearpc` VALUES (430103, 430100, '天心区');
+INSERT INTO `ciy_arearpc` VALUES (430104, 430100, '岳麓区');
+INSERT INTO `ciy_arearpc` VALUES (430105, 430100, '开福区');
+INSERT INTO `ciy_arearpc` VALUES (430111, 430100, '雨花区');
+INSERT INTO `ciy_arearpc` VALUES (430112, 430100, '望城区');
+INSERT INTO `ciy_arearpc` VALUES (430121, 430100, '长沙县');
+INSERT INTO `ciy_arearpc` VALUES (430181, 430100, '浏阳市');
+INSERT INTO `ciy_arearpc` VALUES (430182, 430100, '宁乡市');
+INSERT INTO `ciy_arearpc` VALUES (430200, 430000, '株洲市');
+INSERT INTO `ciy_arearpc` VALUES (430201, 430200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (430202, 430200, '荷塘区');
+INSERT INTO `ciy_arearpc` VALUES (430203, 430200, '芦淞区');
+INSERT INTO `ciy_arearpc` VALUES (430204, 430200, '石峰区');
+INSERT INTO `ciy_arearpc` VALUES (430211, 430200, '天元区');
+INSERT INTO `ciy_arearpc` VALUES (430212, 430200, '渌口区');
+INSERT INTO `ciy_arearpc` VALUES (430223, 430200, '攸县');
+INSERT INTO `ciy_arearpc` VALUES (430224, 430200, '茶陵县');
+INSERT INTO `ciy_arearpc` VALUES (430225, 430200, '炎陵县');
+INSERT INTO `ciy_arearpc` VALUES (430271, 430200, '云龙示范区');
+INSERT INTO `ciy_arearpc` VALUES (430281, 430200, '醴陵市');
+INSERT INTO `ciy_arearpc` VALUES (430300, 430000, '湘潭市');
+INSERT INTO `ciy_arearpc` VALUES (430301, 430300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (430302, 430300, '雨湖区');
+INSERT INTO `ciy_arearpc` VALUES (430304, 430300, '岳塘区');
+INSERT INTO `ciy_arearpc` VALUES (430321, 430300, '湘潭县');
+INSERT INTO `ciy_arearpc` VALUES (430371, 430300, '湖南湘潭高新技术产业园区');
+INSERT INTO `ciy_arearpc` VALUES (430372, 430300, '湘潭昭山示范区');
+INSERT INTO `ciy_arearpc` VALUES (430373, 430300, '湘潭九华示范区');
+INSERT INTO `ciy_arearpc` VALUES (430381, 430300, '湘乡市');
+INSERT INTO `ciy_arearpc` VALUES (430382, 430300, '韶山市');
+INSERT INTO `ciy_arearpc` VALUES (430400, 430000, '衡阳市');
+INSERT INTO `ciy_arearpc` VALUES (430401, 430400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (430405, 430400, '珠晖区');
+INSERT INTO `ciy_arearpc` VALUES (430406, 430400, '雁峰区');
+INSERT INTO `ciy_arearpc` VALUES (430407, 430400, '石鼓区');
+INSERT INTO `ciy_arearpc` VALUES (430408, 430400, '蒸湘区');
+INSERT INTO `ciy_arearpc` VALUES (430412, 430400, '南岳区');
+INSERT INTO `ciy_arearpc` VALUES (430421, 430400, '衡阳县');
+INSERT INTO `ciy_arearpc` VALUES (430422, 430400, '衡南县');
+INSERT INTO `ciy_arearpc` VALUES (430423, 430400, '衡山县');
+INSERT INTO `ciy_arearpc` VALUES (430424, 430400, '衡东县');
+INSERT INTO `ciy_arearpc` VALUES (430426, 430400, '祁东县');
+INSERT INTO `ciy_arearpc` VALUES (430471, 430400, '衡阳综合保税区');
+INSERT INTO `ciy_arearpc` VALUES (430472, 430400, '湖南衡阳高新技术产业园区');
+INSERT INTO `ciy_arearpc` VALUES (430473, 430400, '湖南衡阳松木经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (430481, 430400, '耒阳市');
+INSERT INTO `ciy_arearpc` VALUES (430482, 430400, '常宁市');
+INSERT INTO `ciy_arearpc` VALUES (430500, 430000, '邵阳市');
+INSERT INTO `ciy_arearpc` VALUES (430501, 430500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (430502, 430500, '双清区');
+INSERT INTO `ciy_arearpc` VALUES (430503, 430500, '大祥区');
+INSERT INTO `ciy_arearpc` VALUES (430511, 430500, '北塔区');
+INSERT INTO `ciy_arearpc` VALUES (430522, 430500, '新邵县');
+INSERT INTO `ciy_arearpc` VALUES (430523, 430500, '邵阳县');
+INSERT INTO `ciy_arearpc` VALUES (430524, 430500, '隆回县');
+INSERT INTO `ciy_arearpc` VALUES (430525, 430500, '洞口县');
+INSERT INTO `ciy_arearpc` VALUES (430527, 430500, '绥宁县');
+INSERT INTO `ciy_arearpc` VALUES (430528, 430500, '新宁县');
+INSERT INTO `ciy_arearpc` VALUES (430529, 430500, '城步苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (430581, 430500, '武冈市');
+INSERT INTO `ciy_arearpc` VALUES (430582, 430500, '邵东市');
+INSERT INTO `ciy_arearpc` VALUES (430600, 430000, '岳阳市');
+INSERT INTO `ciy_arearpc` VALUES (430601, 430600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (430602, 430600, '岳阳楼区');
+INSERT INTO `ciy_arearpc` VALUES (430603, 430600, '云溪区');
+INSERT INTO `ciy_arearpc` VALUES (430611, 430600, '君山区');
+INSERT INTO `ciy_arearpc` VALUES (430621, 430600, '岳阳县');
+INSERT INTO `ciy_arearpc` VALUES (430623, 430600, '华容县');
+INSERT INTO `ciy_arearpc` VALUES (430624, 430600, '湘阴县');
+INSERT INTO `ciy_arearpc` VALUES (430626, 430600, '平江县');
+INSERT INTO `ciy_arearpc` VALUES (430671, 430600, '岳阳市屈原管理区');
+INSERT INTO `ciy_arearpc` VALUES (430681, 430600, '汨罗市');
+INSERT INTO `ciy_arearpc` VALUES (430682, 430600, '临湘市');
+INSERT INTO `ciy_arearpc` VALUES (430700, 430000, '常德市');
+INSERT INTO `ciy_arearpc` VALUES (430701, 430700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (430702, 430700, '武陵区');
+INSERT INTO `ciy_arearpc` VALUES (430703, 430700, '鼎城区');
+INSERT INTO `ciy_arearpc` VALUES (430721, 430700, '安乡县');
+INSERT INTO `ciy_arearpc` VALUES (430722, 430700, '汉寿县');
+INSERT INTO `ciy_arearpc` VALUES (430723, 430700, '澧县');
+INSERT INTO `ciy_arearpc` VALUES (430724, 430700, '临澧县');
+INSERT INTO `ciy_arearpc` VALUES (430725, 430700, '桃源县');
+INSERT INTO `ciy_arearpc` VALUES (430726, 430700, '石门县');
+INSERT INTO `ciy_arearpc` VALUES (430771, 430700, '常德市西洞庭管理区');
+INSERT INTO `ciy_arearpc` VALUES (430781, 430700, '津市市');
+INSERT INTO `ciy_arearpc` VALUES (430800, 430000, '张家界市');
+INSERT INTO `ciy_arearpc` VALUES (430801, 430800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (430802, 430800, '永定区');
+INSERT INTO `ciy_arearpc` VALUES (430811, 430800, '武陵源区');
+INSERT INTO `ciy_arearpc` VALUES (430821, 430800, '慈利县');
+INSERT INTO `ciy_arearpc` VALUES (430822, 430800, '桑植县');
+INSERT INTO `ciy_arearpc` VALUES (430900, 430000, '益阳市');
+INSERT INTO `ciy_arearpc` VALUES (430901, 430900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (430902, 430900, '资阳区');
+INSERT INTO `ciy_arearpc` VALUES (430903, 430900, '赫山区');
+INSERT INTO `ciy_arearpc` VALUES (430921, 430900, '南县');
+INSERT INTO `ciy_arearpc` VALUES (430922, 430900, '桃江县');
+INSERT INTO `ciy_arearpc` VALUES (430923, 430900, '安化县');
+INSERT INTO `ciy_arearpc` VALUES (430971, 430900, '益阳市大通湖管理区');
+INSERT INTO `ciy_arearpc` VALUES (430972, 430900, '湖南益阳高新技术产业园区');
+INSERT INTO `ciy_arearpc` VALUES (430981, 430900, '沅江市');
+INSERT INTO `ciy_arearpc` VALUES (431000, 430000, '郴州市');
+INSERT INTO `ciy_arearpc` VALUES (431001, 431000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (431002, 431000, '北湖区');
+INSERT INTO `ciy_arearpc` VALUES (431003, 431000, '苏仙区');
+INSERT INTO `ciy_arearpc` VALUES (431021, 431000, '桂阳县');
+INSERT INTO `ciy_arearpc` VALUES (431022, 431000, '宜章县');
+INSERT INTO `ciy_arearpc` VALUES (431023, 431000, '永兴县');
+INSERT INTO `ciy_arearpc` VALUES (431024, 431000, '嘉禾县');
+INSERT INTO `ciy_arearpc` VALUES (431025, 431000, '临武县');
+INSERT INTO `ciy_arearpc` VALUES (431026, 431000, '汝城县');
+INSERT INTO `ciy_arearpc` VALUES (431027, 431000, '桂东县');
+INSERT INTO `ciy_arearpc` VALUES (431028, 431000, '安仁县');
+INSERT INTO `ciy_arearpc` VALUES (431081, 431000, '资兴市');
+INSERT INTO `ciy_arearpc` VALUES (431100, 430000, '永州市');
+INSERT INTO `ciy_arearpc` VALUES (431101, 431100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (431102, 431100, '零陵区');
+INSERT INTO `ciy_arearpc` VALUES (431103, 431100, '冷水滩区');
+INSERT INTO `ciy_arearpc` VALUES (431122, 431100, '东安县');
+INSERT INTO `ciy_arearpc` VALUES (431123, 431100, '双牌县');
+INSERT INTO `ciy_arearpc` VALUES (431124, 431100, '道县');
+INSERT INTO `ciy_arearpc` VALUES (431125, 431100, '江永县');
+INSERT INTO `ciy_arearpc` VALUES (431126, 431100, '宁远县');
+INSERT INTO `ciy_arearpc` VALUES (431127, 431100, '蓝山县');
+INSERT INTO `ciy_arearpc` VALUES (431128, 431100, '新田县');
+INSERT INTO `ciy_arearpc` VALUES (431129, 431100, '江华瑶族自治县');
+INSERT INTO `ciy_arearpc` VALUES (431171, 431100, '永州经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (431173, 431100, '永州市回龙圩管理区');
+INSERT INTO `ciy_arearpc` VALUES (431181, 431100, '祁阳市');
+INSERT INTO `ciy_arearpc` VALUES (431200, 430000, '怀化市');
+INSERT INTO `ciy_arearpc` VALUES (431201, 431200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (431202, 431200, '鹤城区');
+INSERT INTO `ciy_arearpc` VALUES (431221, 431200, '中方县');
+INSERT INTO `ciy_arearpc` VALUES (431222, 431200, '沅陵县');
+INSERT INTO `ciy_arearpc` VALUES (431223, 431200, '辰溪县');
+INSERT INTO `ciy_arearpc` VALUES (431224, 431200, '溆浦县');
+INSERT INTO `ciy_arearpc` VALUES (431225, 431200, '会同县');
+INSERT INTO `ciy_arearpc` VALUES (431226, 431200, '麻阳苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (431227, 431200, '新晃侗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (431228, 431200, '芷江侗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (431229, 431200, '靖州苗族侗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (431230, 431200, '通道侗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (431271, 431200, '怀化市洪江管理区');
+INSERT INTO `ciy_arearpc` VALUES (431281, 431200, '洪江市');
+INSERT INTO `ciy_arearpc` VALUES (431300, 430000, '娄底市');
+INSERT INTO `ciy_arearpc` VALUES (431301, 431300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (431302, 431300, '娄星区');
+INSERT INTO `ciy_arearpc` VALUES (431321, 431300, '双峰县');
+INSERT INTO `ciy_arearpc` VALUES (431322, 431300, '新化县');
+INSERT INTO `ciy_arearpc` VALUES (431381, 431300, '冷水江市');
+INSERT INTO `ciy_arearpc` VALUES (431382, 431300, '涟源市');
+INSERT INTO `ciy_arearpc` VALUES (433100, 430000, '湘西土家族苗族自治州');
+INSERT INTO `ciy_arearpc` VALUES (433101, 433100, '吉首市');
+INSERT INTO `ciy_arearpc` VALUES (433122, 433100, '泸溪县');
+INSERT INTO `ciy_arearpc` VALUES (433123, 433100, '凤凰县');
+INSERT INTO `ciy_arearpc` VALUES (433124, 433100, '花垣县');
+INSERT INTO `ciy_arearpc` VALUES (433125, 433100, '保靖县');
+INSERT INTO `ciy_arearpc` VALUES (433126, 433100, '古丈县');
+INSERT INTO `ciy_arearpc` VALUES (433127, 433100, '永顺县');
+INSERT INTO `ciy_arearpc` VALUES (433130, 433100, '龙山县');
+INSERT INTO `ciy_arearpc` VALUES (440000, 0, '广东省');
+INSERT INTO `ciy_arearpc` VALUES (440100, 440000, '广州市');
+INSERT INTO `ciy_arearpc` VALUES (440101, 440100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (440103, 440100, '荔湾区');
+INSERT INTO `ciy_arearpc` VALUES (440104, 440100, '越秀区');
+INSERT INTO `ciy_arearpc` VALUES (440105, 440100, '海珠区');
+INSERT INTO `ciy_arearpc` VALUES (440106, 440100, '天河区');
+INSERT INTO `ciy_arearpc` VALUES (440111, 440100, '白云区');
+INSERT INTO `ciy_arearpc` VALUES (440112, 440100, '黄埔区');
+INSERT INTO `ciy_arearpc` VALUES (440113, 440100, '番禺区');
+INSERT INTO `ciy_arearpc` VALUES (440114, 440100, '花都区');
+INSERT INTO `ciy_arearpc` VALUES (440115, 440100, '南沙区');
+INSERT INTO `ciy_arearpc` VALUES (440117, 440100, '从化区');
+INSERT INTO `ciy_arearpc` VALUES (440118, 440100, '增城区');
+INSERT INTO `ciy_arearpc` VALUES (440200, 440000, '韶关市');
+INSERT INTO `ciy_arearpc` VALUES (440201, 440200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (440203, 440200, '武江区');
+INSERT INTO `ciy_arearpc` VALUES (440204, 440200, '浈江区');
+INSERT INTO `ciy_arearpc` VALUES (440205, 440200, '曲江区');
+INSERT INTO `ciy_arearpc` VALUES (440222, 440200, '始兴县');
+INSERT INTO `ciy_arearpc` VALUES (440224, 440200, '仁化县');
+INSERT INTO `ciy_arearpc` VALUES (440229, 440200, '翁源县');
+INSERT INTO `ciy_arearpc` VALUES (440232, 440200, '乳源瑶族自治县');
+INSERT INTO `ciy_arearpc` VALUES (440233, 440200, '新丰县');
+INSERT INTO `ciy_arearpc` VALUES (440281, 440200, '乐昌市');
+INSERT INTO `ciy_arearpc` VALUES (440282, 440200, '南雄市');
+INSERT INTO `ciy_arearpc` VALUES (440300, 440000, '深圳市');
+INSERT INTO `ciy_arearpc` VALUES (440301, 440300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (440303, 440300, '罗湖区');
+INSERT INTO `ciy_arearpc` VALUES (440304, 440300, '福田区');
+INSERT INTO `ciy_arearpc` VALUES (440305, 440300, '南山区');
+INSERT INTO `ciy_arearpc` VALUES (440306, 440300, '宝安区');
+INSERT INTO `ciy_arearpc` VALUES (440307, 440300, '龙岗区');
+INSERT INTO `ciy_arearpc` VALUES (440308, 440300, '盐田区');
+INSERT INTO `ciy_arearpc` VALUES (440309, 440300, '龙华区');
+INSERT INTO `ciy_arearpc` VALUES (440310, 440300, '坪山区');
+INSERT INTO `ciy_arearpc` VALUES (440311, 440300, '光明区');
+INSERT INTO `ciy_arearpc` VALUES (440400, 440000, '珠海市');
+INSERT INTO `ciy_arearpc` VALUES (440401, 440400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (440402, 440400, '香洲区');
+INSERT INTO `ciy_arearpc` VALUES (440403, 440400, '斗门区');
+INSERT INTO `ciy_arearpc` VALUES (440404, 440400, '金湾区');
+INSERT INTO `ciy_arearpc` VALUES (440500, 440000, '汕头市');
+INSERT INTO `ciy_arearpc` VALUES (440501, 440500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (440507, 440500, '龙湖区');
+INSERT INTO `ciy_arearpc` VALUES (440511, 440500, '金平区');
+INSERT INTO `ciy_arearpc` VALUES (440512, 440500, '濠江区');
+INSERT INTO `ciy_arearpc` VALUES (440513, 440500, '潮阳区');
+INSERT INTO `ciy_arearpc` VALUES (440514, 440500, '潮南区');
+INSERT INTO `ciy_arearpc` VALUES (440515, 440500, '澄海区');
+INSERT INTO `ciy_arearpc` VALUES (440523, 440500, '南澳县');
+INSERT INTO `ciy_arearpc` VALUES (440600, 440000, '佛山市');
+INSERT INTO `ciy_arearpc` VALUES (440601, 440600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (440604, 440600, '禅城区');
+INSERT INTO `ciy_arearpc` VALUES (440605, 440600, '南海区');
+INSERT INTO `ciy_arearpc` VALUES (440606, 440600, '顺德区');
+INSERT INTO `ciy_arearpc` VALUES (440607, 440600, '三水区');
+INSERT INTO `ciy_arearpc` VALUES (440608, 440600, '高明区');
+INSERT INTO `ciy_arearpc` VALUES (440700, 440000, '江门市');
+INSERT INTO `ciy_arearpc` VALUES (440701, 440700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (440703, 440700, '蓬江区');
+INSERT INTO `ciy_arearpc` VALUES (440704, 440700, '江海区');
+INSERT INTO `ciy_arearpc` VALUES (440705, 440700, '新会区');
+INSERT INTO `ciy_arearpc` VALUES (440781, 440700, '台山市');
+INSERT INTO `ciy_arearpc` VALUES (440783, 440700, '开平市');
+INSERT INTO `ciy_arearpc` VALUES (440784, 440700, '鹤山市');
+INSERT INTO `ciy_arearpc` VALUES (440785, 440700, '恩平市');
+INSERT INTO `ciy_arearpc` VALUES (440800, 440000, '湛江市');
+INSERT INTO `ciy_arearpc` VALUES (440801, 440800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (440802, 440800, '赤坎区');
+INSERT INTO `ciy_arearpc` VALUES (440803, 440800, '霞山区');
+INSERT INTO `ciy_arearpc` VALUES (440804, 440800, '坡头区');
+INSERT INTO `ciy_arearpc` VALUES (440811, 440800, '麻章区');
+INSERT INTO `ciy_arearpc` VALUES (440823, 440800, '遂溪县');
+INSERT INTO `ciy_arearpc` VALUES (440825, 440800, '徐闻县');
+INSERT INTO `ciy_arearpc` VALUES (440881, 440800, '廉江市');
+INSERT INTO `ciy_arearpc` VALUES (440882, 440800, '雷州市');
+INSERT INTO `ciy_arearpc` VALUES (440883, 440800, '吴川市');
+INSERT INTO `ciy_arearpc` VALUES (440900, 440000, '茂名市');
+INSERT INTO `ciy_arearpc` VALUES (440901, 440900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (440902, 440900, '茂南区');
+INSERT INTO `ciy_arearpc` VALUES (440904, 440900, '电白区');
+INSERT INTO `ciy_arearpc` VALUES (440981, 440900, '高州市');
+INSERT INTO `ciy_arearpc` VALUES (440982, 440900, '化州市');
+INSERT INTO `ciy_arearpc` VALUES (440983, 440900, '信宜市');
+INSERT INTO `ciy_arearpc` VALUES (441200, 440000, '肇庆市');
+INSERT INTO `ciy_arearpc` VALUES (441201, 441200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (441202, 441200, '端州区');
+INSERT INTO `ciy_arearpc` VALUES (441203, 441200, '鼎湖区');
+INSERT INTO `ciy_arearpc` VALUES (441204, 441200, '高要区');
+INSERT INTO `ciy_arearpc` VALUES (441223, 441200, '广宁县');
+INSERT INTO `ciy_arearpc` VALUES (441224, 441200, '怀集县');
+INSERT INTO `ciy_arearpc` VALUES (441225, 441200, '封开县');
+INSERT INTO `ciy_arearpc` VALUES (441226, 441200, '德庆县');
+INSERT INTO `ciy_arearpc` VALUES (441284, 441200, '四会市');
+INSERT INTO `ciy_arearpc` VALUES (441300, 440000, '惠州市');
+INSERT INTO `ciy_arearpc` VALUES (441301, 441300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (441302, 441300, '惠城区');
+INSERT INTO `ciy_arearpc` VALUES (441303, 441300, '惠阳区');
+INSERT INTO `ciy_arearpc` VALUES (441322, 441300, '博罗县');
+INSERT INTO `ciy_arearpc` VALUES (441323, 441300, '惠东县');
+INSERT INTO `ciy_arearpc` VALUES (441324, 441300, '龙门县');
+INSERT INTO `ciy_arearpc` VALUES (441400, 440000, '梅州市');
+INSERT INTO `ciy_arearpc` VALUES (441401, 441400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (441402, 441400, '梅江区');
+INSERT INTO `ciy_arearpc` VALUES (441403, 441400, '梅县区');
+INSERT INTO `ciy_arearpc` VALUES (441422, 441400, '大埔县');
+INSERT INTO `ciy_arearpc` VALUES (441423, 441400, '丰顺县');
+INSERT INTO `ciy_arearpc` VALUES (441424, 441400, '五华县');
+INSERT INTO `ciy_arearpc` VALUES (441426, 441400, '平远县');
+INSERT INTO `ciy_arearpc` VALUES (441427, 441400, '蕉岭县');
+INSERT INTO `ciy_arearpc` VALUES (441481, 441400, '兴宁市');
+INSERT INTO `ciy_arearpc` VALUES (441500, 440000, '汕尾市');
+INSERT INTO `ciy_arearpc` VALUES (441501, 441500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (441502, 441500, '城区');
+INSERT INTO `ciy_arearpc` VALUES (441521, 441500, '海丰县');
+INSERT INTO `ciy_arearpc` VALUES (441523, 441500, '陆河县');
+INSERT INTO `ciy_arearpc` VALUES (441581, 441500, '陆丰市');
+INSERT INTO `ciy_arearpc` VALUES (441600, 440000, '河源市');
+INSERT INTO `ciy_arearpc` VALUES (441601, 441600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (441602, 441600, '源城区');
+INSERT INTO `ciy_arearpc` VALUES (441621, 441600, '紫金县');
+INSERT INTO `ciy_arearpc` VALUES (441622, 441600, '龙川县');
+INSERT INTO `ciy_arearpc` VALUES (441623, 441600, '连平县');
+INSERT INTO `ciy_arearpc` VALUES (441624, 441600, '和平县');
+INSERT INTO `ciy_arearpc` VALUES (441625, 441600, '东源县');
+INSERT INTO `ciy_arearpc` VALUES (441700, 440000, '阳江市');
+INSERT INTO `ciy_arearpc` VALUES (441701, 441700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (441702, 441700, '江城区');
+INSERT INTO `ciy_arearpc` VALUES (441704, 441700, '阳东区');
+INSERT INTO `ciy_arearpc` VALUES (441721, 441700, '阳西县');
+INSERT INTO `ciy_arearpc` VALUES (441781, 441700, '阳春市');
+INSERT INTO `ciy_arearpc` VALUES (441800, 440000, '清远市');
+INSERT INTO `ciy_arearpc` VALUES (441801, 441800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (441802, 441800, '清城区');
+INSERT INTO `ciy_arearpc` VALUES (441803, 441800, '清新区');
+INSERT INTO `ciy_arearpc` VALUES (441821, 441800, '佛冈县');
+INSERT INTO `ciy_arearpc` VALUES (441823, 441800, '阳山县');
+INSERT INTO `ciy_arearpc` VALUES (441825, 441800, '连山壮族瑶族自治县');
+INSERT INTO `ciy_arearpc` VALUES (441826, 441800, '连南瑶族自治县');
+INSERT INTO `ciy_arearpc` VALUES (441881, 441800, '英德市');
+INSERT INTO `ciy_arearpc` VALUES (441882, 441800, '连州市');
+INSERT INTO `ciy_arearpc` VALUES (441900, 440000, '东莞市');
+INSERT INTO `ciy_arearpc` VALUES (442000, 440000, '中山市');
+INSERT INTO `ciy_arearpc` VALUES (445100, 440000, '潮州市');
+INSERT INTO `ciy_arearpc` VALUES (445101, 445100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (445102, 445100, '湘桥区');
+INSERT INTO `ciy_arearpc` VALUES (445103, 445100, '潮安区');
+INSERT INTO `ciy_arearpc` VALUES (445122, 445100, '饶平县');
+INSERT INTO `ciy_arearpc` VALUES (445200, 440000, '揭阳市');
+INSERT INTO `ciy_arearpc` VALUES (445201, 445200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (445202, 445200, '榕城区');
+INSERT INTO `ciy_arearpc` VALUES (445203, 445200, '揭东区');
+INSERT INTO `ciy_arearpc` VALUES (445222, 445200, '揭西县');
+INSERT INTO `ciy_arearpc` VALUES (445224, 445200, '惠来县');
+INSERT INTO `ciy_arearpc` VALUES (445281, 445200, '普宁市');
+INSERT INTO `ciy_arearpc` VALUES (445300, 440000, '云浮市');
+INSERT INTO `ciy_arearpc` VALUES (445301, 445300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (445302, 445300, '云城区');
+INSERT INTO `ciy_arearpc` VALUES (445303, 445300, '云安区');
+INSERT INTO `ciy_arearpc` VALUES (445321, 445300, '新兴县');
+INSERT INTO `ciy_arearpc` VALUES (445322, 445300, '郁南县');
+INSERT INTO `ciy_arearpc` VALUES (445381, 445300, '罗定市');
+INSERT INTO `ciy_arearpc` VALUES (450000, 0, '广西壮族自治区');
+INSERT INTO `ciy_arearpc` VALUES (450100, 450000, '南宁市');
+INSERT INTO `ciy_arearpc` VALUES (450101, 450100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (450102, 450100, '兴宁区');
+INSERT INTO `ciy_arearpc` VALUES (450103, 450100, '青秀区');
+INSERT INTO `ciy_arearpc` VALUES (450105, 450100, '江南区');
+INSERT INTO `ciy_arearpc` VALUES (450107, 450100, '西乡塘区');
+INSERT INTO `ciy_arearpc` VALUES (450108, 450100, '良庆区');
+INSERT INTO `ciy_arearpc` VALUES (450109, 450100, '邕宁区');
+INSERT INTO `ciy_arearpc` VALUES (450110, 450100, '武鸣区');
+INSERT INTO `ciy_arearpc` VALUES (450123, 450100, '隆安县');
+INSERT INTO `ciy_arearpc` VALUES (450124, 450100, '马山县');
+INSERT INTO `ciy_arearpc` VALUES (450125, 450100, '上林县');
+INSERT INTO `ciy_arearpc` VALUES (450126, 450100, '宾阳县');
+INSERT INTO `ciy_arearpc` VALUES (450181, 450100, '横州市');
+INSERT INTO `ciy_arearpc` VALUES (450200, 450000, '柳州市');
+INSERT INTO `ciy_arearpc` VALUES (450201, 450200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (450202, 450200, '城中区');
+INSERT INTO `ciy_arearpc` VALUES (450203, 450200, '鱼峰区');
+INSERT INTO `ciy_arearpc` VALUES (450204, 450200, '柳南区');
+INSERT INTO `ciy_arearpc` VALUES (450205, 450200, '柳北区');
+INSERT INTO `ciy_arearpc` VALUES (450206, 450200, '柳江区');
+INSERT INTO `ciy_arearpc` VALUES (450222, 450200, '柳城县');
+INSERT INTO `ciy_arearpc` VALUES (450223, 450200, '鹿寨县');
+INSERT INTO `ciy_arearpc` VALUES (450224, 450200, '融安县');
+INSERT INTO `ciy_arearpc` VALUES (450225, 450200, '融水苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (450226, 450200, '三江侗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (450300, 450000, '桂林市');
+INSERT INTO `ciy_arearpc` VALUES (450301, 450300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (450302, 450300, '秀峰区');
+INSERT INTO `ciy_arearpc` VALUES (450303, 450300, '叠彩区');
+INSERT INTO `ciy_arearpc` VALUES (450304, 450300, '象山区');
+INSERT INTO `ciy_arearpc` VALUES (450305, 450300, '七星区');
+INSERT INTO `ciy_arearpc` VALUES (450311, 450300, '雁山区');
+INSERT INTO `ciy_arearpc` VALUES (450312, 450300, '临桂区');
+INSERT INTO `ciy_arearpc` VALUES (450321, 450300, '阳朔县');
+INSERT INTO `ciy_arearpc` VALUES (450323, 450300, '灵川县');
+INSERT INTO `ciy_arearpc` VALUES (450324, 450300, '全州县');
+INSERT INTO `ciy_arearpc` VALUES (450325, 450300, '兴安县');
+INSERT INTO `ciy_arearpc` VALUES (450326, 450300, '永福县');
+INSERT INTO `ciy_arearpc` VALUES (450327, 450300, '灌阳县');
+INSERT INTO `ciy_arearpc` VALUES (450328, 450300, '龙胜各族自治县');
+INSERT INTO `ciy_arearpc` VALUES (450329, 450300, '资源县');
+INSERT INTO `ciy_arearpc` VALUES (450330, 450300, '平乐县');
+INSERT INTO `ciy_arearpc` VALUES (450332, 450300, '恭城瑶族自治县');
+INSERT INTO `ciy_arearpc` VALUES (450381, 450300, '荔浦市');
+INSERT INTO `ciy_arearpc` VALUES (450400, 450000, '梧州市');
+INSERT INTO `ciy_arearpc` VALUES (450401, 450400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (450403, 450400, '万秀区');
+INSERT INTO `ciy_arearpc` VALUES (450405, 450400, '长洲区');
+INSERT INTO `ciy_arearpc` VALUES (450406, 450400, '龙圩区');
+INSERT INTO `ciy_arearpc` VALUES (450421, 450400, '苍梧县');
+INSERT INTO `ciy_arearpc` VALUES (450422, 450400, '藤县');
+INSERT INTO `ciy_arearpc` VALUES (450423, 450400, '蒙山县');
+INSERT INTO `ciy_arearpc` VALUES (450481, 450400, '岑溪市');
+INSERT INTO `ciy_arearpc` VALUES (450500, 450000, '北海市');
+INSERT INTO `ciy_arearpc` VALUES (450501, 450500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (450502, 450500, '海城区');
+INSERT INTO `ciy_arearpc` VALUES (450503, 450500, '银海区');
+INSERT INTO `ciy_arearpc` VALUES (450512, 450500, '铁山港区');
+INSERT INTO `ciy_arearpc` VALUES (450521, 450500, '合浦县');
+INSERT INTO `ciy_arearpc` VALUES (450600, 450000, '防城港市');
+INSERT INTO `ciy_arearpc` VALUES (450601, 450600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (450602, 450600, '港口区');
+INSERT INTO `ciy_arearpc` VALUES (450603, 450600, '防城区');
+INSERT INTO `ciy_arearpc` VALUES (450621, 450600, '上思县');
+INSERT INTO `ciy_arearpc` VALUES (450681, 450600, '东兴市');
+INSERT INTO `ciy_arearpc` VALUES (450700, 450000, '钦州市');
+INSERT INTO `ciy_arearpc` VALUES (450701, 450700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (450702, 450700, '钦南区');
+INSERT INTO `ciy_arearpc` VALUES (450703, 450700, '钦北区');
+INSERT INTO `ciy_arearpc` VALUES (450721, 450700, '灵山县');
+INSERT INTO `ciy_arearpc` VALUES (450722, 450700, '浦北县');
+INSERT INTO `ciy_arearpc` VALUES (450800, 450000, '贵港市');
+INSERT INTO `ciy_arearpc` VALUES (450801, 450800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (450802, 450800, '港北区');
+INSERT INTO `ciy_arearpc` VALUES (450803, 450800, '港南区');
+INSERT INTO `ciy_arearpc` VALUES (450804, 450800, '覃塘区');
+INSERT INTO `ciy_arearpc` VALUES (450821, 450800, '平南县');
+INSERT INTO `ciy_arearpc` VALUES (450881, 450800, '桂平市');
+INSERT INTO `ciy_arearpc` VALUES (450900, 450000, '玉林市');
+INSERT INTO `ciy_arearpc` VALUES (450901, 450900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (450902, 450900, '玉州区');
+INSERT INTO `ciy_arearpc` VALUES (450903, 450900, '福绵区');
+INSERT INTO `ciy_arearpc` VALUES (450921, 450900, '容县');
+INSERT INTO `ciy_arearpc` VALUES (450922, 450900, '陆川县');
+INSERT INTO `ciy_arearpc` VALUES (450923, 450900, '博白县');
+INSERT INTO `ciy_arearpc` VALUES (450924, 450900, '兴业县');
+INSERT INTO `ciy_arearpc` VALUES (450981, 450900, '北流市');
+INSERT INTO `ciy_arearpc` VALUES (451000, 450000, '百色市');
+INSERT INTO `ciy_arearpc` VALUES (451001, 451000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (451002, 451000, '右江区');
+INSERT INTO `ciy_arearpc` VALUES (451003, 451000, '田阳区');
+INSERT INTO `ciy_arearpc` VALUES (451022, 451000, '田东县');
+INSERT INTO `ciy_arearpc` VALUES (451024, 451000, '德保县');
+INSERT INTO `ciy_arearpc` VALUES (451026, 451000, '那坡县');
+INSERT INTO `ciy_arearpc` VALUES (451027, 451000, '凌云县');
+INSERT INTO `ciy_arearpc` VALUES (451028, 451000, '乐业县');
+INSERT INTO `ciy_arearpc` VALUES (451029, 451000, '田林县');
+INSERT INTO `ciy_arearpc` VALUES (451030, 451000, '西林县');
+INSERT INTO `ciy_arearpc` VALUES (451031, 451000, '隆林各族自治县');
+INSERT INTO `ciy_arearpc` VALUES (451081, 451000, '靖西市');
+INSERT INTO `ciy_arearpc` VALUES (451082, 451000, '平果市');
+INSERT INTO `ciy_arearpc` VALUES (451100, 450000, '贺州市');
+INSERT INTO `ciy_arearpc` VALUES (451101, 451100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (451102, 451100, '八步区');
+INSERT INTO `ciy_arearpc` VALUES (451103, 451100, '平桂区');
+INSERT INTO `ciy_arearpc` VALUES (451121, 451100, '昭平县');
+INSERT INTO `ciy_arearpc` VALUES (451122, 451100, '钟山县');
+INSERT INTO `ciy_arearpc` VALUES (451123, 451100, '富川瑶族自治县');
+INSERT INTO `ciy_arearpc` VALUES (451200, 450000, '河池市');
+INSERT INTO `ciy_arearpc` VALUES (451201, 451200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (451202, 451200, '金城江区');
+INSERT INTO `ciy_arearpc` VALUES (451203, 451200, '宜州区');
+INSERT INTO `ciy_arearpc` VALUES (451221, 451200, '南丹县');
+INSERT INTO `ciy_arearpc` VALUES (451222, 451200, '天峨县');
+INSERT INTO `ciy_arearpc` VALUES (451223, 451200, '凤山县');
+INSERT INTO `ciy_arearpc` VALUES (451224, 451200, '东兰县');
+INSERT INTO `ciy_arearpc` VALUES (451225, 451200, '罗城仫佬族自治县');
+INSERT INTO `ciy_arearpc` VALUES (451226, 451200, '环江毛南族自治县');
+INSERT INTO `ciy_arearpc` VALUES (451227, 451200, '巴马瑶族自治县');
+INSERT INTO `ciy_arearpc` VALUES (451228, 451200, '都安瑶族自治县');
+INSERT INTO `ciy_arearpc` VALUES (451229, 451200, '大化瑶族自治县');
+INSERT INTO `ciy_arearpc` VALUES (451300, 450000, '来宾市');
+INSERT INTO `ciy_arearpc` VALUES (451301, 451300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (451302, 451300, '兴宾区');
+INSERT INTO `ciy_arearpc` VALUES (451321, 451300, '忻城县');
+INSERT INTO `ciy_arearpc` VALUES (451322, 451300, '象州县');
+INSERT INTO `ciy_arearpc` VALUES (451323, 451300, '武宣县');
+INSERT INTO `ciy_arearpc` VALUES (451324, 451300, '金秀瑶族自治县');
+INSERT INTO `ciy_arearpc` VALUES (451381, 451300, '合山市');
+INSERT INTO `ciy_arearpc` VALUES (451400, 450000, '崇左市');
+INSERT INTO `ciy_arearpc` VALUES (451401, 451400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (451402, 451400, '江州区');
+INSERT INTO `ciy_arearpc` VALUES (451421, 451400, '扶绥县');
+INSERT INTO `ciy_arearpc` VALUES (451422, 451400, '宁明县');
+INSERT INTO `ciy_arearpc` VALUES (451423, 451400, '龙州县');
+INSERT INTO `ciy_arearpc` VALUES (451424, 451400, '大新县');
+INSERT INTO `ciy_arearpc` VALUES (451425, 451400, '天等县');
+INSERT INTO `ciy_arearpc` VALUES (451481, 451400, '凭祥市');
+INSERT INTO `ciy_arearpc` VALUES (460000, 0, '海南省');
+INSERT INTO `ciy_arearpc` VALUES (460100, 460000, '海口市');
+INSERT INTO `ciy_arearpc` VALUES (460101, 460100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (460105, 460100, '秀英区');
+INSERT INTO `ciy_arearpc` VALUES (460106, 460100, '龙华区');
+INSERT INTO `ciy_arearpc` VALUES (460107, 460100, '琼山区');
+INSERT INTO `ciy_arearpc` VALUES (460108, 460100, '美兰区');
+INSERT INTO `ciy_arearpc` VALUES (460200, 460000, '三亚市');
+INSERT INTO `ciy_arearpc` VALUES (460201, 460200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (460202, 460200, '海棠区');
+INSERT INTO `ciy_arearpc` VALUES (460203, 460200, '吉阳区');
+INSERT INTO `ciy_arearpc` VALUES (460204, 460200, '天涯区');
+INSERT INTO `ciy_arearpc` VALUES (460205, 460200, '崖州区');
+INSERT INTO `ciy_arearpc` VALUES (460300, 460000, '三沙市');
+INSERT INTO `ciy_arearpc` VALUES (460321, 460300, '西沙群岛');
+INSERT INTO `ciy_arearpc` VALUES (460322, 460300, '南沙群岛');
+INSERT INTO `ciy_arearpc` VALUES (460323, 460300, '中沙群岛的岛礁及其海域');
+INSERT INTO `ciy_arearpc` VALUES (460400, 460000, '儋州市');
+INSERT INTO `ciy_arearpc` VALUES (469000, 460000, '省直辖县级行政区划');
+INSERT INTO `ciy_arearpc` VALUES (469001, 469000, '五指山市');
+INSERT INTO `ciy_arearpc` VALUES (469002, 469000, '琼海市');
+INSERT INTO `ciy_arearpc` VALUES (469005, 469000, '文昌市');
+INSERT INTO `ciy_arearpc` VALUES (469006, 469000, '万宁市');
+INSERT INTO `ciy_arearpc` VALUES (469007, 469000, '东方市');
+INSERT INTO `ciy_arearpc` VALUES (469021, 469000, '定安县');
+INSERT INTO `ciy_arearpc` VALUES (469022, 469000, '屯昌县');
+INSERT INTO `ciy_arearpc` VALUES (469023, 469000, '澄迈县');
+INSERT INTO `ciy_arearpc` VALUES (469024, 469000, '临高县');
+INSERT INTO `ciy_arearpc` VALUES (469025, 469000, '白沙黎族自治县');
+INSERT INTO `ciy_arearpc` VALUES (469026, 469000, '昌江黎族自治县');
+INSERT INTO `ciy_arearpc` VALUES (469027, 469000, '乐东黎族自治县');
+INSERT INTO `ciy_arearpc` VALUES (469028, 469000, '陵水黎族自治县');
+INSERT INTO `ciy_arearpc` VALUES (469029, 469000, '保亭黎族苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (469030, 469000, '琼中黎族苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (500000, 0, '重庆市');
+INSERT INTO `ciy_arearpc` VALUES (500100, 500000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (500101, 500100, '万州区');
+INSERT INTO `ciy_arearpc` VALUES (500102, 500100, '涪陵区');
+INSERT INTO `ciy_arearpc` VALUES (500103, 500100, '渝中区');
+INSERT INTO `ciy_arearpc` VALUES (500104, 500100, '大渡口区');
+INSERT INTO `ciy_arearpc` VALUES (500105, 500100, '江北区');
+INSERT INTO `ciy_arearpc` VALUES (500106, 500100, '沙坪坝区');
+INSERT INTO `ciy_arearpc` VALUES (500107, 500100, '九龙坡区');
+INSERT INTO `ciy_arearpc` VALUES (500108, 500100, '南岸区');
+INSERT INTO `ciy_arearpc` VALUES (500109, 500100, '北碚区');
+INSERT INTO `ciy_arearpc` VALUES (500110, 500100, '綦江区');
+INSERT INTO `ciy_arearpc` VALUES (500111, 500100, '大足区');
+INSERT INTO `ciy_arearpc` VALUES (500112, 500100, '渝北区');
+INSERT INTO `ciy_arearpc` VALUES (500113, 500100, '巴南区');
+INSERT INTO `ciy_arearpc` VALUES (500114, 500100, '黔江区');
+INSERT INTO `ciy_arearpc` VALUES (500115, 500100, '长寿区');
+INSERT INTO `ciy_arearpc` VALUES (500116, 500100, '江津区');
+INSERT INTO `ciy_arearpc` VALUES (500117, 500100, '合川区');
+INSERT INTO `ciy_arearpc` VALUES (500118, 500100, '永川区');
+INSERT INTO `ciy_arearpc` VALUES (500119, 500100, '南川区');
+INSERT INTO `ciy_arearpc` VALUES (500120, 500100, '璧山区');
+INSERT INTO `ciy_arearpc` VALUES (500151, 500100, '铜梁区');
+INSERT INTO `ciy_arearpc` VALUES (500152, 500100, '潼南区');
+INSERT INTO `ciy_arearpc` VALUES (500153, 500100, '荣昌区');
+INSERT INTO `ciy_arearpc` VALUES (500154, 500100, '开州区');
+INSERT INTO `ciy_arearpc` VALUES (500155, 500100, '梁平区');
+INSERT INTO `ciy_arearpc` VALUES (500156, 500100, '武隆区');
+INSERT INTO `ciy_arearpc` VALUES (500200, 500000, '县');
+INSERT INTO `ciy_arearpc` VALUES (500229, 500200, '城口县');
+INSERT INTO `ciy_arearpc` VALUES (500230, 500200, '丰都县');
+INSERT INTO `ciy_arearpc` VALUES (500231, 500200, '垫江县');
+INSERT INTO `ciy_arearpc` VALUES (500233, 500200, '忠县');
+INSERT INTO `ciy_arearpc` VALUES (500235, 500200, '云阳县');
+INSERT INTO `ciy_arearpc` VALUES (500236, 500200, '奉节县');
+INSERT INTO `ciy_arearpc` VALUES (500237, 500200, '巫山县');
+INSERT INTO `ciy_arearpc` VALUES (500238, 500200, '巫溪县');
+INSERT INTO `ciy_arearpc` VALUES (500240, 500200, '石柱土家族自治县');
+INSERT INTO `ciy_arearpc` VALUES (500241, 500200, '秀山土家族苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (500242, 500200, '酉阳土家族苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (500243, 500200, '彭水苗族土家族自治县');
+INSERT INTO `ciy_arearpc` VALUES (510000, 0, '四川省');
+INSERT INTO `ciy_arearpc` VALUES (510100, 510000, '成都市');
+INSERT INTO `ciy_arearpc` VALUES (510101, 510100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (510104, 510100, '锦江区');
+INSERT INTO `ciy_arearpc` VALUES (510105, 510100, '青羊区');
+INSERT INTO `ciy_arearpc` VALUES (510106, 510100, '金牛区');
+INSERT INTO `ciy_arearpc` VALUES (510107, 510100, '武侯区');
+INSERT INTO `ciy_arearpc` VALUES (510108, 510100, '成华区');
+INSERT INTO `ciy_arearpc` VALUES (510112, 510100, '龙泉驿区');
+INSERT INTO `ciy_arearpc` VALUES (510113, 510100, '青白江区');
+INSERT INTO `ciy_arearpc` VALUES (510114, 510100, '新都区');
+INSERT INTO `ciy_arearpc` VALUES (510115, 510100, '温江区');
+INSERT INTO `ciy_arearpc` VALUES (510116, 510100, '双流区');
+INSERT INTO `ciy_arearpc` VALUES (510117, 510100, '郫都区');
+INSERT INTO `ciy_arearpc` VALUES (510118, 510100, '新津区');
+INSERT INTO `ciy_arearpc` VALUES (510121, 510100, '金堂县');
+INSERT INTO `ciy_arearpc` VALUES (510129, 510100, '大邑县');
+INSERT INTO `ciy_arearpc` VALUES (510131, 510100, '蒲江县');
+INSERT INTO `ciy_arearpc` VALUES (510181, 510100, '都江堰市');
+INSERT INTO `ciy_arearpc` VALUES (510182, 510100, '彭州市');
+INSERT INTO `ciy_arearpc` VALUES (510183, 510100, '邛崃市');
+INSERT INTO `ciy_arearpc` VALUES (510184, 510100, '崇州市');
+INSERT INTO `ciy_arearpc` VALUES (510185, 510100, '简阳市');
+INSERT INTO `ciy_arearpc` VALUES (510300, 510000, '自贡市');
+INSERT INTO `ciy_arearpc` VALUES (510301, 510300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (510302, 510300, '自流井区');
+INSERT INTO `ciy_arearpc` VALUES (510303, 510300, '贡井区');
+INSERT INTO `ciy_arearpc` VALUES (510304, 510300, '大安区');
+INSERT INTO `ciy_arearpc` VALUES (510311, 510300, '沿滩区');
+INSERT INTO `ciy_arearpc` VALUES (510321, 510300, '荣县');
+INSERT INTO `ciy_arearpc` VALUES (510322, 510300, '富顺县');
+INSERT INTO `ciy_arearpc` VALUES (510400, 510000, '攀枝花市');
+INSERT INTO `ciy_arearpc` VALUES (510401, 510400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (510402, 510400, '东区');
+INSERT INTO `ciy_arearpc` VALUES (510403, 510400, '西区');
+INSERT INTO `ciy_arearpc` VALUES (510411, 510400, '仁和区');
+INSERT INTO `ciy_arearpc` VALUES (510421, 510400, '米易县');
+INSERT INTO `ciy_arearpc` VALUES (510422, 510400, '盐边县');
+INSERT INTO `ciy_arearpc` VALUES (510500, 510000, '泸州市');
+INSERT INTO `ciy_arearpc` VALUES (510501, 510500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (510502, 510500, '江阳区');
+INSERT INTO `ciy_arearpc` VALUES (510503, 510500, '纳溪区');
+INSERT INTO `ciy_arearpc` VALUES (510504, 510500, '龙马潭区');
+INSERT INTO `ciy_arearpc` VALUES (510521, 510500, '泸县');
+INSERT INTO `ciy_arearpc` VALUES (510522, 510500, '合江县');
+INSERT INTO `ciy_arearpc` VALUES (510524, 510500, '叙永县');
+INSERT INTO `ciy_arearpc` VALUES (510525, 510500, '古蔺县');
+INSERT INTO `ciy_arearpc` VALUES (510600, 510000, '德阳市');
+INSERT INTO `ciy_arearpc` VALUES (510601, 510600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (510603, 510600, '旌阳区');
+INSERT INTO `ciy_arearpc` VALUES (510604, 510600, '罗江区');
+INSERT INTO `ciy_arearpc` VALUES (510623, 510600, '中江县');
+INSERT INTO `ciy_arearpc` VALUES (510681, 510600, '广汉市');
+INSERT INTO `ciy_arearpc` VALUES (510682, 510600, '什邡市');
+INSERT INTO `ciy_arearpc` VALUES (510683, 510600, '绵竹市');
+INSERT INTO `ciy_arearpc` VALUES (510700, 510000, '绵阳市');
+INSERT INTO `ciy_arearpc` VALUES (510701, 510700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (510703, 510700, '涪城区');
+INSERT INTO `ciy_arearpc` VALUES (510704, 510700, '游仙区');
+INSERT INTO `ciy_arearpc` VALUES (510705, 510700, '安州区');
+INSERT INTO `ciy_arearpc` VALUES (510722, 510700, '三台县');
+INSERT INTO `ciy_arearpc` VALUES (510723, 510700, '盐亭县');
+INSERT INTO `ciy_arearpc` VALUES (510725, 510700, '梓潼县');
+INSERT INTO `ciy_arearpc` VALUES (510726, 510700, '北川羌族自治县');
+INSERT INTO `ciy_arearpc` VALUES (510727, 510700, '平武县');
+INSERT INTO `ciy_arearpc` VALUES (510781, 510700, '江油市');
+INSERT INTO `ciy_arearpc` VALUES (510800, 510000, '广元市');
+INSERT INTO `ciy_arearpc` VALUES (510801, 510800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (510802, 510800, '利州区');
+INSERT INTO `ciy_arearpc` VALUES (510811, 510800, '昭化区');
+INSERT INTO `ciy_arearpc` VALUES (510812, 510800, '朝天区');
+INSERT INTO `ciy_arearpc` VALUES (510821, 510800, '旺苍县');
+INSERT INTO `ciy_arearpc` VALUES (510822, 510800, '青川县');
+INSERT INTO `ciy_arearpc` VALUES (510823, 510800, '剑阁县');
+INSERT INTO `ciy_arearpc` VALUES (510824, 510800, '苍溪县');
+INSERT INTO `ciy_arearpc` VALUES (510900, 510000, '遂宁市');
+INSERT INTO `ciy_arearpc` VALUES (510901, 510900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (510903, 510900, '船山区');
+INSERT INTO `ciy_arearpc` VALUES (510904, 510900, '安居区');
+INSERT INTO `ciy_arearpc` VALUES (510921, 510900, '蓬溪县');
+INSERT INTO `ciy_arearpc` VALUES (510923, 510900, '大英县');
+INSERT INTO `ciy_arearpc` VALUES (510981, 510900, '射洪市');
+INSERT INTO `ciy_arearpc` VALUES (511000, 510000, '内江市');
+INSERT INTO `ciy_arearpc` VALUES (511001, 511000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (511002, 511000, '市中区');
+INSERT INTO `ciy_arearpc` VALUES (511011, 511000, '东兴区');
+INSERT INTO `ciy_arearpc` VALUES (511024, 511000, '威远县');
+INSERT INTO `ciy_arearpc` VALUES (511025, 511000, '资中县');
+INSERT INTO `ciy_arearpc` VALUES (511071, 511000, '内江经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (511083, 511000, '隆昌市');
+INSERT INTO `ciy_arearpc` VALUES (511100, 510000, '乐山市');
+INSERT INTO `ciy_arearpc` VALUES (511101, 511100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (511102, 511100, '市中区');
+INSERT INTO `ciy_arearpc` VALUES (511111, 511100, '沙湾区');
+INSERT INTO `ciy_arearpc` VALUES (511112, 511100, '五通桥区');
+INSERT INTO `ciy_arearpc` VALUES (511113, 511100, '金口河区');
+INSERT INTO `ciy_arearpc` VALUES (511123, 511100, '犍为县');
+INSERT INTO `ciy_arearpc` VALUES (511124, 511100, '井研县');
+INSERT INTO `ciy_arearpc` VALUES (511126, 511100, '夹江县');
+INSERT INTO `ciy_arearpc` VALUES (511129, 511100, '沐川县');
+INSERT INTO `ciy_arearpc` VALUES (511132, 511100, '峨边彝族自治县');
+INSERT INTO `ciy_arearpc` VALUES (511133, 511100, '马边彝族自治县');
+INSERT INTO `ciy_arearpc` VALUES (511181, 511100, '峨眉山市');
+INSERT INTO `ciy_arearpc` VALUES (511300, 510000, '南充市');
+INSERT INTO `ciy_arearpc` VALUES (511301, 511300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (511302, 511300, '顺庆区');
+INSERT INTO `ciy_arearpc` VALUES (511303, 511300, '高坪区');
+INSERT INTO `ciy_arearpc` VALUES (511304, 511300, '嘉陵区');
+INSERT INTO `ciy_arearpc` VALUES (511321, 511300, '南部县');
+INSERT INTO `ciy_arearpc` VALUES (511322, 511300, '营山县');
+INSERT INTO `ciy_arearpc` VALUES (511323, 511300, '蓬安县');
+INSERT INTO `ciy_arearpc` VALUES (511324, 511300, '仪陇县');
+INSERT INTO `ciy_arearpc` VALUES (511325, 511300, '西充县');
+INSERT INTO `ciy_arearpc` VALUES (511381, 511300, '阆中市');
+INSERT INTO `ciy_arearpc` VALUES (511400, 510000, '眉山市');
+INSERT INTO `ciy_arearpc` VALUES (511401, 511400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (511402, 511400, '东坡区');
+INSERT INTO `ciy_arearpc` VALUES (511403, 511400, '彭山区');
+INSERT INTO `ciy_arearpc` VALUES (511421, 511400, '仁寿县');
+INSERT INTO `ciy_arearpc` VALUES (511423, 511400, '洪雅县');
+INSERT INTO `ciy_arearpc` VALUES (511424, 511400, '丹棱县');
+INSERT INTO `ciy_arearpc` VALUES (511425, 511400, '青神县');
+INSERT INTO `ciy_arearpc` VALUES (511500, 510000, '宜宾市');
+INSERT INTO `ciy_arearpc` VALUES (511501, 511500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (511502, 511500, '翠屏区');
+INSERT INTO `ciy_arearpc` VALUES (511503, 511500, '南溪区');
+INSERT INTO `ciy_arearpc` VALUES (511504, 511500, '叙州区');
+INSERT INTO `ciy_arearpc` VALUES (511523, 511500, '江安县');
+INSERT INTO `ciy_arearpc` VALUES (511524, 511500, '长宁县');
+INSERT INTO `ciy_arearpc` VALUES (511525, 511500, '高县');
+INSERT INTO `ciy_arearpc` VALUES (511526, 511500, '珙县');
+INSERT INTO `ciy_arearpc` VALUES (511527, 511500, '筠连县');
+INSERT INTO `ciy_arearpc` VALUES (511528, 511500, '兴文县');
+INSERT INTO `ciy_arearpc` VALUES (511529, 511500, '屏山县');
+INSERT INTO `ciy_arearpc` VALUES (511600, 510000, '广安市');
+INSERT INTO `ciy_arearpc` VALUES (511601, 511600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (511602, 511600, '广安区');
+INSERT INTO `ciy_arearpc` VALUES (511603, 511600, '前锋区');
+INSERT INTO `ciy_arearpc` VALUES (511621, 511600, '岳池县');
+INSERT INTO `ciy_arearpc` VALUES (511622, 511600, '武胜县');
+INSERT INTO `ciy_arearpc` VALUES (511623, 511600, '邻水县');
+INSERT INTO `ciy_arearpc` VALUES (511681, 511600, '华蓥市');
+INSERT INTO `ciy_arearpc` VALUES (511700, 510000, '达州市');
+INSERT INTO `ciy_arearpc` VALUES (511701, 511700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (511702, 511700, '通川区');
+INSERT INTO `ciy_arearpc` VALUES (511703, 511700, '达川区');
+INSERT INTO `ciy_arearpc` VALUES (511722, 511700, '宣汉县');
+INSERT INTO `ciy_arearpc` VALUES (511723, 511700, '开江县');
+INSERT INTO `ciy_arearpc` VALUES (511724, 511700, '大竹县');
+INSERT INTO `ciy_arearpc` VALUES (511725, 511700, '渠县');
+INSERT INTO `ciy_arearpc` VALUES (511771, 511700, '达州经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (511781, 511700, '万源市');
+INSERT INTO `ciy_arearpc` VALUES (511800, 510000, '雅安市');
+INSERT INTO `ciy_arearpc` VALUES (511801, 511800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (511802, 511800, '雨城区');
+INSERT INTO `ciy_arearpc` VALUES (511803, 511800, '名山区');
+INSERT INTO `ciy_arearpc` VALUES (511822, 511800, '荥经县');
+INSERT INTO `ciy_arearpc` VALUES (511823, 511800, '汉源县');
+INSERT INTO `ciy_arearpc` VALUES (511824, 511800, '石棉县');
+INSERT INTO `ciy_arearpc` VALUES (511825, 511800, '天全县');
+INSERT INTO `ciy_arearpc` VALUES (511826, 511800, '芦山县');
+INSERT INTO `ciy_arearpc` VALUES (511827, 511800, '宝兴县');
+INSERT INTO `ciy_arearpc` VALUES (511900, 510000, '巴中市');
+INSERT INTO `ciy_arearpc` VALUES (511901, 511900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (511902, 511900, '巴州区');
+INSERT INTO `ciy_arearpc` VALUES (511903, 511900, '恩阳区');
+INSERT INTO `ciy_arearpc` VALUES (511921, 511900, '通江县');
+INSERT INTO `ciy_arearpc` VALUES (511922, 511900, '南江县');
+INSERT INTO `ciy_arearpc` VALUES (511923, 511900, '平昌县');
+INSERT INTO `ciy_arearpc` VALUES (511971, 511900, '巴中经济开发区');
+INSERT INTO `ciy_arearpc` VALUES (512000, 510000, '资阳市');
+INSERT INTO `ciy_arearpc` VALUES (512001, 512000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (512002, 512000, '雁江区');
+INSERT INTO `ciy_arearpc` VALUES (512021, 512000, '安岳县');
+INSERT INTO `ciy_arearpc` VALUES (512022, 512000, '乐至县');
+INSERT INTO `ciy_arearpc` VALUES (513200, 510000, '阿坝藏族羌族自治州');
+INSERT INTO `ciy_arearpc` VALUES (513201, 513200, '马尔康市');
+INSERT INTO `ciy_arearpc` VALUES (513221, 513200, '汶川县');
+INSERT INTO `ciy_arearpc` VALUES (513222, 513200, '理县');
+INSERT INTO `ciy_arearpc` VALUES (513223, 513200, '茂县');
+INSERT INTO `ciy_arearpc` VALUES (513224, 513200, '松潘县');
+INSERT INTO `ciy_arearpc` VALUES (513225, 513200, '九寨沟县');
+INSERT INTO `ciy_arearpc` VALUES (513226, 513200, '金川县');
+INSERT INTO `ciy_arearpc` VALUES (513227, 513200, '小金县');
+INSERT INTO `ciy_arearpc` VALUES (513228, 513200, '黑水县');
+INSERT INTO `ciy_arearpc` VALUES (513230, 513200, '壤塘县');
+INSERT INTO `ciy_arearpc` VALUES (513231, 513200, '阿坝县');
+INSERT INTO `ciy_arearpc` VALUES (513232, 513200, '若尔盖县');
+INSERT INTO `ciy_arearpc` VALUES (513233, 513200, '红原县');
+INSERT INTO `ciy_arearpc` VALUES (513300, 510000, '甘孜藏族自治州');
+INSERT INTO `ciy_arearpc` VALUES (513301, 513300, '康定市');
+INSERT INTO `ciy_arearpc` VALUES (513322, 513300, '泸定县');
+INSERT INTO `ciy_arearpc` VALUES (513323, 513300, '丹巴县');
+INSERT INTO `ciy_arearpc` VALUES (513324, 513300, '九龙县');
+INSERT INTO `ciy_arearpc` VALUES (513325, 513300, '雅江县');
+INSERT INTO `ciy_arearpc` VALUES (513326, 513300, '道孚县');
+INSERT INTO `ciy_arearpc` VALUES (513327, 513300, '炉霍县');
+INSERT INTO `ciy_arearpc` VALUES (513328, 513300, '甘孜县');
+INSERT INTO `ciy_arearpc` VALUES (513329, 513300, '新龙县');
+INSERT INTO `ciy_arearpc` VALUES (513330, 513300, '德格县');
+INSERT INTO `ciy_arearpc` VALUES (513331, 513300, '白玉县');
+INSERT INTO `ciy_arearpc` VALUES (513332, 513300, '石渠县');
+INSERT INTO `ciy_arearpc` VALUES (513333, 513300, '色达县');
+INSERT INTO `ciy_arearpc` VALUES (513334, 513300, '理塘县');
+INSERT INTO `ciy_arearpc` VALUES (513335, 513300, '巴塘县');
+INSERT INTO `ciy_arearpc` VALUES (513336, 513300, '乡城县');
+INSERT INTO `ciy_arearpc` VALUES (513337, 513300, '稻城县');
+INSERT INTO `ciy_arearpc` VALUES (513338, 513300, '得荣县');
+INSERT INTO `ciy_arearpc` VALUES (513400, 510000, '凉山彝族自治州');
+INSERT INTO `ciy_arearpc` VALUES (513401, 513400, '西昌市');
+INSERT INTO `ciy_arearpc` VALUES (513402, 513400, '会理市');
+INSERT INTO `ciy_arearpc` VALUES (513422, 513400, '木里藏族自治县');
+INSERT INTO `ciy_arearpc` VALUES (513423, 513400, '盐源县');
+INSERT INTO `ciy_arearpc` VALUES (513424, 513400, '德昌县');
+INSERT INTO `ciy_arearpc` VALUES (513426, 513400, '会东县');
+INSERT INTO `ciy_arearpc` VALUES (513427, 513400, '宁南县');
+INSERT INTO `ciy_arearpc` VALUES (513428, 513400, '普格县');
+INSERT INTO `ciy_arearpc` VALUES (513429, 513400, '布拖县');
+INSERT INTO `ciy_arearpc` VALUES (513430, 513400, '金阳县');
+INSERT INTO `ciy_arearpc` VALUES (513431, 513400, '昭觉县');
+INSERT INTO `ciy_arearpc` VALUES (513432, 513400, '喜德县');
+INSERT INTO `ciy_arearpc` VALUES (513433, 513400, '冕宁县');
+INSERT INTO `ciy_arearpc` VALUES (513434, 513400, '越西县');
+INSERT INTO `ciy_arearpc` VALUES (513435, 513400, '甘洛县');
+INSERT INTO `ciy_arearpc` VALUES (513436, 513400, '美姑县');
+INSERT INTO `ciy_arearpc` VALUES (513437, 513400, '雷波县');
+INSERT INTO `ciy_arearpc` VALUES (520000, 0, '贵州省');
+INSERT INTO `ciy_arearpc` VALUES (520100, 520000, '贵阳市');
+INSERT INTO `ciy_arearpc` VALUES (520101, 520100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (520102, 520100, '南明区');
+INSERT INTO `ciy_arearpc` VALUES (520103, 520100, '云岩区');
+INSERT INTO `ciy_arearpc` VALUES (520111, 520100, '花溪区');
+INSERT INTO `ciy_arearpc` VALUES (520112, 520100, '乌当区');
+INSERT INTO `ciy_arearpc` VALUES (520113, 520100, '白云区');
+INSERT INTO `ciy_arearpc` VALUES (520115, 520100, '观山湖区');
+INSERT INTO `ciy_arearpc` VALUES (520121, 520100, '开阳县');
+INSERT INTO `ciy_arearpc` VALUES (520122, 520100, '息烽县');
+INSERT INTO `ciy_arearpc` VALUES (520123, 520100, '修文县');
+INSERT INTO `ciy_arearpc` VALUES (520181, 520100, '清镇市');
+INSERT INTO `ciy_arearpc` VALUES (520200, 520000, '六盘水市');
+INSERT INTO `ciy_arearpc` VALUES (520201, 520200, '钟山区');
+INSERT INTO `ciy_arearpc` VALUES (520203, 520200, '六枝特区');
+INSERT INTO `ciy_arearpc` VALUES (520204, 520200, '水城区');
+INSERT INTO `ciy_arearpc` VALUES (520281, 520200, '盘州市');
+INSERT INTO `ciy_arearpc` VALUES (520300, 520000, '遵义市');
+INSERT INTO `ciy_arearpc` VALUES (520301, 520300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (520302, 520300, '红花岗区');
+INSERT INTO `ciy_arearpc` VALUES (520303, 520300, '汇川区');
+INSERT INTO `ciy_arearpc` VALUES (520304, 520300, '播州区');
+INSERT INTO `ciy_arearpc` VALUES (520322, 520300, '桐梓县');
+INSERT INTO `ciy_arearpc` VALUES (520323, 520300, '绥阳县');
+INSERT INTO `ciy_arearpc` VALUES (520324, 520300, '正安县');
+INSERT INTO `ciy_arearpc` VALUES (520325, 520300, '道真仡佬族苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (520326, 520300, '务川仡佬族苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (520327, 520300, '凤冈县');
+INSERT INTO `ciy_arearpc` VALUES (520328, 520300, '湄潭县');
+INSERT INTO `ciy_arearpc` VALUES (520329, 520300, '余庆县');
+INSERT INTO `ciy_arearpc` VALUES (520330, 520300, '习水县');
+INSERT INTO `ciy_arearpc` VALUES (520381, 520300, '赤水市');
+INSERT INTO `ciy_arearpc` VALUES (520382, 520300, '仁怀市');
+INSERT INTO `ciy_arearpc` VALUES (520400, 520000, '安顺市');
+INSERT INTO `ciy_arearpc` VALUES (520401, 520400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (520402, 520400, '西秀区');
+INSERT INTO `ciy_arearpc` VALUES (520403, 520400, '平坝区');
+INSERT INTO `ciy_arearpc` VALUES (520422, 520400, '普定县');
+INSERT INTO `ciy_arearpc` VALUES (520423, 520400, '镇宁布依族苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (520424, 520400, '关岭布依族苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (520425, 520400, '紫云苗族布依族自治县');
+INSERT INTO `ciy_arearpc` VALUES (520500, 520000, '毕节市');
+INSERT INTO `ciy_arearpc` VALUES (520501, 520500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (520502, 520500, '七星关区');
+INSERT INTO `ciy_arearpc` VALUES (520521, 520500, '大方县');
+INSERT INTO `ciy_arearpc` VALUES (520523, 520500, '金沙县');
+INSERT INTO `ciy_arearpc` VALUES (520524, 520500, '织金县');
+INSERT INTO `ciy_arearpc` VALUES (520525, 520500, '纳雍县');
+INSERT INTO `ciy_arearpc` VALUES (520526, 520500, '威宁彝族回族苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (520527, 520500, '赫章县');
+INSERT INTO `ciy_arearpc` VALUES (520581, 520500, '黔西市');
+INSERT INTO `ciy_arearpc` VALUES (520600, 520000, '铜仁市');
+INSERT INTO `ciy_arearpc` VALUES (520601, 520600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (520602, 520600, '碧江区');
+INSERT INTO `ciy_arearpc` VALUES (520603, 520600, '万山区');
+INSERT INTO `ciy_arearpc` VALUES (520621, 520600, '江口县');
+INSERT INTO `ciy_arearpc` VALUES (520622, 520600, '玉屏侗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (520623, 520600, '石阡县');
+INSERT INTO `ciy_arearpc` VALUES (520624, 520600, '思南县');
+INSERT INTO `ciy_arearpc` VALUES (520625, 520600, '印江土家族苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (520626, 520600, '德江县');
+INSERT INTO `ciy_arearpc` VALUES (520627, 520600, '沿河土家族自治县');
+INSERT INTO `ciy_arearpc` VALUES (520628, 520600, '松桃苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (522300, 520000, '黔西南布依族苗族自治州');
+INSERT INTO `ciy_arearpc` VALUES (522301, 522300, '兴义市');
+INSERT INTO `ciy_arearpc` VALUES (522302, 522300, '兴仁市');
+INSERT INTO `ciy_arearpc` VALUES (522323, 522300, '普安县');
+INSERT INTO `ciy_arearpc` VALUES (522324, 522300, '晴隆县');
+INSERT INTO `ciy_arearpc` VALUES (522325, 522300, '贞丰县');
+INSERT INTO `ciy_arearpc` VALUES (522326, 522300, '望谟县');
+INSERT INTO `ciy_arearpc` VALUES (522327, 522300, '册亨县');
+INSERT INTO `ciy_arearpc` VALUES (522328, 522300, '安龙县');
+INSERT INTO `ciy_arearpc` VALUES (522600, 520000, '黔东南苗族侗族自治州');
+INSERT INTO `ciy_arearpc` VALUES (522601, 522600, '凯里市');
+INSERT INTO `ciy_arearpc` VALUES (522622, 522600, '黄平县');
+INSERT INTO `ciy_arearpc` VALUES (522623, 522600, '施秉县');
+INSERT INTO `ciy_arearpc` VALUES (522624, 522600, '三穗县');
+INSERT INTO `ciy_arearpc` VALUES (522625, 522600, '镇远县');
+INSERT INTO `ciy_arearpc` VALUES (522626, 522600, '岑巩县');
+INSERT INTO `ciy_arearpc` VALUES (522627, 522600, '天柱县');
+INSERT INTO `ciy_arearpc` VALUES (522628, 522600, '锦屏县');
+INSERT INTO `ciy_arearpc` VALUES (522629, 522600, '剑河县');
+INSERT INTO `ciy_arearpc` VALUES (522630, 522600, '台江县');
+INSERT INTO `ciy_arearpc` VALUES (522631, 522600, '黎平县');
+INSERT INTO `ciy_arearpc` VALUES (522632, 522600, '榕江县');
+INSERT INTO `ciy_arearpc` VALUES (522633, 522600, '从江县');
+INSERT INTO `ciy_arearpc` VALUES (522634, 522600, '雷山县');
+INSERT INTO `ciy_arearpc` VALUES (522635, 522600, '麻江县');
+INSERT INTO `ciy_arearpc` VALUES (522636, 522600, '丹寨县');
+INSERT INTO `ciy_arearpc` VALUES (522700, 520000, '黔南布依族苗族自治州');
+INSERT INTO `ciy_arearpc` VALUES (522701, 522700, '都匀市');
+INSERT INTO `ciy_arearpc` VALUES (522702, 522700, '福泉市');
+INSERT INTO `ciy_arearpc` VALUES (522722, 522700, '荔波县');
+INSERT INTO `ciy_arearpc` VALUES (522723, 522700, '贵定县');
+INSERT INTO `ciy_arearpc` VALUES (522725, 522700, '瓮安县');
+INSERT INTO `ciy_arearpc` VALUES (522726, 522700, '独山县');
+INSERT INTO `ciy_arearpc` VALUES (522727, 522700, '平塘县');
+INSERT INTO `ciy_arearpc` VALUES (522728, 522700, '罗甸县');
+INSERT INTO `ciy_arearpc` VALUES (522729, 522700, '长顺县');
+INSERT INTO `ciy_arearpc` VALUES (522730, 522700, '龙里县');
+INSERT INTO `ciy_arearpc` VALUES (522731, 522700, '惠水县');
+INSERT INTO `ciy_arearpc` VALUES (522732, 522700, '三都水族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530000, 0, '云南省');
+INSERT INTO `ciy_arearpc` VALUES (530100, 530000, '昆明市');
+INSERT INTO `ciy_arearpc` VALUES (530101, 530100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (530102, 530100, '五华区');
+INSERT INTO `ciy_arearpc` VALUES (530103, 530100, '盘龙区');
+INSERT INTO `ciy_arearpc` VALUES (530111, 530100, '官渡区');
+INSERT INTO `ciy_arearpc` VALUES (530112, 530100, '西山区');
+INSERT INTO `ciy_arearpc` VALUES (530113, 530100, '东川区');
+INSERT INTO `ciy_arearpc` VALUES (530114, 530100, '呈贡区');
+INSERT INTO `ciy_arearpc` VALUES (530115, 530100, '晋宁区');
+INSERT INTO `ciy_arearpc` VALUES (530124, 530100, '富民县');
+INSERT INTO `ciy_arearpc` VALUES (530125, 530100, '宜良县');
+INSERT INTO `ciy_arearpc` VALUES (530126, 530100, '石林彝族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530127, 530100, '嵩明县');
+INSERT INTO `ciy_arearpc` VALUES (530128, 530100, '禄劝彝族苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530129, 530100, '寻甸回族彝族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530181, 530100, '安宁市');
+INSERT INTO `ciy_arearpc` VALUES (530300, 530000, '曲靖市');
+INSERT INTO `ciy_arearpc` VALUES (530301, 530300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (530302, 530300, '麒麟区');
+INSERT INTO `ciy_arearpc` VALUES (530303, 530300, '沾益区');
+INSERT INTO `ciy_arearpc` VALUES (530304, 530300, '马龙区');
+INSERT INTO `ciy_arearpc` VALUES (530322, 530300, '陆良县');
+INSERT INTO `ciy_arearpc` VALUES (530323, 530300, '师宗县');
+INSERT INTO `ciy_arearpc` VALUES (530324, 530300, '罗平县');
+INSERT INTO `ciy_arearpc` VALUES (530325, 530300, '富源县');
+INSERT INTO `ciy_arearpc` VALUES (530326, 530300, '会泽县');
+INSERT INTO `ciy_arearpc` VALUES (530381, 530300, '宣威市');
+INSERT INTO `ciy_arearpc` VALUES (530400, 530000, '玉溪市');
+INSERT INTO `ciy_arearpc` VALUES (530401, 530400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (530402, 530400, '红塔区');
+INSERT INTO `ciy_arearpc` VALUES (530403, 530400, '江川区');
+INSERT INTO `ciy_arearpc` VALUES (530423, 530400, '通海县');
+INSERT INTO `ciy_arearpc` VALUES (530424, 530400, '华宁县');
+INSERT INTO `ciy_arearpc` VALUES (530425, 530400, '易门县');
+INSERT INTO `ciy_arearpc` VALUES (530426, 530400, '峨山彝族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530427, 530400, '新平彝族傣族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530428, 530400, '元江哈尼族彝族傣族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530481, 530400, '澄江市');
+INSERT INTO `ciy_arearpc` VALUES (530500, 530000, '保山市');
+INSERT INTO `ciy_arearpc` VALUES (530501, 530500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (530502, 530500, '隆阳区');
+INSERT INTO `ciy_arearpc` VALUES (530521, 530500, '施甸县');
+INSERT INTO `ciy_arearpc` VALUES (530523, 530500, '龙陵县');
+INSERT INTO `ciy_arearpc` VALUES (530524, 530500, '昌宁县');
+INSERT INTO `ciy_arearpc` VALUES (530581, 530500, '腾冲市');
+INSERT INTO `ciy_arearpc` VALUES (530600, 530000, '昭通市');
+INSERT INTO `ciy_arearpc` VALUES (530601, 530600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (530602, 530600, '昭阳区');
+INSERT INTO `ciy_arearpc` VALUES (530621, 530600, '鲁甸县');
+INSERT INTO `ciy_arearpc` VALUES (530622, 530600, '巧家县');
+INSERT INTO `ciy_arearpc` VALUES (530623, 530600, '盐津县');
+INSERT INTO `ciy_arearpc` VALUES (530624, 530600, '大关县');
+INSERT INTO `ciy_arearpc` VALUES (530625, 530600, '永善县');
+INSERT INTO `ciy_arearpc` VALUES (530626, 530600, '绥江县');
+INSERT INTO `ciy_arearpc` VALUES (530627, 530600, '镇雄县');
+INSERT INTO `ciy_arearpc` VALUES (530628, 530600, '彝良县');
+INSERT INTO `ciy_arearpc` VALUES (530629, 530600, '威信县');
+INSERT INTO `ciy_arearpc` VALUES (530681, 530600, '水富市');
+INSERT INTO `ciy_arearpc` VALUES (530700, 530000, '丽江市');
+INSERT INTO `ciy_arearpc` VALUES (530701, 530700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (530702, 530700, '古城区');
+INSERT INTO `ciy_arearpc` VALUES (530721, 530700, '玉龙纳西族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530722, 530700, '永胜县');
+INSERT INTO `ciy_arearpc` VALUES (530723, 530700, '华坪县');
+INSERT INTO `ciy_arearpc` VALUES (530724, 530700, '宁蒗彝族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530800, 530000, '普洱市');
+INSERT INTO `ciy_arearpc` VALUES (530801, 530800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (530802, 530800, '思茅区');
+INSERT INTO `ciy_arearpc` VALUES (530821, 530800, '宁洱哈尼族彝族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530822, 530800, '墨江哈尼族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530823, 530800, '景东彝族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530824, 530800, '景谷傣族彝族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530825, 530800, '镇沅彝族哈尼族拉祜族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530826, 530800, '江城哈尼族彝族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530827, 530800, '孟连傣族拉祜族佤族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530828, 530800, '澜沧拉祜族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530829, 530800, '西盟佤族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530900, 530000, '临沧市');
+INSERT INTO `ciy_arearpc` VALUES (530901, 530900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (530902, 530900, '临翔区');
+INSERT INTO `ciy_arearpc` VALUES (530921, 530900, '凤庆县');
+INSERT INTO `ciy_arearpc` VALUES (530922, 530900, '云县');
+INSERT INTO `ciy_arearpc` VALUES (530923, 530900, '永德县');
+INSERT INTO `ciy_arearpc` VALUES (530924, 530900, '镇康县');
+INSERT INTO `ciy_arearpc` VALUES (530925, 530900, '双江拉祜族佤族布朗族傣族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530926, 530900, '耿马傣族佤族自治县');
+INSERT INTO `ciy_arearpc` VALUES (530927, 530900, '沧源佤族自治县');
+INSERT INTO `ciy_arearpc` VALUES (532300, 530000, '楚雄彝族自治州');
+INSERT INTO `ciy_arearpc` VALUES (532301, 532300, '楚雄市');
+INSERT INTO `ciy_arearpc` VALUES (532302, 532300, '禄丰市');
+INSERT INTO `ciy_arearpc` VALUES (532322, 532300, '双柏县');
+INSERT INTO `ciy_arearpc` VALUES (532323, 532300, '牟定县');
+INSERT INTO `ciy_arearpc` VALUES (532324, 532300, '南华县');
+INSERT INTO `ciy_arearpc` VALUES (532325, 532300, '姚安县');
+INSERT INTO `ciy_arearpc` VALUES (532326, 532300, '大姚县');
+INSERT INTO `ciy_arearpc` VALUES (532327, 532300, '永仁县');
+INSERT INTO `ciy_arearpc` VALUES (532328, 532300, '元谋县');
+INSERT INTO `ciy_arearpc` VALUES (532329, 532300, '武定县');
+INSERT INTO `ciy_arearpc` VALUES (532500, 530000, '红河哈尼族彝族自治州');
+INSERT INTO `ciy_arearpc` VALUES (532501, 532500, '个旧市');
+INSERT INTO `ciy_arearpc` VALUES (532502, 532500, '开远市');
+INSERT INTO `ciy_arearpc` VALUES (532503, 532500, '蒙自市');
+INSERT INTO `ciy_arearpc` VALUES (532504, 532500, '弥勒市');
+INSERT INTO `ciy_arearpc` VALUES (532523, 532500, '屏边苗族自治县');
+INSERT INTO `ciy_arearpc` VALUES (532524, 532500, '建水县');
+INSERT INTO `ciy_arearpc` VALUES (532525, 532500, '石屏县');
+INSERT INTO `ciy_arearpc` VALUES (532527, 532500, '泸西县');
+INSERT INTO `ciy_arearpc` VALUES (532528, 532500, '元阳县');
+INSERT INTO `ciy_arearpc` VALUES (532529, 532500, '红河县');
+INSERT INTO `ciy_arearpc` VALUES (532530, 532500, '金平苗族瑶族傣族自治县');
+INSERT INTO `ciy_arearpc` VALUES (532531, 532500, '绿春县');
+INSERT INTO `ciy_arearpc` VALUES (532532, 532500, '河口瑶族自治县');
+INSERT INTO `ciy_arearpc` VALUES (532600, 530000, '文山壮族苗族自治州');
+INSERT INTO `ciy_arearpc` VALUES (532601, 532600, '文山市');
+INSERT INTO `ciy_arearpc` VALUES (532622, 532600, '砚山县');
+INSERT INTO `ciy_arearpc` VALUES (532623, 532600, '西畴县');
+INSERT INTO `ciy_arearpc` VALUES (532624, 532600, '麻栗坡县');
+INSERT INTO `ciy_arearpc` VALUES (532625, 532600, '马关县');
+INSERT INTO `ciy_arearpc` VALUES (532626, 532600, '丘北县');
+INSERT INTO `ciy_arearpc` VALUES (532627, 532600, '广南县');
+INSERT INTO `ciy_arearpc` VALUES (532628, 532600, '富宁县');
+INSERT INTO `ciy_arearpc` VALUES (532800, 530000, '西双版纳傣族自治州');
+INSERT INTO `ciy_arearpc` VALUES (532801, 532800, '景洪市');
+INSERT INTO `ciy_arearpc` VALUES (532822, 532800, '勐海县');
+INSERT INTO `ciy_arearpc` VALUES (532823, 532800, '勐腊县');
+INSERT INTO `ciy_arearpc` VALUES (532900, 530000, '大理白族自治州');
+INSERT INTO `ciy_arearpc` VALUES (532901, 532900, '大理市');
+INSERT INTO `ciy_arearpc` VALUES (532922, 532900, '漾濞彝族自治县');
+INSERT INTO `ciy_arearpc` VALUES (532923, 532900, '祥云县');
+INSERT INTO `ciy_arearpc` VALUES (532924, 532900, '宾川县');
+INSERT INTO `ciy_arearpc` VALUES (532925, 532900, '弥渡县');
+INSERT INTO `ciy_arearpc` VALUES (532926, 532900, '南涧彝族自治县');
+INSERT INTO `ciy_arearpc` VALUES (532927, 532900, '巍山彝族回族自治县');
+INSERT INTO `ciy_arearpc` VALUES (532928, 532900, '永平县');
+INSERT INTO `ciy_arearpc` VALUES (532929, 532900, '云龙县');
+INSERT INTO `ciy_arearpc` VALUES (532930, 532900, '洱源县');
+INSERT INTO `ciy_arearpc` VALUES (532931, 532900, '剑川县');
+INSERT INTO `ciy_arearpc` VALUES (532932, 532900, '鹤庆县');
+INSERT INTO `ciy_arearpc` VALUES (533100, 530000, '德宏傣族景颇族自治州');
+INSERT INTO `ciy_arearpc` VALUES (533102, 533100, '瑞丽市');
+INSERT INTO `ciy_arearpc` VALUES (533103, 533100, '芒市');
+INSERT INTO `ciy_arearpc` VALUES (533122, 533100, '梁河县');
+INSERT INTO `ciy_arearpc` VALUES (533123, 533100, '盈江县');
+INSERT INTO `ciy_arearpc` VALUES (533124, 533100, '陇川县');
+INSERT INTO `ciy_arearpc` VALUES (533300, 530000, '怒江傈僳族自治州');
+INSERT INTO `ciy_arearpc` VALUES (533301, 533300, '泸水市');
+INSERT INTO `ciy_arearpc` VALUES (533323, 533300, '福贡县');
+INSERT INTO `ciy_arearpc` VALUES (533324, 533300, '贡山独龙族怒族自治县');
+INSERT INTO `ciy_arearpc` VALUES (533325, 533300, '兰坪白族普米族自治县');
+INSERT INTO `ciy_arearpc` VALUES (533400, 530000, '迪庆藏族自治州');
+INSERT INTO `ciy_arearpc` VALUES (533401, 533400, '香格里拉市');
+INSERT INTO `ciy_arearpc` VALUES (533422, 533400, '德钦县');
+INSERT INTO `ciy_arearpc` VALUES (533423, 533400, '维西傈僳族自治县');
+INSERT INTO `ciy_arearpc` VALUES (540000, 0, '西藏自治区');
+INSERT INTO `ciy_arearpc` VALUES (540100, 540000, '拉萨市');
+INSERT INTO `ciy_arearpc` VALUES (540101, 540100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (540102, 540100, '城关区');
+INSERT INTO `ciy_arearpc` VALUES (540103, 540100, '堆龙德庆区');
+INSERT INTO `ciy_arearpc` VALUES (540104, 540100, '达孜区');
+INSERT INTO `ciy_arearpc` VALUES (540121, 540100, '林周县');
+INSERT INTO `ciy_arearpc` VALUES (540122, 540100, '当雄县');
+INSERT INTO `ciy_arearpc` VALUES (540123, 540100, '尼木县');
+INSERT INTO `ciy_arearpc` VALUES (540124, 540100, '曲水县');
+INSERT INTO `ciy_arearpc` VALUES (540127, 540100, '墨竹工卡县');
+INSERT INTO `ciy_arearpc` VALUES (540171, 540100, '格尔木藏青工业园区');
+INSERT INTO `ciy_arearpc` VALUES (540172, 540100, '拉萨经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (540173, 540100, '西藏文化旅游创意园区');
+INSERT INTO `ciy_arearpc` VALUES (540174, 540100, '达孜工业园区');
+INSERT INTO `ciy_arearpc` VALUES (540200, 540000, '日喀则市');
+INSERT INTO `ciy_arearpc` VALUES (540202, 540200, '桑珠孜区');
+INSERT INTO `ciy_arearpc` VALUES (540221, 540200, '南木林县');
+INSERT INTO `ciy_arearpc` VALUES (540222, 540200, '江孜县');
+INSERT INTO `ciy_arearpc` VALUES (540223, 540200, '定日县');
+INSERT INTO `ciy_arearpc` VALUES (540224, 540200, '萨迦县');
+INSERT INTO `ciy_arearpc` VALUES (540225, 540200, '拉孜县');
+INSERT INTO `ciy_arearpc` VALUES (540226, 540200, '昂仁县');
+INSERT INTO `ciy_arearpc` VALUES (540227, 540200, '谢通门县');
+INSERT INTO `ciy_arearpc` VALUES (540228, 540200, '白朗县');
+INSERT INTO `ciy_arearpc` VALUES (540229, 540200, '仁布县');
+INSERT INTO `ciy_arearpc` VALUES (540230, 540200, '康马县');
+INSERT INTO `ciy_arearpc` VALUES (540231, 540200, '定结县');
+INSERT INTO `ciy_arearpc` VALUES (540232, 540200, '仲巴县');
+INSERT INTO `ciy_arearpc` VALUES (540233, 540200, '亚东县');
+INSERT INTO `ciy_arearpc` VALUES (540234, 540200, '吉隆县');
+INSERT INTO `ciy_arearpc` VALUES (540235, 540200, '聂拉木县');
+INSERT INTO `ciy_arearpc` VALUES (540236, 540200, '萨嘎县');
+INSERT INTO `ciy_arearpc` VALUES (540237, 540200, '岗巴县');
+INSERT INTO `ciy_arearpc` VALUES (540300, 540000, '昌都市');
+INSERT INTO `ciy_arearpc` VALUES (540302, 540300, '卡若区');
+INSERT INTO `ciy_arearpc` VALUES (540321, 540300, '江达县');
+INSERT INTO `ciy_arearpc` VALUES (540322, 540300, '贡觉县');
+INSERT INTO `ciy_arearpc` VALUES (540323, 540300, '类乌齐县');
+INSERT INTO `ciy_arearpc` VALUES (540324, 540300, '丁青县');
+INSERT INTO `ciy_arearpc` VALUES (540325, 540300, '察雅县');
+INSERT INTO `ciy_arearpc` VALUES (540326, 540300, '八宿县');
+INSERT INTO `ciy_arearpc` VALUES (540327, 540300, '左贡县');
+INSERT INTO `ciy_arearpc` VALUES (540328, 540300, '芒康县');
+INSERT INTO `ciy_arearpc` VALUES (540329, 540300, '洛隆县');
+INSERT INTO `ciy_arearpc` VALUES (540330, 540300, '边坝县');
+INSERT INTO `ciy_arearpc` VALUES (540400, 540000, '林芝市');
+INSERT INTO `ciy_arearpc` VALUES (540402, 540400, '巴宜区');
+INSERT INTO `ciy_arearpc` VALUES (540421, 540400, '工布江达县');
+INSERT INTO `ciy_arearpc` VALUES (540422, 540400, '米林县');
+INSERT INTO `ciy_arearpc` VALUES (540423, 540400, '墨脱县');
+INSERT INTO `ciy_arearpc` VALUES (540424, 540400, '波密县');
+INSERT INTO `ciy_arearpc` VALUES (540425, 540400, '察隅县');
+INSERT INTO `ciy_arearpc` VALUES (540426, 540400, '朗县');
+INSERT INTO `ciy_arearpc` VALUES (540500, 540000, '山南市');
+INSERT INTO `ciy_arearpc` VALUES (540501, 540500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (540502, 540500, '乃东区');
+INSERT INTO `ciy_arearpc` VALUES (540521, 540500, '扎囊县');
+INSERT INTO `ciy_arearpc` VALUES (540522, 540500, '贡嘎县');
+INSERT INTO `ciy_arearpc` VALUES (540523, 540500, '桑日县');
+INSERT INTO `ciy_arearpc` VALUES (540524, 540500, '琼结县');
+INSERT INTO `ciy_arearpc` VALUES (540525, 540500, '曲松县');
+INSERT INTO `ciy_arearpc` VALUES (540526, 540500, '措美县');
+INSERT INTO `ciy_arearpc` VALUES (540527, 540500, '洛扎县');
+INSERT INTO `ciy_arearpc` VALUES (540528, 540500, '加查县');
+INSERT INTO `ciy_arearpc` VALUES (540529, 540500, '隆子县');
+INSERT INTO `ciy_arearpc` VALUES (540530, 540500, '错那县');
+INSERT INTO `ciy_arearpc` VALUES (540531, 540500, '浪卡子县');
+INSERT INTO `ciy_arearpc` VALUES (540600, 540000, '那曲市');
+INSERT INTO `ciy_arearpc` VALUES (540602, 540600, '色尼区');
+INSERT INTO `ciy_arearpc` VALUES (540621, 540600, '嘉黎县');
+INSERT INTO `ciy_arearpc` VALUES (540622, 540600, '比如县');
+INSERT INTO `ciy_arearpc` VALUES (540623, 540600, '聂荣县');
+INSERT INTO `ciy_arearpc` VALUES (540624, 540600, '安多县');
+INSERT INTO `ciy_arearpc` VALUES (540625, 540600, '申扎县');
+INSERT INTO `ciy_arearpc` VALUES (540626, 540600, '索县');
+INSERT INTO `ciy_arearpc` VALUES (540627, 540600, '班戈县');
+INSERT INTO `ciy_arearpc` VALUES (540628, 540600, '巴青县');
+INSERT INTO `ciy_arearpc` VALUES (540629, 540600, '尼玛县');
+INSERT INTO `ciy_arearpc` VALUES (540630, 540600, '双湖县');
+INSERT INTO `ciy_arearpc` VALUES (542500, 540000, '阿里地区');
+INSERT INTO `ciy_arearpc` VALUES (542521, 542500, '普兰县');
+INSERT INTO `ciy_arearpc` VALUES (542522, 542500, '札达县');
+INSERT INTO `ciy_arearpc` VALUES (542523, 542500, '噶尔县');
+INSERT INTO `ciy_arearpc` VALUES (542524, 542500, '日土县');
+INSERT INTO `ciy_arearpc` VALUES (542525, 542500, '革吉县');
+INSERT INTO `ciy_arearpc` VALUES (542526, 542500, '改则县');
+INSERT INTO `ciy_arearpc` VALUES (542527, 542500, '措勤县');
+INSERT INTO `ciy_arearpc` VALUES (610000, 0, '陕西省');
+INSERT INTO `ciy_arearpc` VALUES (610100, 610000, '西安市');
+INSERT INTO `ciy_arearpc` VALUES (610101, 610100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (610102, 610100, '新城区');
+INSERT INTO `ciy_arearpc` VALUES (610103, 610100, '碑林区');
+INSERT INTO `ciy_arearpc` VALUES (610104, 610100, '莲湖区');
+INSERT INTO `ciy_arearpc` VALUES (610111, 610100, '灞桥区');
+INSERT INTO `ciy_arearpc` VALUES (610112, 610100, '未央区');
+INSERT INTO `ciy_arearpc` VALUES (610113, 610100, '雁塔区');
+INSERT INTO `ciy_arearpc` VALUES (610114, 610100, '阎良区');
+INSERT INTO `ciy_arearpc` VALUES (610115, 610100, '临潼区');
+INSERT INTO `ciy_arearpc` VALUES (610116, 610100, '长安区');
+INSERT INTO `ciy_arearpc` VALUES (610117, 610100, '高陵区');
+INSERT INTO `ciy_arearpc` VALUES (610118, 610100, '鄠邑区');
+INSERT INTO `ciy_arearpc` VALUES (610122, 610100, '蓝田县');
+INSERT INTO `ciy_arearpc` VALUES (610124, 610100, '周至县');
+INSERT INTO `ciy_arearpc` VALUES (610200, 610000, '铜川市');
+INSERT INTO `ciy_arearpc` VALUES (610201, 610200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (610202, 610200, '王益区');
+INSERT INTO `ciy_arearpc` VALUES (610203, 610200, '印台区');
+INSERT INTO `ciy_arearpc` VALUES (610204, 610200, '耀州区');
+INSERT INTO `ciy_arearpc` VALUES (610222, 610200, '宜君县');
+INSERT INTO `ciy_arearpc` VALUES (610300, 610000, '宝鸡市');
+INSERT INTO `ciy_arearpc` VALUES (610301, 610300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (610302, 610300, '渭滨区');
+INSERT INTO `ciy_arearpc` VALUES (610303, 610300, '金台区');
+INSERT INTO `ciy_arearpc` VALUES (610304, 610300, '陈仓区');
+INSERT INTO `ciy_arearpc` VALUES (610305, 610300, '凤翔区');
+INSERT INTO `ciy_arearpc` VALUES (610323, 610300, '岐山县');
+INSERT INTO `ciy_arearpc` VALUES (610324, 610300, '扶风县');
+INSERT INTO `ciy_arearpc` VALUES (610326, 610300, '眉县');
+INSERT INTO `ciy_arearpc` VALUES (610327, 610300, '陇县');
+INSERT INTO `ciy_arearpc` VALUES (610328, 610300, '千阳县');
+INSERT INTO `ciy_arearpc` VALUES (610329, 610300, '麟游县');
+INSERT INTO `ciy_arearpc` VALUES (610330, 610300, '凤县');
+INSERT INTO `ciy_arearpc` VALUES (610331, 610300, '太白县');
+INSERT INTO `ciy_arearpc` VALUES (610400, 610000, '咸阳市');
+INSERT INTO `ciy_arearpc` VALUES (610401, 610400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (610402, 610400, '秦都区');
+INSERT INTO `ciy_arearpc` VALUES (610403, 610400, '杨陵区');
+INSERT INTO `ciy_arearpc` VALUES (610404, 610400, '渭城区');
+INSERT INTO `ciy_arearpc` VALUES (610422, 610400, '三原县');
+INSERT INTO `ciy_arearpc` VALUES (610423, 610400, '泾阳县');
+INSERT INTO `ciy_arearpc` VALUES (610424, 610400, '乾县');
+INSERT INTO `ciy_arearpc` VALUES (610425, 610400, '礼泉县');
+INSERT INTO `ciy_arearpc` VALUES (610426, 610400, '永寿县');
+INSERT INTO `ciy_arearpc` VALUES (610428, 610400, '长武县');
+INSERT INTO `ciy_arearpc` VALUES (610429, 610400, '旬邑县');
+INSERT INTO `ciy_arearpc` VALUES (610430, 610400, '淳化县');
+INSERT INTO `ciy_arearpc` VALUES (610431, 610400, '武功县');
+INSERT INTO `ciy_arearpc` VALUES (610481, 610400, '兴平市');
+INSERT INTO `ciy_arearpc` VALUES (610482, 610400, '彬州市');
+INSERT INTO `ciy_arearpc` VALUES (610500, 610000, '渭南市');
+INSERT INTO `ciy_arearpc` VALUES (610501, 610500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (610502, 610500, '临渭区');
+INSERT INTO `ciy_arearpc` VALUES (610503, 610500, '华州区');
+INSERT INTO `ciy_arearpc` VALUES (610522, 610500, '潼关县');
+INSERT INTO `ciy_arearpc` VALUES (610523, 610500, '大荔县');
+INSERT INTO `ciy_arearpc` VALUES (610524, 610500, '合阳县');
+INSERT INTO `ciy_arearpc` VALUES (610525, 610500, '澄城县');
+INSERT INTO `ciy_arearpc` VALUES (610526, 610500, '蒲城县');
+INSERT INTO `ciy_arearpc` VALUES (610527, 610500, '白水县');
+INSERT INTO `ciy_arearpc` VALUES (610528, 610500, '富平县');
+INSERT INTO `ciy_arearpc` VALUES (610581, 610500, '韩城市');
+INSERT INTO `ciy_arearpc` VALUES (610582, 610500, '华阴市');
+INSERT INTO `ciy_arearpc` VALUES (610600, 610000, '延安市');
+INSERT INTO `ciy_arearpc` VALUES (610601, 610600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (610602, 610600, '宝塔区');
+INSERT INTO `ciy_arearpc` VALUES (610603, 610600, '安塞区');
+INSERT INTO `ciy_arearpc` VALUES (610621, 610600, '延长县');
+INSERT INTO `ciy_arearpc` VALUES (610622, 610600, '延川县');
+INSERT INTO `ciy_arearpc` VALUES (610625, 610600, '志丹县');
+INSERT INTO `ciy_arearpc` VALUES (610626, 610600, '吴起县');
+INSERT INTO `ciy_arearpc` VALUES (610627, 610600, '甘泉县');
+INSERT INTO `ciy_arearpc` VALUES (610628, 610600, '富县');
+INSERT INTO `ciy_arearpc` VALUES (610629, 610600, '洛川县');
+INSERT INTO `ciy_arearpc` VALUES (610630, 610600, '宜川县');
+INSERT INTO `ciy_arearpc` VALUES (610631, 610600, '黄龙县');
+INSERT INTO `ciy_arearpc` VALUES (610632, 610600, '黄陵县');
+INSERT INTO `ciy_arearpc` VALUES (610681, 610600, '子长市');
+INSERT INTO `ciy_arearpc` VALUES (610700, 610000, '汉中市');
+INSERT INTO `ciy_arearpc` VALUES (610701, 610700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (610702, 610700, '汉台区');
+INSERT INTO `ciy_arearpc` VALUES (610703, 610700, '南郑区');
+INSERT INTO `ciy_arearpc` VALUES (610722, 610700, '城固县');
+INSERT INTO `ciy_arearpc` VALUES (610723, 610700, '洋县');
+INSERT INTO `ciy_arearpc` VALUES (610724, 610700, '西乡县');
+INSERT INTO `ciy_arearpc` VALUES (610725, 610700, '勉县');
+INSERT INTO `ciy_arearpc` VALUES (610726, 610700, '宁强县');
+INSERT INTO `ciy_arearpc` VALUES (610727, 610700, '略阳县');
+INSERT INTO `ciy_arearpc` VALUES (610728, 610700, '镇巴县');
+INSERT INTO `ciy_arearpc` VALUES (610729, 610700, '留坝县');
+INSERT INTO `ciy_arearpc` VALUES (610730, 610700, '佛坪县');
+INSERT INTO `ciy_arearpc` VALUES (610800, 610000, '榆林市');
+INSERT INTO `ciy_arearpc` VALUES (610801, 610800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (610802, 610800, '榆阳区');
+INSERT INTO `ciy_arearpc` VALUES (610803, 610800, '横山区');
+INSERT INTO `ciy_arearpc` VALUES (610822, 610800, '府谷县');
+INSERT INTO `ciy_arearpc` VALUES (610824, 610800, '靖边县');
+INSERT INTO `ciy_arearpc` VALUES (610825, 610800, '定边县');
+INSERT INTO `ciy_arearpc` VALUES (610826, 610800, '绥德县');
+INSERT INTO `ciy_arearpc` VALUES (610827, 610800, '米脂县');
+INSERT INTO `ciy_arearpc` VALUES (610828, 610800, '佳县');
+INSERT INTO `ciy_arearpc` VALUES (610829, 610800, '吴堡县');
+INSERT INTO `ciy_arearpc` VALUES (610830, 610800, '清涧县');
+INSERT INTO `ciy_arearpc` VALUES (610831, 610800, '子洲县');
+INSERT INTO `ciy_arearpc` VALUES (610881, 610800, '神木市');
+INSERT INTO `ciy_arearpc` VALUES (610900, 610000, '安康市');
+INSERT INTO `ciy_arearpc` VALUES (610901, 610900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (610902, 610900, '汉滨区');
+INSERT INTO `ciy_arearpc` VALUES (610921, 610900, '汉阴县');
+INSERT INTO `ciy_arearpc` VALUES (610922, 610900, '石泉县');
+INSERT INTO `ciy_arearpc` VALUES (610923, 610900, '宁陕县');
+INSERT INTO `ciy_arearpc` VALUES (610924, 610900, '紫阳县');
+INSERT INTO `ciy_arearpc` VALUES (610925, 610900, '岚皋县');
+INSERT INTO `ciy_arearpc` VALUES (610926, 610900, '平利县');
+INSERT INTO `ciy_arearpc` VALUES (610927, 610900, '镇坪县');
+INSERT INTO `ciy_arearpc` VALUES (610929, 610900, '白河县');
+INSERT INTO `ciy_arearpc` VALUES (610981, 610900, '旬阳市');
+INSERT INTO `ciy_arearpc` VALUES (611000, 610000, '商洛市');
+INSERT INTO `ciy_arearpc` VALUES (611001, 611000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (611002, 611000, '商州区');
+INSERT INTO `ciy_arearpc` VALUES (611021, 611000, '洛南县');
+INSERT INTO `ciy_arearpc` VALUES (611022, 611000, '丹凤县');
+INSERT INTO `ciy_arearpc` VALUES (611023, 611000, '商南县');
+INSERT INTO `ciy_arearpc` VALUES (611024, 611000, '山阳县');
+INSERT INTO `ciy_arearpc` VALUES (611025, 611000, '镇安县');
+INSERT INTO `ciy_arearpc` VALUES (611026, 611000, '柞水县');
+INSERT INTO `ciy_arearpc` VALUES (620000, 0, '甘肃省');
+INSERT INTO `ciy_arearpc` VALUES (620100, 620000, '兰州市');
+INSERT INTO `ciy_arearpc` VALUES (620101, 620100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (620102, 620100, '城关区');
+INSERT INTO `ciy_arearpc` VALUES (620103, 620100, '七里河区');
+INSERT INTO `ciy_arearpc` VALUES (620104, 620100, '西固区');
+INSERT INTO `ciy_arearpc` VALUES (620105, 620100, '安宁区');
+INSERT INTO `ciy_arearpc` VALUES (620111, 620100, '红古区');
+INSERT INTO `ciy_arearpc` VALUES (620121, 620100, '永登县');
+INSERT INTO `ciy_arearpc` VALUES (620122, 620100, '皋兰县');
+INSERT INTO `ciy_arearpc` VALUES (620123, 620100, '榆中县');
+INSERT INTO `ciy_arearpc` VALUES (620171, 620100, '兰州新区');
+INSERT INTO `ciy_arearpc` VALUES (620200, 620000, '嘉峪关市');
+INSERT INTO `ciy_arearpc` VALUES (620201, 620200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (620300, 620000, '金昌市');
+INSERT INTO `ciy_arearpc` VALUES (620301, 620300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (620302, 620300, '金川区');
+INSERT INTO `ciy_arearpc` VALUES (620321, 620300, '永昌县');
+INSERT INTO `ciy_arearpc` VALUES (620400, 620000, '白银市');
+INSERT INTO `ciy_arearpc` VALUES (620401, 620400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (620402, 620400, '白银区');
+INSERT INTO `ciy_arearpc` VALUES (620403, 620400, '平川区');
+INSERT INTO `ciy_arearpc` VALUES (620421, 620400, '靖远县');
+INSERT INTO `ciy_arearpc` VALUES (620422, 620400, '会宁县');
+INSERT INTO `ciy_arearpc` VALUES (620423, 620400, '景泰县');
+INSERT INTO `ciy_arearpc` VALUES (620500, 620000, '天水市');
+INSERT INTO `ciy_arearpc` VALUES (620501, 620500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (620502, 620500, '秦州区');
+INSERT INTO `ciy_arearpc` VALUES (620503, 620500, '麦积区');
+INSERT INTO `ciy_arearpc` VALUES (620521, 620500, '清水县');
+INSERT INTO `ciy_arearpc` VALUES (620522, 620500, '秦安县');
+INSERT INTO `ciy_arearpc` VALUES (620523, 620500, '甘谷县');
+INSERT INTO `ciy_arearpc` VALUES (620524, 620500, '武山县');
+INSERT INTO `ciy_arearpc` VALUES (620525, 620500, '张家川回族自治县');
+INSERT INTO `ciy_arearpc` VALUES (620600, 620000, '武威市');
+INSERT INTO `ciy_arearpc` VALUES (620601, 620600, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (620602, 620600, '凉州区');
+INSERT INTO `ciy_arearpc` VALUES (620621, 620600, '民勤县');
+INSERT INTO `ciy_arearpc` VALUES (620622, 620600, '古浪县');
+INSERT INTO `ciy_arearpc` VALUES (620623, 620600, '天祝藏族自治县');
+INSERT INTO `ciy_arearpc` VALUES (620700, 620000, '张掖市');
+INSERT INTO `ciy_arearpc` VALUES (620701, 620700, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (620702, 620700, '甘州区');
+INSERT INTO `ciy_arearpc` VALUES (620721, 620700, '肃南裕固族自治县');
+INSERT INTO `ciy_arearpc` VALUES (620722, 620700, '民乐县');
+INSERT INTO `ciy_arearpc` VALUES (620723, 620700, '临泽县');
+INSERT INTO `ciy_arearpc` VALUES (620724, 620700, '高台县');
+INSERT INTO `ciy_arearpc` VALUES (620725, 620700, '山丹县');
+INSERT INTO `ciy_arearpc` VALUES (620800, 620000, '平凉市');
+INSERT INTO `ciy_arearpc` VALUES (620801, 620800, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (620802, 620800, '崆峒区');
+INSERT INTO `ciy_arearpc` VALUES (620821, 620800, '泾川县');
+INSERT INTO `ciy_arearpc` VALUES (620822, 620800, '灵台县');
+INSERT INTO `ciy_arearpc` VALUES (620823, 620800, '崇信县');
+INSERT INTO `ciy_arearpc` VALUES (620825, 620800, '庄浪县');
+INSERT INTO `ciy_arearpc` VALUES (620826, 620800, '静宁县');
+INSERT INTO `ciy_arearpc` VALUES (620881, 620800, '华亭市');
+INSERT INTO `ciy_arearpc` VALUES (620900, 620000, '酒泉市');
+INSERT INTO `ciy_arearpc` VALUES (620901, 620900, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (620902, 620900, '肃州区');
+INSERT INTO `ciy_arearpc` VALUES (620921, 620900, '金塔县');
+INSERT INTO `ciy_arearpc` VALUES (620922, 620900, '瓜州县');
+INSERT INTO `ciy_arearpc` VALUES (620923, 620900, '肃北蒙古族自治县');
+INSERT INTO `ciy_arearpc` VALUES (620924, 620900, '阿克塞哈萨克族自治县');
+INSERT INTO `ciy_arearpc` VALUES (620981, 620900, '玉门市');
+INSERT INTO `ciy_arearpc` VALUES (620982, 620900, '敦煌市');
+INSERT INTO `ciy_arearpc` VALUES (621000, 620000, '庆阳市');
+INSERT INTO `ciy_arearpc` VALUES (621001, 621000, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (621002, 621000, '西峰区');
+INSERT INTO `ciy_arearpc` VALUES (621021, 621000, '庆城县');
+INSERT INTO `ciy_arearpc` VALUES (621022, 621000, '环县');
+INSERT INTO `ciy_arearpc` VALUES (621023, 621000, '华池县');
+INSERT INTO `ciy_arearpc` VALUES (621024, 621000, '合水县');
+INSERT INTO `ciy_arearpc` VALUES (621025, 621000, '正宁县');
+INSERT INTO `ciy_arearpc` VALUES (621026, 621000, '宁县');
+INSERT INTO `ciy_arearpc` VALUES (621027, 621000, '镇原县');
+INSERT INTO `ciy_arearpc` VALUES (621100, 620000, '定西市');
+INSERT INTO `ciy_arearpc` VALUES (621101, 621100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (621102, 621100, '安定区');
+INSERT INTO `ciy_arearpc` VALUES (621121, 621100, '通渭县');
+INSERT INTO `ciy_arearpc` VALUES (621122, 621100, '陇西县');
+INSERT INTO `ciy_arearpc` VALUES (621123, 621100, '渭源县');
+INSERT INTO `ciy_arearpc` VALUES (621124, 621100, '临洮县');
+INSERT INTO `ciy_arearpc` VALUES (621125, 621100, '漳县');
+INSERT INTO `ciy_arearpc` VALUES (621126, 621100, '岷县');
+INSERT INTO `ciy_arearpc` VALUES (621200, 620000, '陇南市');
+INSERT INTO `ciy_arearpc` VALUES (621201, 621200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (621202, 621200, '武都区');
+INSERT INTO `ciy_arearpc` VALUES (621221, 621200, '成县');
+INSERT INTO `ciy_arearpc` VALUES (621222, 621200, '文县');
+INSERT INTO `ciy_arearpc` VALUES (621223, 621200, '宕昌县');
+INSERT INTO `ciy_arearpc` VALUES (621224, 621200, '康县');
+INSERT INTO `ciy_arearpc` VALUES (621225, 621200, '西和县');
+INSERT INTO `ciy_arearpc` VALUES (621226, 621200, '礼县');
+INSERT INTO `ciy_arearpc` VALUES (621227, 621200, '徽县');
+INSERT INTO `ciy_arearpc` VALUES (621228, 621200, '两当县');
+INSERT INTO `ciy_arearpc` VALUES (622900, 620000, '临夏回族自治州');
+INSERT INTO `ciy_arearpc` VALUES (622901, 622900, '临夏市');
+INSERT INTO `ciy_arearpc` VALUES (622921, 622900, '临夏县');
+INSERT INTO `ciy_arearpc` VALUES (622922, 622900, '康乐县');
+INSERT INTO `ciy_arearpc` VALUES (622923, 622900, '永靖县');
+INSERT INTO `ciy_arearpc` VALUES (622924, 622900, '广河县');
+INSERT INTO `ciy_arearpc` VALUES (622925, 622900, '和政县');
+INSERT INTO `ciy_arearpc` VALUES (622926, 622900, '东乡族自治县');
+INSERT INTO `ciy_arearpc` VALUES (622927, 622900, '积石山保安族东乡族撒拉族自治县');
+INSERT INTO `ciy_arearpc` VALUES (623000, 620000, '甘南藏族自治州');
+INSERT INTO `ciy_arearpc` VALUES (623001, 623000, '合作市');
+INSERT INTO `ciy_arearpc` VALUES (623021, 623000, '临潭县');
+INSERT INTO `ciy_arearpc` VALUES (623022, 623000, '卓尼县');
+INSERT INTO `ciy_arearpc` VALUES (623023, 623000, '舟曲县');
+INSERT INTO `ciy_arearpc` VALUES (623024, 623000, '迭部县');
+INSERT INTO `ciy_arearpc` VALUES (623025, 623000, '玛曲县');
+INSERT INTO `ciy_arearpc` VALUES (623026, 623000, '碌曲县');
+INSERT INTO `ciy_arearpc` VALUES (623027, 623000, '夏河县');
+INSERT INTO `ciy_arearpc` VALUES (630000, 0, '青海省');
+INSERT INTO `ciy_arearpc` VALUES (630100, 630000, '西宁市');
+INSERT INTO `ciy_arearpc` VALUES (630101, 630100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (630102, 630100, '城东区');
+INSERT INTO `ciy_arearpc` VALUES (630103, 630100, '城中区');
+INSERT INTO `ciy_arearpc` VALUES (630104, 630100, '城西区');
+INSERT INTO `ciy_arearpc` VALUES (630105, 630100, '城北区');
+INSERT INTO `ciy_arearpc` VALUES (630106, 630100, '湟中区');
+INSERT INTO `ciy_arearpc` VALUES (630121, 630100, '大通回族土族自治县');
+INSERT INTO `ciy_arearpc` VALUES (630123, 630100, '湟源县');
+INSERT INTO `ciy_arearpc` VALUES (630200, 630000, '海东市');
+INSERT INTO `ciy_arearpc` VALUES (630202, 630200, '乐都区');
+INSERT INTO `ciy_arearpc` VALUES (630203, 630200, '平安区');
+INSERT INTO `ciy_arearpc` VALUES (630222, 630200, '民和回族土族自治县');
+INSERT INTO `ciy_arearpc` VALUES (630223, 630200, '互助土族自治县');
+INSERT INTO `ciy_arearpc` VALUES (630224, 630200, '化隆回族自治县');
+INSERT INTO `ciy_arearpc` VALUES (630225, 630200, '循化撒拉族自治县');
+INSERT INTO `ciy_arearpc` VALUES (632200, 630000, '海北藏族自治州');
+INSERT INTO `ciy_arearpc` VALUES (632221, 632200, '门源回族自治县');
+INSERT INTO `ciy_arearpc` VALUES (632222, 632200, '祁连县');
+INSERT INTO `ciy_arearpc` VALUES (632223, 632200, '海晏县');
+INSERT INTO `ciy_arearpc` VALUES (632224, 632200, '刚察县');
+INSERT INTO `ciy_arearpc` VALUES (632300, 630000, '黄南藏族自治州');
+INSERT INTO `ciy_arearpc` VALUES (632301, 632300, '同仁市');
+INSERT INTO `ciy_arearpc` VALUES (632322, 632300, '尖扎县');
+INSERT INTO `ciy_arearpc` VALUES (632323, 632300, '泽库县');
+INSERT INTO `ciy_arearpc` VALUES (632324, 632300, '河南蒙古族自治县');
+INSERT INTO `ciy_arearpc` VALUES (632500, 630000, '海南藏族自治州');
+INSERT INTO `ciy_arearpc` VALUES (632521, 632500, '共和县');
+INSERT INTO `ciy_arearpc` VALUES (632522, 632500, '同德县');
+INSERT INTO `ciy_arearpc` VALUES (632523, 632500, '贵德县');
+INSERT INTO `ciy_arearpc` VALUES (632524, 632500, '兴海县');
+INSERT INTO `ciy_arearpc` VALUES (632525, 632500, '贵南县');
+INSERT INTO `ciy_arearpc` VALUES (632600, 630000, '果洛藏族自治州');
+INSERT INTO `ciy_arearpc` VALUES (632621, 632600, '玛沁县');
+INSERT INTO `ciy_arearpc` VALUES (632622, 632600, '班玛县');
+INSERT INTO `ciy_arearpc` VALUES (632623, 632600, '甘德县');
+INSERT INTO `ciy_arearpc` VALUES (632624, 632600, '达日县');
+INSERT INTO `ciy_arearpc` VALUES (632625, 632600, '久治县');
+INSERT INTO `ciy_arearpc` VALUES (632626, 632600, '玛多县');
+INSERT INTO `ciy_arearpc` VALUES (632700, 630000, '玉树藏族自治州');
+INSERT INTO `ciy_arearpc` VALUES (632701, 632700, '玉树市');
+INSERT INTO `ciy_arearpc` VALUES (632722, 632700, '杂多县');
+INSERT INTO `ciy_arearpc` VALUES (632723, 632700, '称多县');
+INSERT INTO `ciy_arearpc` VALUES (632724, 632700, '治多县');
+INSERT INTO `ciy_arearpc` VALUES (632725, 632700, '囊谦县');
+INSERT INTO `ciy_arearpc` VALUES (632726, 632700, '曲麻莱县');
+INSERT INTO `ciy_arearpc` VALUES (632800, 630000, '海西蒙古族藏族自治州');
+INSERT INTO `ciy_arearpc` VALUES (632801, 632800, '格尔木市');
+INSERT INTO `ciy_arearpc` VALUES (632802, 632800, '德令哈市');
+INSERT INTO `ciy_arearpc` VALUES (632803, 632800, '茫崖市');
+INSERT INTO `ciy_arearpc` VALUES (632821, 632800, '乌兰县');
+INSERT INTO `ciy_arearpc` VALUES (632822, 632800, '都兰县');
+INSERT INTO `ciy_arearpc` VALUES (632823, 632800, '天峻县');
+INSERT INTO `ciy_arearpc` VALUES (632857, 632800, '大柴旦行政委员会');
+INSERT INTO `ciy_arearpc` VALUES (640000, 0, '宁夏回族自治区');
+INSERT INTO `ciy_arearpc` VALUES (640100, 640000, '银川市');
+INSERT INTO `ciy_arearpc` VALUES (640101, 640100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (640104, 640100, '兴庆区');
+INSERT INTO `ciy_arearpc` VALUES (640105, 640100, '西夏区');
+INSERT INTO `ciy_arearpc` VALUES (640106, 640100, '金凤区');
+INSERT INTO `ciy_arearpc` VALUES (640121, 640100, '永宁县');
+INSERT INTO `ciy_arearpc` VALUES (640122, 640100, '贺兰县');
+INSERT INTO `ciy_arearpc` VALUES (640181, 640100, '灵武市');
+INSERT INTO `ciy_arearpc` VALUES (640200, 640000, '石嘴山市');
+INSERT INTO `ciy_arearpc` VALUES (640201, 640200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (640202, 640200, '大武口区');
+INSERT INTO `ciy_arearpc` VALUES (640205, 640200, '惠农区');
+INSERT INTO `ciy_arearpc` VALUES (640221, 640200, '平罗县');
+INSERT INTO `ciy_arearpc` VALUES (640300, 640000, '吴忠市');
+INSERT INTO `ciy_arearpc` VALUES (640301, 640300, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (640302, 640300, '利通区');
+INSERT INTO `ciy_arearpc` VALUES (640303, 640300, '红寺堡区');
+INSERT INTO `ciy_arearpc` VALUES (640323, 640300, '盐池县');
+INSERT INTO `ciy_arearpc` VALUES (640324, 640300, '同心县');
+INSERT INTO `ciy_arearpc` VALUES (640381, 640300, '青铜峡市');
+INSERT INTO `ciy_arearpc` VALUES (640400, 640000, '固原市');
+INSERT INTO `ciy_arearpc` VALUES (640401, 640400, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (640402, 640400, '原州区');
+INSERT INTO `ciy_arearpc` VALUES (640422, 640400, '西吉县');
+INSERT INTO `ciy_arearpc` VALUES (640423, 640400, '隆德县');
+INSERT INTO `ciy_arearpc` VALUES (640424, 640400, '泾源县');
+INSERT INTO `ciy_arearpc` VALUES (640425, 640400, '彭阳县');
+INSERT INTO `ciy_arearpc` VALUES (640500, 640000, '中卫市');
+INSERT INTO `ciy_arearpc` VALUES (640501, 640500, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (640502, 640500, '沙坡头区');
+INSERT INTO `ciy_arearpc` VALUES (640521, 640500, '中宁县');
+INSERT INTO `ciy_arearpc` VALUES (640522, 640500, '海原县');
+INSERT INTO `ciy_arearpc` VALUES (650000, 0, '新疆维吾尔自治区');
+INSERT INTO `ciy_arearpc` VALUES (650100, 650000, '乌鲁木齐市');
+INSERT INTO `ciy_arearpc` VALUES (650101, 650100, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (650102, 650100, '天山区');
+INSERT INTO `ciy_arearpc` VALUES (650103, 650100, '沙依巴克区');
+INSERT INTO `ciy_arearpc` VALUES (650104, 650100, '新市区');
+INSERT INTO `ciy_arearpc` VALUES (650105, 650100, '水磨沟区');
+INSERT INTO `ciy_arearpc` VALUES (650106, 650100, '头屯河区');
+INSERT INTO `ciy_arearpc` VALUES (650107, 650100, '达坂城区');
+INSERT INTO `ciy_arearpc` VALUES (650109, 650100, '米东区');
+INSERT INTO `ciy_arearpc` VALUES (650121, 650100, '乌鲁木齐县');
+INSERT INTO `ciy_arearpc` VALUES (650200, 650000, '克拉玛依市');
+INSERT INTO `ciy_arearpc` VALUES (650201, 650200, '市辖区');
+INSERT INTO `ciy_arearpc` VALUES (650202, 650200, '独山子区');
+INSERT INTO `ciy_arearpc` VALUES (650203, 650200, '克拉玛依区');
+INSERT INTO `ciy_arearpc` VALUES (650204, 650200, '白碱滩区');
+INSERT INTO `ciy_arearpc` VALUES (650205, 650200, '乌尔禾区');
+INSERT INTO `ciy_arearpc` VALUES (650400, 650000, '吐鲁番市');
+INSERT INTO `ciy_arearpc` VALUES (650402, 650400, '高昌区');
+INSERT INTO `ciy_arearpc` VALUES (650421, 650400, '鄯善县');
+INSERT INTO `ciy_arearpc` VALUES (650422, 650400, '托克逊县');
+INSERT INTO `ciy_arearpc` VALUES (650500, 650000, '哈密市');
+INSERT INTO `ciy_arearpc` VALUES (650502, 650500, '伊州区');
+INSERT INTO `ciy_arearpc` VALUES (650521, 650500, '巴里坤哈萨克自治县');
+INSERT INTO `ciy_arearpc` VALUES (650522, 650500, '伊吾县');
+INSERT INTO `ciy_arearpc` VALUES (652300, 650000, '昌吉回族自治州');
+INSERT INTO `ciy_arearpc` VALUES (652301, 652300, '昌吉市');
+INSERT INTO `ciy_arearpc` VALUES (652302, 652300, '阜康市');
+INSERT INTO `ciy_arearpc` VALUES (652323, 652300, '呼图壁县');
+INSERT INTO `ciy_arearpc` VALUES (652324, 652300, '玛纳斯县');
+INSERT INTO `ciy_arearpc` VALUES (652325, 652300, '奇台县');
+INSERT INTO `ciy_arearpc` VALUES (652327, 652300, '吉木萨尔县');
+INSERT INTO `ciy_arearpc` VALUES (652328, 652300, '木垒哈萨克自治县');
+INSERT INTO `ciy_arearpc` VALUES (652700, 650000, '博尔塔拉蒙古自治州');
+INSERT INTO `ciy_arearpc` VALUES (652701, 652700, '博乐市');
+INSERT INTO `ciy_arearpc` VALUES (652702, 652700, '阿拉山口市');
+INSERT INTO `ciy_arearpc` VALUES (652722, 652700, '精河县');
+INSERT INTO `ciy_arearpc` VALUES (652723, 652700, '温泉县');
+INSERT INTO `ciy_arearpc` VALUES (652800, 650000, '巴音郭楞蒙古自治州');
+INSERT INTO `ciy_arearpc` VALUES (652801, 652800, '库尔勒市');
+INSERT INTO `ciy_arearpc` VALUES (652822, 652800, '轮台县');
+INSERT INTO `ciy_arearpc` VALUES (652823, 652800, '尉犁县');
+INSERT INTO `ciy_arearpc` VALUES (652824, 652800, '若羌县');
+INSERT INTO `ciy_arearpc` VALUES (652825, 652800, '且末县');
+INSERT INTO `ciy_arearpc` VALUES (652826, 652800, '焉耆回族自治县');
+INSERT INTO `ciy_arearpc` VALUES (652827, 652800, '和静县');
+INSERT INTO `ciy_arearpc` VALUES (652828, 652800, '和硕县');
+INSERT INTO `ciy_arearpc` VALUES (652829, 652800, '博湖县');
+INSERT INTO `ciy_arearpc` VALUES (652871, 652800, '库尔勒经济技术开发区');
+INSERT INTO `ciy_arearpc` VALUES (652900, 650000, '阿克苏地区');
+INSERT INTO `ciy_arearpc` VALUES (652901, 652900, '阿克苏市');
+INSERT INTO `ciy_arearpc` VALUES (652902, 652900, '库车市');
+INSERT INTO `ciy_arearpc` VALUES (652922, 652900, '温宿县');
+INSERT INTO `ciy_arearpc` VALUES (652924, 652900, '沙雅县');
+INSERT INTO `ciy_arearpc` VALUES (652925, 652900, '新和县');
+INSERT INTO `ciy_arearpc` VALUES (652926, 652900, '拜城县');
+INSERT INTO `ciy_arearpc` VALUES (652927, 652900, '乌什县');
+INSERT INTO `ciy_arearpc` VALUES (652928, 652900, '阿瓦提县');
+INSERT INTO `ciy_arearpc` VALUES (652929, 652900, '柯坪县');
+INSERT INTO `ciy_arearpc` VALUES (653000, 650000, '克孜勒苏柯尔克孜自治州');
+INSERT INTO `ciy_arearpc` VALUES (653001, 653000, '阿图什市');
+INSERT INTO `ciy_arearpc` VALUES (653022, 653000, '阿克陶县');
+INSERT INTO `ciy_arearpc` VALUES (653023, 653000, '阿合奇县');
+INSERT INTO `ciy_arearpc` VALUES (653024, 653000, '乌恰县');
+INSERT INTO `ciy_arearpc` VALUES (653100, 650000, '喀什地区');
+INSERT INTO `ciy_arearpc` VALUES (653101, 653100, '喀什市');
+INSERT INTO `ciy_arearpc` VALUES (653121, 653100, '疏附县');
+INSERT INTO `ciy_arearpc` VALUES (653122, 653100, '疏勒县');
+INSERT INTO `ciy_arearpc` VALUES (653123, 653100, '英吉沙县');
+INSERT INTO `ciy_arearpc` VALUES (653124, 653100, '泽普县');
+INSERT INTO `ciy_arearpc` VALUES (653125, 653100, '莎车县');
+INSERT INTO `ciy_arearpc` VALUES (653126, 653100, '叶城县');
+INSERT INTO `ciy_arearpc` VALUES (653127, 653100, '麦盖提县');
+INSERT INTO `ciy_arearpc` VALUES (653128, 653100, '岳普湖县');
+INSERT INTO `ciy_arearpc` VALUES (653129, 653100, '伽师县');
+INSERT INTO `ciy_arearpc` VALUES (653130, 653100, '巴楚县');
+INSERT INTO `ciy_arearpc` VALUES (653131, 653100, '塔什库尔干塔吉克自治县');
+INSERT INTO `ciy_arearpc` VALUES (653200, 650000, '和田地区');
+INSERT INTO `ciy_arearpc` VALUES (653201, 653200, '和田市');
+INSERT INTO `ciy_arearpc` VALUES (653221, 653200, '和田县');
+INSERT INTO `ciy_arearpc` VALUES (653222, 653200, '墨玉县');
+INSERT INTO `ciy_arearpc` VALUES (653223, 653200, '皮山县');
+INSERT INTO `ciy_arearpc` VALUES (653224, 653200, '洛浦县');
+INSERT INTO `ciy_arearpc` VALUES (653225, 653200, '策勒县');
+INSERT INTO `ciy_arearpc` VALUES (653226, 653200, '于田县');
+INSERT INTO `ciy_arearpc` VALUES (653227, 653200, '民丰县');
+INSERT INTO `ciy_arearpc` VALUES (654000, 650000, '伊犁哈萨克自治州');
+INSERT INTO `ciy_arearpc` VALUES (654002, 654000, '伊宁市');
+INSERT INTO `ciy_arearpc` VALUES (654003, 654000, '奎屯市');
+INSERT INTO `ciy_arearpc` VALUES (654004, 654000, '霍尔果斯市');
+INSERT INTO `ciy_arearpc` VALUES (654021, 654000, '伊宁县');
+INSERT INTO `ciy_arearpc` VALUES (654022, 654000, '察布查尔锡伯自治县');
+INSERT INTO `ciy_arearpc` VALUES (654023, 654000, '霍城县');
+INSERT INTO `ciy_arearpc` VALUES (654024, 654000, '巩留县');
+INSERT INTO `ciy_arearpc` VALUES (654025, 654000, '新源县');
+INSERT INTO `ciy_arearpc` VALUES (654026, 654000, '昭苏县');
+INSERT INTO `ciy_arearpc` VALUES (654027, 654000, '特克斯县');
+INSERT INTO `ciy_arearpc` VALUES (654028, 654000, '尼勒克县');
+INSERT INTO `ciy_arearpc` VALUES (654200, 650000, '塔城地区');
+INSERT INTO `ciy_arearpc` VALUES (654201, 654200, '塔城市');
+INSERT INTO `ciy_arearpc` VALUES (654202, 654200, '乌苏市');
+INSERT INTO `ciy_arearpc` VALUES (654203, 654200, '沙湾市');
+INSERT INTO `ciy_arearpc` VALUES (654221, 654200, '额敏县');
+INSERT INTO `ciy_arearpc` VALUES (654224, 654200, '托里县');
+INSERT INTO `ciy_arearpc` VALUES (654225, 654200, '裕民县');
+INSERT INTO `ciy_arearpc` VALUES (654226, 654200, '和布克赛尔蒙古自治县');
+INSERT INTO `ciy_arearpc` VALUES (654300, 650000, '阿勒泰地区');
+INSERT INTO `ciy_arearpc` VALUES (654301, 654300, '阿勒泰市');
+INSERT INTO `ciy_arearpc` VALUES (654321, 654300, '布尔津县');
+INSERT INTO `ciy_arearpc` VALUES (654322, 654300, '富蕴县');
+INSERT INTO `ciy_arearpc` VALUES (654323, 654300, '福海县');
+INSERT INTO `ciy_arearpc` VALUES (654324, 654300, '哈巴河县');
+INSERT INTO `ciy_arearpc` VALUES (654325, 654300, '青河县');
+INSERT INTO `ciy_arearpc` VALUES (654326, 654300, '吉木乃县');
+INSERT INTO `ciy_arearpc` VALUES (659000, 650000, '自治区直辖县级行政区划');
+INSERT INTO `ciy_arearpc` VALUES (659001, 659000, '石河子市');
+INSERT INTO `ciy_arearpc` VALUES (659002, 659000, '阿拉尔市');
+INSERT INTO `ciy_arearpc` VALUES (659003, 659000, '图木舒克市');
+INSERT INTO `ciy_arearpc` VALUES (659004, 659000, '五家渠市');
+INSERT INTO `ciy_arearpc` VALUES (659005, 659000, '北屯市');
+INSERT INTO `ciy_arearpc` VALUES (659006, 659000, '铁门关市');
+INSERT INTO `ciy_arearpc` VALUES (659007, 659000, '双河市');
+INSERT INTO `ciy_arearpc` VALUES (659008, 659000, '可克达拉市');
+INSERT INTO `ciy_arearpc` VALUES (659009, 659000, '昆玉市');
+INSERT INTO `ciy_arearpc` VALUES (659010, 659000, '胡杨河市');
+INSERT INTO `ciy_arearpc` VALUES (659011, 659000, '新星市');
diff --git a/c5_ciyon.sql b/c5_ciyon.sql
new file mode 100644
index 0000000..4582f4f
--- /dev/null
+++ b/c5_ciyon.sql
@@ -0,0 +1,2096 @@
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for ap_art_post
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_art_post`;
+CREATE TABLE `ap_art_post` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `sectionid` int(11) NOT NULL COMMENT '|版块|,DB,ap_art_section',
+ `artstatus` int(11) NOT NULL COMMENT '|文章状态|,CATA,artstatus',
+ `artsort` int(11) NOT NULL COMMENT '|推荐排序|,CATA,artsort',
+ `name` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文章标题',
+ `source` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '来源',
+ `author` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '作者',
+ `studycnt` int(11) NOT NULL DEFAULT 0 COMMENT '精读数|',
+ `readcnt` int(11) NOT NULL COMMENT '阅读数|',
+ `avmp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '音视频,AV',
+ `img` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '缩略图,IMG1',
+ `descs` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',摘要,BR',
+ `inputuser` int(11) NOT NULL COMMENT '撰写人,CATA,adminuser',
+ `audituser` int(11) NOT NULL DEFAULT 0 COMMENT '审核人,CATA,adminuser',
+ `pubtimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '发布时间,DATE',
+ `content` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',内容,MD',
+ PRIMARY KEY (`id`) USING BTREE,
+ INDEX `ossa`(`sectionid`, `artstatus`, `artsort`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '版块文章表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_art_post
+-- ----------------------------
+INSERT INTO `ap_art_post` VALUES (7, 1, 100, 40, 'AI决策调试', '', '', 13, 27, '', '/2025/0502/art/055507_3610.png', '', 10, 10, 1750889011, '[MD]帮助\n帮助\n帮助\n');
+
+-- ----------------------------
+-- Table structure for ap_art_section
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_art_section`;
+CREATE TABLE `ap_art_section` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '|ID|',
+ `ngroup` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分组名',
+ `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '版块名称',
+ `auditcnt` int(11) NOT NULL DEFAULT 0 COMMENT '待审数|',
+ `artcnt` int(11) NOT NULL DEFAULT 0 COMMENT '文章数|',
+ `adminuser` int(11) NOT NULL COMMENT '责任人,CATA,adminuser',
+ `addtimes` bigint(20) NOT NULL COMMENT '创建时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '版块表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_art_section
+-- ----------------------------
+INSERT INTO `ap_art_section` VALUES (1, 'help', '帮助中心', 0, 1, 10, 1750888993);
+
+-- ----------------------------
+-- Table structure for ap_art_vent
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_art_vent`;
+CREATE TABLE `ap_art_vent` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `sectionid` int(11) NOT NULL COMMENT '|版块|,DB,ap_art_section',
+ `artid` int(11) NOT NULL COMMENT '|文章|,DB,ap_art_post',
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `content` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '内容,BR',
+ `pubtimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '反馈时间,DATE',
+ `audituser` int(11) NOT NULL DEFAULT 0 COMMENT '阅读人,CATA,adminuser',
+ PRIMARY KEY (`id`) USING BTREE,
+ INDEX `ossa`(`artid`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '文章反馈表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_art_vent
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_banner
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_banner`;
+CREATE TABLE `ap_banner` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `groupcode` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '|组别代码|',
+ `img` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '轮播图,IMG1',
+ `url` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '链接',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 48 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '轮播图表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_banner
+-- ----------------------------
+INSERT INTO `ap_banner` VALUES (24, 'index', '/img/banner.webp', '');
+
+-- ----------------------------
+-- Table structure for ap_cash_bundle
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_cash_bundle`;
+CREATE TABLE `ap_cash_bundle` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `chargemoney` int(11) NOT NULL COMMENT '充值金额|,CNY',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '充值套餐表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_cash_bundle
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_cash_ie
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_cash_ie`;
+CREATE TABLE `ap_cash_ie` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `cashtype` int(11) NOT NULL COMMENT '收支分类,CATA,cashtype',
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `iemoney` int(11) NOT NULL COMMENT '金额|,CNY',
+ `addtimes` bigint(20) NOT NULL COMMENT '发生时间,DATE',
+ `name` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '摘要',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '收支记录' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_cash_ie
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_cash_in
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_cash_in`;
+CREATE TABLE `ap_cash_in` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `inmoney` int(11) NOT NULL COMMENT '充值金额|,CNY',
+ `addtimes` bigint(20) NOT NULL COMMENT '发生时间,DATE',
+ `name` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '支付流水号',
+ `paytimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '支付时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '充值记录' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_cash_in
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_cash_oe
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_cash_oe`;
+CREATE TABLE `ap_cash_oe` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `cashtype` int(11) NOT NULL COMMENT '收支分类,CATA,cashtype',
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `oemoney` int(11) NOT NULL COMMENT '金额|,CNY',
+ `addtimes` bigint(20) NOT NULL COMMENT '发生时间,DATE',
+ `name` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '摘要',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 154 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '收益记录' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_cash_oe
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_cash_out
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_cash_out`;
+CREATE TABLE `ap_cash_out` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `cashstatus` int(11) NOT NULL COMMENT '|提现状态|,CATA,cashstatus',
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `cashtype` int(11) NOT NULL COMMENT '提现方式,BOOL,银行.微信',
+ `cashmoney` int(10) NOT NULL COMMENT '提现金额|,CNY',
+ `taxmoney` int(11) NOT NULL COMMENT '代缴个税|,CNY',
+ `addtimes` bigint(20) NOT NULL COMMENT '申请时间,DATE',
+ `cashtimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '操作时间,DATE',
+ `cashno` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '支付编号',
+ `auditmsg` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '拒绝原因',
+ `bankaccount` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '账户名称',
+ `bankno` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '银行卡号',
+ `bankname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '开户银行',
+ `bankcode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '联行号',
+ `invfile` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '发票,DOWN',
+ `invcode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '发票号码',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '提现记录' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_cash_out
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_invoicedetail
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_invoicedetail`;
+CREATE TABLE `ap_invoicedetail` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
+ `uptimes` bigint(20) NOT NULL COMMENT '更新时间,DATE',
+ `adminuser` int(11) NOT NULL DEFAULT 0 COMMENT '维护人,CATU,adminuser',
+ `memo` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '备注信息',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '发票类型表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_invoicedetail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_invoicetitle
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_invoicetitle`;
+CREATE TABLE `ap_invoicetitle` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
+ `taxnumber` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '税号',
+ `addr` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '单位地址',
+ `phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '电话号码',
+ `bankname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '银行名称',
+ `bankaccount` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '银行账号',
+ `uptimes` bigint(20) NOT NULL COMMENT '更新时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '发票抬头表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_invoicetitle
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_invoicing
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_invoicing`;
+CREATE TABLE `ap_invoicing` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `auditstatus` int(11) NOT NULL DEFAULT 0 COMMENT '|审核状态|,CATA,auditstatus',
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `invoicetitleid` int(11) NOT NULL COMMENT ',所属抬头,DB,ap_invoicetitle',
+ `invoicedetailid` int(11) NOT NULL COMMENT '所属明细,DB,ap_invoicedetail',
+ `invoicemoney` int(11) NOT NULL COMMENT '开票金额|,CNY',
+ `invfile` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '发票,DOWN',
+ `invcode` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '发票号码',
+ `addtimes` bigint(20) NOT NULL COMMENT '申请时间,DATE',
+ `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
+ `taxnumber` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '税号',
+ `addr` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '单位地址',
+ `phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '电话号码',
+ `bankname` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '银行名称',
+ `bankaccount` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '银行账号',
+ `audittimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '操作时间,DATE',
+ `audituser` int(11) NOT NULL DEFAULT 0 COMMENT '操作人,CATU,adminuser',
+ `auditmsg` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '拒开原因',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '发票开票表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_invoicing
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_log
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_log`;
+CREATE TABLE `ap_log` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `loguser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `readuser` int(11) NOT NULL COMMENT '审阅人,CATA,adminuser',
+ `types` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'LOG分类',
+ `addtimes` bigint(20) NOT NULL COMMENT '发生日期,DATE',
+ `ip` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'IP,IP',
+ `logs` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '详情',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 3432 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '应用日志表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_log
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_lug
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_lug`;
+CREATE TABLE `ap_lug` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `isinout` int(11) NOT NULL COMMENT '|登录|,BOOL,登入.登出',
+ `loguser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `addtimes` bigint(20) NOT NULL COMMENT '发生日期,DATE',
+ `ip` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'IP,IP',
+ `model` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '设备指纹',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 3443 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登录记录表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_lug
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_paper
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_paper`;
+CREATE TABLE `ap_paper` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `name` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
+ `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '显示标题',
+ `readcnt` int(11) NOT NULL DEFAULT 0 COMMENT '阅读数|',
+ `inputuser` int(11) NOT NULL COMMENT '撰写人,CATA,adminuser',
+ `uptimes` bigint(20) NOT NULL COMMENT '更新时间,DATE',
+ `content` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',内容,MD',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 24 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '独立文档表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_paper
+-- ----------------------------
+INSERT INTO `ap_paper` VALUES (1, '关于平台', '', 140, 10, 1750889405, '[MD]无标题通屏效果\n建议顶部图片留有60px的空间,躲避刘海屏');
+INSERT INTO `ap_paper` VALUES (2, '软件帮助', '', 29, 10, 1750889540, '[MD]#大标题\n#c标题居中\n##小标题\n###小标题\n正文\n###小标题\n####四级标题\n正文\n####四级标题\n正文\n##小标题\n正文\n@c居中显示\n@r右侧显示\n反引号`强调`显示\n\n!/ud/2024/07/16/paper/1017421516.mp3\n');
+INSERT INTO `ap_paper` VALUES (3, '用户协议', '用户协议', 33, 10, 1737970492, '[MD]用户协议xxx');
+INSERT INTO `ap_paper` VALUES (4, '隐私协议', '', 0, 10, 1750889552, '[MD]');
+
+-- ----------------------------
+-- Table structure for ap_pnt_bundle
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_pnt_bundle`;
+CREATE TABLE `ap_pnt_bundle` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `buypnt` int(11) NOT NULL COMMENT '金币|,INT',
+ `buymoney` int(11) NOT NULL COMMENT '金额|,CNY',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '金币套餐表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_pnt_bundle
+-- ----------------------------
+INSERT INTO `ap_pnt_bundle` VALUES (1, 1000, 200);
+INSERT INTO `ap_pnt_bundle` VALUES (2, 8000, 1000);
+INSERT INTO `ap_pnt_bundle` VALUES (3, 18000, 2000);
+INSERT INTO `ap_pnt_bundle` VALUES (4, 100000, 10000);
+INSERT INTO `ap_pnt_bundle` VALUES (5, 200000, 20000);
+INSERT INTO `ap_pnt_bundle` VALUES (6, 500000, 50000);
+
+-- ----------------------------
+-- Table structure for ap_pnt_buy
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_pnt_buy`;
+CREATE TABLE `ap_pnt_buy` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `name` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '支付流水',
+ `pnt` int(11) NOT NULL COMMENT '金币|,INT',
+ `buypntmoney` int(10) NOT NULL COMMENT '金额|,CNY',
+ `addtimes` bigint(20) NOT NULL COMMENT '提交时间,DATE',
+ `paytimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '支付时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 64 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '金币购买记录' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_pnt_buy
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_pnt_record
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_pnt_record`;
+CREATE TABLE `ap_pnt_record` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `addtimes` bigint(20) NOT NULL COMMENT '发生时间,DATE',
+ `pnt` int(11) NOT NULL COMMENT '积分|,INT',
+ `fromid` int(11) NOT NULL DEFAULT 0,
+ `name` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '摘要',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 117 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '积分流水' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_pnt_record
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_pnt_track
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_pnt_track`;
+CREATE TABLE `ap_pnt_track` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '|TrackID|',
+ `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '埋点名称',
+ `point` int(11) NOT NULL COMMENT '可获金币|,INT,分',
+ `limh24` int(11) NOT NULL COMMENT '24小时上限|,INT,分',
+ `adminuser` int(11) NOT NULL COMMENT '操作人,CATA,adminuser',
+ `uptimes` bigint(20) NOT NULL COMMENT '更新时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '积分埋点表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_pnt_track
+-- ----------------------------
+INSERT INTO `ap_pnt_track` VALUES (1, '登录签到', 2, 2, 10, 1738132278);
+
+-- ----------------------------
+-- Table structure for ap_tokapi
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_tokapi`;
+CREATE TABLE `ap_tokapi` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '|appid|',
+ `apisecret` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',appkey',
+ `ips` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '白名单IP,BR',
+ `addtimes` bigint(20) NOT NULL COMMENT '创建时间,DATE',
+ `pubkey` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '|公钥证书|',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 215698 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'API授权管理' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_tokapi
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_transfer
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_transfer`;
+CREATE TABLE `ap_transfer` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '|流水号|',
+ `orderstatus` int(11) NOT NULL COMMENT '|交易状态|,CATA,orderstatus',
+ `amount` bigint(20) NOT NULL COMMENT '金额|,CNY',
+ `addtimes` bigint(20) NOT NULL COMMENT '创建时间,DATE',
+ `uptimes` bigint(20) NOT NULL COMMENT '完成时间,DATE',
+ `apiid` int(11) NOT NULL COMMENT 'APIID',
+ `thirdno` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调用方单号',
+ `notifyurl` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '回调地址',
+ `signature` varchar(600) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',签名',
+ `retimes` bigint(20) NOT NULL COMMENT '回调时间,DATE',
+ `nexttimes` bigint(20) NOT NULL COMMENT '下次回调时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE,
+ INDEX `mo`(`orderstatus`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 54390876 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '交易单' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_transfer
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_user
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_user`;
+CREATE TABLE `ap_user` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '|会员编号|',
+ `icon` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '头像,IMG1',
+ `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户昵称',
+ `mobile` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '手机号',
+ `userlevel` int(11) NOT NULL COMMENT '|用户等级|,CATA,userlevel',
+ `stpstatus` int(11) NOT NULL COMMENT '|账号状态|,CATA,stpstatus',
+ `mymoney` int(11) NOT NULL DEFAULT 0 COMMENT '可用余额|,CNY',
+ `mycashmoney` int(11) NOT NULL DEFAULT 0 COMMENT '可提现余额|,CNY',
+ `myinvmoney` int(11) NOT NULL COMMENT '待开票金额|,CNY',
+ `mybondmoney` int(11) NOT NULL DEFAULT 0 COMMENT '保证金|,CNY',
+ `mypnt` int(11) NOT NULL COMMENT '积分|,INT',
+ `certs` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '认证,CATS,certs',
+ `accounttimes` bigint(20) NOT NULL COMMENT '有效期至,DATE,Y-m-d',
+ `logintimes` bigint(20) NOT NULL COMMENT '登录时间,DATE',
+ `addtimes` bigint(20) NOT NULL COMMENT '注册日期,DATE,Y-m-d',
+ `upid` int(11) NOT NULL COMMENT '分享人,DB,ep_user',
+ `password` varchar(70) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT ',密码',
+ `trytime` int(11) NOT NULL DEFAULT 0 COMMENT ',密码重试次数',
+ `memo` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '备注',
+ `power` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT ',权限表',
+ `wxunionid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT ',微信UnionID',
+ `wxminaid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT ',小程序OpenID',
+ `wxminakey` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT ',小程序Key',
+ `sid` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT ',授权码',
+ `exptimes` bigint(20) NOT NULL COMMENT ',授权过期时间,DATE',
+ `ip` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '#登录IP,IP',
+ PRIMARY KEY (`id`) USING BTREE,
+ INDEX `mobile`(`mobile`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 187 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员主表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_user
+-- ----------------------------
+INSERT INTO `ap_user` VALUES (100, '', '众产用户1', '1', 10, 10, 0, 15222, 0, 0, 1016, '', 1881085490, 1768651495, 1751086978, 0, 'd527d1bf5fe6a4361f230af48e36e1c4', 0, '', '', '', '', '', '', 1768688483, '');
+-- ----------------------------
+-- Table structure for ap_usr_buy_bundle
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_buy_bundle`;
+CREATE TABLE `ap_usr_buy_bundle` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '套餐说明',
+ `userlevel` int(11) NOT NULL COMMENT '对应等级,CATA,userlevel',
+ `days` int(11) NOT NULL COMMENT '天数|,INT',
+ `usermoney` int(11) NOT NULL COMMENT '金额|,CNY',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员套餐表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_buy_bundle
+-- ----------------------------
+INSERT INTO `ap_usr_buy_bundle` VALUES (1, '30天', 10, 30, 880);
+INSERT INTO `ap_usr_buy_bundle` VALUES (2, '全年', 10, 365, 6800);
+INSERT INTO `ap_usr_buy_bundle` VALUES (3, '永久', 10, 36500, 68800);
+
+-- ----------------------------
+-- Table structure for ap_usr_buy_user
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_buy_user`;
+CREATE TABLE `ap_usr_buy_user` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `bundleid` int(11) NOT NULL COMMENT '所属套餐,DB,ap_usr_buy_bundle',
+ `userlevel` int(11) NOT NULL COMMENT '对应等级,CATA,userlevel',
+ `days` int(11) NOT NULL COMMENT '会员天数|,INT',
+ `buydaymoney` int(10) NOT NULL COMMENT '金额|,CNY',
+ `addtimes` bigint(20) NOT NULL COMMENT '提交时间,DATE',
+ `paytimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '支付时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 78 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员购买记录' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_buy_user
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_usr_capcode
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_capcode`;
+CREATE TABLE `ap_usr_capcode` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `account` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账号',
+ `code` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '验证码',
+ `addtimes` bigint(20) NOT NULL COMMENT '生成时间,DATE',
+ `exptimes` bigint(20) NOT NULL COMMENT '到期时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户验证码表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_capcode
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_usr_ext
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_ext`;
+CREATE TABLE `ap_usr_ext` (
+ `id` bigint(20) NOT NULL,
+ `truename` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '真实姓名',
+ `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '电子信箱',
+ `wxno` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '微信号',
+ `idid` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '身份证号',
+ `cciy` bigint(20) NOT NULL DEFAULT 0 COMMENT '众识码,CCIY',
+ `appcid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'APPpush',
+ `cashtype` int(11) NOT NULL DEFAULT 2 COMMENT '提现方式,BOOL,网银提现.微信提现',
+ `bankaccount` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '账户名称',
+ `bankno` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '银行卡号',
+ `bankname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '开户银行',
+ `bankcode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '联行号',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员副表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_ext
+-- ----------------------------
+INSERT INTO `ap_usr_ext` VALUES (100, '', '', '', '', 0, '', 1, '', '', '', '');
+
+-- ----------------------------
+-- Table structure for ap_usr_invoicetitle
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_invoicetitle`;
+CREATE TABLE `ap_usr_invoicetitle` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
+ `taxnumber` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '税号',
+ `addr` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '单位地址',
+ `phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '电话号码',
+ `bankname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '银行名称',
+ `bankaccount` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '银行账号',
+ `uptimes` bigint(20) NOT NULL COMMENT '更新时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '发票抬头表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_invoicetitle
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_usr_invoicing
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_invoicing`;
+CREATE TABLE `ap_usr_invoicing` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `invoicemoney` int(11) NOT NULL COMMENT '开票金额|,CNY',
+ `invoicetitleid` int(11) NOT NULL COMMENT ',所属抬头,DB,ap_usr_invoicetitle',
+ `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
+ `taxnumber` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',税号',
+ `addr` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',单位地址',
+ `phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',电话号码',
+ `bankname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',银行名称',
+ `bankaccount` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',银行账号',
+ `addtimes` bigint(20) NOT NULL COMMENT '申请时间,DATE',
+ `invtimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '开票时间,DATE',
+ `invuser` int(11) NOT NULL DEFAULT 0 COMMENT '开票人,CATU,adminuser',
+ `invfile` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '发票,DOWN',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '发票开票表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_invoicing
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_usr_problechat
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_problechat`;
+CREATE TABLE `ap_usr_problechat` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `problemid` int(11) NOT NULL,
+ `sendtype` int(11) NOT NULL COMMENT '发送人,TINT,1.用户,2.平台,3.AI客服',
+ `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '答复内容',
+ `addtimes` bigint(20) NOT NULL COMMENT '发送时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 54 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '工单对话表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_problechat
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_usr_problem
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_problem`;
+CREATE TABLE `ap_usr_problem` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `contract` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '联系方式',
+ `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '工单提问,BR',
+ `imgs` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '图片,IMG',
+ `addtimes` bigint(20) NOT NULL COMMENT '提交时间,DATE',
+ `replytimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '回复时间,DATE',
+ `closetimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '关闭时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '问题工单表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_problem
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_usr_real_apply
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_real_apply`;
+CREATE TABLE `ap_usr_real_apply` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `auditstatus` int(11) NOT NULL COMMENT '|审核状态|,CATA,auditstatus',
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '真实姓名',
+ `idid` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '身份证号',
+ `idcard1` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '身份证人像面,IMG1',
+ `idcard2` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '身份证国徽面,IMG1',
+ `addtimes` bigint(20) NOT NULL COMMENT '申请时间,DATE',
+ `audituser` int(11) NOT NULL DEFAULT 0 COMMENT '审核员,CATA,adminuser',
+ `audittimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '审核时间,DATE',
+ `auditmsg` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '驳回原因',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '实名认证申请表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_real_apply
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_usr_sendmail
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_sendmail`;
+CREATE TABLE `ap_usr_sendmail` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `vuser` int(11) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '邮件地址',
+ `chan` int(11) NOT NULL COMMENT '通道号',
+ `name` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标题',
+ `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',邮件内容',
+ `addtimes` bigint(20) NOT NULL COMMENT '添加时间,DATE',
+ `sendtimes` bigint(20) NOT NULL COMMENT '发送时间,DATE',
+ `donetimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '完成时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '发送邮件' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_sendmail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_usr_sendsms
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_sendsms`;
+CREATE TABLE `ap_usr_sendsms` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `vuser` int(11) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `mobile` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '手机号',
+ `chan` int(11) NOT NULL COMMENT '通道号',
+ `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',JSON内容',
+ `addtimes` bigint(20) NOT NULL COMMENT '添加时间,DATE',
+ `sendtimes` bigint(20) NOT NULL COMMENT '发送时间,DATE',
+ `donetimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '完成时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 138 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '发送短信' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_sendsms
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_usr_shipaddr
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_shipaddr`;
+CREATE TABLE `ap_usr_shipaddr` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `areacode` int(11) NOT NULL COMMENT '所在地区,CATM,ciy_arearpc|?',
+ `addr` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '详细地址',
+ `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '收件人',
+ `phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '联系电话',
+ `uptimes` bigint(20) NOT NULL COMMENT '更新时间,DATE',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 70 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '收货地址表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_shipaddr
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ap_usr_suggest
+-- ----------------------------
+DROP TABLE IF EXISTS `ap_usr_suggest`;
+CREATE TABLE `ap_usr_suggest` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `vuser` bigint(20) NOT NULL COMMENT '所属用户,DB,ap_user',
+ `contract` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '联系方式',
+ `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '建议内容,BR',
+ `imgs` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '图片,IMG',
+ `addtimes` bigint(20) NOT NULL COMMENT '提交时间,DATE',
+ `replyuser` int(11) NOT NULL DEFAULT 0 COMMENT '答复人,CATA,adminuser',
+ `replytimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '答复时间,DATE',
+ `replymsg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '答复内容,BR',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '意见建议表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ap_usr_suggest
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ciy_bankcode
+-- ----------------------------
+DROP TABLE IF EXISTS `ciy_bankcode`;
+CREATE TABLE `ciy_bankcode` (
+ `id` bigint(20) NOT NULL COMMENT '联行号',
+ `bkcode` int(11) NOT NULL COMMENT '前三位银行码',
+ `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '银行名称',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '中国联行号' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ciy_bankcode
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for demo_normal
+-- ----------------------------
+DROP TABLE IF EXISTS `demo_normal`;
+CREATE TABLE `demo_normal` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID,ENID',
+ `auditstatus` int(11) NOT NULL COMMENT '|审核状态|,CATA,auditstatus',
+ `audituser` int(11) NOT NULL DEFAULT 0 COMMENT '审核人,CATU,adminuser',
+ `audittimes` bigint(20) NOT NULL COMMENT '审核时间,DATE',
+ `auditmsg` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '审核理由',
+ `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '默认标题',
+ `menuid` int(11) NOT NULL COMMENT '所属菜单,DB,zc_menu',
+ `filesize` int(11) NOT NULL COMMENT '文件大小|,FSIZE',
+ `metre` int(11) NOT NULL COMMENT '长度|,METRE',
+ `bankmoney` bigint(20) NOT NULL COMMENT '贷款金额|,WCNY',
+ `setdate` bigint(20) NOT NULL COMMENT '设置日期,DATE,Y-m-d',
+ `settimes` bigint(20) NOT NULL COMMENT '设置时间,DATE',
+ `dayclock` int(11) NOT NULL COMMENT '|营业时间|,TIME,H:i:s',
+ `downurl` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '|文档|,IMG',
+ `avar` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '头像,IMG1',
+ `isuse` int(11) NOT NULL COMMENT '|是否使用|,BOOL',
+ `isopen` int(11) NOT NULL COMMENT '|是否开启|,BOOL,开启.关闭',
+ `unit` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '库存单位,UNIT',
+ `sigstatus` int(11) NOT NULL COMMENT '|单选状态|,CATA,auditstatus',
+ `mauditstatus` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '多选状态,CATS,auditstatus|~',
+ `prodcata` int(11) NOT NULL COMMENT '组织结构,CATM,zc_depart',
+ `areacode` int(11) NOT NULL COMMENT '所在地区,CATM,ciy_arearpc|?',
+ `renzheng` int(11) NOT NULL COMMENT '认证情况,TBIN,re.nz.he.ng|?',
+ `ppint` int(11) NOT NULL COMMENT '|临时字典|,TINT,1:aaa.3:bbbb.5:cccc',
+ `npcyc` int(11) NOT NULL COMMENT '|执行周期|,CYC',
+ `runsec` int(11) NOT NULL COMMENT '执行用时|,SEC',
+ `acttm` int(11) NOT NULL COMMENT '活动期数|,INT,第?期',
+ `imgs` varchar(800) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '活动花絮,IMG,?50',
+ `ton` bigint(20) NOT NULL COMMENT '吨位|,TON',
+ `price` bigint(20) NOT NULL COMMENT '单价|,CNY',
+ `lat` int(11) NOT NULL COMMENT ',纬度',
+ `lng` int(11) NOT NULL COMMENT '|位置|,LOC,lat',
+ `pct` int(11) NOT NULL COMMENT '百分比|,PCT',
+ `url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '链接,URL,跳转',
+ `weightg` bigint(20) NOT NULL COMMENT '体重|,KG,1,KG|1000|吨',
+ `eartmpr` int(11) NOT NULL COMMENT '耳温|,TC,3',
+ `qian` bigint(20) NOT NULL COMMENT '中式钱|,LNY',
+ `meishi` bigint(20) NOT NULL COMMENT '美式钱|,SNY',
+ `weight` bigint(20) NOT NULL COMMENT '重量|,WGT,G.*KG.TON,1',
+ `height` bigint(20) NOT NULL COMMENT '长度|,LGH',
+ `skt` bigint(20) NOT NULL COMMENT '科学数|,BET,SKT,1000,1',
+ `idcard` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '身份证号,MSK,******#*',
+ `addtimes` bigint(20) NOT NULL COMMENT '添加时间,DATE',
+ `content` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',介绍,BR',
+ `md` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',富文本,MD',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 78 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '复杂功能表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of demo_normal
+-- ----------------------------
+INSERT INTO `demo_normal` VALUES (11, 100, 10, 1746396705, '', '区块同步', 0, 0, 0, 0, 0, 0, 0, '', '', 2, 2, '', 0, '', 0, 0, 0, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0, 0, '', 1746396698, '', '[MD]');
+
+-- ----------------------------
+-- Table structure for doc_help
+-- ----------------------------
+DROP TABLE IF EXISTS `doc_help`;
+CREATE TABLE `doc_help` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `upid` int(11) NOT NULL COMMENT ',上级',
+ `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标题',
+ `csort` int(11) NOT NULL DEFAULT 1 COMMENT '排序',
+ `isuse` int(11) NOT NULL DEFAULT 0 COMMENT '|公开|,BOOL',
+ `uptimes` bigint(20) NOT NULL,
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 155 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of doc_help
+-- ----------------------------
+INSERT INTO `doc_help` VALUES (1, 0, '首页', 10, 1, 1751753699);
+INSERT INTO `doc_help` VALUES (10, 0, '快速了解', 10, 1, 1757412998);
+
+-- ----------------------------
+-- Table structure for www_list_art
+-- ----------------------------
+DROP TABLE IF EXISTS `www_list_art`;
+CREATE TABLE `www_list_art` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '|ID|',
+ `cateid` int(11) NOT NULL COMMENT '所属栏目,ID,www_list_cate',
+ `bshow` int(11) NOT NULL COMMENT '|显示|,BOOL',
+ `clickcnt` int(11) NOT NULL COMMENT '点击量|',
+ `icon` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '缩略图,IMG',
+ `name` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主标题',
+ `seotitle` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SEO标题',
+ `keys` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '关键词',
+ `descs` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',摘要,BR',
+ `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',内容,MD',
+ `csort` int(11) NOT NULL COMMENT '|排序|',
+ `addtimes` bigint(20) NOT NULL COMMENT '添加时间,DATE',
+ `uptimes` bigint(20) NOT NULL COMMENT '更新时间,DATE',
+ `vadmin` int(11) NOT NULL COMMENT '创建人,CATA,adminuser',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 3043 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '网站列表通用库' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of www_list_art
+-- ----------------------------
+INSERT INTO `www_list_art` VALUES (434, 2, 1, 1001, '', '三星级农贸市场收费软件', '', '三星级农贸市场,三星级农贸市场收费软件,农贸市场', '很多人都知道,智慧农贸批发当下势头舒展,而软件作为农贸批发市场一般经营必不或缺的少部分,有着举足轻重的现象。市场方能通过网络上买卖称重数据,与网络上支出信息数据两', '
\n很多人都知道,智慧农贸批发当下势头舒展,而软件作为农贸批发市场一般经营必不或缺的少部分,有着举足轻重的现象。市场方能通过网络上买卖称重数据,与网络上支出信息数据两者比较,构成解析,为市场上运作决策做应当统计及保证;为经营户提供了多样化、多平台、多渠道的计量手段,有效果减少了客户换零钱、找零钱、跑机械等困扰。同如今消费群众提供了1个安心、安全、快捷的买东西场所。\n
\n\n智慧农贸改造高星市场上精品化。在电脑部件、管理服务等角度提档更新,用心制作一批拥有示范引导效用的四星级及上面所说设计图市场。业态持续发展多方位。改进农贸市场谋划配置、琢磨以邻里重点方式为主新建或改建水产批发市场。进展网络上配送服务,采用互联网上下单、市场上发货、第三方配送的经营方式。\n
\n\n智能化果蔬批发选择媒体发布系统的好的地方:1、起到的作用资讯公示的结果,方便客户晓得市场内包含商户、菜价、优惠这个项目、检查内容等数据。 2、内容统一整理至云端,操作市场上运营方登入平台后台查询网上经营现状,既有利于农批市场对外招商引导流量,对内传达提高行业里服务质量,争创星级水产批发市场。\n
\n\n智能水产批发转型提升星级化。对乡村无星级网上及城区一星级及下面的农贸批发市场实行分批星级化改造,大幅提升三星级及以上水产批发市场在全市农批市场中的占比。对存在安全影响、规模小、功能差,不符合网上名称登记说明的市场,照章实施退出制度。\n
\n\n
\n
\n 随着计算机互联网通信能力、二维码读取、无绳射频识别能力(RFID)、远红外识别器、全球明确软件等等资讯传输设备的发展,物联网技巧从不可触摸通向现世,融合人们消费,宽泛使用在各产业,畜牧业也走进IoT聚焦时代。在促成农牧畜牧规模化、集成化、公开化、智能化、行业化、市场化、智能的进程中,不光一定要放牧康复技艺与工业化放牧的系统情况,也应该需要批量计算机信息使用软件研发。\n
\n\n 于IoT技艺的引导下,普通的“后院养殖”刚好逐渐消亡。随便专一的专业养殖场,或者传统养殖个体经营户,都会先便捷便利的坚持智能化的养殖操作执行。物联网技艺甚或最好于一样的养殖范围中,制作着不同的的放牧管理模式,到最后提升牧场的产能与价值,成为一个超级给力的“饲养高手”。\n
\n\n 奇博科学智能农牧管理系统在统计各类放牧全程的最宝贵经历的基础上做到网络与畜禽身份各类甄别电子耳标技艺相结合,遵守政府农业发展“整合资源、系统集成”的指导方针,重点是依据农牧业放牧标准化、人性化和质量安全体系建设说明,因此实现农牧业的品类、繁殖发育、饲料、豢养、检疫、组件、生长发育环境等创造生产、交易流程。凭据畜牧商品的生长的时候,个性化的付出饲料,达到细致饲养,降低成本。达到节省时间、增产增收的目标。\n
', 1, 0, 0, 0); +INSERT INTO `www_list_art` VALUES (436, 2, 1, 891, '', '纳服绩效系统软件', '', '纳服绩效系统软件,纳服绩效,', '18大以来,税务总局深层次履行施行政府涉及“严谨KPI维护”的品质,依靠国家对于“推进政府绩效总管”的部署,从前几年用税务KPI维护,从之前的版本到当下的新版本,连续订正、', '\n 18大以来,税务总局深层次履行施行政府涉及“严谨KPI维护”的品质,依靠国家对于“推进政府绩效总管”的部署,从前几年用税务KPI维护,从之前的版本到当下的新版本,连续订正、不畏荆棘成正途,促使标准规范越来越改善、考评实行更加严实、操作体制越发确定、综合作用更明显。航天金税三期上线走进了其中之一新的信息化时代。\n
\n\n 办税大厅是税务部门的服务,税务服务人员的显示则会代表了税务部门的名誉。办税员要养成优良的做事嗜好,每天上班前周全安排,每一笔业务认真查对,天天完工后认真清点,快速统计剖析,增加对细节的知名度,改错操作执行过失,为之后的作事积聚阅历。需要有稍强的生意技巧能力。纳税服务众多是杂事,小事,但做的有效果这些个琐细的、详细的、乏味的事件要较强的单子技巧能力,可以在第一个时候觉得详细上要调整的地方并且给出正确的的领会。\n
\n\n 增强结论按照,对税务单位负责人进行订单调整、提拔、升级的时候,应以考核结论为关键依据,可缩小人为缘由与不确定根源。税务单位平时考察结论与季度奖励领取相关。级别区别,依照KPI数据来源设定KPI等级规则,就如这样就可以对考核效果坚持分等,例如优、良、差等 。这么多的税收机关一直有自己对等级划分的规范,在目标绩效管控模块中就可以活跃定义。上海奇博科技航天金税三期办税服务服务大厅绩效考察维护工具是有这考察结果采用的功能\n
', 1, 0, 0, 0); +INSERT INTO `www_list_art` VALUES (437, 2, 1, 1539, '', '税务绩效管理方案', '', '税务绩效管理方案,税务绩效管理,', '曾经政府举行专题会议,指引要快点建设按照增强增值税管理替重要目标的“金税工程”。大会赞同用人民银行清理中心网络建设交叉审视工具,同期标出防伪税控平台需先试点,后采', '\n 曾经政府举行专题会议,指引要快点建设按照增强增值税管理替重要目标的“金税工程”。大会赞同用人民银行清理中心网络建设交叉审视工具,同期标出防伪税控平台需先试点,后采取。为团体实行此项工程项目,国家建立了国家税控工具搭建协调总管小组,下属“金税项目”做事部门,详细负责机构、调和平台建设办事。为航天金税三期上线指明了角度\n
\n\n 华夏税务项目部门仰仗厉害的内容软件,达到对考核数据的自动收集、的时候掌控和业绩评价,使我国国家税收总局必定追查绩效指标的进行进度,保证各个部门和各个干部都了解自身办事的短板和追赶的目标,彰显了绩效管理持续校正的根本要义。强化能力支撑,没有停止的提升绩效管理工作质效。强化组织保障,业绩维护博取税务骨干广博帮助。机构保障是税务公司部门KPI维护不可或缺的组成部分。用在中国我国税收总局和各个省份税收部门设置KPI管理需求岗位,重复的提高业绩管控的专业化水准。\n
\n\n 加强结论凭据,对税务机关负责人实行订单调整、选拔、晋级的时间,应该用考核结果替重要依据,可减少人为因素与不确切根源。税务机关平常考察结论与按季度分成发送挂钩。级数划分,遵照绩效数据来源要求绩效级别规则,如此便可以了对考察得分坚持分等,比如优、良、差等 。这些税务机关一直有自身对级数划分的准则,在目的业绩管理设备终端中绝对可以灵活设置。上海奇博科技航天金税三期税收服务服务大厅业绩考核维护工具便是具有这考核结果采取的功能\n
', 1, 0, 0, 0); +INSERT INTO `www_list_art` VALUES (438, 2, 1, 2039, '', '畜牧业智能养殖计步器', '', '畜牧业智能养殖计步器,畜牧业智能养殖,', '近年来,在中央对畜禽标准化规模畜牧等协助体制的展开下,我国畜牧业刚好身在由一般养殖向当今畜牧变革的重要年代。智能化放牧总管,就可以实现畜牧智能化,设计不同的的养殖', '
\n 近年来,在中央对畜禽标准化规模畜牧等协助体制的展开下,我国畜牧业刚好身在由一般养殖向当今畜牧变革的重要年代。智能化放牧总管,就可以实现畜牧智能化,设计不同的的养殖管理方式,提高养殖场的产量和价值,让养殖户快速已经是一个超级过得去的“养殖权威”。\n
\n\n 农牧业是全体农牧业生产中规模化水准最厉害,能力、设备与成本消耗相比而言聚集的范围之一。在畜牧养殖领域管控生活中,智能放牧总管方案的应用就能实现畜牧场地信息化、智慧远程管理,充分发挥物联网技术在部件养殖生产中的结果,能确保养殖场地内环境适宜放牧畜禽生长发育,实现精细化的维护,为养殖牛羊的深了、好的、高效、自然、安全创造条件,帮客户提高效率、降低成本、提高获取。普遍的放牧方式相较于农民来说不只是有浪费时间,还不要保证羊群的舒服状况是活动情况,智能放牧绝对可以去掉这个难题。\n
\n\n 奇博科技智能农牧管理系统其重点技术受到几个方面:一则是智能化穿设备的集成度;再者是对数据处理的AI算法。好的智能化家畜管理系统是要在一些这个运动牲口的此刻达成最准确的彩票预测。让AI跟畜牧养殖学更好用的连结,应该更新十分的的信息数据相关性,进而更进执行,进步准确率。集成智能化无绳射频传感RFID、无线通讯、智能控制系统和下载监控系统等专业技艺,对放牧空气、生长发育状态等实行全方面监控管控,实行认真归纳。\n
', 1, 0, 0, 0); +INSERT INTO `www_list_art` VALUES (439, 2, 1, 1229, '', '大型蔬菜批发市场管理系统', '', '大型蔬菜批发市场,大型蔬菜批发市场管理系统', '城市化进展提升极速,各类大楼拔地而起,科技发展更是蒸蒸日上。而水产批发市场却好像被忽视般,与“高大上”的城区不相符合,必定是落后,甚至于脏乱的。自然,现在各监控部', '\n城市化进展提升极速,各类大楼拔地而起,科技发展更是蒸蒸日上。而水产批发市场却好像被忽视般,与“高大上”的城区不相符合,必定是落后,甚至于脏乱的。自然,现在各监控部门已经注意到这一点,在不同省份农贸市场监控部门参观了改造革新的设计图智能蔬菜批发市场后,也都就意味着智能化水产批发以后已往N多年的转型趋向和焦点新闻。\n
\n\n智能化蔬菜批发应该需要用到食品安全追溯工具,普遍模块寻常包容:使用安心水产批发市场食品安全追溯系统,就能够溯源农批市场的客户信息、供求资讯、供应内容、菜品资讯以及检验资讯,让农贸市场感受保证更放心、更安心,让我国看管更快捷方便。顾客最好盘查到买菜品从批发、流通、再到网上的供应商源头信息或者供给日期等内容,源头溯源盘查。\n
\n\n智慧水产批发选择媒体发布工具的好的地方:1、获得的效果信息公示的影响,操作购买者了解市场内涵概企业、菜价、优惠活动、检验信息等信息数据。 2、讯息统一聚集至云端,便利网上运营方登入系统后台看一下市场运作状况,既有利于农贸市场对外招商流量导入,对内推销提升网上服务质量,争创星级农贸市场。\n
\n\n智能水产批发改革看管技术智慧化。加速推进水产批发市场智慧化改造,运用智能配件设备,展开蔬菜批发市场智能化化维护,因此实现智能付账、购买溯源、计量总管、报价监测等智能化总管和技术模式,为消费者提供便利化智能化化服务。 四周整顿有序化。农贸批发市场界线500米内,原则上不可以成立“临时疏导点”。水产批发市场地域200米内,不提倡设置与市场内运作水产、肉食类、蔬菜、豆制品、熟食等同种用品的运作部门。\n
\n\n
\n
| # | '; + foreach ($heads as $arr) { + $html .= '' . $arr['name'] . ' | '; + } + $html .= '' . $lineidx . ' | ';
+ $bempty = true;
+ $unqs = array();
+ $csql = new \ciy\sql('ap_art_post');
+ foreach ($heads as $arr) {
+ $name = $arr['name'];
+ $errmsg = ''; //数据有误,显示红色说明
+ $showdat = ''; //显示在表格中的数据
+ if ($arr['idx'] > -1)
+ $showdat = trim($datas[$rowidx][$arr['idx']]);
+ if ($showdat == '--')
+ $showdat = '';
+ $value = $showdat; //在表单中的数据(转换后)
+ $ext = ''; //扩展表单
+ if ($name == '行码') {
+ if (empty($showdat)) {
+ $value = 0;
+ $showdat = '新增';
+ } else {
+ $id = deid($showdat);
+ if ($id == 0)
+ $errmsg = $name . '解析错误';
+ else {
+ $csqlchk = new \ciy\sql('ap_art_post');
+ $csqlchk->where('id', $id)->column('id');
+ $chkid = toint($db->get1($csqlchk));
+ if ($chkid != $id)
+ $errmsg = $name . '在数据库中不存在';
+ $value = $id;
+ }
+ }
+ } else if ($name == '版块') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ $showdat = str_replace(',', '', $showdat);
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint($showdat);
+ }
+ } else if ($name == '文章状态') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $value = dcode($code_artstatus, $showdat);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ } else if ($name == '排序位') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ $value = dcode($code_artsort, $showdat);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ } else if ($name == '文章标题') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ }
+ } else if ($name == '来源') {
+ if (empty($showdat)) {
+ $value = '';
+ } else {
+ }
+ } else if ($name == '作者') {
+ if (empty($showdat)) {
+ $value = '';
+ } else {
+ }
+ } else if ($name == '精读数') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', $showdat);
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint($showdat);
+ }
+ } else if ($name == '阅读数') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', $showdat);
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint($showdat);
+ }
+ } else if ($name == '摘要') {
+ if (empty($showdat)) {
+ $value = '';
+ } else {
+ }
+ } else if ($name == '撰写人') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $value = dcode($code_inputuser, $showdat);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ } else if ($name == '发布时间') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $value = tostamp($showdat);
+ if ($value === 0) {
+ $errmsg = $name . '时间格式错误';
+ } else {
+ $showdat = date('Y-m-d H:i', $value);
+ }
+ }
+ }
+ if (!empty($showdat))
+ $bempty = false;
+ if (empty($errmsg))
+ $hrhtml .= '' . $showdat . '' . $ext . ' | ';
+ else
+ $hrhtml .= '' . $showdat . ' | ';
+ }
+ if ($bempty)
+ continue;
+ if (count($unqs) > 0) {
+ $unq = implode('|', $unqs);
+ if (in_array($unq, $uniques))
+ $firsthtml = '重复 | ';
+ else {
+ $uniques[] = $unq;
+ $csql->column('id');
+ $chkid = toint($db->get1($csql));
+ if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
+ $firsthtml = '重复 | ';
+ }
+ }
+ $html .= '
|---|---|
共' . $cnt . '条数据';
+ return succjson(array('html' => $html, 'count' => $cnt));
+ }
+
+ public static function json_importxls_data() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p i'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $total = $post->getint('total');
+ try {
+ $db->begin();
+ for ($i = 1; $i <= $total; $i++) {
+ $id = $post->getint('id_' . $i);
+ $updata = array();
+ $updata['sectionid'] = $post->get('sectionid_' . $i);
+ $updata['artstatus'] = $post->get('artstatus_' . $i);
+ $updata['artsort'] = $post->get('artsort_' . $i);
+ $updata['name'] = $post->get('name_' . $i);
+ $updata['source'] = $post->get('source_' . $i);
+ $updata['author'] = $post->get('author_' . $i);
+ $updata['studycnt'] = $post->get('studycnt_' . $i);
+ $updata['readcnt'] = $post->get('readcnt_' . $i);
+ $updata['descs'] = $post->get('descs_' . $i);
+ $updata['inputuser'] = $post->get('inputuser_' . $i);
+ $updata['pubtimes'] = $post->get('pubtimes_' . $i);
+ $csql = new \ciy\sql('ap_art_post');
+ if ($id == 0) {
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增导入失败:' . $db->error);
+ } else {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新导入失败:' . $db->error);
+ }
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ return succjson();
+ }
+}
diff --git a/web/admin/ap/art_section.html b/web/admin/ap/art_section.html
new file mode 100644
index 0000000..8e0cb75
--- /dev/null
+++ b/web/admin/ap/art_section.html
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/art_section.php b/web/admin/ap/art_section.php
new file mode 100644
index 0000000..3a49d8d
--- /dev/null
+++ b/web/admin/ap/art_section.php
@@ -0,0 +1,187 @@
+get('query');
+ $csql = new \ciy\sql('ap_art_section');
+ $csql->where('ngroup like', objstr($query, 'ngroup'));
+ $csql->where('name like', objstr($query, 'name'));
+ $csql->where('artcnt like', objstr($query, 'artcnt'));
+ $csql->where('adminuser', objstr($query, 'adminuser'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_art_section');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'ngroup', 'name' => '分组名', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '版块名称', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'artcnt', 'name' => '文章数', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'select', 'form' => 'adminuser', 'name' => '责任人', 'all' => '全部', 'select' => 'adminuser');
+ $ret['searchinput'] = $input;
+ }
+ return succjson($ret);
+ }
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $ngroup = $post->get('ngroup');
+ $name = $post->get('name');
+ if (empty($name))
+ return errjson('请填写版块名称');
+ $datarow = null;
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_art_section');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ }
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['ngroup'] = $ngroup;
+ $updata['name'] = $name;
+ $updata['adminuser'] = $rsuser['id'];
+ $updata['addtimes'] = tostamp();
+ $csql = new \ciy\sql('ap_art_section');
+ if ($id > 0) {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ } else {
+ $updata['addtimes'] = tostamp();
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增失败:' . $db->error);
+ $id = $db->insert_id();
+ }
+ $updata['id'] = $id;
+ savelogdb($db, $rsuser['id'], 'ap_art_section', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_art_section');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_art_section');
+ savelogdb($db, $rsuser['id'], 'ap_art_section', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'ngroup', 'name' => '分组名');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '版块名称');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'auditcnt', 'name' => '待审数');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'artcnt', 'name' => '文章数');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'adminuser', 'name' => '责任人');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'addtimes', 'name' => '创建时间');
+ $code_adminuser = getcatas($db, 'adminuser');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'adminuser')
+ $val = ccode($code_adminuser, $val);
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/art_vent.html b/web/admin/ap/art_vent.html
new file mode 100644
index 0000000..1e9c7da
--- /dev/null
+++ b/web/admin/ap/art_vent.html
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/art_vent.php b/web/admin/ap/art_vent.php
new file mode 100644
index 0000000..fa9ad90
--- /dev/null
+++ b/web/admin/ap/art_vent.php
@@ -0,0 +1,198 @@
+get('query');
+ $csql = new \ciy\sql('ap_art_vent');
+ $liid = objint($query, 'liid');
+ if ($liid == 1)
+ $csql->where('audituser=0');
+ if ($liid == 2)
+ $csql->where('audituser>0');
+ $csql->where('sectionid', get('_sectionid'));
+ $val = objstr($query, 'artid');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_art_post');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('artid', $trow['id']);
+ $query['artid'] = $trow['name'];
+ } else {
+ $csql->where('artid=0');
+ }
+ }
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->where('content like', objstr($query, 'content'));
+ $csql->wheredaterange('pubtimes', objstr($query, 'pubtimes'));
+ $csql->where('audituser', objstr($query, 'audituser'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if ($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_art_vent');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'artid', 'name' => '文章', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'content', 'name' => '内容', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'pubtimes', 'name' => '反馈时间');
+ $input[] = array('type' => 'select', 'form' => 'audituser', 'name' => '审核人', 'all' => '全部', 'select' => 'adminuser');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_art_section'] = getrelation($db, $rows, 'ap_art_section', 'sectionid');
+ $ret['ap_art_post'] = getrelation($db, $rows, 'ap_art_post', 'artid');
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_art_vent');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_art_vent');
+ savelogdb($db, $rsuser['id'], 'ap_art_vent', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+ public static function json_read() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $updata = array();
+ $updata['audituser'] = $rsuser['id'];
+ $csql = new \ciy\sql('ap_art_vent');
+ $csql->where('id in', $ids);
+ if ($db->update($csql, $updata) === false)
+ return errjson($db->error);
+ $ret['data'] = $updata;
+ $ret['ids'] = explode(',', $ids);
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'sectionid', 'name' => '版块');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'artid', 'name' => '版块');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'content', 'name' => '内容');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'pubtimes', 'name' => '反馈时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'audituser', 'name' => '审核人');
+ $code_sectionid = getrelation($db, $rows, 'ap_art_section', 'sectionid', 'id,name');
+ $code_artid = getrelation($db, $rows, 'ap_art_post', 'artid', 'id,name');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $code_audituser = getcatas($db, 'adminuser');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'sectionid')
+ $val = ccode($code_sectionid, $val);
+ if ($field == 'artid')
+ $val = ccode($code_artid, $val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'pubtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'audituser')
+ $val = ccode($code_audituser, $val);
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/banner.html b/web/admin/ap/banner.html
new file mode 100644
index 0000000..32989a7
--- /dev/null
+++ b/web/admin/ap/banner.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/banner.php b/web/admin/ap/banner.php
new file mode 100644
index 0000000..8b3777d
--- /dev/null
+++ b/web/admin/ap/banner.php
@@ -0,0 +1,129 @@
+get('query');
+ $csql = new \ciy\sql('ap_banner');
+ $csql->where('groupcode like', objstr($query, 'groupcode'));
+ $csql->where('url like', objstr($query, 'url'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_banner');
+ foreach ($field as $fr => $v) {
+ if ($post->is('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'groupcode', 'name' => '组别代码', 'prop' => ' style="width:6em;"' );
+ $input[] = array('type' => 'input', 'form' => 'url', 'name' => '链接', 'prop' => ' style="width:8em;"' );
+ $ret['searchinput'] = $input;
+ }
+ return succjson($ret);
+ }
+
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $groupcode = $post->get('groupcode');
+ $img = $post->get('img');
+ $url = $post->get('url');
+ if (empty($groupcode))
+ return errjson('请填写组别代码');
+ if (empty($img))
+ return errjson('请填写轮播图');
+ $datarow = null;
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_banner');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ }
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['groupcode'] = $groupcode;
+ $updata['img'] = $img;
+ $updata['url'] = $url;
+ $csql = new \ciy\sql('ap_banner');
+ if ($id > 0) {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ } else {
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增失败:' . $db->error);
+ $id = $db->insert_id();
+ }
+ $updata['id'] = $id;
+ savelogdb($db, $rsuser['id'], 'ap_banner', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_banner');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_banner');
+ savelogdb($db, $rsuser['id'], 'ap_banner', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+}
\ No newline at end of file
diff --git a/web/admin/ap/cash_ie.html b/web/admin/ap/cash_ie.html
new file mode 100644
index 0000000..8f5896a
--- /dev/null
+++ b/web/admin/ap/cash_ie.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/cash_ie.php b/web/admin/ap/cash_ie.php
new file mode 100644
index 0000000..2ac9a43
--- /dev/null
+++ b/web/admin/ap/cash_ie.php
@@ -0,0 +1,186 @@
+get('query');
+ $csql = new \ciy\sql('ap_cash_ie');
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('cashietype', $liid);
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->wherenumrange('iemoney', objstr($query, 'iemoney_1'), objstr($query, 'iemoney_2'), 100);
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->where('name like', objstr($query, 'name'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_cash_ie');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'num', 'form' => 'iemoney', 'name' => '金额', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '发生时间');
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '摘要', 'prop' => ' style="width:8em;"');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_getdata() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $act = $post->get('act');
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_cash_ie');
+ $csql->where('id', $id);
+ $row = $db->getone($csql);
+ if (!is_array($row))
+ return errjson('数据不存在');
+ if ($act == 'view' || $act == 'review') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $csql->where('id', $row['vuser']);
+ $ret['ap_user'] = $db->get($csql);
+ }
+ } else {
+ $row = array();
+ }
+ $ret['data'] = $row;
+ if ($act == 'edit') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $ret['ap_user'] = $db->get($csql);
+ }
+ return succjson($ret);
+ }
+
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_cash_ie');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_cash_ie');
+ savelogdb($db, $rsuser['id'], 'ap_cash_ie', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'cashietype', 'name' => '收支分类');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'iemoney', 'name' => '金额');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '发生时间');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '摘要');
+ $code_cashietype = getcatas($db, 'cashietype');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'cashietype')
+ $val = ccode($code_cashietype, $val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'iemoney')
+ $val = number_format($val / 100, 2);
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/cash_in.html b/web/admin/ap/cash_in.html
new file mode 100644
index 0000000..df603ca
--- /dev/null
+++ b/web/admin/ap/cash_in.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/cash_in.php b/web/admin/ap/cash_in.php
new file mode 100644
index 0000000..59eefcd
--- /dev/null
+++ b/web/admin/ap/cash_in.php
@@ -0,0 +1,188 @@
+get('query');
+ $csql = new \ciy\sql('ap_cash_in');
+ $liid = objint($query, 'liid');
+ if ($liid == 1)
+ $csql->where('paytimes=0');
+ if ($liid == 2)
+ $csql->where('paytimes>0');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->wherenumrange('cashmoney', objstr($query, 'cashmoney_1'), objstr($query, 'cashmoney_2'), 100);
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->where('name like', objstr($query, 'name'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_cash_in');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'num', 'form' => 'cashmoney', 'name' => '金额', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '发生时间');
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '摘要', 'prop' => ' style="width:8em;"');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_getdata() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $act = $post->get('act');
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_cash_in');
+ $csql->where('id', $id);
+ $row = $db->getone($csql);
+ if (!is_array($row))
+ return errjson('数据不存在');
+ if ($act == 'view' || $act == 'review') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $csql->where('id', $row['vuser']);
+ $ret['ap_user'] = $db->get($csql);
+ }
+ } else {
+ $row = array();
+ }
+ $ret['data'] = $row;
+ if ($act == 'edit') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $ret['ap_user'] = $db->get($csql);
+ }
+ return succjson($ret);
+ }
+
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_cash_in');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_cash_in');
+ savelogdb($db, $rsuser['id'], 'ap_cash_in', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'cashintype', 'name' => '收入分类');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'cashmoney', 'name' => '金额');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '发生时间');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '摘要');
+ $code_cashintype = getcatas($db, 'cashintype');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'cashintype')
+ $val = ccode($code_cashintype, $val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'cashmoney')
+ $val = number_format($val / 100, 2);
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/cash_out_apply.html b/web/admin/ap/cash_out_apply.html
new file mode 100644
index 0000000..57fe476
--- /dev/null
+++ b/web/admin/ap/cash_out_apply.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/cash_out_apply.php b/web/admin/ap/cash_out_apply.php
new file mode 100644
index 0000000..6869b58
--- /dev/null
+++ b/web/admin/ap/cash_out_apply.php
@@ -0,0 +1,225 @@
+get('query');
+ $csql = new \ciy\sql('ap_cash_out');
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('cashstatus', $liid);
+ else
+ $csql->where('cashstatus=10');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->where('cashtype', objstr($query, 'cashtype'));
+ $csql->wherenumrange('cashmoney', objstr($query, 'cashmoney_1'), objstr($query, 'cashmoney_2'), 100);
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->where('cashno like', objstr($query, 'cashno'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if ($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_cash_out');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'select', 'form' => 'cashtype', 'name' => '提现方式', 'all' => '全部', 'select' => '独立纳税.个人微信');
+ $input[] = array('type' => 'num', 'form' => 'cashmoney', 'name' => '金额', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '申请时间');
+ $input[] = array('type' => 'input', 'form' => 'cashno', 'name' => '支付编号', 'prop' => ' style="width:8em;"');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+ public static function json_audit() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $act = $post->getint('act');
+ $auditmsg = $post->get('auditmsg');
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ if ($act == 2) {
+ if (empty($auditmsg))
+ return errjson('请填写拒绝原因');
+ }
+ $csql = new \ciy\sql('ap_cash_out');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $ids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ if ($row['cashstatus'] != 10)
+ continue;
+ if ($act == 2) { //退余额
+ \web\cwebcomon::usercashoe($db, 11, $row['vuser'], $row['cashmoney'], '提现审核拒绝');
+ }
+ $id = $row['id'];
+ $updata = array();
+ if ($act == 1) {
+ if ($row['cashtype'] == 1)
+ $updata['cashstatus'] = 50;
+ else
+ $updata['cashstatus'] = 20;
+ } else {
+ $updata['cashstatus'] = 90;
+ $updata['auditmsg'] = $auditmsg;
+ }
+ $csql = new \ciy\sql('ap_cash_out');
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ $updata['id'] = $id;
+ $ids[] = $id;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ $ret['ids'] = $ids;
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_cash_out');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ if ($row['cashstatus'] < 90)
+ continue;
+ if ($row['addtimes'] > time() - 86400 * 30)
+ continue;
+ $delid = $row['id'];
+ delme($db, $delid, 'ap_cash_out');
+ savelogdb($db, $rsuser['id'], 'ap_cash_out', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'cashstatus', 'name' => '提现状态');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'cashtype', 'name' => '提现方式');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'cashmoney', 'name' => '金额');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '申请时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'cashtimes', 'name' => '支付时间');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'cashno', 'name' => '支付编号');
+ $code_cashstatus = getcatas($db, 'cashstatus');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $code_cashtype = $db->getdbcodes('ap_cash_out', 'cashtype');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'cashstatus')
+ $val = ccode($code_cashstatus, $val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'cashtype')
+ $val = ($val == 1 ? $code_cashtype[0]['name'] : @$code_cashtype[1]['name']);
+ if ($field == 'cashmoney')
+ $val = number_format($val / 100, 2);
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'cashtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/cash_out_inv.html b/web/admin/ap/cash_out_inv.html
new file mode 100644
index 0000000..e5b6c54
--- /dev/null
+++ b/web/admin/ap/cash_out_inv.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/cash_out_inv.php b/web/admin/ap/cash_out_inv.php
new file mode 100644
index 0000000..b104c3f
--- /dev/null
+++ b/web/admin/ap/cash_out_inv.php
@@ -0,0 +1,227 @@
+get('query');
+ $csql = new \ciy\sql('ap_cash_out');
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('cashstatus', $liid);
+ else
+ $csql->where('cashstatus=30');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->where('cashtype', objstr($query, 'cashtype'));
+ $csql->wherenumrange('cashmoney', objstr($query, 'cashmoney_1'), objstr($query, 'cashmoney_2'), 100);
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->where('cashno like', objstr($query, 'cashno'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if ($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_cash_out');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $field['bankaccount']['c'] = '';
+ $field['bankname']['c'] = '';
+ $field['bankno']['c'] = '';
+ $field['bankcode']['c'] = '';
+ $field['cashno']['c'] = '';
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'select', 'form' => 'cashtype', 'name' => '提现方式', 'all' => '全部', 'select' => '独立纳税.个人微信');
+ $input[] = array('type' => 'num', 'form' => 'cashmoney', 'name' => '金额', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '申请时间');
+ $input[] = array('type' => 'input', 'form' => 'cashno', 'name' => '支付编号', 'prop' => ' style="width:8em;"');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+ public static function json_audit() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $act = $post->getint('act');
+ $auditmsg = $post->get('auditmsg');
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ if ($act == 2) {
+ if (empty($auditmsg))
+ return errjson('请填写拒绝原因');
+ }
+ $csql = new \ciy\sql('ap_cash_out');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $ids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ if ($row['cashstatus'] != 30)
+ continue;
+ if ($act == 2) { //退余额
+ \web\cwebcomon::usercashoe($db, 11, $row['vuser'], $row['cashmoney'], '提现发票拒绝');
+ }
+ $id = $row['id'];
+ $updata = array();
+ if ($act == 1) {
+ $updata['cashstatus'] = 50;
+ } else {
+ $updata['cashstatus'] = 90;
+ $updata['auditmsg'] = $auditmsg;
+ }
+ $csql = new \ciy\sql('ap_cash_out');
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ $updata['id'] = $id;
+ $ids[] = $id;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ $ret['ids'] = $ids;
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_cash_out');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ if ($row['cashstatus'] < 90)
+ continue;
+ if ($row['addtimes'] > time() - 86400 * 30)
+ continue;
+ $delid = $row['id'];
+ delme($db, $delid, 'ap_cash_out');
+ savelogdb($db, $rsuser['id'], 'ap_cash_out', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'cashstatus', 'name' => '提现状态');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'cashtype', 'name' => '提现方式');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'cashmoney', 'name' => '金额');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '申请时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'cashtimes', 'name' => '支付时间');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'cashno', 'name' => '支付编号');
+ $code_cashstatus = getcatas($db, 'cashstatus');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $code_cashtype = $db->getdbcodes('ap_cash_out', 'cashtype');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'cashstatus')
+ $val = ccode($code_cashstatus, $val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'cashtype')
+ $val = ($val == 1 ? $code_cashtype[0]['name'] : @$code_cashtype[1]['name']);
+ if ($field == 'cashmoney')
+ $val = number_format($val / 100, 2);
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'cashtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/cash_out_transfer.html b/web/admin/ap/cash_out_transfer.html
new file mode 100644
index 0000000..b23c7e8
--- /dev/null
+++ b/web/admin/ap/cash_out_transfer.html
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/cash_out_transfer.php b/web/admin/ap/cash_out_transfer.php
new file mode 100644
index 0000000..2a8c14e
--- /dev/null
+++ b/web/admin/ap/cash_out_transfer.php
@@ -0,0 +1,302 @@
+get('query');
+ $csql = new \ciy\sql('ap_cash_out');
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('cashstatus', $liid);
+ else
+ $csql->where('cashstatus=50');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->where('cashtype', objstr($query, 'cashtype'));
+ $csql->wherenumrange('cashmoney', objstr($query, 'cashmoney_1'), objstr($query, 'cashmoney_2'), 100);
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->where('cashno like', objstr($query, 'cashno'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if ($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_cash_out');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $field['invfile']['c'] = '';
+ $field['invcode']['c'] = '';
+ $field['cashmoney']['c'] = '打款金额|,CNY';
+ $field['taxmoney']['c'] = '';
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'select', 'form' => 'cashtype', 'name' => '提现方式', 'all' => '全部', 'select' => '银行.微信');
+ $input[] = array('type' => 'num', 'form' => 'cashmoney', 'name' => '金额', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '申请时间');
+ $input[] = array('type' => 'input', 'form' => 'cashno', 'name' => '支付编号', 'prop' => ' style="width:8em;"');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+ public static function json_audit() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $auditstatus = $post->getint('auditstatus');
+ $auditmsg = $post->get('auditmsg');
+ $cashno = $post->get('cashno');
+ $id = $post->getint('id');
+ if ($auditstatus == 90) {
+ if (empty($auditmsg))
+ return errjson('请填写拒绝原因');
+ } else {
+ if (empty($cashno))
+ return errjson('请填写支付流水号');
+ }
+ $csql = new \ciy\sql('ap_cash_out');
+ $csql->where('id', $id);
+ $row = $db->getone($csql);
+ if (!is_array($row))
+ return errjson('数据不存在');
+ if ($row['cashstatus'] != 50)
+ return errjson('数据状态不是待支付');
+ $ids = array();
+ try {
+ $db->begin();
+ if ($auditstatus == 90) { //退余额
+ $updata = array();
+ \web\cwebcomon::usercashoe($db, 11, $row['vuser'], $row['cashmoney'], '提现支付拒绝');
+ }
+ $id = $row['id'];
+ $updata = array();
+ if ($auditstatus == 90) {
+ $updata['cashstatus'] = 90;
+ $updata['auditmsg'] = $auditmsg;
+ } else {
+ $updata['cashstatus'] = 100;
+ $updata['cashtimes'] = tostamp();
+ $updata['cashno'] = $cashno;
+ }
+ $csql = new \ciy\sql('ap_cash_out');
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ $updata['id'] = $id;
+ $ids[] = $id;
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ $ret['ids'] = $ids;
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_cash_out');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ if ($row['cashstatus'] < 90)
+ continue;
+ if ($row['addtimes'] > time() - 86400 * 30)
+ continue;
+ $delid = $row['id'];
+ delme($db, $delid, 'ap_cash_out');
+ savelogdb($db, $rsuser['id'], 'ap_cash_out', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'cashmoney', 'name' => '打款金额');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'bankaccount', 'name' => '账户名称');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'bankno', 'name' => '银行卡号');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'bankname', 'name' => '开户银行');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'bankcode', 'name' => '联行号');
+ $code_cashstatus = getcatas($db, 'cashstatus');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $code_cashtype = $db->getdbcodes('ap_cash_out', 'cashtype');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'cashstatus')
+ $val = ccode($code_cashstatus, $val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'cashtype')
+ $val = ($val == 1 ? $code_cashtype[0]['name'] : @$code_cashtype[1]['name']);
+ if ($field == 'cashmoney') {
+ $val = $row[$field];
+ if ($row['taxmoney'] > 0)
+ $val -= $row['taxmoney'];
+ $val = number_format($val / 100, 2);
+ }
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'cashtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+ public static function json_exporttaxxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $month = $post->getint('month');
+ $monthend = strtotime("+1 month", $month);
+ $csql = new \ciy\sql('ap_cash_out');
+ $csql->where('cashstatus', 100);
+ $csql->where('taxmoney>=0');
+ $csql->where('cashtimes>=', $month);
+ $csql->where('cashtimes<', $monthend);
+ $csql->order('vuser,cashtimes');
+ $rows = $db->get($csql);
+ //姓名与账户名称不符,且未银行卡的,风控提示
+
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'name', 'name' => '姓名');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'idid', 'name' => '身份证号');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'cashmoney', 'name' => '涉税金额');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'taxmoney', 'name' => '个税金额');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'bankno', 'name' => '银行卡号');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'bankname', 'name' => '开户银行');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '申请时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'cashtimes', 'name' => '支付时间');
+ $code_vuser = getrelation($db, $rows, 'ap_usr_ext', 'vuser', 'id,truename,idid');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'name')
+ $val = ccode($code_vuser, $row['vuser'], 'id', 'truename');
+ if ($field == 'idid')
+ $val = ccode($code_vuser, $row['vuser'], 'id', 'idid');
+ if ($field == 'cashmoney')
+ $val = number_format($val / 100, 2);
+ if ($field == 'taxmoney')
+ $val = number_format($val / 100, 2);
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'cashtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = '个税数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/invoicedetail.html b/web/admin/ap/invoicedetail.html
new file mode 100644
index 0000000..53c2986
--- /dev/null
+++ b/web/admin/ap/invoicedetail.html
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/invoicedetail.php b/web/admin/ap/invoicedetail.php
new file mode 100644
index 0000000..dd11cef
--- /dev/null
+++ b/web/admin/ap/invoicedetail.php
@@ -0,0 +1,197 @@
+get('query', array());
+ $csql = new \ciy\sql('ap_invoicedetail');
+ $csql->where('name like', objstr($query, 'name'));
+ $csql->wheredaterange('uptimes', objstr($query, 'uptimes'));
+ $val = objstr($query, 'adminuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('zc_cata');
+ $csqlt->where('cbid in (select id from zc_cata where cbid=0 and codeid=\'adminuser\')');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('adminuser', $trow['codeid']);
+ $query['adminuser'] = $trow['name'];
+ } else {
+ $csql->where('adminuser=0');
+ }
+ }
+ $csql->where('memo like', objstr($query, 'memo'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post, $rsuser);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_invoicedetail');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '名称', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'uptimes', 'name' => '更新时间');
+ $input[] = array('type' => 'input', 'form' => 'adminuser', 'name' => '维护人', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'memo', 'name' => '备注信息', 'prop' => ' style="width:8em;"');
+ $ret['searchinput'] = $input;
+ }
+ return succjson($ret);
+ }
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $name = $post->get('name');
+ $adminuser = $post->getint('adminuser');
+ $memo = $post->get('memo');
+ if (empty($name))
+ return errjson('请填写名称');
+ $datarow = null;
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_invoicedetail');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ }
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['name'] = $name;
+ $updata['uptimes'] = tostamp();
+ $updata['adminuser'] = $adminuser;
+ $updata['memo'] = $memo;
+ $csql = new \ciy\sql('ap_invoicedetail'); //auto
+ if ($id > 0) {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ } else {
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增失败:' . $db->error);
+ $id = $db->insert_id();
+ }
+ $updata['id'] = $id;
+ //savelogdb($db, $rsuser['id'], 'ap_invoicedetail', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_invoicedetail');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_invoicedetail');
+ savelogdb($db, $rsuser['id'], 'ap_invoicedetail', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post, $rsuser);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '名称');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'uptimes', 'name' => '更新时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'adminuser', 'name' => '维护人');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'memo', 'name' => '备注信息');
+ $code_adminuser = getcatas($db, 'adminuser');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'uptimes')
+ $val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'adminuser')
+ $val = ccode($code_adminuser, $val);
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = '发票类型数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/invoicetitle.html b/web/admin/ap/invoicetitle.html
new file mode 100644
index 0000000..51de595
--- /dev/null
+++ b/web/admin/ap/invoicetitle.html
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/invoicetitle.php b/web/admin/ap/invoicetitle.php
new file mode 100644
index 0000000..f704407
--- /dev/null
+++ b/web/admin/ap/invoicetitle.php
@@ -0,0 +1,201 @@
+get('query');
+ $csql = new \ciy\sql('ap_invoicetitle');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->where('name like', objstr($query, 'name'));
+ $csql->where('taxnumber like', objstr($query, 'taxnumber'));
+ $csql->where('bankname like', objstr($query, 'bankname'));
+ $csql->wheredaterange('uptimes', objstr($query, 'uptimes'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_invoicetitle');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '名称', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'taxnumber', 'name' => '税号', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'bankname', 'name' => '银行名称', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'uptimes', 'name' => '更新时间');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $name = $post->get('name');
+ $taxnumber = $post->get('taxnumber');
+ $addr = $post->get('addr');
+ $phone = $post->get('phone');
+ $bankname = $post->get('bankname');
+ $bankaccount = $post->get('bankaccount');
+ if (empty($name))
+ return errjson('请填写名称');
+ $csql = new \ciy\sql('ap_invoicetitle');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['name'] = $name;
+ $updata['taxnumber'] = $taxnumber;
+ $updata['addr'] = $addr;
+ $updata['phone'] = $phone;
+ $updata['bankname'] = $bankname;
+ $updata['bankaccount'] = $bankaccount;
+ $updata['uptimes'] = tostamp();
+ $csql = new \ciy\sql('ap_invoicetitle');
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ $updata['id'] = $id;
+ savelogdb($db, $rsuser['id'], 'ap_invoicetitle', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ $ret['ap_user'] = getrelation($db, [$updata], 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_invoicetitle');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_invoicetitle');
+ savelogdb($db, $rsuser['id'], 'ap_invoicetitle', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '名称');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'taxnumber', 'name' => '税号');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'addr', 'name' => '单位地址');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'phone', 'name' => '电话号码');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'bankname', 'name' => '银行名称');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'bankaccount', 'name' => '银行账号');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'uptimes', 'name' => '更新时间');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'uptimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/invoicing.html b/web/admin/ap/invoicing.html
new file mode 100644
index 0000000..7cd2f80
--- /dev/null
+++ b/web/admin/ap/invoicing.html
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/invoicing.php b/web/admin/ap/invoicing.php
new file mode 100644
index 0000000..672583a
--- /dev/null
+++ b/web/admin/ap/invoicing.php
@@ -0,0 +1,305 @@
+get('query', array());
+ $csql = new \ciy\sql('ap_invoicing');
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('auditstatus', $liid);
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $val = objstr($query, 'invoicedetailid');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_invoicedetail');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('invoicedetailid', $trow['id']);
+ $query['invoicedetailid'] = $trow['name'];
+ } else {
+ $csql->where('invoicedetailid=0');
+ }
+ }
+ $csql->wherenumrange('invoicemoney', objstr($query, 'invoicemoney_1'), objstr($query, 'invoicemoney_2'), 100);
+ $csql->where('invcode like', objstr($query, 'invcode'));
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->where('name like', objstr($query, 'name'));
+ $csql->where('taxnumber', objstr($query, 'taxnumber'));
+ $csql->where('auditmsg like', objstr($query, 'auditmsg'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post, $rsuser);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if ($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_invoicing');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'invoicedetailid', 'name' => '所属明细', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'num', 'form' => 'invoicemoney', 'name' => '开票金额', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'input', 'form' => 'invcode', 'name' => '发票号码', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '申请时间');
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '名称', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'taxnumber', 'name' => '税号', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'auditmsg', 'name' => '拒开原因', 'prop' => ' style="width:8em;"');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ $ret['ap_invoicedetail'] = getrelation($db, $rows, 'ap_invoicedetail', 'invoicedetailid');
+ return succjson($ret);
+ }
+
+
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_invoicing');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ if ($row['auditstatus'] < 90)
+ continue;
+ if ($row['addtimes'] > tostamp() - 86400 * 14)
+ continue;
+ //已开票超过14天,或已拒开超过14天
+ $delid = $row['id'];
+ delme($db, $delid, 'ap_invoicing');
+ savelogdb($db, $rsuser['id'], 'ap_invoicing', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_audit() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p a'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->getint('ids');
+ $auditstatus = $post->getint('auditstatus');
+ $auditmsg = $post->get('auditmsg');
+ if ($auditstatus == 90 && empty($auditmsg))
+ return errjson('请填写驳回原因');
+ if ($auditstatus == 100) {
+ $invcode = $post->get('invcode');
+ $invfile = $post->get('invfile');
+ if (empty($invfile))
+ return errjson('请上传发票');
+ }
+ $csql = new \ciy\sql('ap_invoicing');
+ $csql->where('id', $ids);
+ $mrow = $db->getone($csql);
+ if (!is_array($mrow))
+ return errjson('数据不存在');
+ $ids = array();
+ try {
+ $db->begin();
+ $updata = array();
+ if ($auditstatus == 100) {
+ $updata['invcode'] = $invcode;
+ $updata['invfile'] = $invfile;
+ } else {
+ //归还金额
+ $updata2 = array();
+ $updata2['myinvmoney'] = array('myinvmoney+' . $mrow['invoicemoney']);
+ $csql = new \ciy\sql('ap_user');
+ $csql->where('id', $mrow['vuser']);
+ if ($db->update($csql, $updata2) === false)
+ throw new \Exception('更新账户失败:' . $db->error);
+ }
+ $updata['auditstatus'] = $auditstatus;
+ $updata['audittimes'] = tostamp();
+ $updata['audituser'] = $rsuser['id'];
+ $updata['auditmsg'] = $auditmsg;
+ $csql = new \ciy\sql('ap_invoicing');
+ $csql->where('id', $mrow['id']);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('审核失败:' . $db->error);
+ $updata['id'] = $mrow['id'];
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+
+ public static function json_reback() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p a'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $csql = new \ciy\sql('ap_invoicing');
+ $csql->where('id', $id);
+ $mrow = $db->getone($csql);
+ if (!is_array($mrow))
+ return errjson('数据不存在');
+ if ($mrow['auditstatus'] != 100)
+ return errjson('该发票未开票,无法退回');
+ $ids = array();
+ try {
+ $db->begin();
+ $updata2 = array();
+ $updata2['myinvmoney'] = array('myinvmoney+' . $mrow['invoicemoney']);
+ $csql = new \ciy\sql('ap_user');
+ $csql->where('id', $mrow['vuser']);
+ if ($db->update($csql, $updata2) === false)
+ throw new \Exception('更新账户失败:' . $db->error);
+ $updata = array();
+ $updata['auditstatus'] = 95;
+ $updata['audittimes'] = tostamp();
+ $updata['audituser'] = $rsuser['id'];
+ $csql = new \ciy\sql('ap_invoicing');
+ $csql->where('id', $mrow['id']);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('审核失败:' . $db->error);
+ $updata['id'] = $mrow['id'];
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post, $rsuser);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'auditstatus', 'name' => '审核状态');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'invoicetitleid', 'name' => '所属抬头');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'invoicedetailid', 'name' => '所属明细');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'invoicemoney', 'name' => '开票金额');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'invfile', 'name' => '发票');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'invcode', 'name' => '发票号码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '申请时间');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '名称');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'taxnumber', 'name' => '税号');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'addr', 'name' => '单位地址');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'phone', 'name' => '电话号码');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'bankname', 'name' => '银行名称');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'bankaccount', 'name' => '银行账号');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'audittimes', 'name' => '操作时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'audituser', 'name' => '操作人');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'auditmsg', 'name' => '拒开原因');
+ $code_auditstatus = getcatas($db, 'auditstatus');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $code_invoicetitleid = getrelation($db, $rows, 'ap_invoicetitle', 'invoicetitleid', 'id,name');
+ $code_invoicedetailid = getrelation($db, $rows, 'ap_invoicedetail', 'invoicedetailid', 'id,name');
+ $code_audituser = getcatas($db, 'adminuser');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'auditstatus')
+ $val = ccode($code_auditstatus, $val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'invoicetitleid')
+ $val = ccode($code_invoicetitleid, $val);
+ if ($field == 'invoicedetailid')
+ $val = ccode($code_invoicedetailid, $val);
+ if ($field == 'invoicemoney')
+ $val = number_format($val / 100, 2);
+ if ($field == 'addtimes')
+ $val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'audittimes')
+ $val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'audituser')
+ $val = ccode($code_audituser, $val);
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = '发票开票数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/logdb.html b/web/admin/ap/logdb.html
new file mode 100644
index 0000000..6a061df
--- /dev/null
+++ b/web/admin/ap/logdb.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/logdb.php b/web/admin/ap/logdb.php
new file mode 100644
index 0000000..bba3706
--- /dev/null
+++ b/web/admin/ap/logdb.php
@@ -0,0 +1,163 @@
+get('query');
+ $csql = new \ciy\sql('ap_log');
+ $liid = objint($query, 'liid');
+ if ($liid == 1)
+ $csql->where('readuser=0');
+ if ($liid == 2)
+ $csql->where('readuser>0');
+ $val = objstr($query, 'loguser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('loguser', $trow['id']);
+ $query['loguser'] = $trow['name'];
+ } else {
+ $csql->where('loguser=0');
+ }
+ }
+ $csql->where('readuser', objstr($query, 'readuser'));
+ $csql->where('types', objstr($query, 'types'));
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->where('logs like', objstr($query, 'logs'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+ public static function json_init() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_log');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array(
+ 'type' => 'input',
+ 'form' => 'loguser',
+ 'name' => '操作人',
+ 'prop' => ' style="width:6em;"',
+ );
+ $input[] = array(
+ 'type' => 'select',
+ 'form' => 'readuser',
+ 'name' => '审阅人',
+ 'prop' => ' style="min-width:6em;"',
+ 'select' => 'adminuser',
+ 'all' => '全部'
+ );
+ $input[] = array(
+ 'type' => 'input',
+ 'form' => 'types',
+ 'name' => 'LOG分类',
+ 'prop' => ' style="width:8em;"'
+ );
+ $input[] = array(
+ 'type' => 'daterange',
+ 'form' => 'addtimes',
+ 'name' => '发生日期'
+ );
+ $input[] = array(
+ 'type' => 'input',
+ 'form' => 'logs',
+ 'name' => '详情',
+ 'prop' => ' style="width:8em;"'
+ );
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'loguser');
+ return succjson($ret);
+ }
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+
+ if (nopower($db, $rsuser['id'], 'p10260d'))
+ return errjson('您未被授权操作');
+
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_log');
+
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ delme($db, $delid, 'ap_log');
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_multiread() {
+ global $db;
+ $rsuser = verifyfast();
+
+ if (nopower($db, $rsuser['id'], 'p10260s'))
+ return errjson('您未被授权操作');
+
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_log');
+
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $rowid = $row['id'];
+ $updata = array();
+ $updata['readuser'] = $rsuser['id'];
+ $csql = new \ciy\sql('ap_log');
+ $csql->where('id', $rowid);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ $vids[] = $rowid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+}
diff --git a/web/admin/ap/luser.html b/web/admin/ap/luser.html
new file mode 100644
index 0000000..a12ae28
--- /dev/null
+++ b/web/admin/ap/luser.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/luser.php b/web/admin/ap/luser.php
new file mode 100644
index 0000000..bd8096a
--- /dev/null
+++ b/web/admin/ap/luser.php
@@ -0,0 +1,105 @@
+get('query');
+ $csql = new \ciy\sql('ap_lug');
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('isinout', $liid);
+ $val = objstr($query, 'loguser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('loguser', $trow['id']);
+ $query['loguser'] = $trow['name'];
+ } else {
+ $csql->where('loguser=0');
+ }
+ }
+ $csql->where('model like', objstr($query, 'model'));
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+ public static function json_init() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_lug');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array(
+ 'type' => 'input',
+ 'form' => 'loguser',
+ 'name' => '操作人',
+ 'prop' => ' style="width:6em;"',
+ );
+ $input[] = array(
+ 'type' => 'daterange',
+ 'form' => 'addtimes',
+ 'name' => '发生日期'
+ );
+ $input[] = array(
+ 'type' => 'input',
+ 'form' => 'model',
+ 'name' => '设备指纹',
+ );
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'loguser');
+ return succjson($ret);
+ }
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+
+ if (nopower($db, $rsuser['id'], 'p10261d'))
+ return errjson('您未被授权操作');
+
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_lug');
+
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ delme($db, $delid, 'ap_lug');
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+}
diff --git a/web/admin/ap/paper.go b/web/admin/ap/paper.go
new file mode 100644
index 0000000..04db44f
--- /dev/null
+++ b/web/admin/ap/paper.go
@@ -0,0 +1,198 @@
+package ap
+
+import (
+ "fmt"
+ "net/http"
+
+ "ciyon/web/admin"
+ c "ciyon/zciyon"
+)
+
+func paper_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
+ query := post.Getobj("query")
+ csql := c.NewCiySQL("ap_paper")
+ csql.Where("name like", c.Getstr(query, "name"))
+ csql.Where_numrange("readcnt", c.Getstr(query, "readcnt_1"), c.Getstr(query, "readcnt_2"), 1)
+ csql.Where("inputuser", c.Getstr(query, "inputuser"))
+ csql.Where_daterange("uptimes", c.Getstr(query, "uptimes"))
+ order := c.Getstr(query, "order", "id desc")
+ csql.Order(order)
+ query["order"] = order
+ return query, csql
+}
+func Paper_init(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ where, csql := paper_setwhere(post)
+ pageno := post.Getint("pageno", 1)
+ pagecount := post.Getint("pagecount", 10)
+ csql.Limit(pageno, pagecount)
+ csql.Column("!content")
+ rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
+ if err != nil {
+ return c.ErrJSON(w, "读取错误", err)
+ }
+ ret := map[string]any{}
+ ret["where"] = where
+ ret["pageno"] = pageno
+ ret["pagecount"] = pagecount
+ ret["count"] = mainrowcount
+ ret["list"] = rows
+ if post.Getbool("field") {
+ field, fshow := c.CiyDB.GetField(csql)
+ c.FieldAdd(&field, &fshow, 0, "_btn", "操作")
+ field["name"]["thwidth"] = "30em"
+ field["readcnt"]["order"] = "r"
+ ret["fshow"] = fshow
+ ret["field"] = field
+ }
+ if post.Getbool("once") {
+ once := map[string]any{}
+ input := make([]map[string]any, 0)
+ input = append(input, map[string]any{
+ "form": "name",
+ "type": "input",
+ "name": "名称",
+ "prop": ` style="width:8em;"`,
+ })
+ input = append(input, map[string]any{
+ "form": "readcnt",
+ "type": "num",
+ "name": "阅读数",
+ "prop": ` style="width:4em;"`,
+ })
+ input = append(input, map[string]any{
+ "form": "inputuser",
+ "type": "select",
+ "name": "撰写人",
+ "select": "adminuser",
+ "all": "全部",
+ })
+ input = append(input, map[string]any{
+ "form": "uptimes",
+ "type": "daterange",
+ "name": "更新时间",
+ })
+ once["input"] = input
+ ret["once"] = once
+ }
+ return c.SuccJSON(w, r, ret)
+}
+func Paper_update(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ if admin.Nopower(c.CiyDB, userid, "p10201u") {
+ return c.ErrJSON(w, "您未被授权操作")
+ }
+ id := post.Getint("id")
+ name := post.Get("name")
+ title := post.Get("title")
+ if name == "" {
+ return c.ErrJSON(w, "请填写文档标题")
+ }
+ content := post.Get("content")
+ if content == "[MD]" {
+ return c.ErrJSON(w, "请填写内容")
+ }
+ var err error
+ var datarow map[string]any
+ if id > 0 {
+ csql := c.NewCiySQL("ap_paper")
+ csql.Where("id", id)
+ datarow, err = c.CiyDB.Getone(csql)
+ if datarow == nil {
+ return c.ErrJSON(w, "数据不存在", err)
+ }
+ }
+ err = c.CiyDB.Tran(func() error {
+ var csql *c.CiySQL
+ csql = c.NewCiySQL("ap_paper")
+ csql.Where("name", name)
+ csql.Column("id")
+ chkid := c.Toint(c.CiyDB.Get1(csql))
+ if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
+ return fmt.Errorf("数据已存在")
+ }
+ updata := map[string]any{}
+ updata["name"] = name
+ updata["title"] = title
+ updata["inputuser"] = userid
+ updata["uptimes"] = c.Tostamp()
+ updata["content"] = content
+ csql = c.NewCiySQL("ap_paper")
+ if id > 0 {
+ csql.Where("id", id)
+ _, err = c.CiyDB.Update(csql, updata)
+ } else {
+ id, err = c.CiyDB.Insert(csql, updata)
+ updata["newid"] = id
+ }
+ if err != nil {
+ return fmt.Errorf("更新失败:%v", err)
+ }
+ admin.SaveLogDB(c.CiyDB, "ap_paper", datarow, updata)
+ return nil
+ })
+ if err != nil {
+ return c.ErrJSON(w, "事务"+err.Error())
+ }
+ return c.SuccJSON(w, r)
+}
+func Paper_getdata(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ id := post.Getint("id")
+ data := post.Getbool("data")
+ ret := map[string]any{}
+ if data {
+ csql := c.NewCiySQL("ap_paper")
+ csql.Where("id", id)
+ var err error
+ ret["data"], err = c.CiyDB.Getone(csql)
+ if err != nil {
+ return c.ErrJSON(w, "读取失败:"+err.Error())
+ }
+ }
+ return c.SuccJSON(w, r, ret)
+}
+func Paper_del(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ if admin.Nopower(c.CiyDB, userid, "p10201d") {
+ return c.ErrJSON(w, "您未被授权操作")
+ }
+ ids := post.Get("ids")
+ if ids == "" {
+ return c.ErrJSON(w, "请选择至少一条")
+ }
+ csql := c.NewCiySQL("ap_paper")
+ csql.Where("id in", ids)
+ rows, _, err := c.CiyDB.Get(csql)
+ if err != nil {
+ return c.ErrJSON(w, "读取数据错误", err)
+ }
+ err = c.CiyDB.Tran(func() error {
+ for _, row := range rows {
+ rowid := c.Toint(row["id"])
+ c.Delme(c.CiyDB, rowid, "ap_paper")
+ admin.SaveLogDB(c.CiyDB, "ap_paper", row, nil)
+ }
+ return nil
+ })
+ if err != nil {
+ return c.ErrJSON(w, "事务"+err.Error())
+ }
+ return c.SuccJSON(w, r)
+}
diff --git a/web/admin/ap/paper.html b/web/admin/ap/paper.html
new file mode 100644
index 0000000..3b8ddb7
--- /dev/null
+++ b/web/admin/ap/paper.html
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/paper.php b/web/admin/ap/paper.php
new file mode 100644
index 0000000..57a9e41
--- /dev/null
+++ b/web/admin/ap/paper.php
@@ -0,0 +1,184 @@
+get('query');
+ $csql = new \ciy\sql('ap_paper');
+ $csql->where('name like', objstr($query, 'name'));
+ $csql->wherenumrange('readcnt', objstr($query, 'readcnt_1'), objstr($query, 'readcnt_2'), 1);
+ $csql->where('inputuser', objstr($query, 'inputuser'));
+ $csql->wheredaterange('uptimes', objstr($query, 'uptimes'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+ public static function json_init() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $csql->column('!content', $db->getraw('show full fields from ap_paper'));
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_paper');
+ foreach ($field as $fr => $v) {
+ if ($post->is('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $field['name']['thwidth'] = '15em';
+ $field['title']['thwidth'] = '15em';
+ $field['readcnt']['order'] = 'r';
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array(
+ 'type' => 'input',
+ 'form' => 'name',
+ 'name' => '名称',
+ 'prop' => ' style="width:8em;"'
+ );
+ $input[] = array(
+ 'type' => 'num',
+ 'form' => 'readcnt',
+ 'name' => '阅读数',
+ 'prop' => ' style="width:4em;"'
+ );
+ $input[] = array(
+ 'type' => 'select',
+ 'form' => 'inputuser',
+ 'name' => '撰写人',
+ 'select' => 'adminuser',
+ 'all' => '全部'
+ );
+ $input[] = array(
+ 'type' => 'daterange',
+ 'form' => 'uptimes',
+ 'name' => '更新时间'
+ );
+ $ret['searchinput'] = $input;
+ }
+ return succjson($ret);
+ }
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+
+ if (nopower($db, $rsuser['id'], 'p10201u'))
+ return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $name = $post->get('name');
+ $title = $post->get('title');
+ if (empty($name))
+ return errjson('请填写文档标题');
+ $content = $post->get('content');
+ if ($content == '[MD]')
+ return errjson('请填写内容');
+ $datarow = null;
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_paper');
+
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ }
+ try {
+ $db->begin();
+ $csql = new \ciy\sql('ap_paper');
+ $csql->where('name', $name);
+ $csql->column('id');
+ $chkid = toint($db->get1($csql));
+ if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
+ throw new \Exception('CIYIGN数据已存在');
+
+ $updata = array();
+ $updata['name'] = $name;
+ $updata['title'] = $title;
+ $updata['inputuser'] = $rsuser['id'];
+ $updata['uptimes'] = tostamp();
+ $updata['content'] = $content;
+ $csql = new \ciy\sql('ap_paper');
+ if ($id > 0) {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ } else {
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增失败:' . $db->error);
+ $id = $db->insert_id();
+ }
+ $updata['id'] = $id;
+ savelogdb($db, $rsuser['id'], 'ap_paper', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+ public static function json_getdata() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $data = $post->getbool('data');
+ if ($data) {
+ $csql = new \ciy\sql('ap_paper');
+ $csql->where('id', $id);
+ $ret['data'] = $db->getone($csql);
+ }
+ return succjson($ret);
+ }
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+
+ if (nopower($db, $rsuser['id'], 'p10201d'))
+ return errjson('您未被授权操作');
+
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_paper');
+
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //tran_delcheck($db, $delid, $row['name'], 'xxid', 'tablexx', '存在xxx,不能删除');
+ //delall($db, $delid, 'tablexx', 'xxid', 'xxx删除失败');
+ delme($db, $delid, 'ap_paper');
+ savelogdb($db, $rsuser['id'], 'ap_paper', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+}
diff --git a/web/admin/ap/pnt_bundle.html b/web/admin/ap/pnt_bundle.html
new file mode 100644
index 0000000..9a5fd91
--- /dev/null
+++ b/web/admin/ap/pnt_bundle.html
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/pnt_bundle.php b/web/admin/ap/pnt_bundle.php
new file mode 100644
index 0000000..0095c78
--- /dev/null
+++ b/web/admin/ap/pnt_bundle.php
@@ -0,0 +1,336 @@
+get('query');
+ $csql = new \ciy\sql('ap_pnt_bundle');
+ $csql->wherenumrange('buypnt', objstr($query, 'buypnt_1'), objstr($query, 'buypnt_2'), 1);
+ $csql->wherenumrange('buymoney', objstr($query, 'buymoney_1'), objstr($query, 'buymoney_2'), 100);
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_pnt_bundle');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'num', 'form' => 'buypnt', 'name' => '金币', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'num', 'form' => 'buymoney', 'name' => '金额', 'prop' => ' style="width:4em;"');
+ $ret['searchinput'] = $input;
+ }
+ return succjson($ret);
+ }
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $buypnt = $post->getint('buypnt');
+ $buymoney = $post->getint('buymoney');
+ if ($buypnt == 0)
+ return errjson('请填写金币');
+ if ($buymoney == 0)
+ return errjson('请填写金额');
+ $datarow = null;
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_pnt_bundle');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ }
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['buypnt'] = $buypnt;
+ $updata['buymoney'] = $buymoney;
+ $csql = new \ciy\sql('ap_pnt_bundle');
+ if ($id > 0) {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ } else {
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增失败:' . $db->error);
+ $id = $db->insert_id();
+ }
+ $updata['id'] = $id;
+ savelogdb($db, $rsuser['id'], 'ap_pnt_bundle', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_pnt_bundle');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_pnt_bundle');
+ savelogdb($db, $rsuser['id'], 'ap_pnt_bundle', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'buypnt', 'name' => '金币');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'buymoney', 'name' => '金额');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'buymoney')
+ $val = number_format($val / 100, 2);
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+
+ public static function json_importxls_in() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p i'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $file = PATH_WEB . '/ud' . $post->get('file');
+ if (!file_exists($file))
+ return errjson('文件不存在');
+ require_once PATH_ROOT . '../libs/phpoffice/autoload.php';
+ $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file);
+ $sheet = $spreadsheet->getActiveSheet();
+ $datas = $sheet->toArray('', true, true, false);
+ $datacnt = count($datas);
+ if ($datacnt < 2)
+ return errjson('数据为空');
+ $html = '';
+ $headsn = array();
+ $headsn[] = '行码.id';
+ $headsn[] = '金币.buypnt';
+ $headsn[] = '金额.buymoney';
+ $xlsidx = 1;
+ if (empty($datas[0][count($headsn) - 1]))
+ $xlsidx = 2;
+ $heads = array();
+ foreach ($headsn as $_head) {
+ $hd = explode('.', $_head);
+ if (count($hd) < 2)
+ continue;
+ $heads[] = array(
+ 'idx' => array_search($hd[0], $datas[$xlsidx - 1]), 'fld' => $hd[1], 'name' => $hd[0]
+ );
+ }
+ $html .= '| # | '; + foreach ($heads as $arr) { + $html .= '' . $arr['name'] . ' | '; + } + $html .= '' . $lineidx . ' | ';
+ $bempty = true;
+ $unqs = array();
+ $csql = new \ciy\sql('ap_pnt_bundle');
+ foreach ($heads as $arr) {
+ $name = $arr['name'];
+ $errmsg = ''; //数据有误,显示红色说明
+ $showdat = ''; //显示在表格中的数据
+ if ($arr['idx'] > -1)
+ $showdat = trim($datas[$rowidx][$arr['idx']]);
+ if ($showdat == '--')
+ $showdat = '';
+ $value = $showdat; //在表单中的数据(转换后)
+ $ext = ''; //扩展表单
+ if ($name == '行码') {
+ if (empty($showdat)) {
+ $value = 0;
+ $showdat = '新增';
+ } else {
+ $id = deid($showdat);
+ if ($id == 0)
+ $errmsg = $name . '解析错误';
+ else {
+ $csqlchk = new \ciy\sql('ap_pnt_bundle');
+ $csqlchk->where('id', $id)->column('id');
+ $chkid = toint($db->get1($csqlchk));
+ if ($chkid != $id)
+ $errmsg = $name . '在数据库中不存在';
+ $value = $id;
+ }
+ }
+ } else if ($name == '金币') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ $showdat = str_replace(',', '', $showdat);
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint($showdat);
+ }
+ } else if ($name == '金额') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ $showdat = str_replace(',', '', $showdat);
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 100);
+ }
+ }
+ if (!empty($showdat))
+ $bempty = false;
+ if (empty($errmsg))
+ $hrhtml .= '' . $showdat . '' . $ext . ' | ';
+ else
+ $hrhtml .= '' . $showdat . ' | ';
+ }
+ if ($bempty)
+ continue;
+ if (count($unqs) > 0) {
+ $unq = implode('|', $unqs);
+ if (in_array($unq, $uniques))
+ $firsthtml = '重复 | ';
+ else {
+ $uniques[] = $unq;
+ $csql->column('id');
+ $chkid = toint($db->get1($csql));
+ if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
+ $firsthtml = '重复 | ';
+ }
+ }
+ $html .= '
|---|---|
共' . $cnt . '条数据';
+ return succjson(array('html' => $html, 'count' => $cnt));
+ }
+
+ public static function json_importxls_data() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p i'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $total = $post->getint('total');
+ try {
+ $db->begin();
+ for ($i = 1; $i <= $total; $i++) {
+ $id = $post->getint('id_' . $i);
+ $updata = array();
+ $updata['buypnt'] = $post->get('buypnt_' . $i);
+ $updata['buymoney'] = $post->get('buymoney_' . $i);
+ $csql = new \ciy\sql('ap_pnt_bundle');
+ if ($id == 0) {
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增导入失败:' . $db->error);
+ } else {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新导入失败:' . $db->error);
+ }
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ return succjson();
+ }
+}
diff --git a/web/admin/ap/pnt_buy.html b/web/admin/ap/pnt_buy.html
new file mode 100644
index 0000000..aa76a5c
--- /dev/null
+++ b/web/admin/ap/pnt_buy.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/pnt_buy.php b/web/admin/ap/pnt_buy.php
new file mode 100644
index 0000000..f08396e
--- /dev/null
+++ b/web/admin/ap/pnt_buy.php
@@ -0,0 +1,187 @@
+get('query');
+ $csql = new \ciy\sql('ap_pnt_buy');
+ $liid = objint($query, 'liid');
+ if ($liid == 1)
+ $csql->where('paytimes=0');
+ if ($liid == 2)
+ $csql->where('paytimes>0');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->wherenumrange('pnt', objstr($query, 'pnt_1'), objstr($query, 'pnt_2'), 1);
+ $csql->wherenumrange('buypntmoney', objstr($query, 'buypntmoney_1'), objstr($query, 'buypntmoney_2'), 100);
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_pnt_buy');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'num', 'form' => 'pnt', 'name' => '金币', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'num', 'form' => 'buypntmoney', 'name' => '金额', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '提交时间');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_getdata() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $act = $post->get('act');
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_pnt_buy');
+ $csql->where('id', $id);
+ $row = $db->getone($csql);
+ if (!is_array($row))
+ return errjson('数据不存在');
+ if ($act == 'view' || $act == 'review') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $csql->where('id', $row['vuser']);
+ $ret['ap_user'] = $db->get($csql);
+ }
+ } else {
+ $row = array();
+ }
+ $ret['data'] = $row;
+ if ($act == 'edit') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $ret['ap_user'] = $db->get($csql);
+ }
+ return succjson($ret);
+ }
+
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_pnt_buy');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_pnt_buy');
+ savelogdb($db, $rsuser['id'], 'ap_pnt_buy', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'pnt', 'name' => '金币');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'buypntmoney', 'name' => '金额');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '提交时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'paytimes', 'name' => '支付时间');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'buypntmoney')
+ $val = number_format($val / 100, 2);
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'paytimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/pnt_record.html b/web/admin/ap/pnt_record.html
new file mode 100644
index 0000000..3870be1
--- /dev/null
+++ b/web/admin/ap/pnt_record.html
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/pnt_record.php b/web/admin/ap/pnt_record.php
new file mode 100644
index 0000000..ce4a426
--- /dev/null
+++ b/web/admin/ap/pnt_record.php
@@ -0,0 +1,154 @@
+get('query');
+ $csql = new \ciy\sql('ap_pnt_record');
+ $liid = objint($query, 'liid');
+ if ($liid == 1)
+ $csql->where('pnt>0');
+ if ($liid == 2)
+ $csql->where('pnt<0');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->wherenumrange('pnt', objstr($query, 'pnt_1'), objstr($query, 'pnt_2'), 1);
+ $csql->where('name like', objstr($query, 'name'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_pnt_record');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '发生时间');
+ $input[] = array('type' => 'num', 'form' => 'pnt', 'name' => '积分', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '摘要', 'prop' => ' style="width:8em;"');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_pnt_record');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_pnt_record');
+ savelogdb($db, $rsuser['id'], 'ap_pnt_record', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '发生时间');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'pnt', 'name' => '积分');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'fromid', 'name' => 'fromid');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '摘要');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/pnt_track.html b/web/admin/ap/pnt_track.html
new file mode 100644
index 0000000..7757723
--- /dev/null
+++ b/web/admin/ap/pnt_track.html
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/pnt_track.php b/web/admin/ap/pnt_track.php
new file mode 100644
index 0000000..a985036
--- /dev/null
+++ b/web/admin/ap/pnt_track.php
@@ -0,0 +1,183 @@
+get('query');
+ $csql = new \ciy\sql('ap_pnt_track');
+ $csql->where('name like', objstr($query, 'name'));
+ $csql->wherenumrange('point', objstr($query, 'point_1'), objstr($query, 'point_2'), 1000);
+ $csql->wherenumrange('limh24', objstr($query, 'limh24_1'), objstr($query, 'limh24_2'), 1000);
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_pnt_track');
+ foreach ($field as $fr => $v) {
+ if ($post->is('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '埋点名称', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'num', 'form' => 'point', 'name' => '可获金币', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'num', 'form' => 'limh24', 'name' => '24小时上限', 'prop' => ' style="width:4em;"');
+ $ret['searchinput'] = $input;
+ }
+ return succjson($ret);
+ }
+
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $name = $post->get('name');
+ $point = $post->getint('point');
+ $limh24 = $post->getint('limh24');
+ if (empty($name))
+ return errjson('请填写埋点名称');
+ $datarow = null;
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_pnt_track');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ }
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['name'] = $name;
+ $updata['point'] = $point;
+ $updata['limh24'] = $limh24;
+ $updata['adminuser'] = $rsuser['id'];
+ $updata['uptimes'] = tostamp();
+ $csql = new \ciy\sql('ap_pnt_track');
+ if ($id > 0) {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ } else {
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增失败:' . $db->error);
+ $id = $db->insert_id();
+ }
+ $updata['id'] = $id;
+ savelogdb($db, $rsuser['id'], 'ap_pnt_track', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_pnt_track');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_pnt_track');
+ savelogdb($db, $rsuser['id'], 'ap_pnt_track', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '埋点名称');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'point', 'name' => '可获金币');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'limh24', 'name' => '24小时上限');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'adminuser', 'name' => '操作人');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'uptimes', 'name' => '更新时间');
+ $code_adminuser = getcatas($db, 'adminuser');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'adminuser')
+ $val = ccode($code_adminuser, $val);
+ if ($field == 'uptimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/transfer.html b/web/admin/ap/transfer.html
new file mode 100644
index 0000000..ab2b939
--- /dev/null
+++ b/web/admin/ap/transfer.html
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/transfer.php b/web/admin/ap/transfer.php
new file mode 100644
index 0000000..d7e9eaf
--- /dev/null
+++ b/web/admin/ap/transfer.php
@@ -0,0 +1,155 @@
+get('query');
+ $csql = new \ciy\sql('ap_transfer');
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('orderstatus', $liid);
+ $val = objstr($query, 'id');
+ if (!empty($val) && $val[0] == 'P')
+ $csql->where('id', substr($val, 1));
+ $csql->wherenumrange('amount', objstr($query, 'amount_1'), objstr($query, 'amount_2'), 100);
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->where('thirdno like', objstr($query, 'thirdno'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if ($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_transfer');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'id', 'name' => '流水号', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'num', 'form' => 'amount', 'name' => '金额', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '创建时间');
+ $input[] = array('type' => 'input', 'form' => 'thirdno', 'name' => '三方单号', 'prop' => ' style="width:8em;"');
+ $ret['searchinput'] = $input;
+ }
+ return succjson($ret);
+ }
+
+ public static function json_checksign() {
+ global $db;
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $csql = new \ciy\sql('ap_transfer');
+ $csql->where('id', $id);
+ $orderrow = $db->getone($csql);
+ if (!is_array($orderrow))
+ return errjson('数据不存在');
+ $csql = new \ciy\sql('ap_api');
+ $csql->where('id', $orderrow['apiid']);
+ $apirow = $db->getone($csql);
+ if (!is_array($apirow))
+ return errjson('API不存在');
+ $signs = array();
+ $waitsignstr = 'amount=' . $orderrow['amount'] . ',addtimes=' . $orderrow['addtimes'];
+ $signs[] = array('hash' => hash('sha256', $waitsignstr), 'sign' => $orderrow['signature']);
+ $retsign = self::verifysign_api($apirow['pubkey'], $signs);
+ if (is_string($retsign))
+ return errjson($retsign);
+ return succjson();
+ }
+ static function verifysign_api($signKey, $signs) {
+ if (strpos($signKey, '-----BEGIN RSA PUBLIC KEY-----') === false && strpos($signKey, '-----BEGIN PUBLIC KEY-----') === false)
+ $signKey = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($signKey, 64, "\n") . "\n-----END PUBLIC KEY-----";
+
+ foreach ($signs as $sign) {
+ $signbin = hex2bin($sign['sign']);
+ if ($signbin === false)
+ return errjson('签名格式错误');
+ $hashbin = hex2bin($sign['hash']);
+ $result = openssl_verify($hashbin, $signbin, $signKey, OPENSSL_ALGO_SHA256);
+ if ($result === 0)
+ return '数字证书验签失败';
+ else if ($result !== 1)
+ return '数字证书验签错误:' . openssl_error_string();
+ return true;
+ }
+ }
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'orderstatus', 'name' => '状态');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'amount', 'name' => '金额');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '创建时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'uptimes', 'name' => '完成时间');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'thirdno', 'name' => '订单号');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'apiuser', 'name' => 'APIID');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'signature', 'name' => '签名');
+ $code_orderstatus = getcatas($db, 'orderstatus');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'orderstatus')
+ $val = ccode($code_orderstatus, $val);
+ if ($field == 'amount')
+ $val = number_format($val / 100, 2);
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'uptimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = '转账单数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/user.html b/web/admin/ap/user.html
new file mode 100644
index 0000000..6d6ca17
--- /dev/null
+++ b/web/admin/ap/user.html
@@ -0,0 +1,270 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/user.php b/web/admin/ap/user.php
new file mode 100644
index 0000000..6451f64
--- /dev/null
+++ b/web/admin/ap/user.php
@@ -0,0 +1,237 @@
+get('query');
+ $csql = new \ciy\sql('ap_user');
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('stpstatus', $liid);
+ $val = objstr($query, 'id');
+ if (!empty($val)) {
+ $id = deid($val);
+ if ($id > 0)
+ $csql->where('id', $id);
+ }
+ $val = objstr($query, 'certs');
+ if (!empty($val))
+ $csql->where('certs like', ',' . $val . ',');
+ $csql->where('name like', objstr($query, 'name'));
+ $csql->where('mobile like', objstr($query, 'mobile'));
+ $csql->wherenumrange('mycashmoney', objstr($query, 'mycashmoney_1'), objstr($query, 'mycashmoney_2'), 10000);
+ $csql->wherenumrange('mypnt', objstr($query, 'mypnt_1'), objstr($query, 'mypnt_2'), 1000);
+ $csql->wheredaterange('logintimes', objstr($query, 'logintimes'));
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->where('memo like', objstr($query, 'memo'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_user');
+ foreach ($field as $fr => $v) {
+ if ($post->is('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'id', 'name' => '会员编号', 'prop' => ' style="width:6em;"');
+ $input[] = array('type' => 'select', 'form' => 'certs', 'name' => '认证', 'select' => 'certs', 'all' => '全部');
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '用户昵称', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'mobile', 'name' => '手机号', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'num', 'form' => 'mycashmoney', 'name' => '提现余额', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'num', 'form' => 'mypnt', 'name' => '金币', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'logintimes', 'name' => '登录时间');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '注册日期');
+ $input[] = array('type' => 'input', 'form' => 'memo', 'name' => '备注', 'prop' => ' style="width:8em;"');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'upid');
+ return succjson($ret);
+ }
+
+ public static function json_getdata() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $act = $post->get('act');
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_user');
+ $csql->where('id', $id);
+ $row = $db->getone($csql);
+ if (!is_array($row))
+ return errjson('数据不存在');
+ if ($act == 'view' || $act == 'review') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $csql->where('id', $row['upid']);
+ $ret['ap_user'] = $db->get($csql);
+ }
+ } else {
+ $row = array();
+ }
+ $ret['data'] = $row;
+ if ($act == 'edit') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $ret['ap_user'] = $db->get($csql);
+ }
+ return succjson($ret);
+ }
+
+ public static function json_update() {
+ global $db;
+ global $_token;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $icon = $post->get('icon');
+ $name = $post->get('name');
+ $mobile = $post->get('mobile');
+ $stpstatus = $post->getint('stpstatus');
+ $repass = $post->get('repass');
+ $memo = $post->get('memo');
+ if (empty($name))
+ return errjson('请填写用户昵称');
+ $csql = new \ciy\sql('ap_user');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['icon'] = $icon;
+ $updata['name'] = $name;
+ $updata['mobile'] = $mobile;
+ $updata['stpstatus'] = $stpstatus;
+ if(!empty($repass))
+ $updata['password'] = md5($repass . $_token['salt']);
+ $updata['addtimes'] = tostamp();
+ $updata['memo'] = $memo;
+ $csql = new \ciy\sql('ap_user');
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ $updata['id'] = $id;
+ savelogdb($db, $rsuser['id'], 'ap_user', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ if ($post->get('_pf') == 'PC')
+ return succjson();
+ $csql = new \ciy\sql('ap_user');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ $ret['data'] = $datarow;
+ return succjson($ret);
+ }
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'icon', 'name' => '头像');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '用户昵称');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'mobile', 'name' => '手机号');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'stpstatus', 'name' => '账号状态');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'myinvmoney', 'name' => '待开票金额');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'mycashmoney', 'name' => '用户余额');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'mybondmoney', 'name' => '保证金');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'mypnt', 'name' => '金币');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'certs', 'name' => '认证范围');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'logintimes', 'name' => '登录时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '注册日期');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'upid', 'name' => '分享人');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'password', 'name' => '密码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'trytime', 'name' => '密码重试次数');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'memo', 'name' => '备注');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'power', 'name' => '权限表');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'wxunionid', 'name' => '微信UnionID');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'wxminaid', 'name' => '小程序OpenID');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'wxminakey', 'name' => '小程序Key');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'sid', 'name' => '授权码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'exptimes', 'name' => '到期时间');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'ip', 'name' => '登录IP');
+ $code_stpstatus = getcatas($db, 'stpstatus');
+ $code_certs = getcatas($db, 'certs');
+ $code_upid = getrelation($db, $rows, 'ap_user', 'upid', 'id,name');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'stpstatus')
+ $val = ccode($code_stpstatus, $val);
+ if ($field == 'myinvmoney')
+ $val = number_format($val / 100, 2);
+ if ($field == 'mycashmoney')
+ $val = number_format($val / 100, 2);
+ if ($field == 'mybondmoney')
+ $val = number_format($val / 100, 2);
+ if ($field == 'certs')
+ $val = implode(',', scode($code_certs, $val));
+ if ($field == 'logintimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d', $val));
+ if ($field == 'upid')
+ $val = ccode($code_upid, $val);
+ if ($field == 'exptimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/user_service.html b/web/admin/ap/user_service.html
new file mode 100644
index 0000000..0a4f7c1
--- /dev/null
+++ b/web/admin/ap/user_service.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ | # | '; + foreach ($heads as $arr) { + $html .= '' . $arr['name'] . ' | '; + } + $html .= '' . $lineidx . ' | ';
+ $bempty = true;
+ $unqs = array();
+ $csql = new \ciy\sql('ap_usr_buy_bundle');
+ foreach ($heads as $arr) {
+ $name = $arr['name'];
+ $errmsg = ''; //数据有误,显示红色说明
+ $showdat = ''; //显示在表格中的数据
+ if ($arr['idx'] > -1)
+ $showdat = trim($datas[$rowidx][$arr['idx']]);
+ if ($showdat == '--')
+ $showdat = '';
+ $value = $showdat; //在表单中的数据(转换后)
+ $ext = ''; //扩展表单
+ if ($name == '行码') {
+ if (empty($showdat)) {
+ $value = 0;
+ $showdat = '新增';
+ } else {
+ $id = deid($showdat);
+ if ($id == 0)
+ $errmsg = $name . '解析错误';
+ else {
+ $csqlchk = new \ciy\sql('ap_usr_buy_bundle');
+ $csqlchk->where('id', $id)->column('id');
+ $chkid = toint($db->get1($csqlchk));
+ if ($chkid != $id)
+ $errmsg = $name . '在数据库中不存在';
+ $value = $id;
+ }
+ }
+ } else if ($name == '套餐说明') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ }
+ } else if ($name == '对应等级') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ $value = dcode($code_userlevel, $showdat);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ } else if ($name == '天数') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ $showdat = str_replace(',', '', $showdat);
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint($showdat);
+ }
+ } else if ($name == '金额') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ $showdat = str_replace(',', '', $showdat);
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 100);
+ }
+ }
+ if (!empty($showdat))
+ $bempty = false;
+ if (empty($errmsg))
+ $hrhtml .= '' . $showdat . '' . $ext . ' | ';
+ else
+ $hrhtml .= '' . $showdat . ' | ';
+ }
+ if ($bempty)
+ continue;
+ if (count($unqs) > 0) {
+ $unq = implode('|', $unqs);
+ if (in_array($unq, $uniques))
+ $firsthtml = '重复 | ';
+ else {
+ $uniques[] = $unq;
+ $csql->column('id');
+ $chkid = toint($db->get1($csql));
+ if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
+ $firsthtml = '重复 | ';
+ }
+ }
+ $html .= '
|---|---|
共' . $cnt . '条数据';
+ return succjson(array('html' => $html, 'count' => $cnt));
+ }
+
+ public static function json_importxls_data() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p i'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $total = $post->getint('total');
+ try {
+ $db->begin();
+ for ($i = 1; $i <= $total; $i++) {
+ $id = $post->getint('id_' . $i);
+ $updata = array();
+ $updata['name'] = $post->get('name_' . $i);
+ $updata['userlevel'] = $post->get('userlevel_' . $i);
+ $updata['days'] = $post->get('days_' . $i);
+ $updata['usermoney'] = $post->get('usermoney_' . $i);
+ $csql = new \ciy\sql('ap_usr_buy_bundle');
+ if ($id == 0) {
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增导入失败:' . $db->error);
+ } else {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新导入失败:' . $db->error);
+ }
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ return succjson();
+ }
+}
diff --git a/web/admin/ap/usr_buy_user.html b/web/admin/ap/usr_buy_user.html
new file mode 100644
index 0000000..08c72bf
--- /dev/null
+++ b/web/admin/ap/usr_buy_user.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/usr_buy_user.php b/web/admin/ap/usr_buy_user.php
new file mode 100644
index 0000000..f854921
--- /dev/null
+++ b/web/admin/ap/usr_buy_user.php
@@ -0,0 +1,216 @@
+get('query');
+ $csql = new \ciy\sql('ap_usr_buy_user');
+ $liid = objint($query, 'liid');
+ if ($liid == 1)
+ $csql->where('paytimes=0');
+ if ($liid == 2)
+ $csql->where('paytimes>0');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $val = objstr($query, 'bundleid');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_usr_buy_bundle');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('bundleid', $trow['id']);
+ $query['bundleid'] = $trow['name'];
+ } else {
+ $csql->where('bundleid=0');
+ }
+ }
+ $csql->where('userlevel', objstr($query, 'userlevel'));
+ $csql->wherenumrange('days', objstr($query, 'days_1'), objstr($query, 'days_2'), 1);
+ $csql->wherenumrange('buydaymoney', objstr($query, 'buydaymoney_1'), objstr($query, 'buydaymoney_2'), 100);
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_usr_buy_user');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'bundleid', 'name' => '所属套餐', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'select', 'form' => 'userlevel', 'name' => '对应等级', 'all' => '全部', 'select' => 'userlevel');
+ $input[] = array('type' => 'num', 'form' => 'days', 'name' => '会员天数', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'num', 'form' => 'buydaymoney', 'name' => '金额', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '提交时间');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ $ret['ap_usr_buy_bundle'] = getrelation($db, $rows, 'ap_usr_buy_bundle', 'bundleid');
+ return succjson($ret);
+ }
+
+ public static function json_getdata() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $act = $post->get('act');
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_usr_buy_user');
+ $csql->where('id', $id);
+ $row = $db->getone($csql);
+ if (!is_array($row))
+ return errjson('数据不存在');
+ if ($act == 'view' || $act == 'review') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $csql->where('id', $row['vuser']);
+ $ret['ap_user'] = $db->get($csql);
+ $csql = (new \ciy\sql('ap_usr_buy_bundle'))->column('id,name');
+ $csql->where('id', $row['bundleid']);
+ $ret['ap_usr_buy_bundle'] = $db->get($csql);
+ }
+ } else {
+ $row = array();
+ }
+ $ret['data'] = $row;
+ if ($act == 'edit') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $ret['ap_user'] = $db->get($csql);
+ $csql = (new \ciy\sql('ap_usr_buy_bundle'))->column('id,name');
+ $ret['ap_usr_buy_bundle'] = $db->get($csql);
+ }
+ return succjson($ret);
+ }
+
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_usr_buy_user');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_usr_buy_user');
+ savelogdb($db, $rsuser['id'], 'ap_usr_buy_user', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'bundleid', 'name' => '所属套餐');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'userlevel', 'name' => '对应等级');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'days', 'name' => '会员天数');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'buydaymoney', 'name' => '金额');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '提交时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'paytimes', 'name' => '支付时间');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $code_bundleid = getrelation($db, $rows, 'ap_usr_buy_bundle', 'bundleid', 'id,name');
+ $code_userlevel = getcatas($db, 'userlevel');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'bundleid')
+ $val = ccode($code_bundleid, $val);
+ if ($field == 'userlevel')
+ $val = ccode($code_userlevel, $val);
+ if ($field == 'buydaymoney')
+ $val = number_format($val / 100, 2);
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'paytimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/usr_capcode.html b/web/admin/ap/usr_capcode.html
new file mode 100644
index 0000000..d89a089
--- /dev/null
+++ b/web/admin/ap/usr_capcode.html
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/usr_capcode.php b/web/admin/ap/usr_capcode.php
new file mode 100644
index 0000000..3161be9
--- /dev/null
+++ b/web/admin/ap/usr_capcode.php
@@ -0,0 +1,125 @@
+get('query');
+ $csql = new \ciy\sql('ap_usr_capcode');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->where('account like', objstr($query, 'account'));
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_usr_capcode');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'account', 'name' => '账号', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '生成时间');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_getdata() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $act = $post->get('act');
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_usr_capcode');
+ $csql->where('id', $id);
+ $row = $db->getone($csql);
+ if (!is_array($row))
+ return errjson('数据不存在');
+ if ($act == 'view' || $act == 'review') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $csql->where('id', $row['vuser']);
+ $ret['ap_user'] = $db->get($csql);
+ }
+ } else {
+ $row = array();
+ }
+ $ret['data'] = $row;
+ if ($act == 'edit') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $ret['ap_user'] = $db->get($csql);
+ }
+ return succjson($ret);
+ }
+
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_usr_capcode');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_usr_capcode');
+ savelogdb($db, $rsuser['id'], 'ap_usr_capcode', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+}
diff --git a/web/admin/ap/usr_problem.html b/web/admin/ap/usr_problem.html
new file mode 100644
index 0000000..90151f1
--- /dev/null
+++ b/web/admin/ap/usr_problem.html
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/usr_problem.php b/web/admin/ap/usr_problem.php
new file mode 100644
index 0000000..a672923
--- /dev/null
+++ b/web/admin/ap/usr_problem.php
@@ -0,0 +1,230 @@
+get('query');
+ $csql = new \ciy\sql('ap_usr_problem');
+ $liid = objint($query, 'liid');
+ if ($liid == 2)
+ $csql->where('closetimes=0')->where('replytimes>0');
+ else if ($liid == 3)
+ $csql->where('closetimes>0');
+ else if ($liid == 1)
+ $csql->where('closetimes=0')->where('replytimes=0');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->where('contract like', objstr($query, 'contract'));
+ $csql->where('content like', objstr($query, 'content'));
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if ($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_usr_problem');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'contract', 'name' => '联系方式', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'content', 'name' => '工单提问', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '提交时间');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_getdata() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $act = $post->get('act');
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_usr_problem');
+ $csql->where('id', $id);
+ $row = $db->getone($csql);
+ if (!is_array($row))
+ return errjson('数据不存在');
+ if ($act == 'view' || $act == 'review') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $csql->where('id', $row['vuser']);
+ $ret['ap_user'] = $db->get($csql);
+ }
+ } else {
+ $row = array();
+ }
+ $ret['data'] = $row;
+ if ($act == 'edit') {
+ $csql = (new \ciy\sql('ap_user'))->column('id,name');
+ $ret['ap_user'] = $db->get($csql);
+ }
+ return succjson($ret);
+ }
+
+ public static function json_getchat() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $csql = new \ciy\sql('ap_usr_problechat');
+ $csql->where('problemid', $id);
+ $csql->order('id');
+ $rows = $db->get($csql);
+ $ret['chats'] = $rows;
+ return succjson($ret);
+ }
+ public static function json_repchat() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $content = trim($post->get('content'));
+ if (empty($content))
+ return errjson('请输入内容');
+ $updata = array();
+ $updata['sendtype'] = 2;
+ $updata['problemid'] = $id;
+ $updata['content'] = $content;
+ $updata['addtimes'] = time();
+ $csql = new \ciy\sql('ap_usr_problechat');
+ if ($db->insert($csql, $updata) === false)
+ return errjson('更新失败:' . $db->error);
+ $updata = array();
+ $updata['replytimes'] = time();
+ $csql = new \ciy\sql('ap_usr_problem');
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ return errjson('更新失败:' . $db->error);
+ $updata['id'] = $id;
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_usr_problem');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ delall($db, $delid, 'ap_usr_problechat', 'problemid', '交流');
+ delme($db, $delid, 'ap_usr_problem');
+ savelogdb($db, $rsuser['id'], 'ap_usr_problem', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'contract', 'name' => '联系方式');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'content', 'name' => '工单提问');
+ $fields[] = array('style' => 'l', 'width' => 300, 'field' => 'imgs', 'name' => '图片');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '提交时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'replytimes', 'name' => '回复时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'closetimes', 'name' => '关闭时间');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'replytimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'closetimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/usr_real_apply.html b/web/admin/ap/usr_real_apply.html
new file mode 100644
index 0000000..8f16ae6
--- /dev/null
+++ b/web/admin/ap/usr_real_apply.html
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/usr_real_apply.php b/web/admin/ap/usr_real_apply.php
new file mode 100644
index 0000000..bdd8356
--- /dev/null
+++ b/web/admin/ap/usr_real_apply.php
@@ -0,0 +1,190 @@
+get('query', array());
+ $csql = new \ciy\sql('ap_usr_real_apply');
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('auditstatus', $liid);
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->where('name like', objstr($query, 'name'));
+ $csql->where('idid like', objstr($query, 'idid'));
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->where('audituser', objstr($query, 'audituser'));
+ $csql->wheredaterange('audittimes', objstr($query, 'audittimes'));
+ $csql->where('auditmsg like', objstr($query, 'auditmsg'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post, $rsuser);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $mrows = $db->get($csql, $mainrowcount);
+ if ($mrows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $mrows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_usr_real_apply');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '真实姓名', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'idid', 'name' => '身份证号', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '申请时间');
+ $input[] = array('type' => 'select', 'form' => 'audituser', 'name' => '审核员', 'all' => '全部', 'select' => 'adminuser');
+ $input[] = array('type' => 'daterange', 'form' => 'audittimes', 'name' => '审核时间');
+ $input[] = array('type' => 'input', 'form' => 'auditmsg', 'name' => '驳回原因', 'prop' => ' style="width:8em;"');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $mrows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_audit() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p a'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $auditstatus = $post->getint('auditstatus');
+ $auditmsg = $post->get('auditmsg');
+ if ($auditstatus == 90 && empty($auditmsg))
+ return errjson('请填写驳回原因');
+ $csql = new \ciy\sql('ap_usr_real_apply');
+ $csql->where('id in', $ids);
+ $mrows = $db->get($csql);
+ $ids = array();
+ try {
+ $db->begin();
+ foreach ($mrows as $mrow) {
+ if ($auditstatus == 100) {
+ $updata = array();
+ $updata['truename'] = $mrow['name'];
+ $updata['idid'] = $mrow['idid'];
+ $csql = new \ciy\sql('ap_usr_ext');
+ $csql->where('id', $mrow['vuser']);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('用户更新失败:' . $db->error);
+ }
+ $updata = array();
+ $updata['auditstatus'] = $auditstatus;
+ $updata['audituser'] = $rsuser['id'];
+ $updata['audittimes'] = tostamp();
+ $updata['auditmsg'] = $auditmsg;
+ $csql = new \ciy\sql('ap_usr_real_apply');
+ $csql->where('id', $mrow['id']);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('审核失败:' . $db->error);
+ $ids[] = $mrow['id'];
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ $ret['ids'] = $ids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post, $rsuser);
+ $mrows = $db->get($csql);
+ if (count($mrows) > 10000)
+ return errjson('将导出' . count($mrows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'auditstatus', 'name' => '审核状态');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '真实姓名');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'idid', 'name' => '身份证号');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'idcard1', 'name' => '身份证人像面');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'idcard2', 'name' => '身份证国徽面');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '申请时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'audituser', 'name' => '审核员');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'audittimes', 'name' => '审核时间');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'auditmsg', 'name' => '驳回原因');
+ $code_auditstatus = getcatas($db, 'auditstatus');
+ $code_vuser = getrelation($db, $mrows, 'ap_user', 'vuser', 'id,name');
+ $code_audituser = getcatas($db, 'adminuser');
+ $datas = array();
+ foreach ($mrows as $mrow) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($mrow[$field]) ? $mrow[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'auditstatus')
+ $val = ccode($code_auditstatus, $val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'addtimes')
+ $val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'audituser')
+ $val = ccode($code_audituser, $val);
+ if ($field == 'audittimes')
+ $val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = '实名认证申请数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/usr_sendmail.html b/web/admin/ap/usr_sendmail.html
new file mode 100644
index 0000000..a8353ef
--- /dev/null
+++ b/web/admin/ap/usr_sendmail.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/usr_sendmail.php b/web/admin/ap/usr_sendmail.php
new file mode 100644
index 0000000..5422c99
--- /dev/null
+++ b/web/admin/ap/usr_sendmail.php
@@ -0,0 +1,206 @@
+get('query', array());
+ $csql = new \ciy\sql('ap_usr_sendmail');
+ $liid = objint($query, 'liid');
+ if ($liid == 1)
+ $csql->where('');
+ if ($liid == 2)
+ $csql->where('');
+ if ($liid == 3)
+ $csql->where('');
+ if ($liid == 4)
+ $csql->where('');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->where('email like', objstr($query, 'email'));
+ $csql->where('chan like', objstr($query, 'chan'));
+ $csql->where('name like', objstr($query, 'name'));
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->wheredaterange('sendtimes', objstr($query, 'sendtimes'));
+ $csql->wheredaterange('donetimes', objstr($query, 'donetimes'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post, $rsuser);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_usr_sendmail');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'email', 'name' => '邮件地址', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'chan', 'name' => '通道号', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '标题', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '添加时间');
+ $input[] = array('type' => 'daterange', 'form' => 'sendtimes', 'name' => '发送时间');
+ $input[] = array('type' => 'daterange', 'form' => 'donetimes', 'name' => '完成时间');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_usr_sendmail');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_usr_sendmail');
+ savelogdb($db, $rsuser['id'], 'ap_usr_sendmail', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_multi_status() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p m'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $status = $post->getint('status');
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_usr_sendmail');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $ids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $updata = array();
+ $updata['status'] = $status;
+ $csql = new \ciy\sql('ap_usr_sendmail');
+ $csql->where('id', $row['id']);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('批量操作失败:' . $db->error);
+ $ids[] = $row['id'];
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ $ret['ids'] = $ids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post, $rsuser);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'email', 'name' => '邮件地址');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'chan', 'name' => '通道号');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '标题');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '添加时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'sendtimes', 'name' => '发送时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'donetimes', 'name' => '完成时间');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'addtimes')
+ $val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'sendtimes')
+ $val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'donetimes')
+ $val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = '发送邮件数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/usr_sendsms.html b/web/admin/ap/usr_sendsms.html
new file mode 100644
index 0000000..a8353ef
--- /dev/null
+++ b/web/admin/ap/usr_sendsms.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/usr_sendsms.php b/web/admin/ap/usr_sendsms.php
new file mode 100644
index 0000000..e8997b3
--- /dev/null
+++ b/web/admin/ap/usr_sendsms.php
@@ -0,0 +1,203 @@
+get('query', array());
+ $csql = new \ciy\sql('ap_usr_sendsms');
+ $liid = objint($query, 'liid');
+ if ($liid == 1)
+ $csql->where('');
+ if ($liid == 2)
+ $csql->where('');
+ if ($liid == 3)
+ $csql->where('');
+ if ($liid == 4)
+ $csql->where('');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->where('mobile like', objstr($query, 'mobile'));
+ $csql->where('chan like', objstr($query, 'chan'));
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->wheredaterange('sendtimes', objstr($query, 'sendtimes'));
+ $csql->wheredaterange('donetimes', objstr($query, 'donetimes'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post, $rsuser);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_usr_sendsms');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'mobile', 'name' => '手机号', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'chan', 'name' => '通道号', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '添加时间');
+ $input[] = array('type' => 'daterange', 'form' => 'sendtimes', 'name' => '发送时间');
+ $input[] = array('type' => 'daterange', 'form' => 'donetimes', 'name' => '完成时间');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_usr_sendsms');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_usr_sendsms');
+ savelogdb($db, $rsuser['id'], 'ap_usr_sendsms', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_multi_status() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p m'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $status = $post->getint('status');
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_usr_sendsms');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $ids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $updata = array();
+ $updata['status'] = $status;
+ $csql = new \ciy\sql('ap_usr_sendsms');
+ $csql->where('id', $row['id']);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('批量操作失败:' . $db->error);
+ $ids[] = $row['id'];
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ $ret['ids'] = $ids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post, $rsuser);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'mobile', 'name' => '手机号');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'chan', 'name' => '通道号');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '添加时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'sendtimes', 'name' => '发送时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'donetimes', 'name' => '完成时间');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'addtimes')
+ $val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'sendtimes')
+ $val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'donetimes')
+ $val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = '发送短信数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/usr_shipaddr.html b/web/admin/ap/usr_shipaddr.html
new file mode 100644
index 0000000..3d79d7f
--- /dev/null
+++ b/web/admin/ap/usr_shipaddr.html
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/usr_shipaddr.php b/web/admin/ap/usr_shipaddr.php
new file mode 100644
index 0000000..0a36395
--- /dev/null
+++ b/web/admin/ap/usr_shipaddr.php
@@ -0,0 +1,196 @@
+get('query');
+ $csql = new \ciy\sql('ap_usr_shipaddr');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->where('name like', objstr($query, 'name'));
+ $csql->where('phone like', objstr($query, 'phone'));
+ $csql->wheredaterange('uptimes', objstr($query, 'uptimes'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_usr_shipaddr');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '收件人', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'phone', 'name' => '联系电话', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'uptimes', 'name' => '更新时间');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $areacode = $post->getint('areacode');
+ $addr = $post->get('addr');
+ $name = $post->get('name');
+ $phone = $post->get('phone');
+ if (empty($name))
+ return errjson('请填写收件人');
+ $csql = new \ciy\sql('ap_usr_shipaddr');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['areacode'] = $areacode;
+ $updata['addr'] = $addr;
+ $updata['name'] = $name;
+ $updata['phone'] = $phone;
+ $updata['uptimes'] = tostamp();
+ $csql = new \ciy\sql('ap_usr_shipaddr');
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ $updata['id'] = $id;
+ savelogdb($db, $rsuser['id'], 'ap_usr_shipaddr', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ $ret['ap_user'] = getrelation($db, [$updata], 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_usr_shipaddr');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_usr_shipaddr');
+ savelogdb($db, $rsuser['id'], 'ap_usr_shipaddr', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'areacode', 'name' => '所在地区');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'addr', 'name' => '详细地址');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '收件人');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'phone', 'name' => '联系电话');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'uptimes', 'name' => '更新时间');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $code_areacode = $db->get((new \ciy\sql('ciy_arearpc'))->column('id,name,upid'));
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'areacode')
+ $val = implode('-', mcode($code_areacode, $val));
+ if ($field == 'uptimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/ap/usr_suggest.html b/web/admin/ap/usr_suggest.html
new file mode 100644
index 0000000..821ff49
--- /dev/null
+++ b/web/admin/ap/usr_suggest.html
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/ap/usr_suggest.php b/web/admin/ap/usr_suggest.php
new file mode 100644
index 0000000..3d8b6da
--- /dev/null
+++ b/web/admin/ap/usr_suggest.php
@@ -0,0 +1,200 @@
+get('query');
+ $csql = new \ciy\sql('ap_usr_suggest');
+ $liid = objint($query, 'liid');
+ if ($liid == 1)
+ $csql->where('replytimes=0');
+ if ($liid == 2)
+ $csql->where('replytimes>0');
+ $val = objstr($query, 'vuser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('ap_user');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('vuser', $trow['id']);
+ $query['vuser'] = $trow['name'];
+ } else {
+ $csql->where('vuser=0');
+ }
+ }
+ $csql->where('contract like', objstr($query, 'contract'));
+ $csql->where('content like', objstr($query, 'content'));
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->where('replyuser', objstr($query, 'replyuser'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if ($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_usr_suggest');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'contract', 'name' => '联系方式', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'content', 'name' => '建议内容', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '提交时间');
+ $input[] = array('type' => 'select', 'form' => 'replyuser', 'name' => '答复人', 'all' => '全部', 'select' => 'adminuser');
+ $ret['searchinput'] = $input;
+ }
+ $ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $replymsg = $post->get('replymsg');
+ $csql = new \ciy\sql('ap_usr_suggest');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['replyuser'] = $rsuser['id'];
+ $updata['replytimes'] = tostamp();
+ $updata['replymsg'] = $replymsg;
+ $csql = new \ciy\sql('ap_usr_suggest');
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ $updata['id'] = $id;
+ savelogdb($db, $rsuser['id'], 'ap_usr_suggest', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ $ret['ap_user'] = getrelation($db, [$updata], 'ap_user', 'vuser');
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_usr_suggest');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_usr_suggest');
+ savelogdb($db, $rsuser['id'], 'ap_usr_suggest', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'contract', 'name' => '联系方式');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'content', 'name' => '建议内容');
+ $fields[] = array('style' => 'l', 'width' => 300, 'field' => 'imgs', 'name' => '图片');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '提交时间');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'replyuser', 'name' => '答复人');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'replytimes', 'name' => '答复时间');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'replymsg', 'name' => '答复内容');
+ $code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
+ $code_replyuser = getcatas($db, 'adminuser');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'vuser')
+ $val = ccode($code_vuser, $val);
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'replyuser')
+ $val = ccode($code_replyuser, $val);
+ if ($field == 'replytimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = 'Demo数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+}
diff --git a/web/admin/autotask/base.go b/web/admin/autotask/base.go
new file mode 100644
index 0000000..b8fadde
--- /dev/null
+++ b/web/admin/autotask/base.go
@@ -0,0 +1,227 @@
+package autotask
+
+import (
+ c "ciyon/zciyon"
+ "fmt"
+ "net/http"
+ "os"
+ "path/filepath"
+ "regexp"
+ "strings"
+ "time"
+)
+
+func funcindex() map[string]func(map[string]any) string {
+ return map[string]func(map[string]any) string{
+ "web\\admin\\autotask\\base::dayclean": dayclean,
+ "web\\admin\\autotask\\base::srvstats": srvstats,
+ }
+}
+func srvstats(systemrow map[string]any) string {
+ defer func() {
+ if r := recover(); r != nil {
+ fmt.Println("srvstats panic:", r)
+ c.Log.Error("AUTO", "srvstats panic:"+r.(string))
+ }
+ }()
+ func_succ := c.CiyVars.Func_succ
+ func_fail := c.CiyVars.Func_fail
+ func_commit := c.CiyVars.Func_commit
+ func_rollback := c.CiyVars.Func_rollback
+ func_runms := 0
+ if func_succ+func_fail > 0 {
+ func_runms = c.CiyVars.Func_runms / (func_commit + func_rollback + 1)
+ }
+ c.CiyVars.Func_succ = 0
+ c.CiyVars.Func_fail = 0
+ c.CiyVars.Func_commit = 0
+ c.CiyVars.Func_rollback = 0
+ c.CiyVars.Func_runms = 0
+ disk := c.Ciy_sys_getdisk("/")
+ disk2 := c.Ciy_sys_getdisk("/data")
+ disk_sysfree := disk["free"]
+ disk_datafree := disk2["free"]
+ starttime := c.Timems()
+ fpath := c.CiyWebDir + "/ud/_" + c.Tostr(c.Tostamp()) + ".bin"
+ fsize := 1024 * 1024 // 1MB
+ fcontent := make([]byte, fsize)
+ for i := 0; i < fsize; i++ {
+ fcontent[i] = byte(i%70 + 30)
+ }
+ f, err := os.Create(fpath)
+ if err != nil {
+ c.Log.Error("FILE", "创建临时文件失败"+fpath+":"+err.Error())
+ } else {
+ f.Write(fcontent)
+ f.Close()
+ rcontent, err := os.ReadFile(fpath)
+ if err != nil {
+ c.Log.Error("FILE", "读取临时文件失败")
+ } else {
+ for i := 0; i < fsize; i++ {
+ if fcontent[i] != rcontent[i] {
+ c.Log.Error("FILE", "写入临时文件校验失败")
+ break
+ }
+ }
+ os.Remove(fpath)
+ }
+ }
+ disk_ioms := c.Timems() - starttime
+
+ output := c.RunCmd("ps", "aux", "-A")
+ cmddb := []string{"mysql", "mysqld"}
+ cmdweb := []string{"nginx", "php", "WorkerMan", "mosquitto", "gitea", "/zgo"}
+ cpu := map[string]float64{"db": 0, "web": 0, "oth": 0}
+ mem := map[string]float64{"db": 0, "web": 0, "oth": 0}
+
+ for _, line := range output {
+ if strings.Contains(line, "COMMAND") {
+ continue
+ }
+ _nextspace(&line)
+ _nextspace(&line)
+ cpup := c.Tofloat(_nextspace(&line))
+ memp := c.Tofloat(_nextspace(&line))
+ _nextspace(&line) // 虚拟内存
+ _nextspace(&line) // 物理内存 包括共享内存
+ _nextspace(&line)
+ _nextspace(&line)
+ _nextspace(&line)
+ _nextspace(&line)
+ if _arrin(line, cmddb) {
+ cpu["db"] += cpup
+ mem["db"] += memp
+ } else if _arrin(line, cmdweb) {
+ cpu["web"] += cpup
+ mem["web"] += memp
+ } else {
+ cpu["oth"] += cpup
+ mem["oth"] += memp
+ }
+ }
+
+ output = c.RunCmd("free", "-m")
+ mem_free := 0
+ matches := regexp.MustCompile(`Mem:\s+(\d+)`).FindStringSubmatch(output[1])
+ if len(matches) > 1 {
+ mem_free = c.Toint(c.Tofloat(matches[1]) * (100 - cpu["db"] - cpu["web"] - cpu["oth"]) * 1024 * 1024 / 100)
+ }
+
+ output = c.RunCmd("sh", "-c", "netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'")
+ net_tcp := 0
+ for _, line := range output {
+ ls := strings.Split(line, " ")
+ if ls[0] == "LISTEN" {
+ continue
+ }
+ if len(ls) < 2 {
+ continue
+ }
+ net_tcp += c.Toint(ls[1])
+ }
+ starttime = c.Timems()
+ resp, err := http.Get("https://www.baidu.com")
+ if err == nil {
+ resp.Body.Close()
+ }
+ net_ioms := c.Timems() - starttime
+
+ dbrows, err := c.CiyDB.Getraw("show global status")
+ if err != nil {
+ c.Log.Error("FILE", "执行show global status失败")
+ }
+ dbstat := map[string]float64{}
+ for _, row := range dbrows {
+ name := c.Tostr(row["Variable_name"])
+ val := c.Tofloat(row["Value"])
+ dbstat[name] = val
+ }
+ db_keyhit := dbstat["Handler_read_key"] / (dbstat["Com_select"] + 1) * 100
+ db_dbhit := dbstat["Innodb_buffer_pool_reads"] / (dbstat["Innodb_buffer_pool_read_requests"] + 1) * 100
+ db_tmptable := dbstat["Created_tmp_disk_tables"] / (dbstat["Created_tmp_tables"] + 1) * 100
+
+ updata := map[string]any{}
+ updata["func_succ"] = func_succ
+ updata["func_fail"] = func_fail
+ updata["func_commit"] = func_commit
+ updata["func_rollback"] = func_rollback
+ updata["func_runms"] = func_runms
+ updata["disk_sysfree"] = disk_sysfree
+ updata["disk_datafree"] = disk_datafree
+ updata["disk_ioms"] = disk_ioms
+ updata["cpu_free"] = 100 - cpu["db"] - cpu["web"] - cpu["oth"]
+ updata["cpu_db"] = cpu["db"]
+ updata["cpu_web"] = cpu["web"]
+ updata["cpu_oth"] = cpu["oth"]
+ updata["mem_free"] = mem_free
+ updata["mem_db"] = mem["db"]
+ updata["mem_web"] = mem["web"]
+ updata["mem_oth"] = mem["oth"]
+ updata["net_tcp"] = net_tcp
+ updata["net_ioms"] = net_ioms
+ updata["db_query"] = dbstat["Questions"]
+ updata["db_commit"] = dbstat["Com_commit"]
+ updata["db_rollback"] = dbstat["Com_rollback"]
+ updata["db_keyhit"] = db_keyhit
+ updata["db_dbhit"] = db_dbhit
+ updata["db_tmptable"] = db_tmptable
+ updata["db_lock"] = dbstat["Innodb_row_lock_current_waits"]
+ updata["addtimes"] = c.Tostamp()
+ csql := c.NewCiySQL("zc_stats")
+ c.CiyDB.Insert(csql, updata)
+
+ retmsg := "succ: " + c.Tostr(func_succ)
+ if func_rollback > 0 {
+ retmsg += ", rollback: " + c.Tostr(func_rollback)
+ }
+ return retmsg
+}
+func dayclean(systemrow map[string]any) string {
+ maxAge := 3 * 24 * time.Hour
+ cnt := 0
+ errcnt := 0
+ filepath.Walk(c.CiyWebDir+"/ud/tmp", func(path string, info os.FileInfo, err error) error {
+ if err != nil {
+ _tasklog(systemrow, "出现错误:"+err.Error())
+ return err
+ }
+ if info.IsDir() {
+ return nil
+ }
+ if time.Since(info.ModTime()) > maxAge {
+ err := os.Remove(path)
+ cnt++
+ if err != nil {
+ errcnt++
+ fmt.Printf("failed to delete file: %s\n", err)
+ }
+ }
+ return nil
+ })
+ retmsg := "clean: " + c.Tostr(cnt)
+ if errcnt > 0 {
+ retmsg += ", err: " + c.Tostr(errcnt)
+ }
+ return retmsg
+}
+
+func _nextspace(line *string) string {
+ ind := strings.Index(*line, " ")
+ if ind == -1 {
+ *line = ""
+ return *line
+ }
+ va := (*line)[:ind]
+ *line = (*line)[ind:]
+ *line = strings.TrimSpace(*line)
+ return va
+}
+func _arrin(cmd string, arr []string) bool {
+ for _, v := range arr {
+ if strings.Contains(cmd, v) {
+ return true
+ }
+ }
+ return false
+}
diff --git a/web/admin/autotask/base.php b/web/admin/autotask/base.php
new file mode 100644
index 0000000..35b4984
--- /dev/null
+++ b/web/admin/autotask/base.php
@@ -0,0 +1,231 @@
+where('addtimes<', time() - 86400 * 90));
+ $msg .= self::_base_deldb($db, (new \ciy\sql('zc_autotsk_log'))->where('addtimes<', time() - 86400 * 90));
+ $msg .= self::_base_deldb($db, (new \ciy\sql('zc_funcslow'))->where('addtimes<', time() - 86400 * 60));
+ $msg .= self::_base_deldb($db, (new \ciy\sql('zc_stats'))->where('addtimes<', time() - 86400 * 60));
+ $msg .= self::_base_deldb($db, (new \ciy\sql('zc_log'))->where('addtimes<', time() - 86400 * 100));
+ $msg .= self::_base_deldb($db, (new \ciy\sql('zc_online'))->where('exptimes<', time() - 86400 * 7));
+
+ $cnt = 0;
+ $msg .= self::_base_delfile(PATH_WEB . 'ud/tmp', 86400 * 3, $cnt);
+ $cnt = 0;
+ $msg .= self::_base_delfile(PATH_WEB . 'ud/rep', 86400 * 1, $cnt);
+ return $msg;
+ }
+ static function _base_deldb($db, $csql) {
+ $execute = $db->delete($csql);
+ if ($execute === false)
+ return 'clean ' . $csql->table . ': ' . $db->error . '| 任务名称 | " + c.Tostr(taskrow["name"]) + " |
| 入口函数 | " + c.Tostr(taskrow["runfunc"]) + " |
| 执行参数 | " + c.Tostr(taskrow["runparam"]) + " |
| 执行时长 | " + c.Tostr(tskrunrow["runsec"]) + "s |
| 任务简报 | " + c.Tostr(tskrunrow["msg"]) + " |
| 时间 | 数据 |
| " + c.Todate(c.Toint(row["addtimes"])) + " | " + c.Tostr(row["msg"]) + " |
| 任务名称 | ' . $taskrow['name'] . ' |
| 入口函数 | ' . $taskrow['runfunc'] . ' |
| 执行参数 | ' . $taskrow['runparam'] . ' |
| 执行时长 | ' . $tskrunrow['runsec'] . 's |
| 任务简报 | ' . $tskrunrow['msg'] . ' |
| 时间 | 数据 |
| ' . date('Y-m-d H:i:s', $row['addtimes']) . ' | ' . $row['msg'] . ' |
+
+ -- 贷款金额 (万元) |
+ -- 待还金额 (万元) |
+ -- 贷款单位 (家) |
+
+
+
+
+
+
+
+
+ | + | 贷款 (万元) | +合同 (份) | +单位 (家) | +
| 300万以内 | +
+ --
+
+ |
+
+ --
+
+ |
+
+ --
+
+ |
+
| 300-800万 | +
+ --
+
+ |
+
+ --
+
+ |
+
+ --
+
+ |
+
| 800万以上 | +
+ --
+
+ |
+
+ --
+
+ |
+
+ --
+
+ |
+
+
+
+
+
+ ' + thos.ce.viewer.flags.speedbet + '';
+ htmltip += ' ';
+ $5('.cecontrolpanel').html(htmltip);
+ } else {
+ $5('.cecontrolpanel').html('');
+ }
+ }
+ };
+ }
+ this.distory = function (data) {
+ if (thos.ce)
+ thos.ce.destroy();
+ thos.ce = null;
+ }
+
+
+ var thos = this;
+ this.ce = null;
+ this.resize();
+ opdata.container.append(`
+
+ `);
+}
\ No newline at end of file
diff --git a/web/admin/demo/bs/b64/farm1_c1.js b/web/admin/demo/bs/b64/farm1_c1.js
new file mode 100644
index 0000000..3eadbaf
--- /dev/null
+++ b/web/admin/demo/bs/b64/farm1_c1.js
@@ -0,0 +1,26 @@
+
+function ciy_chart_farm1_c1(opdata) {
+ this.func = ['farm_c1'];
+ this.lastdata = {};
+ this.resize = function () {
+ }
+ this.setdata = function (funame, data) {
+ if (!data)
+ return;
+ this.lastdata[funame] = data;
+ $5('[data-bank]', opdata.container).text(data.farm.name);
+ }
+ this.distory = function () {
+ }
+
+
+ opdata.container.append(`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | # | '; + foreach ($heads as $arr) { + $html .= '' . $arr['name'] . ' | '; + } + $html .= '' . $lineidx . ' | ';
+ $bempty = true;
+ $unqs = array();
+ $csql = new \ciy\sql('zc_admin');
+ foreach ($heads as $arr) {
+ $name = $arr['name'];
+ $errmsg = ''; //数据有误,显示红色说明
+ $showdat = ''; //显示在表格中的数据
+ if ($arr['idx'] > -1)
+ $showdat = trim($datas[$rowidx][$arr['idx']]);
+ if ($showdat == '--')
+ $showdat = '';
+ $value = $showdat; //在表单中的数据(转换后)
+ $ext = ''; //扩展表单
+ if ($name == '行码') {
+ if (empty($showdat)) {
+ $value = 0;
+ $showdat = '新增';
+ } else {
+ $id = deid($showdat);
+ if ($id == 0)
+ $errmsg = $name . '解析错误';
+ else {
+ $csqlchk = new \ciy\sql('zc_admin');
+ $csqlchk->where('id', $id)->column('id');
+ $chkid = toint($db->get1($csqlchk));
+ if ($chkid != $id)
+ $errmsg = $name . '在数据库中不存在';
+ $value = $id;
+ }
+ }
+ } else if ($name == '姓名') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ }
+ } else if ($name == '手机号') {
+ $csql->where('mobile', $showdat);
+ $unqs[] = $showdat;
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ }
+ } else if ($name == '性别') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ $value = dcode($code_sex, $showdat);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ } else if ($name == '所属组织') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $dats = explode('-', $showdat);
+ $value = dcode($code_departid, $dats[count($dats) - 1]);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ }
+ if (!empty($showdat))
+ $bempty = false;
+
+ if (empty($errmsg))
+ $hrhtml .= '' . $showdat . '' . $ext . ' | ';
+ else
+ $hrhtml .= '' . $showdat . ' | ';
+ }
+ if ($bempty)
+ continue;
+
+ if (count($unqs) > 0) {
+ $unq = implode('|', $unqs);
+ if (in_array($unq, $uniques))
+ $firsthtml = '重复 | ';
+ else {
+ $uniques[] = $unq;
+ $csql->column('id');
+ $chkid = toint($db->get1($csql));
+ if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
+ $firsthtml = '重复 | ';
+ }
+ }
+ $html .= '
|---|---|
共' . $cnt . '条数据';
+ return succjson(array('html' => $html, 'count' => $cnt));
+ }
+ public static function json_importxls_data() {
+ global $db;
+ $rsuser = verifyfast();
+ if (nopower($db, $rsuser['id'], 'p500a'))
+ return errjson('您未被授权操作新增');
+ $post = new \ciy\post();
+ $total = $post->getint('total');
+ try {
+ $db->begin();
+ for ($i = 1; $i <= $total; $i++) {
+ $id = $post->getint('id_' . $i);
+ $name = $post->get('name_' . $i);
+ $mobile = $post->get('mobile_' . $i);
+ $sex = $post->get('sex_' . $i);
+ $departid = $post->get('departid_' . $i);
+ $csql = new \ciy\sql('zc_admin');
+ $csql->where('mobile', $mobile);
+ $csql->column('id');
+ $chkid = toint($db->get1($csql));
+ if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
+ throw new \Exception('CIYIGN发现数据有重复');
+
+ $updata = array();
+ $updata['name'] = $name;
+ $updata['mobile'] = $mobile;
+ $updata['stpstatus'] = 10;
+ $updata['sex'] = $sex;
+ $updata['departid'] = $departid;
+ $updata['addtimes'] = tostamp();
+ $csql = new \ciy\sql('zc_admin');
+ if ($id == 0) {
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增失败:' . $db->error);
+ } else {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ }
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $db->execute('update zc_online set usrchg=2');
+ return succjson();
+ }
+}
diff --git a/web/admin/demo/dyn/callapi.html b/web/admin/demo/dyn/callapi.html
new file mode 100644
index 0000000..e56f2b8
--- /dev/null
+++ b/web/admin/demo/dyn/callapi.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 获取token+
业务调用+
识别号+
登录用户+
ECC签名+
ECC验签+
PIN码+
重置PIN码+
读写标记+
初始化+
生成RSA密钥对+
RSA签名+
RSA验签+
钱包登录+
钱包签名+
钱包验签+
css优先级+
hr横线+ + +
行内效果+
code效果
+ kbd效果
+ 下划线
+
+ 24栅格+
pre代码块+
#include bits/stdc.h
+int main() {
+ return 0;
+}
+
+ 图标+ 首尾
按钮+ + + + + +
span效果+ span + def + dag + imp succ + warn + man + span + cata_dag + cata_imp + cata_warn + cata_man + +
fieldset+ + + + +
特定css+
+ciy-tree-spread +table +search +ciy-list l0/l1/l2/l3 rt rb lb rbg +gridline end +ciy-form text v inline label.imp label.auto char[2-9] inline-minwidth +form-bottom +input.tran select.tran textarea.tran +ciy-badge ciy-badge-dot +ciy-tabcard +ciy-caption mk center title right sub +fieldset/legend box tips ++ +
原子css+
+txt-sm/smm/smmm txt-lg/lgg/lggg txt-left/center/right/just +txt-wb 加粗 txt-wl 细线 txt-un 下划线 +txt[1-9] bg[1-9] px[1-4] py[1-4] r[1-5] +cursor-p/d txt-nowrap txt-over +flex flex-center flex-top +flex1 flexnone +hide noselect tran5 +sta abs fix rel sti r0 l0 t0 b0 r1 l1 t1 b1 ++ + + \ No newline at end of file diff --git a/web/admin/demo/front/demo_cssn.html b/web/admin/demo/front/demo_cssn.html new file mode 100644 index 0000000..7ffb36f --- /dev/null +++ b/web/admin/demo/front/demo_cssn.html @@ -0,0 +1,50 @@ + + + +
dom方法+ dom单个元素,无null。doms多个元素,无[]。
clas链+
attr方法+ get,支持stirng和json + 有属性 + 属性没有值 + 无属性 +
css方法+ get css + 定义style,获取bgcolor + 未定义style,获取bgcolor +
val方法+ val 设置/获取value,支持ciycmp对象setvalue/getvalue
html/text方法+ outhtml/html 设置/获取html。text 设置/获取文本。 +
p1
+p2
+p3
+ html覆盖内部 + outhtml覆盖自身 + text覆盖 +html方法+ outhtml/html 设置/获取html。prepend/append 子元素。before/after 兄弟元素 +
p1
+p2
+p3
+ prepend内部插入 + append内部添加 + before上插入 + after下添加 + html覆盖内部 + outhtml覆盖自身 +prev/next方法+ 获取n个 +
n1
+n2
+n3
+n4
+n5
+n6
+n7
+无上下dom
+on/one/off方法+
rect方法+
aniin/aniout动画方法+ + + + +
getGamepads 0-3+
pulse-loader+ + + +
ring-loader+ + +
bounce-loader+
neon-loader+
fluid-loader+ + +
minimal-loader+
所有函数+
+ ciyfn.ajax ajax请求
+ ciyfn.callfunc 后台json_xx交互,
+ funcname:
+ 函数名,func
+ 本级目录下其他页函数,gocxx.func
+ 指定页函数,path1/path2/gocxx.func
+ post: object数据
+ succfn: 请求成功回调
+ opn:
+ header: 请求头object
+ method: 请求方式,get/post/put/delete
+ timeout: 超时时间,默认10秒
+ showload: 是否显示顶部加载条,默认true
+ fail: 请求失败回调,默认ciyfn.alert提示
+ complete: 请求完成回调
+ ciyfn.callfastfunc 后台json_xx单行交互,防重复,调用callfunc
+ dom: 防重复dom
+ confirmmsg: 提示文字,有则alert,无则直接请求
+ func: 调用callfunc的funcname
+ postparam: 调用callfunc的post
+ succfunc: 字符串reload刷新本页,或成功回调函数
+ failfunc: 失败回调函数
+ ciyfn.tojson json解析,无论是否能序列化,均返回object。
+ ciyfn.jsontostr json转字符串。
+
+ ciyfn.calljsondata 加载json数据
+ ciyfn.loadjs 加载js库。
+ objname: 根据window下是否存在某函数,存在则不用重复加载。
+ jsurl: js库地址
+ callback: 准备好回调函数
+ ciyfn.throttle 防止频繁调用。
+ dom: 给该dom加上loading class,在callfunc done后移除。
+ sec: 多少秒,默认ciy_vars.dupsec
+
+ ciyfn.getdictdata 获取字典数据。array/localstroage.cata_xx/window.ciy_xx/id.name,id2.name2
+ ciyfn.filterdictdata 过滤字典数据。
+ data: 字典数据
+ opn: {}
+ all: 顶部添加{id:'', name:all}
+ first: 顶部添加...first
+ limit: a~b 只包含[a,b]。a,b,c 包含a,b,c
+ filter: field=value 只包含field=value的数据。
+ rename: 10=新名称 将id=10的name改为新名称。
+
+ ciyfn.ccode 字典id转name
+ ciyfn.multicode 多级字典id转数组
+ ciyfn.scode 多选字典,逗号分隔id转数组
+
+
+ ciyfn.getform 获取某元素被包含的form数据。默认body/form。自定义tagname。
+ ciyfn.makeuploadpath 生成标准上传路径,支持saasid。[sn/n/]Y/md/xxx
+ ciyfn.arr_treemap 带upid的数组,转带child的树形结构
+ ciyfn.urlparam 将url参数转为object对象。
+ ciyfn.sendsignal 向其他窗口发送信号,支持跨域。
+ manage_refresh 刷新当前页
+ manage_ifropen 打开新卡片页
+ restorage 刷新storage
+
+ tostr 转化成字符串
+ toint 转化成整数
+ tofloat 转化成浮点数
+ tostamp 输入Date/字符串时间,返回时间戳。不输入,返回当前时间戳。
+ isarray 判断是否为[]
+ isobj 判断是否为{}
+ ciyfn.isemptyobj 判断是否为空{}
+ ciyfn.getstorage 获取storage数据
+ ciyfn.setstorage 设置storage数据
+ ciyfn.removestorage 删除storage数据
+ ciyfn.savedict 保存字典数据。
+
+
+
+ ciyclass.managepage 管理页面基类
+ ciyfn.inmobile 判断是否在移动端
+
+ ciyfn.totimepoint 将数字转成 HH:ii[:ss]
+ ciyfn.totimespan 输入时间/时间戳,返回n[天/小时/月..]前/后
+ ciyfn.totimesec 输入秒数,返回n[天/小时/月..]前/后、刚刚
+ ciyfn.todatetime 格式化时间,输入时间戳/字符串/Date/-1,返回Y-m-d H:i
+ ciyfn.objclone 对象深拷贝
+ ciyfn.isfloat0 浮点数是否接近0
+ ciyfn.topad0 数字左侧补0
+
+ ciyfn.copyboard 复制到剪贴板
+ ciyfn.file_ext 获取文件后缀名,大写
+ ciyfn.isimg 判断是否为图片文件
+
+ ciyfn.getstrparam
+
+ ciyfn.file_uploads 上传文件到本地或云存储
+ ciyfn.nopower 无权限判断
+ ciyclass.sse 服务器SSE事件类
+
+ ciyfn.lang 多语言转文字
+ ciyfn.setlang 设置语言
+ ciyfn.domlang 将dom中.lang转文字
+ ciyfn.file_stor 获取文件存储url
+
+ ciyfn.alert 弹出alert。
+ ciyfn.toast 信息提示。
+ ciyfn.showend 右下角提示,数秒隐藏。
+ ciyclass.mask 默认页面初始化。 .show(clickfn,css) / .hide()
+ ciyfn.popmenu 弹出菜单
+ menu: array:[{ title:'',act,name,url},...]
+ menu: Element 完全自定义菜单
+ ciyfn.showmap 打开地图,显示位置。
+ ciyfn.dropmenu 下拉菜单
+ ciyclass.tabcard 选显卡类
+ ciyfn.lazyimg 图片懒加载
+
+ 对话框+
自定尺寸对话框+
多按钮对话框+
带输入对话框+
iframe对话框+
iframe对话框回调+
自定义对话框+
左右对齐对话框+
其他对话框+
按钮样式+
自定尺寸按钮+
图标按钮+
span标签+
下拉按钮+
叠加提示效果+
tabcard类+
tabcard类用于创建带有选项卡的卡片,可以切换不同内容,并提供右侧按钮。
+使用方法:
+支持2个样式类,分别是simple、form
+支持full类,将空间高度占满
+支持right元素,用于放置右侧按钮
+tabcontent与li数量相等,自动切换对应tabcontent
+无tabcontent则用户自行实现
+JS调用ciyclass.tabcard()方法初始化
+ data-display: 元素属性,显示模式。可选值block、inline-block、flex、inline-flex、grid、inline-grid信息提示效果+
顶部静默加载效果+ +
| # | \n" + for _, arr := range heads { + html += "" + arr["name"] + " | \n" + } + html += "" + lineidx + " | "
+ bempty := true
+ unqs := make([]string, 0)
+ csql := c.NewCiySQL("demo_normal")
+ for _, arr := range heads {
+ name := arr["name"]
+ errmsg := "" //数据有误,显示红色说明
+ showdat := "" //显示在表格中的数据
+ if c.Toint(arr["idx"]) > -1 {
+ showdat = strings.TrimSpace(datas[0][rowidx][c.Toint(arr["idx"])])
+ }
+ if showdat == "--" {
+ showdat = ""
+ }
+ var value any
+ value = showdat //在表单中的数据(转换后)
+ ext := "" //扩展表单
+ if name == "行码" {
+ if showdat == "" {
+ value = 0
+ showdat = "新增"
+ } else {
+ id = c.DeID(showdat)
+ if id == 0 {
+ errmsg = name + "解析错误"
+ } else {
+ csqlchk := c.NewCiySQL("demo_normal")
+ csqlchk.Where("id", id).Column("id")
+ chkid := c.Toint(c.CiyDB.Get1(csqlchk))
+ if chkid != id {
+ errmsg = name + "在数据库中不存在"
+ }
+ value = id
+ }
+ }
+ } else if name == "审核状态" {
+ if showdat == "" {
+ value = 0
+ } else {
+ value = c.Dcode(code_auditstatus, c.Tostr(showdat))
+ if value == -1 {
+ errmsg = name + "文字与系统数据不匹配"
+ }
+ }
+ } else if name == "审核人" {
+ if showdat == "" {
+ value = 0
+ } else {
+ value = c.Dcode(code_userid, showdat)
+ if value == -1 {
+ errmsg = name + "文字与系统数据不匹配"
+ }
+ }
+ } else if name == "审核时间" {
+ if showdat == "" {
+ value = 0
+ } else {
+ value = c.Tostamp(c.Tostr(showdat))
+ if value == 0 {
+ errmsg = name + "时间格式错误"
+ } else {
+ showdat = c.Todate(c.Toint(value), "Y-m-d H:i:s")
+ }
+ }
+ } else if name == "默认标题" {
+ if showdat == "" {
+ errmsg = name + "为必填项"
+ } else {
+ csql.Where("name", showdat)
+ unqs = append(unqs, showdat)
+ }
+ } else if name == "所属菜单" {
+ if showdat == "" {
+ value = 0
+ } else {
+ value = c.Dcode(code_menuid, showdat)
+ if value == -1 {
+ errmsg = name + "文字与系统数据不匹配"
+ }
+ }
+ } else if name == "文件大小" {
+ if showdat == "" {
+ value = 0
+ } else {
+ idat, err := strconv.Atoi(showdat)
+ if err != nil {
+ errmsg = name + "不是数字"
+ } else {
+ value = idat
+ }
+ }
+ } else if name == "长度" {
+ if showdat == "" {
+ value = 0
+ } else {
+ idat, err := strconv.ParseFloat(showdat, 64)
+ if err != nil {
+ errmsg = name + "不是数字"
+ } else {
+ value = c.Toint(idat * 1000)
+ showdat += "米"
+ }
+ }
+ } else if name == "贷款金额" {
+ if showdat == "" {
+ value = 0
+ } else {
+ idat, err := strconv.ParseFloat(showdat, 64)
+ if err != nil {
+ errmsg = name + "不是数字"
+ } else {
+ value = c.Toint(idat * 1000000)
+ showdat += "万元"
+ }
+ }
+ } else if name == "设置日期" {
+ if showdat == "" {
+ value = 0
+ } else {
+ value = c.Tostamp(c.Tostr(showdat))
+ if value == 0 {
+ errmsg = name + "时间格式错误"
+ } else {
+ showdat = c.Todate(c.Toint(value), "Y-m-d")
+ }
+ }
+ } else if name == "设置时间" {
+ if showdat == "" {
+ value = 0
+ } else {
+ value = c.Tostamp(c.Tostr(showdat))
+ if value == 0 {
+ errmsg = name + "时间格式错误"
+ } else {
+ showdat = c.Todate(c.Toint(value), "Y-m-d H:i:s")
+ }
+ }
+ } else if name == "是否使用" {
+ if showdat == "" {
+ value = 0
+ } else {
+ if showdat == code_isuse[0]["name"] {
+ value = 1
+ showdat = c.Tostr(code_isuse[0]["name"])
+ } else {
+ value = 2
+ showdat = c.Tostr(code_isuse[1]["name"])
+ }
+ }
+ } else if name == "是否开启" {
+ if showdat == "" {
+ value = 0
+ } else {
+ if showdat == code_isopen[0]["name"] {
+ value = 1
+ showdat = c.Tostr(code_isuse[0]["name"])
+ } else {
+ value = 2
+ showdat = c.Tostr(code_isuse[1]["name"])
+ }
+ }
+ } else if name == "库存单位" {
+ //显示 1箱=5盒,1盒=10袋 存储 袋|10|盒|5|箱
+ if showdat == "" {
+ } else {
+ us := strings.Split(showdat, ",")
+ if len(us) == 2 {
+ tmp := us[0]
+ us[0] = us[1]
+ us[1] = tmp
+ }
+ us[0] = us[0][1:]
+ re := regexp.MustCompile(`(.*?)(\d+)(.*)`)
+ matches := re.FindStringSubmatch(us[0])
+ if len(matches) >= 4 {
+ unitx := matches[1]
+ value = matches[3] + "|" + matches[2] + "|" + matches[1]
+ if len(us) == 2 {
+ us[1] = us[1][1:]
+ matches = re.FindStringSubmatch(us[1])
+ if len(matches) >= 4 {
+ if unitx != matches[3] {
+ errmsg = name + "中间单位不匹配"
+ } else {
+ value = c.Tostr(value) + "|" + matches[2] + "|" + matches[1]
+ }
+ } else {
+ errmsg = name + "第二段格式错误"
+ }
+ }
+ } else {
+ errmsg = name + "第一段格式错误"
+ }
+ }
+ } else if name == "多选状态" {
+ if showdat == "" {
+ } else {
+ tdats := strings.Split(showdat, ",")
+ vals := make([]string, 0)
+ for _, da := range tdats {
+ tval := c.Dcode(code_mauditstatus, da)
+ if tval == -1 {
+ errmsg = name + "文字与系统数据不匹配"
+ }
+ vals = append(vals, c.Tostr(tval))
+ }
+ value = strings.Join(vals, ",")
+ }
+ } else if name == "商品分类" {
+ if showdat == "" {
+ value = 0
+ } else {
+ dats := strings.Split(showdat, "-")
+ value = c.Dcode(code_prodcata, dats[len(dats)-1])
+ if value == -1 {
+ errmsg = name + "文字与系统数据不匹配"
+ }
+ }
+ } else if name == "所在地区" {
+ if showdat == "" {
+ value = 0
+ } else {
+ dats := strings.Split(showdat, "-")
+ value = c.Dcode(code_areacode, dats[len(dats)-1])
+ if value == -1 {
+ errmsg = name + "文字与系统数据不匹配"
+ }
+ }
+ } else if name == "认证情况" {
+ if showdat == "" {
+ value = 0
+ } else {
+ dats := strings.Split(showdat, ",")
+ tdat := 0
+ for _, da := range dats {
+ bti := c.Dcode(code_renzheng, da)
+ if bti == -1 {
+ errmsg = name + "文字与系统数据不匹配"
+ }
+ tdat += (1 << (bti - 1))
+ }
+ value = tdat
+ }
+ } else if name == "执行周期" {
+ if showdat == "" {
+ value = 0
+ } else {
+ last := showdat[len(showdat)-3:]
+ dd := c.Toint(showdat[:len(showdat)-3])
+ if dd == 0 {
+ errmsg = name + "周期数字错误"
+ } else if last == "天" {
+ value = dd * 86400
+ } else if last == "月" {
+ value = -dd
+ } else if last == "秒" {
+ value = dd
+ } else {
+ errmsg = name + "周期单位错误"
+ }
+ }
+ } else if name == "执行用时" {
+ if showdat == "" {
+ value = 0
+ } else {
+ idat, err := strconv.Atoi(showdat)
+ if err != nil {
+ errmsg = name + "不是数字"
+ } else {
+ value = idat
+ }
+ }
+ } else if name == "活动期数" {
+ if showdat == "" {
+ value = 0
+ } else {
+ idat, err := strconv.Atoi(showdat)
+ if err != nil {
+ errmsg = name + "不是数字"
+ } else {
+ value = idat
+ }
+ }
+ } else if name == "吨位" {
+ if showdat == "" {
+ value = 0
+ } else {
+ idat, err := strconv.ParseFloat(showdat, 64)
+ if err != nil {
+ errmsg = name + "不是数字"
+ } else {
+ value = c.Toint(idat * 1000000)
+ showdat += "吨"
+ }
+ }
+ } else if name == "单价" {
+ if showdat == "" {
+ value = 0
+ } else {
+ idat, err := strconv.ParseFloat(showdat, 64)
+ if err != nil {
+ errmsg = name + "不是数字"
+ } else {
+ value = c.Toint(idat * 100)
+ showdat += "元"
+ }
+ }
+ } else if name == "纬度" {
+ if showdat == "" {
+ value = 0
+ } else {
+ idat, err := strconv.ParseFloat(showdat, 64)
+ if err != nil {
+ errmsg = name + "不是数字"
+ } else {
+ value = idat
+ }
+ }
+ } else if name == "位置" {
+ if showdat == "" {
+ value = 0
+ } else {
+ idat, err := strconv.ParseFloat(showdat, 64)
+ if err != nil {
+ errmsg = name + "不是数字"
+ } else {
+ value = idat
+ }
+ }
+ } else if name == "监管数量" {
+ if showdat == "" {
+ value = 0
+ } else {
+ idat, err := strconv.ParseFloat(showdat, 64)
+ if err != nil {
+ errmsg = name + "不是数字"
+ } else {
+ value = idat
+ }
+ }
+ } else if name == "链接" {
+ } else if name == "身份证号" {
+ } else if name == "体重" {
+ if showdat == "" {
+ value = 0
+ } else {
+ idat, err := strconv.ParseFloat(showdat, 64)
+ if err != nil {
+ errmsg = name + "不是数字"
+ } else {
+ value = c.Toint(idat * 1000)
+ showdat += "KG"
+ }
+ }
+ } else if name == "耳温" {
+ if showdat == "" {
+ value = 0
+ } else {
+ idat, err := strconv.ParseFloat(showdat, 64)
+ if err != nil {
+ errmsg = name + "不是数字"
+ } else {
+ value = c.Toint(idat * 1000)
+ showdat += "℃"
+ }
+ }
+ } else if name == "介绍" {
+ }
+ if showdat != "" {
+ bempty = false
+ }
+ if errmsg == "" {
+ hrhtml += "" + showdat + "" + ext + " | "
+ } else {
+ hrhtml += "" + showdat + " | "
+ }
+ }
+ if bempty {
+ continue
+ }
+
+ if len(unqs) > 0 {
+ unq := strings.Join(unqs, "|")
+ if _, ok := uniques[unq]; ok {
+ firsthtml = "重复 | "
+ } else {
+ uniques[unq] = true
+ csql.Column("id")
+ chkid := c.Toint(c.CiyDB.Get1(csql))
+ if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
+ firsthtml = "重复 | "
+ }
+ }
+ }
+ html += "
|---|---|
共" + c.Tostr(cnt) + "条数据\n"
+ return c.SuccJSON(w, r, map[string]any{
+ "html": html,
+ "count": cnt,
+ })
+}
+func Normal_importxls_data(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ total := post.Getint("total")
+ err := c.CiyDB.Tran(func() error {
+ for i := 1; i <= total; i++ {
+ istr := c.Tostr(i)
+ id := post.Getint("id_" + istr)
+ auditstatus := post.Get("auditstatus_" + istr)
+ audituser := post.Get("audituser_" + istr)
+ audittimes := post.Get("audittimes_" + istr)
+ name := post.Get("name_" + istr)
+ menuid := post.Get("menuid_" + istr)
+ filesize := post.Get("filesize_" + istr)
+ metre := post.Get("metre_" + istr)
+ bankmoney := post.Get("bankmoney_" + istr)
+ setdate := post.Get("setdate_" + istr)
+ settimes := post.Get("settimes_" + istr)
+ isuse := post.Get("isuse_" + istr)
+ isopen := post.Get("isopen_" + istr)
+ unit := post.Get("unit_" + istr)
+ mauditstatus := post.Get("mauditstatus_" + istr)
+ prodcata := post.Get("prodcata_" + istr)
+ areacode := post.Get("areacode_" + istr)
+ renzheng := post.Get("renzheng_" + istr)
+ npcyc := post.Get("npcyc_" + istr)
+ runsec := post.Get("runsec_" + istr)
+ acttm := post.Get("acttm_" + istr)
+ ton := post.Get("ton_" + istr)
+ price := post.Get("price_" + istr)
+ lat := post.Get("lat_" + istr)
+ lng := post.Get("lng_" + istr)
+ url := post.Get("url_" + istr)
+ idcard := post.Get("idcard_" + istr)
+ weightg := post.Get("weightg_" + istr)
+ eartmpr := post.Get("eartmpr_" + istr)
+ content := post.Get("content_" + istr)
+ csql := c.NewCiySQL("demo_normal")
+ csql.Where("name", name)
+ csql.Column("id")
+ chkid := c.Toint(c.CiyDB.Get1(csql))
+ if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
+ return fmt.Errorf("发现数据有重复")
+ }
+ updata := map[string]any{}
+ updata["auditstatus"] = auditstatus
+ updata["audituser"] = audituser
+ updata["audittimes"] = audittimes
+ updata["name"] = name
+ updata["menuid"] = menuid
+ updata["filesize"] = filesize
+ updata["metre"] = metre
+ updata["bankmoney"] = bankmoney
+ updata["setdate"] = setdate
+ updata["settimes"] = settimes
+ updata["isuse"] = isuse
+ updata["isopen"] = isopen
+ updata["unit"] = unit
+ updata["mauditstatus"] = mauditstatus
+ updata["prodcata"] = prodcata
+ updata["areacode"] = areacode
+ updata["renzheng"] = renzheng
+ updata["npcyc"] = npcyc
+ updata["runsec"] = runsec
+ updata["acttm"] = acttm
+ updata["ton"] = ton
+ updata["price"] = price
+ updata["lat"] = lat
+ updata["lng"] = lng
+ updata["url"] = url
+ updata["idcard"] = idcard
+ updata["weightg"] = weightg
+ updata["eartmpr"] = eartmpr
+ updata["content"] = content
+ updata["addtimes"] = c.Tostamp()
+ csql = c.NewCiySQL("demo_normal")
+ var err error
+ if id == 0 {
+ _, err = c.CiyDB.Insert(csql, updata)
+ } else {
+ csql.Where("id", id)
+ _, err = c.CiyDB.Update(csql, updata)
+ }
+ if err != nil {
+ return fmt.Errorf("导入失败:%v", err)
+ }
+ }
+ return nil
+ })
+ if err != nil {
+ return c.ErrJSON(w, err.Error())
+ }
+ return c.SuccJSON(w, r)
+}
diff --git a/web/admin/demo/normal.html b/web/admin/demo/normal.html
new file mode 100644
index 0000000..e2a299b
--- /dev/null
+++ b/web/admin/demo/normal.html
@@ -0,0 +1,914 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/demo/normal.php b/web/admin/demo/normal.php
new file mode 100644
index 0000000..6b9c747
--- /dev/null
+++ b/web/admin/demo/normal.php
@@ -0,0 +1,1082 @@
+get('query');
+ $csql = new \ciy\sql('demo_normal');
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('auditstatus', $liid);
+ $val = objstr($query, 'audituser');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('zc_cata');
+ $csqlt->where('cbid in (select id from zc_cata where cbid=0 and codeid=\'audituser\')');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('audituser', $trow['codeid']);
+ $query['audituser'] = $trow['name'];
+ } else {
+ $csql->where('audituser=0');
+ }
+ }
+ $csql->wheredaterange('audittimes', objstr($query, 'audittimes'));
+ $csql->where('auditmsg like', objstr($query, 'auditmsg'));
+ $csql->where('name like', objstr($query, 'name'));
+ $val = objstr($query, 'menuid');
+ if (!empty($val)) {
+ $csqlt = new \ciy\sql('zc_menu');
+ $csqlt->where('name like', $val);
+ $trow = $db->getone($csqlt);
+ if (is_array($trow)) {
+ $csql->where('menuid', $trow['id']);
+ $query['menuid'] = $trow['name'];
+ } else {
+ $csql->where('menuid=0');
+ }
+ }
+ $csql->where('isopen', objstr($query, 'isopen'));
+ $csql->where('mauditstatus like', ',' . objstr($query, 'mauditstatus') . ',');
+ $csql->wherenumrange('ton', objstr($query, 'ton_1'), objstr($query, 'ton_2'), 1000000);
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $csql->column('!content,md', $db->getraw('show full fields from demo_normal'));
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if($rows === false)
+ return errjson($db->error);
+ $ret = array('where' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'demo_normal');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = array();
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'audituser', 'name' => '审核人', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'audittimes', 'name' => '审核时间');
+ $input[] = array('type' => 'input', 'form' => 'auditmsg', 'name' => '审核理由', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'name', 'name' => '默认标题', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'menuid', 'name' => '所属菜单', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'select', 'form' => 'isopen', 'name' => '是否开启', 'all' => '全部', 'select' => '开启.关闭');
+ $input[] = array('type' => 'select', 'form' => 'mauditstatus', 'name' => '多选状态', 'all' => '全部', 'select' => 'auditstatus');
+ $input[] = array('type' => 'num', 'form' => 'ton', 'name' => '吨位', 'prop' => ' style="width:4em;"');
+ $ret['once']['input'] = $input;
+ $csql = (new \ciy\sql('zc_depart'))->column('id,name,upid');
+ $ret['once']['zc_depart'] = $db->get($csql);
+ }
+ $ret['zc_menu'] = getrelation($db, $rows, 'zc_menu', 'menuid');
+ return succjson($ret);
+ }
+
+ public static function json_getdata() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $act = $post->get('act');
+ if ($id > 0) {
+ $csql = new \ciy\sql('demo_normal');
+ $csql->where('id', $id);
+ $row = $db->getone($csql);
+ if (!is_array($row))
+ return errjson('数据不存在');
+ if ($act == 'view' || $act == 'review') {
+ $csql = (new \ciy\sql('zc_menu'))->column('id,name');
+ $csql->where('id', $row['menuid']);
+ $ret['zc_menu'] = $db->get($csql);
+ }
+ } else {
+ $row = array();
+ }
+ $ret['data'] = $row;
+ if ($act == 'edit') {
+ $csql = (new \ciy\sql('zc_menu'))->column('id,name');
+ $ret['zc_menu'] = $db->get($csql);
+ }
+ return succjson($ret);
+ }
+
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $name = $post->get('name');
+ $menuid = $post->getint('menuid');
+ $filesize = $post->getint('filesize');
+ $metre = $post->getint('metre');
+ $bankmoney = $post->getint('bankmoney');
+ $setdate = $post->getint('setdate');
+ $settimes = $post->getint('settimes');
+ $dayclock = $post->getint('dayclock');
+ $downurl = $post->get('downurl');
+ $avar = $post->get('avar');
+ $isuse = $post->getint('isuse');
+ $isopen = $post->getint('isopen');
+ $unit = $post->get('unit');
+ $sigstatus = $post->getint('sigstatus');
+ $mauditstatus = $post->get('mauditstatus');
+ $prodcata = $post->getint('prodcata');
+ $areacode = $post->getint('areacode');
+ $renzheng = $post->getint('renzheng');
+ $ppint = $post->getint('ppint');
+ $npcyc = $post->getint('npcyc');
+ $runsec = $post->getint('runsec');
+ $acttm = $post->getint('acttm');
+ $imgs = $post->get('imgs');
+ $ton = $post->getint('ton');
+ $price = $post->getint('price');
+ $lat = $post->getint('lat');
+ $lng = $post->getint('lng');
+ $pct = $post->getint('pct');
+ $url = $post->get('url');
+ $weightg = $post->getint('weightg');
+ $eartmpr = $post->getint('eartmpr');
+ $qian = $post->getint('qian');
+ $meishi = $post->getint('meishi');
+ $weight = $post->getint('weight');
+ $height = $post->getint('height');
+ $skt = $post->getint('skt');
+ $idcard = $post->get('idcard');
+ $content = $post->get('content');
+ $md = $post->get('md');
+ if (empty($name))
+ return errjson('请填写默认标题');
+ $datarow = null;
+ if ($id > 0) {
+ $csql = new \ciy\sql('demo_normal');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ }
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['name'] = $name;
+ $updata['menuid'] = $menuid;
+ $updata['filesize'] = $filesize;
+ $updata['metre'] = $metre;
+ $updata['bankmoney'] = $bankmoney;
+ $updata['setdate'] = $setdate;
+ $updata['settimes'] = $settimes;
+ $updata['dayclock'] = $dayclock;
+ $updata['downurl'] = $downurl;
+ $updata['avar'] = $avar;
+ $updata['isuse'] = $isuse;
+ $updata['isopen'] = $isopen;
+ $updata['unit'] = $unit;
+ $updata['sigstatus'] = $sigstatus;
+ $updata['mauditstatus'] = $mauditstatus;
+ $updata['prodcata'] = $prodcata;
+ $updata['areacode'] = $areacode;
+ $updata['renzheng'] = $renzheng;
+ $updata['ppint'] = $ppint;
+ $updata['npcyc'] = $npcyc;
+ $updata['runsec'] = $runsec;
+ $updata['acttm'] = $acttm;
+ $updata['imgs'] = $imgs;
+ $updata['ton'] = $ton;
+ $updata['price'] = $price;
+ $updata['lat'] = $lat;
+ $updata['lng'] = $lng;
+ $updata['pct'] = $pct;
+ $updata['url'] = $url;
+ $updata['weightg'] = $weightg;
+ $updata['eartmpr'] = $eartmpr;
+ $updata['qian'] = $qian;
+ $updata['meishi'] = $meishi;
+ $updata['weight'] = $weight;
+ $updata['height'] = $height;
+ $updata['skt'] = $skt;
+ $updata['idcard'] = $idcard;
+ $updata['addtimes'] = tostamp();
+ $updata['content'] = $content;
+ $updata['md'] = $md;
+ $csql = new \ciy\sql('demo_normal');
+ if ($id > 0) {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ } else {
+ $updata['id'] = 0;
+ $updata['auditstatus'] = 0;
+ $updata['audituser'] = 0;
+ $updata['audittimes'] = 0;
+ $updata['auditmsg'] = '';
+ $updata['addtimes'] = tostamp();
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增失败:' . $db->error);
+ $id = $db->insert_id();
+ }
+ $updata['id'] = $id;
+ //savelogdb($db, $rsuser['id'], 'demo_normal', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ $ret['zc_menu'] = getrelation($db, [$updata], 'zc_menu', 'menuid');
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('demo_normal');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'demo_normal');
+ savelogdb($db, $rsuser['id'], 'demo_normal', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_audit() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p a'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $auditstatus = $post->getint('auditstatus');
+ $auditmsg = $post->get('auditmsg');
+ if ($auditstatus == 90 && empty($auditmsg))
+ return errjson('请填写驳回原因');
+ $csql = new \ciy\sql('demo_normal');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $ids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $csql = new \ciy\sql('demo_normal');
+ $csql->where('id', $row['id']);
+ $updata = array();
+ $updata['auditstatus'] = $auditstatus;
+ $updata['audituser'] = $rsuser['id'];
+ $updata['audittimes'] = tostamp();
+ $updata['auditmsg'] = $auditmsg;
+ $csql = new \ciy\sql('demo_normal');
+ $csql->where('id', $row['id']);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('审核失败:' . $db->error);
+ $ids[] = $row['id'];
+ if ($auditstatus == 100) {
+ }
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ $ret['ids'] = $ids;
+ return succjson($ret);
+ }
+
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p e'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'auditstatus', 'name' => '审核状态');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'audituser', 'name' => '审核人');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'audittimes', 'name' => '审核时间');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'auditmsg', 'name' => '审核理由');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '默认标题');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'menuid', 'name' => '所属菜单');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'filesize', 'name' => '文件大小');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'metre', 'name' => '长度');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'bankmoney', 'name' => '贷款金额');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'setdate', 'name' => '设置日期');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'settimes', 'name' => '设置时间');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'dayclock', 'name' => '营业时间');
+ $fields[] = array('style' => 'c', 'width' => 300, 'field' => 'downurl', 'name' => '文档');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'avar', 'name' => '头像');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'isuse', 'name' => '是否使用');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'isopen', 'name' => '是否开启');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'unit', 'name' => '库存单位');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'sigstatus', 'name' => '单选状态');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'mauditstatus', 'name' => '多选状态');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'prodcata', 'name' => '组织结构');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'areacode', 'name' => '所在地区');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'renzheng', 'name' => '认证情况');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'ppint', 'name' => '临时字典');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'npcyc', 'name' => '执行周期');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'runsec', 'name' => '执行用时');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'acttm', 'name' => '活动期数');
+ $fields[] = array('style' => 'l', 'width' => 300, 'field' => 'imgs', 'name' => '活动花絮');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'ton', 'name' => '吨位');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'price', 'name' => '单价');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'lat', 'name' => '纬度');
+ $fields[] = array('style' => 'c', 'width' => 100, 'field' => 'lng', 'name' => '位置');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'pct', 'name' => '百分比');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'url', 'name' => '链接');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'weightg', 'name' => '体重');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'eartmpr', 'name' => '耳温');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'qian', 'name' => '中式钱');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'meishi', 'name' => '美式钱');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'weight', 'name' => '重量');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'height', 'name' => '长度');
+ $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'skt', 'name' => '科学数');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'idcard', 'name' => '身份证号');
+ $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '添加时间');
+ $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'content', 'name' => '介绍');
+ $code_auditstatus = getcatas($db, 'auditstatus');
+ $code_audituser = getcatas($db, 'adminuser');
+ $code_menuid = getrelation($db, $rows, 'zc_menu', 'menuid', 'id,name');
+ $code_isuse = $db->getdbcodes('demo_normal', 'isuse');
+ $code_isopen = $db->getdbcodes('demo_normal', 'isopen');
+ $code_sigstatus = getcatas($db, 'auditstatus');
+ $code_mauditstatus = getcatas($db, 'auditstatus');
+ $code_prodcata = $db->get((new \ciy\sql('zc_depart'))->column('id,name,upid'));
+ $code_areacode = $db->get((new \ciy\sql('ciy_arearpc'))->column('id,name,upid'));
+ $code_renzheng = $db->getdbcodes('demo_normal', 'renzheng');
+ $code_ppint = $db->getdbcodes('demo_normal', 'ppint');
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'auditstatus')
+ $val = ccode($code_auditstatus, $val);
+ if ($field == 'audituser')
+ $val = ccode($code_audituser, $val);
+ if ($field == 'audittimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'menuid')
+ $val = ccode($code_menuid, $val);
+ if ($field == 'filesize')
+ $val = number_format($val / 1024, 2) . 'KB';
+ if ($field == 'metre')
+ $val = number_format($val / 1000, 2) . '米';
+ if ($field == 'bankmoney')
+ $val = number_format($val / 1000000, 3) . '万元';
+ if ($field == 'setdate')
+ $val = ($val == 0 ? '--' : date('Y-m-d', $val));
+ if ($field == 'settimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'dayclock')
+ $val = ($val == 0 ? '--' : totimepoint($val));
+ if ($field == 'isuse')
+ $val = ($val == 1 ? $code_isuse[0]['name'] : @$code_isuse[1]['name']);
+ if ($field == 'isopen')
+ $val = ($val == 1 ? $code_isopen[0]['name'] : @$code_isopen[1]['name']);
+ if ($field == 'unit')
+ $val = ($val == '' ? '--' : implode(',', tounit($val)));
+ if ($field == 'sigstatus')
+ $val = ccode($code_sigstatus, $val);
+ if ($field == 'mauditstatus')
+ $val = implode(',', scode($code_mauditstatus, $val));
+ if ($field == 'prodcata')
+ $val = implode('-', mcode($code_prodcata, $val));
+ if ($field == 'areacode')
+ $val = implode('-', mcode($code_areacode, $val));
+ if ($field == 'renzheng')
+ $val = implode(',', bcode($code_renzheng, $val));
+ if ($field == 'ppint')
+ $val = ccode($code_ppint, $val);
+ if ($field == 'npcyc')
+ $val = ($val == 0 ? '--' : tocyc($val));
+ if ($field == 'runsec')
+ $val .= '秒';
+ if ($field == 'ton')
+ $val = number_format($val / 1000000, 3) . '吨';
+ if ($field == 'price')
+ $val = number_format($val / 100, 2);
+ if ($field == 'pct')
+ $val = number_format($val / 100, 2) . '%';
+ if ($field == 'weightg')
+ $val = number_format($val / 1000, 3) . 'KG';
+ if ($field == 'eartmpr')
+ $val = number_format($val / 1000, 1) . '℃';
+ if ($field == 'qian')
+ $val = number_format($val / 100, 2) . '元';
+ if ($field == 'weight')
+ $val = number_format($val / 1000, 3) . 'KG';
+ if ($field == 'height')
+ $val = number_format($val / 1000, 3) . '米';
+ if ($field == 'skt')
+ $val = number_format($val / 1000, 3) . 'SKT';
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+ $param['toptitle'] = '复杂功能数据报表';
+ $str = \ciy\excel::general_excel_xml($param);
+ $filename = '';
+ if (empty($filename))
+ $filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
+ $filename .= '.xls';
+ file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
+ return succjson(array('url' => '/ud/tmp/' . $filename));
+ }
+
+ public static function json_importxls_in() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p i'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $file = PATH_WEB . '/ud' . $post->get('file');
+ if (!file_exists($file))
+ return errjson('文件不存在');
+ require_once PATH_ROOT . '../libs/phpoffice/autoload.php';
+ $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file);
+ $sheet = $spreadsheet->getActiveSheet();
+ $datas = $sheet->toArray('', true, true, false);
+ $datacnt = count($datas);
+ if ($datacnt < 2)
+ return errjson('数据为空');
+ $html = '';
+ $headsn = array();
+ $headsn[] = '行码.id';
+ $headsn[] = '默认标题.name';
+ $headsn[] = '所属菜单.menuid';
+ $headsn[] = '文件大小.filesize';
+ $headsn[] = '长度.metre';
+ $headsn[] = '贷款金额.bankmoney';
+ $headsn[] = '设置日期.setdate';
+ $headsn[] = '设置时间.settimes';
+ $headsn[] = '营业时间.dayclock';
+ $headsn[] = '是否使用.isuse';
+ $headsn[] = '是否开启.isopen';
+ $headsn[] = '库存单位.unit';
+ $headsn[] = '单选状态.sigstatus';
+ $headsn[] = '多选状态.mauditstatus';
+ $headsn[] = '组织结构.prodcata';
+ $headsn[] = '所在地区.areacode';
+ $headsn[] = '认证情况.renzheng';
+ $headsn[] = '临时字典.ppint';
+ $headsn[] = '执行周期.npcyc';
+ $headsn[] = '执行用时.runsec';
+ $headsn[] = '活动期数.acttm';
+ $headsn[] = '吨位.ton';
+ $headsn[] = '单价.price';
+ $headsn[] = '位置.lng';
+ $headsn[] = '百分比.pct';
+ $headsn[] = '链接.url';
+ $headsn[] = '体重.weightg';
+ $headsn[] = '耳温.eartmpr';
+ $headsn[] = '中式钱.qian';
+ $headsn[] = '美式钱.meishi';
+ $headsn[] = '重量.weight';
+ $headsn[] = '长度.height';
+ $headsn[] = '科学数.skt';
+ $headsn[] = '身份证号.idcard';
+ $headsn[] = '介绍.content';
+ $xlsidx = 1;
+ if (empty($datas[0][count($headsn) - 1]))
+ $xlsidx = 2;
+ $heads = array();
+ foreach ($headsn as $_head) {
+ $hd = explode('.', $_head);
+ if (count($hd) < 2)
+ continue;
+ $heads[] = array(
+ 'idx' => array_search($hd[0], $datas[$xlsidx - 1]), 'fld' => $hd[1], 'name' => $hd[0]
+ );
+ }
+ $code_menuid = $db->get((new \ciy\sql('zc_menu'))->column('id,name'));
+ $code_isuse = $db->getdbcodes('demo_normal', 'isuse');
+ $code_isopen = $db->getdbcodes('demo_normal', 'isopen');
+ $code_sigstatus = getcatas($db, 'auditstatus');
+ $code_mauditstatus = getcatas($db, 'auditstatus');
+ $code_prodcata = $db->get((new \ciy\sql('zc_depart'))->column('id,name,upid'));
+ $code_areacode = $db->get((new \ciy\sql('ciy_arearpc'))->column('id,name,upid'));
+ $code_renzheng = $db->getdbcodes('demo_normal', 'renzheng');
+ $code_ppint = $db->getdbcodes('demo_normal', 'ppint');
+ $html .= '| # | '; + foreach ($heads as $arr) { + $html .= '' . $arr['name'] . ' | '; + } + $html .= '' . $lineidx . ' | ';
+ $bempty = true;
+ $unqs = array();
+ $csql = new \ciy\sql('demo_normal');
+ foreach ($heads as $arr) {
+ $name = $arr['name'];
+ $errmsg = ''; //数据有误,显示红色说明
+ $showdat = ''; //显示在表格中的数据
+ if ($arr['idx'] > -1)
+ $showdat = trim($datas[$rowidx][$arr['idx']]);
+ if ($showdat == '--')
+ $showdat = '';
+ $value = $showdat; //在表单中的数据(转换后)
+ $ext = ''; //扩展表单
+ if ($name == '行码') {
+ if (empty($showdat)) {
+ $value = 0;
+ $showdat = '新增';
+ } else {
+ $id = deid($showdat);
+ if ($id == 0)
+ $errmsg = $name . '解析错误';
+ else {
+ $csqlchk = new \ciy\sql('demo_normal');
+ $csqlchk->where('id', $id)->column('id');
+ $chkid = toint($db->get1($csqlchk));
+ if ($chkid != $id)
+ $errmsg = $name . '在数据库中不存在';
+ $value = $id;
+ }
+ }
+ } else if ($name == '默认标题') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ }
+ } else if ($name == '所属菜单') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $value = dcode($code_menuid, $showdat);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ } else if ($name == '文件大小') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('KB', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 1024);
+ $showdat .= 'KB';
+ }
+ } else if ($name == '长度') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('米', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 1000);
+ $showdat .= '米';
+ }
+ } else if ($name == '贷款金额') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('万元', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 1000000);
+ $showdat .= '万元';
+ }
+ } else if ($name == '设置日期') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $value = tostamp($showdat);
+ if ($value === 0) {
+ $errmsg = $name . '时间格式错误';
+ } else {
+ $showdat = date('Y-m-d', $value);
+ }
+ }
+ } else if ($name == '设置时间') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $value = tostamp($showdat);
+ if ($value === 0) {
+ $errmsg = $name . '时间格式错误';
+ } else {
+ $showdat = date('Y-m-d H:i', $value);
+ }
+ }
+ } else if ($name == '营业时间') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $tps = explode(':', $showdat);
+ $value = 0;
+ if (count($tps) == 2)
+ $value = $tps[0] * 3600 + $tps[1] * 60;
+ else if (count($tps) == 3)
+ $value = $tps[0] * 3600 + $tps[1] * 60 + $tps[2];
+ if ($value === 0) {
+ $errmsg = $name . '时间格式错误';
+ } else {
+ $showdat = totimepoint($value, true);
+ }
+ }
+ } else if ($name == '是否使用') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ if ($showdat == $code_isuse[0]['name']) {
+ $value = 1;
+ $showdat = $code_isuse[0]['name'];
+ } else {
+ $value = 2;
+ $showdat = $code_isuse[1]['name'];
+ }
+ }
+ } else if ($name == '是否开启') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ if ($showdat == $code_isopen[0]['name']) {
+ $value = 1;
+ $showdat = $code_isopen[0]['name'];
+ } else {
+ $value = 2;
+ $showdat = $code_isopen[1]['name'];
+ }
+ }
+ } else if ($name == '库存单位') {
+ if (empty($showdat)) {
+ $value = '';
+ } else {
+ $us = explode(',', $showdat);
+ $us = array_reverse($us);
+ if (preg_match('/1(.*?)(\d+)(.*)/', $us[0], $matches)) {
+ $unitx = $matches[1];
+ $value = $matches[3] . '|' . $matches[2] . '|' . $matches[1];
+ if (isset($us[1])) {
+ if (preg_match('/1(.*?)(\d+)(.*)/', $us[1], $matches)) {
+ if ($unitx != $matches[3]) {
+ $errmsg = $name . '中间单位不匹配';
+ } else {
+ $value .= '|' . $matches[2] . '|' . $matches[1];
+ }
+ } else {
+ $errmsg = $name . '第二段格式错误';
+ }
+ }
+ } else {
+ if (preg_match('/\d/', $us[0]) > 0)
+ $errmsg = $name . '第一段不能包含数字';
+ else
+ $value = $us[0];
+ }
+ }
+ } else if ($name == '单选状态') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $value = dcode($code_sigstatus, $showdat);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ } else if ($name == '多选状态') {
+ if (empty($showdat)) {
+ $value = '';
+ } else {
+ $tdats = explode(',', $showdat);
+ $vals = array();
+ foreach ($tdats as $da) {
+ $tval = dcode($code_mauditstatus, $da);
+ if ($tval == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ $vals[] = $tval;
+ }
+ $value = implode(',', $vals);
+ }
+ } else if ($name == '组织结构') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $dats = explode('-', $showdat);
+ $value = dcode($code_prodcata, $dats[count($dats) - 1]);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ } else if ($name == '所在地区') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $dats = explode('-', $showdat);
+ $value = dcode($code_areacode, $dats[count($dats) - 1]);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ } else if ($name == '认证情况') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $dats = explode(',', $showdat);
+ $tdat = 0;
+ foreach ($dats as $da) {
+ $bti = dcode($code_renzheng, $da);
+ if ($bti < 1) {
+ $errmsg = $name . '文字与系统数据不匹配';
+ } else {
+ $tdat += (1 << ($bti - 1));
+ }
+ }
+ $value = $tdat;
+ }
+ } else if ($name == '临时字典') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $value = dcode($code_ppint, $showdat);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ } else if ($name == '执行周期') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $last = substr($showdat, -3);
+ $dd = toint(substr($showdat, 0, -3));
+ if ($dd == 0) {
+ $errmsg = $name . '周期数字错误';
+ } else if ($last == '天') {
+ $value = $dd * 86400;
+ } else if ($last == '月') {
+ $value = -$dd;
+ } else if ($last == '秒') {
+ $value = $dd;
+ } else {
+ $errmsg = $name . '周期单位错误';
+ }
+ }
+ } else if ($name == '执行用时') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('秒', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint($showdat);
+ $showdat .= '秒';
+ }
+ } else if ($name == '活动期数') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', $showdat);
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint($showdat);
+ }
+ } else if ($name == '吨位') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('吨', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 1000000);
+ $showdat .= '吨';
+ }
+ } else if ($name == '单价') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', $showdat);
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 100);
+ }
+ } else if ($name == '位置') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', $showdat);
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = (float)$showdat;
+ }
+ } else if ($name == '监管数量') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', $showdat);
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = (float)$showdat;
+ }
+ } else if ($name == '百分比') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('%', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 100);
+ $showdat .= '%';
+ }
+ } else if ($name == '链接') {
+ if (empty($showdat)) {
+ $value = '';
+ } else {
+ }
+ } else if ($name == '体重') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('KG', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 1000);
+ $showdat .= 'KG';
+ }
+ } else if ($name == '耳温') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('℃', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 1000);
+ $showdat .= '℃';
+ }
+ } else if ($name == '中式钱') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('元', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 100);
+ $showdat .= '元';
+ }
+ } else if ($name == '美式钱') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('¤', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 100);
+ $showdat .= '¤';
+ }
+ } else if ($name == '重量') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('KG', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 1000);
+ $showdat .= 'KG';
+ }
+ } else if ($name == '长度') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('米', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 1000);
+ $showdat .= '米';
+ }
+ } else if ($name == '科学数') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $showdat = str_replace(',', '', str_replace('SKT', '', $showdat));
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 1000);
+ $showdat .= 'SKT';
+ }
+ } else if ($name == '身份证号') {
+ if (empty($showdat)) {
+ $value = '';
+ } else {
+ }
+ } else if ($name == '介绍') {
+ if (empty($showdat)) {
+ $value = '';
+ } else {
+ }
+ }
+ if (!empty($showdat))
+ $bempty = false;
+ if (empty($errmsg))
+ $hrhtml .= '' . $showdat . '' . $ext . ' | ';
+ else
+ $hrhtml .= '' . $showdat . ' | ';
+ }
+ if ($bempty)
+ continue;
+ if (count($unqs) > 0) {
+ $unq = implode('|', $unqs);
+ if (in_array($unq, $uniques))
+ $firsthtml = '重复 | ';
+ else {
+ $uniques[] = $unq;
+ $csql->column('id');
+ $chkid = toint($db->get1($csql));
+ if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
+ $firsthtml = '重复 | ';
+ }
+ }
+ $html .= '
|---|---|
共' . $cnt . '条数据';
+ return succjson(array('html' => $html, 'count' => $cnt));
+ }
+
+ public static function json_importxls_data() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p i'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $total = $post->getint('total');
+ try {
+ $db->begin();
+ for ($i = 1; $i <= $total; $i++) {
+ $id = $post->getint('id_' . $i);
+ $updata = array();
+ $updata['name'] = $post->get('name_' . $i);
+ $updata['menuid'] = $post->get('menuid_' . $i);
+ $updata['filesize'] = $post->get('filesize_' . $i);
+ $updata['metre'] = $post->get('metre_' . $i);
+ $updata['bankmoney'] = $post->get('bankmoney_' . $i);
+ $updata['setdate'] = $post->get('setdate_' . $i);
+ $updata['settimes'] = $post->get('settimes_' . $i);
+ $updata['dayclock'] = $post->get('dayclock_' . $i);
+ $updata['isuse'] = $post->get('isuse_' . $i);
+ $updata['isopen'] = $post->get('isopen_' . $i);
+ $updata['unit'] = $post->get('unit_' . $i);
+ $updata['sigstatus'] = $post->get('sigstatus_' . $i);
+ $updata['mauditstatus'] = $post->get('mauditstatus_' . $i);
+ $updata['prodcata'] = $post->get('prodcata_' . $i);
+ $updata['areacode'] = $post->get('areacode_' . $i);
+ $updata['renzheng'] = $post->get('renzheng_' . $i);
+ $updata['ppint'] = $post->get('ppint_' . $i);
+ $updata['npcyc'] = $post->get('npcyc_' . $i);
+ $updata['runsec'] = $post->get('runsec_' . $i);
+ $updata['acttm'] = $post->get('acttm_' . $i);
+ $updata['ton'] = $post->get('ton_' . $i);
+ $updata['price'] = $post->get('price_' . $i);
+ $updata['lng'] = $post->get('lng_' . $i);
+ $updata['pct'] = $post->get('pct_' . $i);
+ $updata['url'] = $post->get('url_' . $i);
+ $updata['weightg'] = $post->get('weightg_' . $i);
+ $updata['eartmpr'] = $post->get('eartmpr_' . $i);
+ $updata['qian'] = $post->get('qian_' . $i);
+ $updata['meishi'] = $post->get('meishi_' . $i);
+ $updata['weight'] = $post->get('weight_' . $i);
+ $updata['height'] = $post->get('height_' . $i);
+ $updata['skt'] = $post->get('skt_' . $i);
+ $updata['idcard'] = $post->get('idcard_' . $i);
+ $updata['content'] = $post->get('content_' . $i);
+ $csql = new \ciy\sql('demo_normal');
+ if ($id == 0) {
+ $updata['auditstatus'] = 2;
+ $updata['addtimes'] = tostamp();
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增导入失败:' . $db->error);
+ } else {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新导入失败:' . $db->error);
+ }
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ return succjson();
+ }
+}
diff --git a/web/admin/demo/safeop.html b/web/admin/demo/safeop.html
new file mode 100644
index 0000000..52b211d
--- /dev/null
+++ b/web/admin/demo/safeop.html
@@ -0,0 +1,414 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/demo/safeop.php b/web/admin/demo/safeop.php
new file mode 100644
index 0000000..53afdbd
--- /dev/null
+++ b/web/admin/demo/safeop.php
@@ -0,0 +1,582 @@
+get('query');
+ $csql = new \ciy\sql('ap_transfer');
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('accounttype', $liid);
+ $val = objstr($query, 'id');
+ if (!empty($val) && $val[0] == 'P')
+ $csql->where('id', substr($val, 1));
+ $csql->wherenumrange('amount', objstr($query, 'amount_1'), objstr($query, 'amount_2'), 100);
+ $csql->where('tranaccount like', objstr($query, 'tranaccount'));
+ $csql->where('tranname like', objstr($query, 'tranname'));
+ $csql->where('tranidid like', objstr($query, 'tranidid'));
+ $csql->where('memo like', objstr($query, 'memo'));
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $csql->where('apiuser', objstr($query, 'apiuser'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $csql->where('orderstatus', 10);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if ($rows === false)
+ return errjson($db->error);
+ $ret = array('where' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'ap_transfer');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ if ($fr == 'merchantid')
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $field['orderstatus']['c'] = '';
+ $field['fee']['c'] = '';
+ $field['wano']['c'] = '';
+ $field['uptimes']['c'] = '';
+ $field['orderno']['c'] = '';
+ $field['pubkeyid']['c'] = '';
+ $field['signtimes']['c'] = '';
+ $field['tranreceipt']['c'] = '';
+ $field['errmsg']['c'] = '';
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = array();
+ $input = array();
+ $input[] = array('type' => 'input', 'form' => 'id', 'name' => '流水号', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'num', 'form' => 'amount', 'name' => '金额', 'prop' => ' style="width:4em;"');
+ $input[] = array('type' => 'input', 'form' => 'tranaccount', 'name' => '账号', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'tranname', 'name' => '姓名', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'tranidid', 'name' => '身份证号', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'input', 'form' => 'memo', 'name' => '备注', 'prop' => ' style="width:8em;"');
+ $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '创建时间');
+ $input[] = array('type' => 'select', 'form' => 'apiuser', 'name' => '操作人', 'all' => '全部', 'select' => 'meruser');
+ $ret['once']['input'] = $input;
+ $csql = new \ciy\sql('hf_merchantbase');
+ $csql->where('id', $rsuser['s_b']);
+ $ret['once']['merchant'] = $db->getone($csql);
+ $csql = new \ciy\sql('hf_merchantpubkey');
+ $csql->where('merchantid', $rsuser['s_b']);
+ $ret['once']['hf_merchantpubkey'] = $db->get($csql);
+ // if($ret['once']['merchant']['safecase'] > 10){
+ // $csql = new \ciy\sql('hf_merchantuser');
+ // $csql->where('id', $ret['once']['merchant']['s_b']);
+ // $ret['once']['merchant'] = $db->getone($csql);
+
+ // }
+ }
+ return succjson($ret);
+ }
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $csql = new \ciy\sql('hf_merchantbase');
+ $csql->where('id', $rsuser['s_b']);
+ $merchantrow = $db->getone($csql);
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $data = array();
+ $data['accounttype'] = $post->getint('accounttype');
+ $data['amount'] = $post->getint('amount');
+ $data['tranaccount'] = $post->get('tranaccount');
+ $data['tranname'] = $post->get('tranname');
+ $data['tranidid'] = $post->get('tranidid');
+ $data['memo'] = $post->get('memo');
+ $retchk = check_transtr($data['amount'], $data['accounttype'], $data['tranaccount'], $data['tranname'], $data['tranidid'], $data['memo'], $merchantrow['safecase']);
+ if (is_string($retchk))
+ return errjson($retchk);
+ if ($id > 0) {
+ $csql = new \ciy\sql('ap_transfer');
+ $csql->where('merchantid', $rsuser['s_b']);
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ }
+ try {
+ $db->begin();
+ $updata = self::updatedata($db, $rsuser, $id, $data, $merchantrow);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+ public static function json_multiedit() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $csql = new \ciy\sql('hf_merchantbase');
+ $csql->where('id', $rsuser['s_b']);
+ $merchantrow = $db->getone($csql);
+ $post = new \ciy\post();
+ $count = $post->getint('count');
+ $datas = array();
+ for ($i = 0; $i < $count; $i++) {
+ if ($post->get('accounttype_' . $i) == '')
+ continue;
+ $data = array();
+ $data['accounttype'] = $post->getint('accounttype_' . $i);
+ $data['accounttype'] = ($data['accounttype'] == 1 ? 20 : 10);
+ $data['amount'] = $post->getint('amount_' . $i);
+ $data['tranaccount'] = $post->get('tranaccount_' . $i);
+ $data['tranname'] = $post->get('tranname_' . $i);
+ $data['tranidid'] = $post->get('tranidid_' . $i);
+ $data['memo'] = $post->get('memo_' . $i);
+ $retchk = check_transtr($data['amount'], $data['accounttype'], $data['tranaccount'], $data['tranname'], $data['tranidid'], $data['memo'], $merchantrow['safecase']);
+ if (is_string($retchk))
+ return errjson('第' . ($i + 1) . '行,' . $retchk);
+ $datas[] = $data;
+ }
+ try {
+ $db->begin();
+ foreach ($datas as $data) {
+ self::updatedata($db, $rsuser, 0, $data, $merchantrow);
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ return succjson();
+ }
+ static function updatedata($db, $rsuser, $id, $data, $merchantrow) {
+ $updata = array();
+ $updata['amount'] = $data['amount'];
+ $updata['accounttype'] = $data['accounttype'];
+ $updata['tranaccount'] = $data['tranaccount'];
+ $updata['tranname'] = $data['tranname'];
+ $updata['tranidid'] = $data['tranidid'];
+ $updata['memo'] = $data['memo'];
+ $updata['apiuser'] = $rsuser['id'];
+ $csql = new \ciy\sql('ap_transfer');
+ if ($id > 0) {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ } else {
+ $updata['providerid'] = $rsuser['s_a'];
+ $updata['merchantid'] = $rsuser['s_b'];
+ $updata['thirdno'] = '';
+ $updata['orderstatus'] = 10;
+ $updata['iswa'] = $merchantrow['bwa'];
+ $updata['wano'] = '';
+ $updata['addtimes'] = tostamp();
+ $updata['signtimes'] = 0;
+ $updata['uptimes'] = 0;
+ $updata['orderno'] = '';
+ $updata['payfundno'] = '';
+ $updata['signature'] = '';
+ $updata['pubkeyid'] = 0;
+ $updata['fee'] = 0;
+ $updata['tranreceipt'] = 10;
+ $updata['errmsg'] = '';
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增失败:' . $db->error);
+ $id = $db->insert_id();
+ }
+ $updata['id'] = $id;
+ return $updata;
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('ap_transfer');
+ $csql->where('merchantid', $rsuser['s_b']);
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ if ($row['orderstatus'] != 10)
+ continue;
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'ap_transfer');
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+
+ public static function json_getdopay() {
+ global $db;
+ $rsuser = verifyfast();
+ $csql = new \ciy\sql('hf_merchantbase');
+ $csql->where('id', $rsuser['s_b']);
+ $merchantrow = $db->getone($csql);
+ $csql = new \ciy\sql('ap_transfer');
+ $csql->where('merchantid', $rsuser['s_b']);
+ $csql->where('orderstatus', 10);
+ $orderrows = $db->get($csql);
+ $ret['datas'] = array();
+ $money = 0;
+ foreach ($orderrows as $orderrow) {
+ $money += $orderrow['amount'];
+ $ret['datas'][] = array(
+ 'id' => $orderrow['id'],
+ 'hash' => hash('sha256', signorder($orderrow))
+ );
+ }
+ $ret['total'] = count($orderrows);
+ $ret['money'] = $money;
+ $ret['safecase'] = $merchantrow['safecase'];
+ if ($ret['safecase'] > 0) {
+ $csql = new \ciy\sql('hf_merchantuser');
+ $csql->where('id', $rsuser['id']);
+ $userrow = $db->getone($csql);
+ if ($userrow['pubkeyid'] > 0) {
+ $csql = new \ciy\sql('hf_merchantpubkey');
+ $csql->where('id', $userrow['pubkeyid']);
+ $csql->where('safecase', $merchantrow['safecase']);
+ $pubkeyrow = $db->getone($csql);
+ $ret['pubkey'] = $pubkeyrow['pubkey'];
+ }
+ }
+ return succjson($ret);
+ }
+ public static function json_dopay() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $csql = new \ciy\sql('hf_merchantuser');
+ $csql->where('id', $rsuser['id']);
+ $userrow = $db->getone($csql);
+ if (empty($userrow['password']))
+ return errjson('请先设置初始登录密码');
+ $csql = new \ciy\sql('hf_merchantalipaycharge');
+ $csql->where('merchantid', $userrow['merchantid']);
+ $csql->where('addtimes<', time() - 60);
+ $csql->where('orderstatus<100');
+ if (toint($db->get1($csql)) > 0)//检查商户余额,结合本次下单金额与手续费欠费金额,是否低于,低于提示。
+ return errjson('有未结算的手续费,请稍后下单,请稍后下单或检查账户余额');
+ $csql = new \ciy\sql('hf_merchantbase');
+ $csql->where('id', $userrow['merchantid']);
+ $merchantrow = $db->getone($csql);
+ if (!is_array($merchantrow))
+ return errjson('商户不存在');
+ $tp = date('H') * 3600 + date('i') * 60 + date('s') + 1;
+ if ($merchantrow['stpt'] < $merchantrow['endpt']) {
+ if ($tp < $merchantrow['stpt'] || $tp > $merchantrow['endpt'])
+ return errjson('当前时间不在服务时间范围内');
+ } else {
+ if ($tp < $merchantrow['stpt'] && $tp > $merchantrow['endpt'])
+ return errjson('当前时间不在服务时间范围内');
+ }
+ if ($merchantrow['saasstatus'] != 10)
+ return errjson('商户已被暂停服务');
+ $csql = new \ciy\sql('hf_providerbase');
+ $csql->where('id', $merchantrow['providerid']);
+ $providerrow = $db->getone($csql);
+ if (!is_array($providerrow))
+ return errjson('服务商不存在');
+ if ($providerrow['providerstatus'] != 10)
+ return errjson('转账服务暂停,请联系服务商!');
+ if ($providerrow['depositmoney'] <= 0)
+ return errjson('转账服务暂停,请联系服务商');
+ $signs = $post->get('sign');
+ if ($merchantrow['safecase'] == 10) {
+ if (empty($userrow['password2']))
+ return errjson('请先在右上角下拉菜单中,设置安全密码');
+ $authtime = $post->getint('auth');
+ if (abs($authtime / 1000 - tostamp()) > 300) {
+ return errjson('您的本地时间与服务器时间相差超过5分钟,请调整本机时间。| # | '; + foreach ($heads as $arr) { + $html .= '' . $arr['name'] . ' | '; + } + $html .= '' . $lineidx . ' | ';
+ $bempty = true;
+ $unqs = array();
+ $csql = new \ciy\sql('ap_transfer');
+ $data = array();
+ foreach ($heads as $arr) {
+ $name = $arr['name'];
+ $errmsg = ''; //数据有误,显示红色说明
+ $showdat = ''; //显示在表格中的数据
+ if ($arr['idx'] > -1)
+ $showdat = trim($datas[$rowidx][$arr['idx']]);
+ if ($showdat == '--')
+ $showdat = '';
+ $value = $showdat; //在表单中的数据(转换后)
+ $ext = ''; //扩展表单
+ if ($name == '行码') {
+ if (empty($showdat)) {
+ $value = 0;
+ $showdat = '新增';
+ } else {
+ $id = deid($showdat);
+ if ($id == 0)
+ $errmsg = $name . '解析错误';
+ else {
+ $csqlchk = new \ciy\sql('ap_transfer');
+ $csqlchk->where('id', $id);
+ $chkrow = $db->getone($csqlchk);
+ if (!is_array($chkrow))
+ $errmsg = $name . '在数据库中不存在';
+ if ($chkrow['orderstatus'] != 10)
+ $errmsg = $name . '状态错误';
+ $value = $id;
+ }
+ }
+ } else if ($name == '账号类型') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ $value = dcode($code_accounttype, $showdat);
+ $data['accounttype'] = $data;
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ } else if ($name == '金额') {
+ $showdat = str_replace(',', '', $showdat);
+ if (!is_numeric($showdat))
+ $errmsg = $name . '不是数字';
+ else
+ $value = toint((float)$showdat * 100);
+ $data['amount'] = $value;
+ if ($value < 0.1)
+ $errmsg = $name . '不能小于0.1元';
+ } else if ($name == '账号') {
+ if (empty($showdat)) {
+ $errmsg = $name . '必填';
+ }
+ $data['tranaccount'] = $showdat;
+ } else if ($name == '姓名') {
+ if (empty($showdat)) {
+ $errmsg = $name . '必填';
+ }
+ $data['tranname'] = $showdat;
+ } else if ($name == '身份证号') {
+ if (empty($showdat)) {
+ $value = '';
+ }
+ $data['tranidid'] = $showdat;
+ } else if ($name == '备注') {
+ if (empty($showdat)) {
+ $value = '';
+ }
+ $data['memo'] = $showdat;
+ }
+ if (!empty($showdat))
+ $bempty = false;
+
+ if (empty($errmsg))
+ $hrhtml .= '' . $showdat . '' . $ext . ' | ';
+ else
+ $hrhtml .= '' . $showdat . ' | ';
+ }
+ if ($bempty)
+ continue;
+
+ $retchk = check_transtr($data['amount'], $data['accounttype'], $data['tranaccount'], $data['tranname'], $data['tranidid'], $data['memo'], $merchantrow['safecase']);
+ if (is_string($retchk))
+ $firsthtml = '重复 | ';
+ else if (count($unqs) > 0) {
+ $unq = implode('|', $unqs);
+ if (in_array($unq, $uniques))
+ $firsthtml = '重复 | ';
+ else {
+ $uniques[] = $unq;
+ $csql->column('id');
+ $chkid = toint($db->get1($csql));
+ if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
+ $firsthtml = '重复 | ';
+ }
+ }
+ $html .= '
|---|---|
共' . $cnt . '条数据';
+ return succjson(array('html' => $html, 'count' => $cnt));
+ }
+
+ public static function json_importxls_data() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p i'))
+ // return errjson('您未被授权操作');
+ $csql = new \ciy\sql('hf_merchantbase');
+ $csql->where('id', $rsuser['s_b']);
+ $merchantrow = $db->getone($csql);
+ $post = new \ciy\post();
+ $total = $post->getint('total');
+ try {
+ $db->begin();
+ for ($i = 1; $i <= $total; $i++) {
+ $id = $post->getint('id_' . $i);
+ $data = array();
+ $data['accounttype'] = $post->get('accounttype_' . $i);
+ $data['amount'] = $post->get('amount_' . $i);
+ $data['tranaccount'] = $post->get('tranaccount_' . $i);
+ $data['tranname'] = $post->get('tranname_' . $i);
+ $data['tranidid'] = $post->get('tranidid_' . $i);
+ $data['memo'] = $post->get('memo_' . $i);
+ self::updatedata($db, $rsuser, $id, $data, $merchantrow);
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ return succjson();
+ }
+}
diff --git a/web/admin/demo/setpage.html b/web/admin/demo/setpage.html
new file mode 100644
index 0000000..40fa02b
--- /dev/null
+++ b/web/admin/demo/setpage.html
@@ -0,0 +1,244 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ ' + table.data[id].name + ''";
+ $menubtn .= "\n });";
+ $menubtn .= "\n }";
+ }else{
+ if(empty($extkey))
+ $extkey = $str;
+ $menubtn .= "\n if (btn == '{$extkey}') {";
+ $menubtn .= "\n ciyfn.callfastfunc(dom, '是否{$str}?', '{$extkey}', { ids: id }, function (json) { table.updateline(json) });";
+ $menubtn .= "\n }";
+ }
+ $extcls = '';
+ }
+ $editbtn .= "\n html += `{$str}`;";
+ } else {
+ $bmenubtn = true;
+ $subs = explode('|', $str); //操作|成果|方法|-|修改|删除
+ $editbtn .= "\n html += `{$subs[0]}";
+ $editbtn .= "\n ";
+ $editbtn .= "\n `;";
+ }
+ }
+ $pcaddtit = '';
+ if ($hasadd)
+ $pcaddtit = "id == 0 ? '新建' : ";
+ $codex .= "\n
+
+
+
+data;
+ return $codex;
+}
diff --git a/web/admin/develop/code_pc_php.php b/web/admin/develop/code_pc_php.php
new file mode 100644
index 0000000..18bb3c8
--- /dev/null
+++ b/web/admin/develop/code_pc_php.php
@@ -0,0 +1,1377 @@
+get('table', '', 'all');
+ $subpath = $post->get('subpath', '', 'all');
+ $verifyfunc = $post->get('verifyfunc', '', 'all');
+ $codetable = $post->get('codetable', '', 'all');
+ $saasfield = $post->get('saasfield', '', 'all');
+ $saasusr = $post->get('saasusr', '', 'all');
+ $titname = $post->get('_bcod_titname', '', 'all');
+ $liiddict = str_replace(',', ',', $post->get('_bcod_liiddict', '', 'all'));
+ $selectorder = $post->get('_bcod_select_order', '', 'all');
+ $btntop_newline = $post->get('_bcod_btntop_newline', '', 'all');
+ $btnlist_line = $post->get('_bcod_btnlist_line', '', 'all');
+ $btntop_multibtn = $post->get('_bcod_btntop_multibtn', '', 'all');
+ $savepc = $post->get('_bcod_savepc', '', 'all');
+ $flds = calfld($post);
+
+ $hasview = strpos($btnlist_line, '查看') !== false;
+ $hasadd = strpos($btntop_newline, '添加') !== false; //有添加能力
+ $hasexcelin = strpos($btntop_newline, '导入') !== false;
+ $hasexcelout = strpos($btntop_newline, '导出') !== false;
+ $hasreview = strpos($btnlist_line, '审核') !== false;
+ $hasaudit = strpos($btntop_multibtn, '审核通过') !== false;
+ $chk_audit = false; //审核
+ $chk_matter = false; //流程
+ $chk_getupdate = false; //编辑,查看时,先请求getdata
+ $chk_deltimes = false; //删除时,加删除标记
+ $chk_multistatus = false; //批量列更新
+ $hasedit = strpos($btnlist_line, '修改') !== false;
+ if (!$hasedit)
+ $hasedit = $hasadd;
+ $hasdel = strpos($btnlist_line, '删除') !== false;
+ if ($hasdel === false)
+ $hasdel = strpos($btntop_multibtn, '删除') !== false;
+
+ if ($btntop_multibtn) {
+ $btns = explode(',', $btntop_multibtn);
+ foreach ($btns as $btn) {
+ if ($btn != '批量删除' && $btn != '审核通过' && $btn != '驳回')
+ $chk_multistatus = true;
+ if ($btn[0] == 'A')
+ $chk_multistatus = true;
+ }
+ }
+ $nocolumn = array();
+ foreach ($flds as $fld) {
+ if ($fld['col'] == 'auditstatus')
+ $chk_audit = true; //auditstatus/audituser/audittimes/auditmsg: 加审核按钮
+ if ($fld['col'] == 'matterstatus')
+ $chk_matter = true; //matterstatus/matternextuser/mattertimes: 加流程功能,是否可编辑/删除
+ if ($fld['col'] == 'deltimes')
+ $chk_deltimes = true;
+ if ($fld['set']['listload'] == 'rel') {
+ if (!$fld['set']['noup'])
+ $chk_getupdate = true;
+ }
+ if ($fld['set']['nocmn'] == 'no') {
+ $chk_getupdate = true;
+ $nocolumn[] = $fld['col'];
+ }
+ //list($dicttype, $dictname) = splitdict($fld['data']);
+ }
+
+ $savepc = str_replace('/', '\\', $savepc);
+ $savepc = substr($savepc, strpos($savepc, 'web\\'));
+ $namespace = substr($savepc, 0, strrpos($savepc, '\\'));
+ $classname = substr($savepc, strrpos($savepc, '\\') + 1);
+
+ $codex = "get('query', array());";
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ if (!empty($liiddict)) {
+ $codex .= "\n \$liid = objint(\$query, 'liid');";
+ if (strpos($liiddict, ',') === false) {
+ $codex .= "\n if (\$liid > 0)";
+ $codex .= "\n \$csql->where('{$liiddict}', \$liid);";
+ } else {
+ $lidicts = explode(',', $liiddict);
+ for ($i = 0; $i < count($lidicts); $i++) {
+ if ($i == 0)
+ continue;
+ $codex .= "\n if (\$liid == {$i})";
+ $codex .= "\n \$csql->where('');";
+ }
+ }
+ }
+
+ foreach ($flds as $fld) {
+ $col = $fld['col'];
+ if (!$fld['bqry']) {
+ if ($fld['breq']) {
+ $codex .= "\n \$csql->where('{$col}', get('_{$col}'));";
+ }
+ continue;
+ }
+ $cate = $fld['cate'];
+ if ($cate == 'DB' || $cate == 'CATU' || $cate == 'CATS' || $cate == 'CATM') {
+ $dbquery = isset($fld['set']['dbquery']) ? $fld['set']['dbquery'] : '';
+ if ($dbquery == 'select' || $dbquery == 'window') {
+ if ($cate == 'CATS')
+ $codex .= "\n \$csql->where('{$col} like', ',' . objstr(\$query, '{$col}') . ',');";
+ else
+ $codex .= "\n \$csql->where('{$col}', objstr(\$query, '{$col}'));";
+ } else {
+ $datas = explode('|', $fld['data']);
+ $codex .= "\n \$val = objstr(\$query, '{$col}');";
+ $codex .= "\n if (!empty(\$val)) {";
+ list($dicttype, $dictname) = splitdict($fld['data']);
+ if ($dicttype == 'dictcata') {
+ $codex .= "\n \$csqlt = new \ciy\sql('{$codetable}');";
+ $codex .= "\n \$csqlt->where('cbid in (select id from {$codetable} where cbid=0 and codeid=\'{$col}\')');";
+ $codex .= "\n \$csqlt->where('name like', \$val);";
+ $codex .= "\n \$trow = \$db->getone(\$csqlt);";
+ $codex .= "\n if (is_array(\$trow)) {";
+ $codex .= "\n \$csql->where('{$col}', \$trow['codeid']);";
+ } else {
+ $codex .= "\n \$csqlt = new \ciy\sql('{$datas[0]}');";
+ $codex .= "\n \$csqlt->where('name like', \$val);";
+ $codex .= "\n \$trow = \$db->getone(\$csqlt);";
+ $codex .= "\n if (is_array(\$trow)) {";
+ if ($cate == 'CATS')
+ $codex .= "\n \$csql->where('{$col} like', ',' . \$trow['id'] . ',');";
+ else
+ $codex .= "\n \$csql->where('{$col}', \$trow['id']);";
+ }
+ $codex .= "\n \$query['{$col}'] = \$trow['name'];";
+ $codex .= "\n } else {";
+ $codex .= "\n \$csql->where('{$col}=0');";
+ $codex .= "\n }";
+ $codex .= "\n }";
+ if ($fld['breq']) {
+ $codex .= "\n else";
+ $codex .= "\n \$csql->where('{$col}', get('_{$col}'));";
+ }
+ }
+ } else if ($cate == 'TBIN') {
+ $codex .= "\n \$val = objint(\$query, '{$col}');";
+ $codex .= "\n if (\$val > 0) {";
+ $codex .= "\n \$val = 1 << (\$val - 1);";
+ $codex .= "\n \$csql->where('{$col}&' . \$val . '=' . \$val);";
+ $codex .= "\n }";
+ } else if (
+ $cate == 'METRE' || $cate == 'FSIZE' || $cate == 'WCNY' || $cate == 'MCNY' || $cate == 'SEC' || $cate == 'TON' || $cate == 'BET'
+ || $cate == 'PCT' || $cate == 'CNY' || $cate == 'NUM' || $cate == 'KG' || $cate == 'TC' || $cate == 'INT'
+ || $cate == 'LNY' || $cate == 'SNY' || $cate == 'WGT' || $cate == 'LGH'
+ ) {
+ $bet = 1000;
+ if ($cate == 'FSIZE')
+ $bet = 1024;
+ else if ($cate == 'WCNY' || $cate == 'TON')
+ $bet = 1000000;
+ else if ($cate == 'MCNY')
+ $bet = 10000;
+ else if ($cate == 'SEC' || $cate == 'NUM' || $cate == 'INT')
+ $bet = 1;
+ else if ($cate == 'PCT' || $cate == 'CNY' || $cate == 'LNY' || $cate == 'SNY')
+ $bet = 100;
+ else if ($cate == 'BET') {
+ $bet = flddata($fld['data'], 1, 100);
+ }
+ $codex .= "\n \$csql->wherenumrange('{$col}', objstr(\$query, '{$col}_1'), objstr(\$query, '{$col}_2'), {$bet});";
+ } else if ($cate == 'DATE') {
+ $datequery = isset($fld['set']['datequery']) ? $fld['set']['datequery'] : '';
+ if ($datequery == 'month' || $datequery == 'day')
+ $codex .= "\n \$csql->wheredaterange('{$col}', objstr(\$query, '{$col}'), '{$datequery}');";
+ else
+ $codex .= "\n \$csql->wheredaterange('{$col}', objstr(\$query, '{$col}'));";
+ } else if ($cate == 'CATA' || $cate == 'BOOL' || $cate == 'TINT') {
+ $codex .= "\n \$csql->where('{$col}', objstr(\$query, '{$col}'));";
+ } else {
+ $codex .= "\n \$csql->where('{$col} like', objstr(\$query, '{$col}'));";
+ }
+ }
+ $codex .= "\n \$order = objstr(\$query, 'order', 'id desc');";
+ $codex .= "\n \$csql->order(\$order);";
+ $codex .= "\n \$query['order'] = \$order;";
+ $codex .= "\n return [\$query, \$csql];";
+ $codex .= "\n }";
+
+ $codex .= "\n";
+ $codex .= "\n public static function json_list() {";
+ $codex .= "\n global \$db;";
+ if ($verifyfunc)
+ $codex .= "\n \$rsuser = {$verifyfunc}();";
+ $codex .= "\n \$post = new \ciy\post();";
+ $codex .= "\n list(\$where, \$csql) = self::setwhere(\$db, \$post, \$rsuser);";
+ if ($saasfield) {
+ if (!empty($saasusr))
+ $codex .= "\n \$csql->where('{$saasfield}', \$rsuser['{$saasusr}']);";
+ }
+ if (count($nocolumn) > 0) {
+ $codex .= "\n \$csql->column('!" . implode(',', $nocolumn) . "', \$db->getraw('show full fields from {$tabname}'));";
+ }
+ $codex .= "\n \$pageno = \$post->getint('pageno', 1);";
+ $codex .= "\n \$pagecount = \$post->getint('pagecount', 10);";
+ $codex .= "\n \$csql->limit(\$pageno, \$pagecount);";
+ $codex .= "\n \$mainrowcount = \$post->getint('count');";
+ $codex .= "\n \$mrows = \$db->get(\$csql, \$mainrowcount);";
+ $codex .= "\n if (\$mrows === false)";
+ $codex .= "\n return errjson(\$db->error);";
+ $codex .= "\n \$ret = array('searchwhere' => \$where, 'pageno' => \$pageno, 'pagecount' => \$pagecount, 'count' => \$mainrowcount, 'list' => \$mrows);";
+ $codex .= "\n if (\$post->getbool('field')) {";
+ $codex .= "\n \$field = array();";
+ $codex .= "\n \$fshow = \$db->getfield(\$field, '{$tabname}');";
+ $codex .= "\n foreach (\$field as \$fr => \$v) {";
+ $codex .= "\n if (get('_' . \$fr))";
+ $codex .= "\n \$field[\$fr]['c'] = ',' . \$field[\$fr]['c'];";
+ if ($saasfield) {
+ $codex .= "\n if (\$fr == '{$saasfield}')";
+ $codex .= "\n \$field[\$fr]['c'] = ',' . \$field[\$fr]['c'];";
+ }
+ $codex .= "\n }";
+ if ($btnlist_line)
+ $codex .= "\n \$fshow = fieldadd(\$fshow, \$field, 0, '_btn', '操作');";
+ foreach ($flds as $fld) {
+ if ($fld['bsrt'])
+ $codex .= "\n \$field['{$fld['col']}']['order'] = 'r';";
+ }
+ $codex .= "\n \$ret['field'] = \$field;";
+ $codex .= "\n \$ret['fshow'] = \$fshow;";
+ $codex .= "\n }";
+ $codex .= "\n if (\$post->getbool('once')) {";
+ $codex .= "\n \$ret['once'] = true;";
+ $codex .= "\n \$input = array();";
+ foreach ($flds as $fld) {
+ if (!$fld['bqry'])
+ continue;
+ //$input[] = array('type' => 'switch', 'form' => 'locc', 'name' => '搜附近', 'value' => '附近,全部', 'def' => 2, 'tip' => '水电费' );
+ $cate = $fld['cate'];
+ $col = $fld['col'];
+ if ($cate == 'DB' || $cate == 'CATU' || $cate == 'CATS' || $cate == 'CATM') {
+ $dbquery = isset($fld['set']['dbquery']) ? $fld['set']['dbquery'] : '';
+ $pspec = '';
+ if ($fld['breq']) {
+ $codex .= "\n if (!get('_{$col}'))";
+ $pspec = ' ';
+ }
+ if ($dbquery == 'window') {
+ //暂未实现
+ } else if ($dbquery == 'select') {
+ $datas = explode('|', $fld['data']);
+ $codex .= "\n{$pspec} \$input[] = array('type' => 'select', 'form' => '{$col}', 'name' => '{$fld['name']}', 'all' => '全部', 'select' => '{$datas[0]}');";
+ } else {
+ $codex .= "\n{$pspec} \$input[] = array('type' => 'input', 'form' => '{$col}', 'name' => '{$fld['name']}', 'prop' => ' style=\"width:8em;\"');";
+ }
+ } else if ($cate == 'CATA' || $cate == 'BOOL') {
+ $cabquery = isset($fld['set']['cabquery']) ? $fld['set']['cabquery'] : '';
+ $datas = explode('|', $fld['data']);
+ if ($cate == 'CATA')
+ $select = explode('|', $fld['data'])[0];
+ else {
+ $exts = explode('.', $fld['data']);
+ if (count($exts) == 1)
+ $exts[1] = '';
+ $exts[0] = empty($exts[0]) ? '✔' : $exts[0];
+ $exts[1] = empty($exts[1]) ? '✘' : $exts[1];
+ $select = "{$exts[0]}.{$exts[1]}";
+ }
+ if ($cabquery == 'radio')
+ $codex .= "\n \$input[] = array('type' => 'radio', 'form' => '{$col}', 'name' => '{$fld['name']}', 'all' => '全部', 'select' => '{$select}');";
+ else
+ $codex .= "\n \$input[] = array('type' => 'select', 'form' => '{$col}', 'name' => '{$fld['name']}', 'all' => '全部', 'select' => '{$select}');";
+ } else if ($cate == 'TBIN' || $cate == 'TINT') {
+ $datas = explode('|', $fld['data']);
+ $codex .= "\n \$input[] = array('type' => 'select', 'form' => '{$col}', 'name' => '{$fld['name']}', 'all' => '全部', 'select' => '{$datas[0]}');";
+ } else if ($cate == 'DATE') {
+ $datequery = isset($fld['set']['datequery']) ? $fld['set']['datequery'] : '';
+ if ($datequery == 'month' || $datequery == 'day')
+ $codex .= "\n \$input[] = array('type' => '{$datequery}', 'form' => '{$col}', 'name' => '{$fld['name']}');";
+ else
+ $codex .= "\n \$input[] = array('type' => 'daterange', 'form' => '{$col}', 'name' => '{$fld['name']}');";
+ } else if (
+ $cate == 'METRE' || $cate == 'FSIZE' || $cate == 'WCNY' || $cate == 'MCNY' || $cate == 'SEC' || $cate == 'TON'
+ || $cate == 'PCT' || $cate == 'CNY' || $cate == 'NUM' || $cate == 'KG' || $cate == 'TC' || $cate == 'INT'
+ || $cate == 'BET' || $cate == 'LNY' || $cate == 'SNY' || $cate == 'WGT' || $cate == 'LGH'
+ ) {
+ $codex .= "\n \$input[] = array('type' => 'num', 'form' => '{$col}', 'name' => '{$fld['name']}', 'prop' => ' style=\"width:4em;\"');";
+ } else {
+ $codex .= "\n \$input[] = array('type' => 'input', 'form' => '{$col}', 'name' => '{$fld['name']}', 'prop' => ' style=\"width:8em;\"');";
+ }
+ }
+ if ($selectorder) {
+ $sos = explode(',', $selectorder);
+ $codex .= "\n \$vals = array();";
+ foreach ($sos as $so) {
+ $soarr = explode(':', $so);
+ if (count($soarr) != 2)
+ continue;
+ $codex .= "\n \$vals[] = array('id' => '{$soarr[0]}', 'name' => '{$soarr[1]}');";
+ }
+ $codex .= "\n \$input[] = array('type' => 'select', 'form' => 'order', 'name' => '排序', 'select' => \$vals);";
+ }
+ $codex .= "\n \$ret['searchinput'] = \$input;";
+
+ foreach ($flds as $fld) {
+ $cate = $fld['cate'];
+ if ($cate == 'DB' || $cate == 'CATU' || $cate == 'CATS' || $cate == 'CATM') {
+ if (empty($fld['set']['listload'])) {
+ list($dicttype, $dictname) = splitdict($fld['data']);
+ if ($dicttype == 'dictdb') {
+ $ext = '';
+ if ($cate == 'CATM')
+ $ext = ',upid';
+ $codex .= "\n \$csql = (new \ciy\sql('{$dictname}'))->column('id,name{$ext}');";
+ $codex .= "\n \$ret['{$dictname}'] = \$db->get(\$csql);";
+ }
+ }
+ }
+ }
+ $codex .= "\n }";
+ $rels = array();
+ foreach ($flds as $fld) {
+ if (!$fld['show'])
+ continue;
+ if ($saasfield == $fld['col'])
+ continue;
+ $cate = $fld['cate'];
+ if ($cate == 'DB' || $cate == 'CATU' || $cate == 'CATS' || $cate == 'CATM') {
+ if (isset($fld['set']['listload']) && $fld['set']['listload'] == 'rel') {
+ list($dicttype, $dictname) = splitdict($fld['data']);
+ if ($dicttype == 'dictdb') {
+ if (isset($rels[$dictname]))
+ $rels[$dictname][] = $fld['col'];
+ else
+ $rels[$dictname] = array($fld['col']);
+ }
+ }
+ }
+ }
+ foreach ($rels as $dictname => $cols) {
+ $colsn = implode(',', $cols);
+ $codex .= "\n \$ret['{$dictname}'] = getrelation(\$db, \$mrows, '{$dictname}', '{$colsn}');";
+ }
+ $codex .= "\n return succjson(\$ret);";
+ $codex .= "\n }";
+
+ if ($chk_getupdate && ($hasedit || $hasview || $hasreview)) {
+ $codex .= "\n";
+ $codex .= "\n public static function json_getdata() {";
+ $codex .= "\n global \$db;";
+ if ($verifyfunc)
+ $codex .= "\n \$rsuser = {$verifyfunc}();";
+ $codex .= "\n \$post = new \ciy\post();";
+ $codex .= "\n \$id = \$post->getint('id');";
+ $codex .= "\n \$act = \$post->get('act');";
+ $codex .= "\n if (\$id > 0) {";
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ if ($saasfield) {
+ if (!empty($saasusr))
+ $codex .= "\n \$csql->where('{$saasfield}', \$rsuser['{$saasusr}']);";
+ }
+ $codex .= "\n \$csql->where('id', \$id);";
+ $codex .= "\n \$mrow = \$db->getone(\$csql);";
+ $codex .= "\n if (!is_array(\$mrow))";
+ $codex .= "\n return errjson('数据不存在');";
+ $codex .= "\n if (\$act == 'view' || \$act == 'review') {";
+ foreach ($flds as $fld) {
+ $cate = $fld['cate'];
+ if ($cate == 'DB' || $cate == 'CATU' || $cate == 'CATS' || $cate == 'CATM') {
+ if (!$fld['show'] && empty($fld['set']['noup']) && isset($fld['set']['listload']) && $fld['set']['listload'] == 'rel') {
+ list($dicttype, $dictname) = splitdict($fld['data']);
+ if ($dicttype == 'dictdb') {
+ $codex .= "\n \$csql = (new \ciy\sql('{$dictname}'))->column('id,name');";
+ $codex .= "\n \$csql->where('id', \$mrow['{$fld['col']}']);";
+ $codex .= "\n \$ret['{$dictname}'] = \$db->get(\$csql);";
+ }
+ }
+ }
+ }
+ $codex .= "\n }";
+ $codex .= "\n } else {";
+ $codex .= "\n \$mrow = array();";
+ $codex .= "\n }";
+ $codex .= "\n \$ret['data'] = \$mrow;";
+ $codex .= "\n if (\$act == 'edit') {";
+ foreach ($flds as $fld) {
+ $cate = $fld['cate'];
+ if ($cate == 'DB' || $cate == 'CATU' || $cate == 'CATS' || $cate == 'CATM') {
+ if (empty($fld['set']['noup']) && @$fld['set']['dbedit'] != 'text' && @$fld['set']['listload'] == 'rel') {
+ list($dicttype, $dictname) = splitdict($fld['data']);
+ if ($dicttype == 'dictdb') {
+ $codex .= "\n \$csql = (new \ciy\sql('{$dictname}'))->column('id,name');";
+ $codex .= "\n \$ret['{$dictname}'] = \$db->get(\$csql);";
+ }
+ }
+ }
+ }
+ $codex .= "\n }";
+ $codex .= "\n return succjson(\$ret);";
+ $codex .= "\n }";
+ $codex .= "\n";
+ }
+ if ($hasedit) {
+ $codex .= "\n public static function json_update() {";
+ $codex .= "\n global \$db;";
+ if ($verifyfunc) {
+ $codex .= "\n \$rsuser = {$verifyfunc}();";
+ $codex .= "\n //if (nopower(\$db, \$rsuser['id'], 'p u'))";
+ $codex .= "\n // return errjson('您未被授权操作');";
+ }
+ $codex .= "\n \$post = new \ciy\post();";
+ $codex .= "\n //\$db->trace(\$post->get('_pf'), \$rsuser);";
+ foreach ($flds as $fld) {
+ $col = $fld['col'];
+ // if ($col == $saasfield || $col == 'addtimes' || $col == 'ip' || $col == 'uptimes')
+ // continue;
+ // if ($col == 'auditstatus' || $col == 'audittimes' || $col == 'audituser' || $col == 'auditmsg')
+ // continue;
+ // if ($col == 'matterstatus' || $col == 'matternextuser' || $col == 'mattertimes')
+ // continue;
+ if ($col != 'id' && !empty($fld['set']['noup']) && $fld['set']['noup'] != 'fow')
+ continue;
+ $type = $fld['type'];
+ if ($type == 'bigint' || $type == 'int')
+ $typefc = 'getint';
+ else if ($type == 'double' || $type == 'float')
+ $typefc = 'getfloat';
+ else
+ $typefc = 'get';
+ if ($fld['cate'] == 'FILEMD')
+ $codex .= "\n \${$col}_text = \$post->get('{$col}');";
+ else
+ $codex .= "\n \${$col} = \$post->{$typefc}('{$col}');";
+ }
+ foreach ($flds as $fld) {
+ if (!$fld['bimp'])
+ continue;
+ if (!empty($fld['set']['noup']))
+ continue;
+ $col = $fld['col'];
+ $cate = $fld['cate'];
+ $name = $fld['name'];
+ $type = $fld['type'];
+ if ($cate == 'MD')
+ $codex .= "\n if (\${$col} == '[MD]')";
+ else if ($cate == 'FILEMD')
+ $codex .= "\n if (\${$col}_text == '[MD]')";
+ else if ($type == 'bigint' || $type == 'int' || $type == 'double' || $type == 'float')
+ $codex .= "\n if (\${$col} == 0)";
+ else
+ $codex .= "\n if (empty(\${$col}))";
+ $codex .= "\n return errjson('请填写{$name}');";
+ }
+ if ($hasadd) {
+ $codex .= "\n \$datarow = null;";
+ $codex .= "\n if (\$id > 0) {";
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ if ($saasfield) {
+ if (!empty($saasusr))
+ $codex .= "\n \$csql->where('{$saasfield}', \$rsuser['{$saasusr}']);";
+ }
+ $codex .= "\n \$csql->where('id', \$id);";
+ $codex .= "\n \$datarow = \$db->getone(\$csql);";
+ $codex .= "\n if (!is_array(\$datarow))";
+ $codex .= "\n return errjson('数据不存在');";
+ $codex .= "\n }";
+ } else {
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ if ($saasfield) {
+ if (!empty($saasusr))
+ $codex .= "\n \$csql->where('{$saasfield}', \$rsuser['{$saasusr}']);";
+ }
+ $codex .= "\n \$csql->where('id', \$id);";
+ $codex .= "\n \$datarow = \$db->getone(\$csql);";
+ $codex .= "\n if (!is_array(\$datarow))";
+ $codex .= "\n return errjson('数据不存在');";
+ }
+ foreach ($flds as $fld) {
+ $col = $fld['col'];
+ if ($fld['cate'] == 'FILEMD'){
+ $codex .= "\n \${$col} = (isset(\$datarow['{$col}']) ? \$datarow['{$col}'] + 1 : 1);";
+ }
+ }
+ $codex .= "\n try {";
+ $codex .= "\n \$db->begin();";
+ $dups = array();
+ foreach ($flds as $fld) {
+ if (!$fld['bdup'])
+ continue;
+ $dups[] = $fld['col'];
+ }
+ if (count($dups) > 0) {
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ if ($saasfield) {
+ if (!empty($saasusr))
+ $codex .= "\n \$csql->where('{$saasfield}', \$rsuser['{$saasusr}']);";
+ }
+ foreach ($dups as $dup) {
+ $codex .= "\n \$csql->where('{$dup}', \${$dup});";
+ }
+ $codex .= "\n \$csql->column('id');";
+ $codex .= "\n \$chkid = toint(\$db->get1(\$csql));";
+ $codex .= "\n if (\$chkid > 0 && ((\$id > 0 && \$chkid != \$id) || \$id == 0))";
+ $codex .= "\n throw new \Exception('CIYIGN数据已存在');";
+ }
+ $codex .= "\n \$updata = array();";
+ foreach ($flds as $fld) {
+ $col = $fld['col'];
+ if ($col == 'id' || $col == 'addtimes')
+ continue;
+ // if ($col == 'auditstatus' || $col == 'audittimes' || $col == 'audituser' || $col == 'auditmsg')
+ // continue;
+ // if ($col == 'matterstatus' || $col == 'matternextuser' || $col == 'mattertimes')
+ // continue;
+ // if ($col == 'uptimes')
+ // $codex .= "\n \$updata['{$col}'] = tostamp();";
+ // else if ($col == 'ip')
+ // $codex .= "\n \$updata['{$col}'] = getip();";
+ if (!empty($fld['set']['noup'])) {
+ if ($fld['set']['noup'] == 'now')
+ $codex .= "\n \$updata['{$col}'] = tostamp();";
+ else if ($fld['set']['noup'] == 'me')
+ $codex .= "\n \$updata['{$col}'] = \$rsuser['id'];";
+ else if ($fld['set']['noup'] == 'fow')
+ $codex .= "\n \$updata['{$col}'] = \${$col};";
+ else if ($fld['set']['noup'] == 'ip')
+ $codex .= "\n \$updata['{$col}'] = getip();";
+ } else
+ $codex .= "\n \$updata['{$col}'] = \${$col};";
+ }
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}'); //auto";
+ if ($hasadd) {
+ $codex .= "\n if (\$id > 0) {";
+ $codex .= "\n \$csql->where('id', \$id);";
+ $codex .= "\n if (\$db->update(\$csql, \$updata) === false)";
+ $codex .= "\n throw new \Exception('更新失败:' . \$db->error);";
+ $codex .= "\n } else {";
+ foreach ($flds as $fld) {
+ $col = $fld['col'];
+ if ($col == 'id') {
+ } else if ($fld['set']['noup'] == 'no') {
+ if ($fld['type'] == 'int' || $fld['type'] == 'bigint')
+ $codex .= "\n \$updata['{$col}'] = 0;";
+ else
+ $codex .= "\n \$updata['{$col}'] = '';";
+ } else if ($saasfield) {
+ if (!empty($saasusr))
+ $codex .= "\n \$updata['{$col}'] = \$rsuser['{$saasusr}'];";
+ } else if ($col == 'addtimes')
+ $codex .= "\n \$updata['{$col}'] = tostamp();";
+ else if ($col == 'auditstatus')
+ $codex .= "\n \$updata['{$col}'] = 20;";
+ else if ($col == 'matterstatus')
+ $codex .= "\n \$updata['{$col}'] = 2;";
+ }
+ $codex .= "\n if (\$db->insert(\$csql, \$updata) === false)";
+ $codex .= "\n throw new \Exception('新增失败:' . \$db->error);";
+ $codex .= "\n \$id = \$db->insert_id();";
+ $codex .= "\n }";
+ $codex .= "\n \$updata['id'] = \$id;";
+ } else {
+ $codex .= "\n \$csql->where('id', \$id);";
+ $codex .= "\n if (\$db->update(\$csql, \$updata) === false)";
+ $codex .= "\n throw new \Exception('更新失败:' . \$db->error);";
+ $codex .= "\n \$updata['id'] = \$id;";
+ }
+ $codex .= "\n //savelogdb(\$db, \$rsuser['id'], '{$tabname}', \$datarow, \$updata);";
+ $codex .= "\n \$db->commit();";
+ $codex .= "\n } catch (\Exception \$ex) {";
+ $codex .= "\n \$db->rollback();";
+ $codex .= "\n savelogfile('err_db', \$ex->getMessage());";
+ $codex .= "\n return errjson(\$ex->getMessage());";
+ $codex .= "\n }";
+ $codex .= "\n \$ret['data'] = \$updata;";
+ $rels = array();
+ foreach ($flds as $fld) {
+ if ($saasfield == $fld['col'])
+ continue;
+ $cate = $fld['cate'];
+ if ($cate == 'DB' || $cate == 'CATU' || $cate == 'CATS' || $cate == 'CATM') {
+ if (isset($fld['set']['listload']) && $fld['set']['listload'] == 'rel') {
+ list($dicttype, $dictname) = splitdict($fld['data']);
+ if ($dicttype == 'dictdb') {
+ if (isset($rels[$dictname]))
+ $rels[$dictname][] = $fld['col'];
+ else
+ $rels[$dictname] = array($fld['col']);
+ }
+ }
+ }
+ }
+ foreach ($rels as $dictname => $cols) {
+ $colsn = implode(',', $cols);
+ $codex .= "\n \$ret['{$dictname}'] = getrelation(\$db, [\$updata], '{$dictname}', '{$colsn}');";
+ }
+ foreach ($flds as $fld) {
+ $col = $fld['col'];
+ if ($fld['cate'] == 'FILEMD'){
+ $codex .= "\n if (storsave('/md/{$fld['set']['savepath']}/' . \$id . '_' . \${$col} . '.txt', \${$col}_text) === false)";
+ $codex .= "\n return errjson('写入失败');";
+ }
+ }
+ $codex .= "\n return succjson(\$ret);";
+ // $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ // $codex .= "\n \$csql->where('id', \$id);";
+ // $codex .= "\n \$datarow = \$db->getone(\$csql);";
+ // $codex .= "\n \$ret['data'] = \$datarow;";
+ // $codex .= "\n return succjson(\$ret);";
+ $codex .= "\n }";
+ }
+ if ($hasdel) {
+ $codex .= "\n";
+ $codex .= "\n public static function json_del() {";
+ $codex .= "\n global \$db;";
+ if ($verifyfunc) {
+ $codex .= "\n \$rsuser = {$verifyfunc}();";
+ $codex .= "\n //if (nopower(\$db, \$rsuser['id'], 'p d'))";
+ $codex .= "\n // return errjson('您未被授权操作');";
+ }
+ $codex .= "\n \$post = new \ciy\post();";
+ $codex .= "\n //\$db->trace(\$post->get('_pf'), \$rsuser);";
+ $codex .= "\n \$ids = \$post->get('ids');";
+ $codex .= "\n if (empty(\$ids))";
+ $codex .= "\n return errjson('请选择至少一条');";
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ if ($saasfield) {
+ if (!empty($saasusr))
+ $codex .= "\n \$csql->where('{$saasfield}', \$rsuser['{$saasusr}']);";
+ }
+ $codex .= "\n \$csql->where('id in', \$ids);";
+ $codex .= "\n \$mrows = \$db->get(\$csql);";
+ $codex .= "\n \$vids = array();";
+ $codex .= "\n try {";
+ $codex .= "\n \$db->begin();";
+ $codex .= "\n foreach (\$mrows as \$mrow) {";
+ $codex .= "\n \$delid = \$mrow['id'];";
+ $codex .= "\n //delcheck(\$db, \$delid, 'tablexx', 'xxid', '管理员');";
+ if ($chk_deltimes) {
+ $codex .= "\n //deltimeall(\$db, \$delid, 'tablexx', 'xxid', '运动员');";
+ $codex .= "\n deltimeme(\$db, \$delid, '{$tabname}');";
+ } else {
+ $codex .= "\n //delall(\$db, \$delid, 'tablexx', 'xxid', '运动员'); //deltimeall";
+ $codex .= "\n delme(\$db, \$delid, '{$tabname}');";
+ }
+ $codex .= "\n savelogdb(\$db, \$rsuser['id'], '{$tabname}', \$mrow, null);";
+ $codex .= "\n \$vids[] = \$delid;";
+ $codex .= "\n }";
+ $codex .= "\n \$db->commit();";
+ $codex .= "\n } catch (\Exception \$ex) {";
+ $codex .= "\n \$db->rollback();";
+ $codex .= "\n savelogfile('err_db', \$ex->getMessage());";
+ $codex .= "\n return errjson(\$ex->getMessage());";
+ $codex .= "\n }";
+ $codex .= "\n \$ret['ids'] = \$vids;";
+ $codex .= "\n return succjson(\$ret);";
+ $codex .= "\n }";
+ }
+
+ if ($hasreview || $hasaudit) {
+ $codex .= "\n";
+ $codex .= "\n public static function json_audit() {";
+ $codex .= "\n global \$db;";
+ if ($verifyfunc) {
+ $codex .= "\n \$rsuser = {$verifyfunc}();";
+ $codex .= "\n //if (nopower(\$db, \$rsuser['id'], 'p a'))";
+ $codex .= "\n // return errjson('您未被授权操作');";
+ }
+ $codex .= "\n \$post = new \ciy\post();";
+ $codex .= "\n //\$db->trace(\$post->get('_pf'), \$rsuser);";
+ $codex .= "\n \$ids = \$post->get('ids');";
+ $codex .= "\n if (empty(\$ids))";
+ $codex .= "\n return errjson('请选择至少一条');";
+ $codex .= "\n \$auditstatus = \$post->getint('auditstatus');";
+ foreach ($flds as $fld) {
+ if ($fld['col'] == 'auditmsg') {
+ $codex .= "\n \$auditmsg = \$post->get('auditmsg');";
+ $codex .= "\n if (\$auditstatus == 90 && empty(\$auditmsg))";
+ $codex .= "\n return errjson('请填写驳回原因');";
+ }
+ }
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ if ($saasfield) {
+ if (!empty($saasusr))
+ $codex .= "\n \$csql->where('{$saasfield}', \$rsuser['{$saasusr}']);";
+ }
+ $codex .= "\n \$csql->where('id in', \$ids);";
+ $codex .= "\n \$mrows = \$db->get(\$csql);";
+ $codex .= "\n \$ids = array();";
+ $codex .= "\n try {";
+ $codex .= "\n \$db->begin();";
+ $codex .= "\n foreach (\$mrows as \$mrow) {";
+ $codex .= "\n if (\$auditstatus == 100) {";
+ $codex .= "\n }";
+ $codex .= "\n \$updata = array();";
+ foreach ($flds as $fld) {
+ $col = $fld['col'];
+ if ($col == 'audituser')
+ $codex .= "\n \$updata['{$col}'] = \$rsuser['id'];";
+ if ($col == 'audittimes')
+ $codex .= "\n \$updata['{$col}'] = tostamp();";
+ if ($col == 'auditstatus')
+ $codex .= "\n \$updata['{$col}'] = \$auditstatus;";
+ if ($col == 'auditmsg')
+ $codex .= "\n \$updata['{$col}'] = \$auditmsg;";
+ }
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ $codex .= "\n \$csql->where('id', \$mrow['id']);";
+ $codex .= "\n if (\$db->update(\$csql, \$updata) === false)";
+ $codex .= "\n throw new \Exception('审核失败:' . \$db->error);";
+ $codex .= "\n \$ids[] = \$mrow['id'];";
+ $codex .= "\n }";
+ $codex .= "\n \$db->commit();";
+ $codex .= "\n } catch (\Exception \$ex) {";
+ $codex .= "\n \$db->rollback();";
+ $codex .= "\n savelogfile('err_db', \$ex->getMessage());";
+ $codex .= "\n return errjson(\$ex->getMessage());";
+ $codex .= "\n }";
+ $codex .= "\n \$ret['data'] = \$updata;";
+ $codex .= "\n \$ret['ids'] = \$ids;";
+ $codex .= "\n return succjson(\$ret);";
+ $codex .= "\n }";
+ }
+
+ if ($chk_multistatus) {
+ $codex .= "\n";
+ $codex .= "\n public static function json_multi_status() {";
+ $codex .= "\n global \$db;";
+ if ($verifyfunc) {
+ $codex .= "\n \$rsuser = {$verifyfunc}();";
+ $codex .= "\n //if (nopower(\$db, \$rsuser['id'], 'p m'))";
+ $codex .= "\n // return errjson('您未被授权操作');";
+ }
+ $codex .= "\n \$post = new \ciy\post();";
+ $codex .= "\n //\$db->trace(\$post->get('_pf'), \$rsuser);";
+ $codex .= "\n \$status = \$post->getint('status');";
+ $codex .= "\n \$ids = \$post->get('ids');";
+ $codex .= "\n if (empty(\$ids))";
+ $codex .= "\n return errjson('请选择至少一条');";
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ if ($saasfield) {
+ if (!empty($saasusr))
+ $codex .= "\n \$csql->where('{$saasfield}', \$rsuser['{$saasusr}']);";
+ }
+ $codex .= "\n \$csql->where('id in', \$ids);";
+ $codex .= "\n \$mrows = \$db->get(\$csql);";
+ $codex .= "\n \$ids = array();";
+ $codex .= "\n try {";
+ $codex .= "\n \$db->begin();";
+ $codex .= "\n foreach (\$mrows as \$mrow) {";
+ $codex .= "\n \$updata = array();";
+ $codex .= "\n \$updata['status'] = \$status;";
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ $codex .= "\n \$csql->where('id', \$mrow['id']);";
+ $codex .= "\n if (\$db->update(\$csql, \$updata) === false)";
+ $codex .= "\n throw new \Exception('批量操作失败:' . \$db->error);";
+ $codex .= "\n \$ids[] = \$mrow['id'];";
+ $codex .= "\n }";
+ $codex .= "\n \$db->commit();";
+ $codex .= "\n } catch (\Exception \$ex) {";
+ $codex .= "\n \$db->rollback();";
+ $codex .= "\n savelogfile('err_db', \$ex->getMessage());";
+ $codex .= "\n return errjson(\$ex->getMessage());";
+ $codex .= "\n }";
+ $codex .= "\n \$ret['data'] = \$updata;";
+ $codex .= "\n \$ret['ids'] = \$ids;";
+ $codex .= "\n return succjson(\$ret);";
+ $codex .= "\n }";
+ }
+ if ($hasexcelout) {
+ $codex .= "\n";
+ $codex .= "\n public static function json_exportxls() {";
+ $codex .= "\n global \$db;";
+
+ $codex .= "\n \$rsuser = verifyfast();";
+ $codex .= "\n //if (nopower(\$db, \$rsuser['id'], 'p e'))";
+ $codex .= "\n // return errjson('您未被授权操作');";
+
+ $codex .= "\n \$post = new \\ciy\\post();";
+ $codex .= "\n list(\$where, \$csql) = self::setwhere(\$db, \$post, \$rsuser);";
+ $codex .= "\n \$mrows = \$db->get(\$csql);";
+ $codex .= "\n if (count(\$mrows) > 10000)";
+ $codex .= "\n return errjson('将导出' . count(\$mrows) . '条,不建议超过1万条,请筛选缩小范围');";
+ $codex .= "\n \$fields = array();";
+ foreach ($flds as $fld) {
+ if (!$fld['bout'])
+ continue;
+ if ($saasfield == $fld['col'])
+ continue;
+ $col = $fld['col'];
+ $name = $fld['name'];
+ $cate = $fld['cate'];
+ $type = $fld['type'];
+ $width = 100;
+ if ($col == 'id') {
+ $width = 60;
+ $name = '行码';
+ }
+ if ($type == 'varchar' || $cate == 'CATS' || $cate == 'CATM')
+ $width = 150;
+ if ($cate == 'IMG')
+ $width = 300;
+ $codex .= "\n \$fields[] = array('style' => '{$fld['align']}', 'width' => {$width}, 'field' => '{$col}', 'name' => '{$name}');";
+ }
+ foreach ($flds as $fld) {
+ if (!$fld['bout'])
+ continue;
+ if ($saasfield == $fld['col'])
+ continue;
+ $col = $fld['col'];
+ $cate = $fld['cate'];
+ if ($cate == 'BOOL') {
+ $codex .= "\n \$code_{$col} = \$db->getdbcodes('{$tabname}', '{$col}');";
+ } else if ($cate == 'TINT' || $cate == 'TBIN' || $cate == 'CATS' || $cate == 'CATM' || $cate == 'DB' || $cate == 'CATA' || $cate == 'CATU') {
+ $ext = '';
+ if ($cate == 'CATM')
+ $ext = ',upid';
+ list($dicttype, $dictname) = splitdict($fld['data']);
+ if ($dicttype == 'dictciy') {
+ $codex .= "\n \$code_{$col} = \$db->get((new \\ciy\\sql('{$dictname}'))->column('id,name{$ext}'));";
+ } else if ($dicttype == 'dictdb') {
+ if (isset($fld['set']['listload']) && $fld['set']['listload'] == 'rel')
+ $codex .= "\n \$code_{$col} = getrelation(\$db, \$mrows, '{$dictname}', '{$col}', 'id,name{$ext}');";
+ else
+ $codex .= "\n \$code_{$col} = \$db->get((new \\ciy\\sql('{$dictname}'))->column('id,name{$ext}'));";
+ } else if ($dicttype == 'dictcata') {
+ $codex .= "\n \$code_{$col} = getcatas(\$db, '{$dictname}');";
+ } else {
+ $codex .= "\n \$code_{$col} = \$db->getdbcodes('{$tabname}', '{$col}');";
+ }
+ }
+ }
+ $codex .= "\n \$datas = array();";
+ $codex .= "\n foreach (\$mrows as \$mrow) {";
+ $codex .= "\n \$dat = array();";
+ $codex .= "\n foreach (\$fields as \$field) {";
+ $codex .= "\n \$field = \$field['field'];";
+ $codex .= "\n \$val = isset(\$mrow[\$field]) ? \$mrow[\$field] : '';";
+
+ foreach ($flds as $fld) {
+ if ($fld['col'] != 'id' && !$fld['bout'])
+ continue;
+ if ($saasfield == $fld['col'])
+ continue;
+ $col = $fld['col'];
+ $cate = $fld['cate'];
+ $ext = '';
+ if ($col == 'id') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = enid(\$val);";
+ } else if ($cate == 'FSIZE') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 1024, 2) . 'KB';";
+ } else if ($cate == 'METRE') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 1000, 2) . '米';";
+ } else if ($cate == 'DATE') {
+ $codex .= "\n if (\$field == '{$col}')";
+ if (strpos('H', $fld['data']) !== false)
+ $codex .= "\n \$val = (\$val <= 0 ? '--' : date('Y-m-d H:i', \$val));";
+ else
+ $codex .= "\n \$val = (\$val <= 0 ? '--' : date('Y-m-d', \$val));";
+ } else if ($cate == 'TIME') {
+ $codex .= "\n if (\$field == '{$col}')";
+ if (strpos(':s', $fld['data']) !== false)
+ $ext = ', true';
+ $codex .= "\n \$val = (\$val <= 0 ? '--' : totimepoint(\$val{$ext}));";
+ } else if ($cate == 'WCNY') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 1000000, 3) . '万元';";
+ } else if ($cate == 'MCNY') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 10000, 4) . '元';";
+ } else if ($cate == 'BOOL') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = (\$val == 1 ? \$code_{$col}[0]['name'] : @\$code_{$col}[1]['name']);";
+ } else if ($cate == 'UNIT') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = (\$val == '' ? '--' : implode(',', tounit(\$val)));";
+ } else if ($cate == 'CATA' || $cate == 'TINT' || $cate == 'DB' || $cate == 'CATU') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = ccode(\$code_{$col}, \$val);";
+ } else if ($cate == 'TBIN') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = implode(',', bcode(\$code_{$col}, \$val));";
+ } else if ($cate == 'CATS') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = implode(',', scode(\$code_{$col}, \$val));";
+ } else if ($cate == 'CATM') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = implode('-', mcode(\$code_{$col}, \$val));";
+ } else if ($cate == 'CYC') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = (\$val == 0 ? '--' : tocyc(\$val));";
+ } else if ($cate == 'SEC') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val .= '秒';";
+ } else if ($cate == 'BET') {
+ $unit = flddata($fld['data'], 0, '');
+ $bet = flddata($fld['data'], 1, 100);
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / {$bet}, 3) . '{$unit}';";
+ } else if ($cate == 'LNY') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 100, 2) . '元';";
+ } else if ($cate == 'LNY') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 100, 2) . '¤';";
+ } else if ($cate == 'WGT') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 1000, 3) . 'KG';";
+ } else if ($cate == 'LGH') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 1000, 3) . '米';";
+ } else if ($cate == 'TON') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 1000000, 3) . '吨';";
+ } else if ($cate == 'PCT') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 100, 2) . '%';";
+ } else if ($cate == 'CNY') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 100, 2);";
+ } else if ($cate == 'KG') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 1000, 3) . 'KG';";
+ } else if ($cate == 'TC') {
+ $codex .= "\n if (\$field == '{$col}')";
+ $codex .= "\n \$val = number_format(\$val / 1000, 1) . '℃';";
+ } else {
+ }
+ }
+ $codex .= "\n \$dat[] = \$val;";
+ $codex .= "\n }";
+ $codex .= "\n \$datas[] = \$dat;";
+ $codex .= "\n }";
+
+ $codex .= "\n \$param = array();";
+ $codex .= "\n \$param['field'] = \$fields;";
+ $codex .= "\n \$param['data'] = \$datas;";
+
+ $codex .= "\n \$param['sheetname'] = '数据报表';";
+ $codex .= "\n \$param['titleheight'] = '25'; //列头高度";
+ $codex .= "\n \$param['landscape'] = true; //横向打印";
+ $codex .= "\n \$param['fixtopage'] = true; //打印整个工作表";
+
+ $codex .= "\n \$param['toptitle'] = '{$titname}数据报表';";
+ $codex .= "\n \$str = \\ciy\\excel::general_excel_xml(\$param);";
+ $codex .= "\n \$filename = '';";
+ $codex .= "\n if (empty(\$filename))";
+ $codex .= "\n \$filename = date('Y-m-d_H-i-s') . rand(1000, 9999);";
+ $codex .= "\n \$filename .= '.xls';";
+ $codex .= "\n file_put_contents(PATH_WEB . 'ud/tmp/' . \$filename, \$str);";
+ $codex .= "\n return succjson(array('url' => '/ud/tmp/' . \$filename));";
+ $codex .= "\n }";
+ }
+ if ($hasexcelin) {
+ $codex .= "\n";
+ $codex .= "\n public static function json_importxls_in() {";
+ $codex .= "\n global \$db;";
+ $codex .= "\n \$rsuser = verifyfast();";
+ $codex .= "\n //if (nopower(\$db, \$rsuser['id'], 'p i'))";
+ $codex .= "\n // return errjson('您未被授权操作');";
+
+ $codex .= "\n \$post = new \ciy\post();";
+ $codex .= "\n \$file = PATH_WEB . '/ud' . \$post->get('file');";
+ $codex .= "\n if (!file_exists(\$file))";
+ $codex .= "\n return errjson('文件不存在');";
+ $codex .= "\n require_once PATH_ROOT . '../libs/phpoffice/autoload.php';";
+ $codex .= "\n \$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load(\$file);";
+ $codex .= "\n \$sheet = \$spreadsheet->getActiveSheet();";
+ $codex .= "\n \$datas = \$sheet->toArray('', true, true, false);";
+ $codex .= "\n \$datacnt = count(\$datas);";
+ $codex .= "\n if (\$datacnt < 2)";
+ $codex .= "\n return errjson('数据为空');";
+ $codex .= "\n \$html = '';";
+ $codex .= "\n \$headsn = array();";
+
+ foreach ($flds as $fld) {
+ $col = $fld['col'];
+ if ($fld['cate'] == 'FILEMD')
+ continue;
+ if ($col == 'id') {
+ $codex .= "\n \$headsn[] = '行码.id';";
+ continue;
+ }
+ if (!$fld['bmin'])
+ continue;
+ $name = $fld['name'];
+ $codex .= "\n \$headsn[] = '{$name}.{$col}';";
+ }
+ $codex .= "\n \$xlsidx = 1;";
+ $codex .= "\n if (empty(\$datas[0][count(\$headsn) - 1]))";
+ $codex .= "\n \$xlsidx = 2;";
+ $codex .= "\n \$heads = array();";
+ $codex .= "\n foreach (\$headsn as \$_head) {";
+ $codex .= "\n \$hd = explode('.', \$_head);";
+ $codex .= "\n if (count(\$hd) < 2)";
+ $codex .= "\n continue;";
+ $codex .= "\n \$heads[] = array(";
+ $codex .= "\n 'idx' => array_search(\$hd[0], \$datas[\$xlsidx - 1]), 'fld' => \$hd[1], 'name' => \$hd[0]";
+ $codex .= "\n );";
+ $codex .= "\n }";
+
+ foreach ($flds as $fld) {
+ if (!$fld['bmin'])
+ continue;
+ $col = $fld['col'];
+ $cate = $fld['cate'];
+ if ($cate == 'BOOL') {
+ $codex .= "\n \$code_{$col} = \$db->getdbcodes('{$tabname}', '{$col}');";
+ } else if ($cate == 'TINT' || $cate == 'TBIN' || $cate == 'CATS' || $cate == 'CATM' || $cate == 'DB' || $cate == 'CATA' || $cate == 'CATU') {
+ $ext = '';
+ if ($cate == 'CATM')
+ $ext = ',upid';
+ list($dicttype, $dictname) = splitdict($fld['data']);
+ if ($dicttype == 'dictciy') {
+ $codex .= "\n \$code_{$col} = \$db->get((new \\ciy\\sql('{$dictname}'))->column('id,name{$ext}'));";
+ } else if ($dicttype == 'dictdb') {
+ $codex .= "\n \$code_{$col} = \$db->get((new \\ciy\\sql('{$dictname}'))->column('id,name{$ext}'));";
+ } else if ($dicttype == 'dictcata') {
+ $codex .= "\n \$code_{$col} = getcatas(\$db, '{$dictname}');";
+ } else {
+ $codex .= "\n \$code_{$col} = \$db->getdbcodes('{$tabname}', '{$col}');";
+ }
+ }
+ }
+ $codex .= "\n \$html .= '| # | ';"; + $codex .= "\n foreach (\$heads as \$arr) {"; + $codex .= "\n \$html .= '' . \$arr['name'] . ' | ';"; + $codex .= "\n }"; + $codex .= "\n \$html .= '' . \$lineidx . ' | ';";
+ $codex .= "\n \$bempty = true;";
+ $codex .= "\n \$unqs = array();";
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ $codex .= "\n foreach (\$heads as \$arr) {";
+ $codex .= "\n \$name = \$arr['name'];";
+ $codex .= "\n \$errmsg = ''; //数据有误,显示红色说明";
+ $codex .= "\n \$showdat = ''; //显示在表格中的数据";
+ $codex .= "\n if (\$arr['idx'] > -1)";
+ $codex .= "\n \$showdat = trim(\$datas[\$rowidx][\$arr['idx']]);";
+ $codex .= "\n if (\$showdat == '--')";
+ $codex .= "\n \$showdat = '';";
+ $codex .= "\n \$value = \$showdat; //在表单中的数据(转换后)";
+ $codex .= "\n \$ext = ''; //扩展表单";
+ $codex .= "\n if (\$name == '行码') {";
+ $codex .= "\n if (empty(\$showdat)) {";
+ $codex .= "\n \$value = 0;";
+ $codex .= "\n \$showdat = '新增';";
+ $codex .= "\n } else {";
+ $codex .= "\n \$id = deid(\$showdat);";
+ $codex .= "\n if (\$id == 0)";
+ $codex .= "\n \$errmsg = \$name . '解析错误';";
+ $codex .= "\n else {";
+ $codex .= "\n \$csqlchk = new \ciy\sql('{$tabname}');";
+ $codex .= "\n \$csqlchk->where('id', \$id)->column('id');";
+ $codex .= "\n \$chkid = toint(\$db->get1(\$csqlchk));";
+ $codex .= "\n if (\$chkid != \$id)";
+ $codex .= "\n \$errmsg = \$name . '在数据库中不存在';";
+ $codex .= "\n \$value = \$id;";
+ $codex .= "\n }";
+ $codex .= "\n }";
+
+ foreach ($flds as $fld) {
+ if ($fld['col'] == 'id' || !$fld['bmin'])
+ continue;
+ $col = $fld['col'];
+ if($col == 'FILEMD')
+ continue;
+ $name = $fld['name'];
+ $cate = $fld['cate'];
+ $type = $fld['type'];
+ $ext = '';
+ $codex .= "\n } else if (\$name == '{$name}') {";
+ $codex .= "\n if (empty(\$showdat)) {";
+ if ($fld['bimp']) {
+ $codex .= "\n \$errmsg = \$name . '为必填项';";
+ } else {
+ if ($type == 'bigint' || $type == 'int' || $type == 'double' || $type == 'float')
+ $codex .= "\n \$value = 0;";
+ else
+ $codex .= "\n \$value = '';";
+ }
+ $codex .= "\n } else {";
+ if ($fld['bdup']) {
+ $codex .= "\n \$csql->where('{$col}', \$showdat);";
+ $codex .= "\n \$unqs[] = \$showdat;";
+ }
+
+ if ($cate == 'CATA' || $cate == 'TINT' || $cate == 'DB' || $cate == 'CATU') {
+ $codex .= "\n \$value = dcode(\$code_{$col}, \$showdat);";
+ $codex .= "\n if (\$value == -1)";
+ $codex .= "\n \$errmsg = \$name . '文字与系统数据不匹配';";
+ } else if ($cate == 'DATE') {
+ $codex .= "\n \$value = tostamp(\$showdat);";
+ $codex .= "\n if (\$value === 0) {";
+ $codex .= "\n \$errmsg = \$name . '时间格式错误';";
+ $codex .= "\n } else {";
+ if (strpos('H', $fld['data']) !== false)
+ $codex .= "\n \$showdat = date('Y-m-d H:i', \$value);";
+ else
+ $codex .= "\n \$showdat = date('Y-m-d', \$value);";
+ $codex .= "\n }";
+ } else if ($cate == 'TIME') {
+ $codex .= "\n \$tps = explode(':', \$showdat);";
+ $codex .= "\n \$value = 0;";
+ $codex .= "\n if (count(\$tps) == 2)";
+ $codex .= "\n \$value = \$tps[0] * 3600 + \$tps[1] * 60;";
+ $codex .= "\n else if (count(\$tps) == 3)";
+ $codex .= "\n \$value = \$tps[0] * 3600 + \$tps[1] * 60 + \$tps[2];";
+ $codex .= "\n if (\$value === 0) {";
+ $codex .= "\n \$errmsg = \$name . '时间格式错误';";
+ $codex .= "\n } else {";
+ $codex .= "\n \$showdat = totimepoint(\$value, true);";
+ $codex .= "\n }";
+ } else if ($cate == 'BOOL') {
+ $codex .= "\n if (\$showdat == \$code_{$col}[0]['name']) {";
+ $codex .= "\n \$value = 1;";
+ $codex .= "\n \$showdat = \$code_{$col}[0]['name'];";
+ $codex .= "\n } else {";
+ $codex .= "\n \$value = 2;";
+ $codex .= "\n \$showdat = \$code_{$col}[1]['name'];";
+ $codex .= "\n }";
+ } else if ($cate == 'UNIT') {
+ $codex .= "\n \$us = explode(',', \$showdat);";
+ $codex .= "\n \$us = array_reverse(\$us);";
+ $codex .= "\n if (preg_match('/1(.*?)(\d+)(.*)/', \$us[0], \$matches)) {";
+ $codex .= "\n \$unitx = \$matches[1];";
+ $codex .= "\n \$value = \$matches[3] . '|' . \$matches[2] . '|' . \$matches[1];";
+ $codex .= "\n if (isset(\$us[1])) {";
+ $codex .= "\n if (preg_match('/1(.*?)(\d+)(.*)/', \$us[1], \$matches)) {";
+ $codex .= "\n if (\$unitx != \$matches[3]) {";
+ $codex .= "\n \$errmsg = \$name . '中间单位不匹配';";
+ $codex .= "\n } else {";
+ $codex .= "\n \$value .= '|' . \$matches[2] . '|' . \$matches[1];";
+ $codex .= "\n }";
+ $codex .= "\n } else {";
+ $codex .= "\n \$errmsg = \$name . '第二段格式错误';";
+ $codex .= "\n }";
+ $codex .= "\n }";
+ $codex .= "\n } else {";
+ $codex .= "\n if (preg_match('/\d/', \$us[0]) > 0)";
+ $codex .= "\n \$errmsg = \$name . '第一段不能包含数字';";
+ $codex .= "\n else";
+ $codex .= "\n \$value = \$us[0];";
+ $codex .= "\n }";
+ } else if ($cate == 'TBIN') {
+ $codex .= "\n \$dats = explode(',', \$showdat);";
+ $codex .= "\n \$tdat = 0;";
+ $codex .= "\n foreach (\$dats as \$da) {";
+ $codex .= "\n \$bti = dcode(\$code_{$col}, \$da);";
+ $codex .= "\n if (\$bti < 1) {";
+ $codex .= "\n \$errmsg = \$name . '文字与系统数据不匹配';";
+ $codex .= "\n } else {";
+ $codex .= "\n \$tdat += (1 << (\$bti - 1));";
+ $codex .= "\n }";
+ $codex .= "\n }";
+ $codex .= "\n \$value = \$tdat;";
+ } else if ($cate == 'CATS') {
+ $codex .= "\n \$tdats = explode(',', \$showdat);";
+ $codex .= "\n \$vals = array();";
+ $codex .= "\n foreach (\$tdats as \$da) {";
+ $codex .= "\n \$tval = dcode(\$code_{$col}, \$da);";
+ $codex .= "\n if (\$tval == -1)";
+ $codex .= "\n \$errmsg = \$name . '文字与系统数据不匹配';";
+ $codex .= "\n \$vals[] = \$tval;";
+ $codex .= "\n }";
+ $codex .= "\n \$value = implode(',', \$vals);";
+ } else if ($cate == 'CATM') {
+ $codex .= "\n \$dats = explode('-', \$showdat);";
+ $codex .= "\n \$value = dcode(\$code_{$col}, \$dats[count(\$dats) - 1]);";
+ $codex .= "\n if (\$value == -1)";
+ $codex .= "\n \$errmsg = \$name . '文字与系统数据不匹配';";
+ } else if ($cate == 'CYC') {
+ $codex .= "\n \$last = substr(\$showdat, -3);";
+ $codex .= "\n \$dd = toint(substr(\$showdat, 0, -3));";
+ $codex .= "\n if (\$dd == 0) {";
+ $codex .= "\n \$errmsg = \$name . '周期数字错误';";
+ $codex .= "\n } else if (\$last == '天') {";
+ $codex .= "\n \$value = \$dd * 86400;";
+ $codex .= "\n } else if (\$last == '月') {";
+ $codex .= "\n \$value = -\$dd;";
+ $codex .= "\n } else if (\$last == '秒') {";
+ $codex .= "\n \$value = \$dd;";
+ $codex .= "\n } else {";
+ $codex .= "\n \$errmsg = \$name . '周期单位错误';";
+ $codex .= "\n }";
+ } else if ($type == 'double' || $type == 'float' || $type == 'int' || $type == 'bigint') {
+ $unit = '';
+ $bet = 1;
+ if ($cate == 'FSIZE') {
+ $unit = 'KB';
+ $bet = 1024;
+ } else if ($cate == 'METRE') {
+ $unit = '米';
+ $bet = 1000;
+ } else if ($cate == 'WCNY') {
+ $unit = '万元';
+ $bet = 1000000;
+ } else if ($cate == 'SEC') {
+ $unit = '秒';
+ } else if ($cate == 'BET') {
+ $unit = flddata($fld['data'], 0, '');
+ $bet = flddata($fld['data'], 1, 100);
+ } else if ($cate == 'LGH') {
+ $unit = '米';
+ $bet = 1000;
+ } else if ($cate == 'WGT') {
+ $unit = 'KG';
+ $bet = 1000;
+ } else if ($cate == 'LNY') {
+ $unit = '元';
+ $bet = 100;
+ } else if ($cate == 'SNY') {
+ $unit = '¤';
+ $bet = 100;
+ } else if ($cate == 'TON') {
+ $unit = '吨';
+ $bet = 1000000;
+ } else if ($cate == 'CNY') {
+ $bet = 100;
+ } else if ($cate == 'PCT') {
+ $unit = '%';
+ $bet = 100;
+ } else if ($cate == 'KG') {
+ $unit = 'KG';
+ $bet = 1000;
+ } else if ($cate == 'TC') {
+ $unit = '℃';
+ $bet = 1000;
+ }
+ if (empty($unit))
+ $codex .= "\n \$showdat = str_replace(',', '', \$showdat);";
+ else
+ $codex .= "\n \$showdat = str_replace(',', '', str_replace('{$unit}', '', \$showdat));";
+ $codex .= "\n if (!is_numeric(\$showdat))";
+ $codex .= "\n \$errmsg = \$name . '不是数字';";
+ $codex .= "\n else";
+ if ($bet > 1)
+ $codex .= "\n \$value = toint((float)\$showdat * {$bet});";
+ else if ($type == 'double' || $type == 'float')
+ $codex .= "\n \$value = (float)\$showdat;";
+ else
+ $codex .= "\n \$value = toint(\$showdat);";
+ if (!empty($unit))
+ $codex .= "\n \$showdat .= '{$unit}';";
+ }
+ $codex .= "\n }";
+ }
+ $codex .= "\n }";
+
+ $codex .= "\n if (!empty(\$showdat))";
+ $codex .= "\n \$bempty = false;";
+
+ $codex .= "\n if (empty(\$errmsg))";
+ $codex .= "\n \$hrhtml .= '' . \$showdat . '' . \$ext . ' | ';";
+ $codex .= "\n else";
+ $codex .= "\n \$hrhtml .= '' . \$showdat . ' | ';";
+ $codex .= "\n }";
+ $codex .= "\n if (\$bempty)";
+ $codex .= "\n continue;";
+
+ $codex .= "\n if (count(\$unqs) > 0) {";
+ $codex .= "\n \$unq = implode('|', \$unqs);";
+ $codex .= "\n if (in_array(\$unq, \$uniques))";
+ $codex .= "\n \$firsthtml = '重复 | ';";
+ $codex .= "\n else {";
+ $codex .= "\n \$uniques[] = \$unq;";
+ $codex .= "\n \$csql->column('id');";
+ $codex .= "\n \$chkid = toint(\$db->get1(\$csql));";
+ $codex .= "\n if (\$chkid > 0 && ((\$id > 0 && \$chkid != \$id) || \$id == 0))";
+ $codex .= "\n \$firsthtml = '重复 | ';";
+ $codex .= "\n }";
+ $codex .= "\n }";
+ $codex .= "\n \$html .= '
|---|---|
共' . \$cnt . '条数据';";
+ $codex .= "\n return succjson(array('html' => \$html, 'count' => \$cnt));";
+ $codex .= "\n }";
+ $codex .= "\n";
+ $codex .= "\n public static function json_importxls_data() {";
+ $codex .= "\n global \$db;";
+
+ $codex .= "\n \$rsuser = verifyfast();";
+ $codex .= "\n //if (nopower(\$db, \$rsuser['id'], 'p i'))";
+ $codex .= "\n // return errjson('您未被授权操作');";
+ $codex .= "\n \$post = new \ciy\post();";
+ $codex .= "\n //\$db->trace(\$post->get('_pf'), \$rsuser);";
+ $codex .= "\n \$total = \$post->getint('total');";
+ $codex .= "\n try {";
+ $codex .= "\n \$db->begin();";
+ $codex .= "\n for (\$i = 1; \$i <= \$total; \$i++) {";
+ $codex .= "\n \$id = \$post->getint('id_' . \$i);";
+ $dups = array();
+ foreach ($flds as $fld) {
+ if (!$fld['bdup'])
+ continue;
+ $col = $fld['col'];
+ $dups[] = $col;
+ $codex .= "\n \${$col} = \$post->get('{$col}_' . \$i);";
+ }
+ if (count($dups) > 0) {
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ if ($saasfield) {
+ if (!empty($saasusr))
+ $codex .= "\n \$csql->where('{$saasfield}', \$rsuser['{$saasusr}']);";
+ }
+ foreach ($dups as $dup) {
+ $codex .= "\n \$csql->where('{$dup}', \${$dup});";
+ }
+ $codex .= "\n \$csql->column('id');";
+ $codex .= "\n \$chkid = toint(\$db->get1(\$csql));";
+ $codex .= "\n if (\$chkid > 0 && ((\$id > 0 && \$chkid != \$id) || \$id == 0))";
+ $codex .= "\n throw new \Exception('CIYIGN发现数据有重复');";
+ }
+ $codex .= "\n \$updata = array();";
+ foreach ($flds as $fld) {
+ if (!$fld['bmin'])
+ continue;
+ $col = $fld['col'];
+ if ($col == 'id')
+ continue;
+ if ($fld['cate'] == 'FILEMD')
+ continue;
+ $codex .= "\n \$updata['{$col}'] = \$post->get('{$col}_' . \$i);";
+ }
+ $codex .= "\n \$csql = new \ciy\sql('{$tabname}');";
+ $codex .= "\n if (\$id == 0) {";
+ foreach ($flds as $fld) {
+ $col = $fld['col'];
+ if ($col == $saasfield) {
+ if (!empty($saasusr))
+ $codex .= "\n \$updata['{$col}'] = \$rsuser['{$saasusr}'];";
+ }
+ if ($col == 'addtimes')
+ $codex .= "\n \$updata['{$col}'] = tostamp();";
+ if ($col == 'auditstatus')
+ $codex .= "\n \$updata['{$col}'] = 2;";
+ if ($col == 'matterstatus')
+ $codex .= "\n \$updata['{$col}'] = 2;";
+ }
+ $codex .= "\n if (\$db->insert(\$csql, \$updata) === false)";
+ $codex .= "\n throw new \Exception('新增导入失败:' . \$db->error);";
+ $codex .= "\n } else {";
+ $codex .= "\n \$csql->where('id', \$id);";
+ $codex .= "\n if (\$db->update(\$csql, \$updata) === false)";
+ $codex .= "\n throw new \Exception('更新导入失败:' . \$db->error);";
+ $codex .= "\n }";
+ $codex .= "\n }";
+ $codex .= "\n \$db->commit();";
+ $codex .= "\n } catch (\Exception \$ex) {";
+ $codex .= "\n \$db->rollback();";
+ $codex .= "\n savelogfile('err_db', \$ex->getMessage());";
+ $codex .= "\n return errjson(\$ex->getMessage());";
+ $codex .= "\n }";
+ $codex .= "\n return succjson();";
+ $codex .= "\n }";
+ }
+ $codex .= "\n}";
+ $codex .= "\n";
+ return $codex;
+}
diff --git a/web/admin/develop/code_saas.html b/web/admin/develop/code_saas.html
new file mode 100644
index 0000000..a8cc303
--- /dev/null
+++ b/web/admin/develop/code_saas.html
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/develop/code_saas.php b/web/admin/develop/code_saas.php
new file mode 100644
index 0000000..daa3824
--- /dev/null
+++ b/web/admin/develop/code_saas.php
@@ -0,0 +1,163 @@
+get('query');
+ $csql = new \ciy\sql('zc_dev_dbsaas');
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+
+ public static function json_list() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ if ($rows === false)
+ return errjson($db->error);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'zc_dev_dbsaas');
+ foreach ($field as $fr => $v) {
+ if (get('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ }
+ return succjson($ret);
+ }
+
+ public static function json_getdata() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $act = $post->get('act');
+ if ($id > 0) {
+ $csql = new \ciy\sql('zc_dev_dbsaas');
+ $csql->where('id', $id);
+ $row = $db->getone($csql);
+ if (!is_array($row))
+ return errjson('数据不存在');
+ } else {
+ $row = array();
+ }
+ $ret['data'] = $row;
+ if ($act == 'edit') {
+ $csql = new \ciy\sql('INFORMATION_SCHEMA.SCHEMATA');
+ $csql->column('SCHEMA_NAME as id,SCHEMA_NAME as name');
+ $sehrows = $db->get($csql);
+ $ret['schema'] = $sehrows;
+ }
+ return succjson($ret);
+ }
+
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p u'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $name = $post->get('name');
+ $schem = $post->get('schem');
+ $subpath = $post->get('subpath');
+ $verifyfunc = $post->get('verifyfunc');
+ $codetable = $post->get('codetable');
+ $saasfield = $post->get('saasfield');
+ $saasusr = $post->get('saasusr');
+ if (strpos($subpath, '\\') === false)
+ return errjson('相对路径需反斜杠\\');
+ if (dirmake(PATH_WEB . $subpath) === false)
+ return errjson('创建目录失败');
+ $datarow = null;
+ if ($id > 0) {
+ $csql = new \ciy\sql('zc_dev_dbsaas');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ }
+
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['name'] = $name;
+ $updata['schem'] = $schem;
+ $updata['subpath'] = $subpath;
+ $updata['verifyfunc'] = $verifyfunc;
+ $updata['codetable'] = $codetable;
+ $updata['saasfield'] = $saasfield;
+ $updata['saasusr'] = $saasusr;
+ $csql = new \ciy\sql('zc_dev_dbsaas');
+ if ($id > 0) {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ } else {
+ $updata['id'] = 0;
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增失败:' . $db->error);
+ $id = $db->insert_id();
+ }
+ $updata['id'] = $id;
+ //savelogdb($db, $rsuser['id'], 'zc_dev_dbsaas', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ $ret['hf_providerbase'] = getrelation($db, [$updata], 'hf_providerbase', 'providerid');
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ //if (nopower($db, $rsuser['id'], 'p d'))
+ // return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('zc_dev_dbsaas');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ //delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
+ //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
+ delme($db, $delid, 'zc_dev_dbsaas');
+ savelogdb($db, $rsuser['id'], 'zc_dev_dbsaas', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+}
diff --git a/web/admin/develop/note.html b/web/admin/develop/note.html
new file mode 100644
index 0000000..0af5804
--- /dev/null
+++ b/web/admin/develop/note.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ | # | \n" + for _, arr := range heads { + html += "" + arr["name"] + " | \n" + } + html += "" + lineidx + " | "
+ bempty := true
+ for _, arr := range heads {
+ name := arr["name"]
+ errmsg := "" //数据有误,显示红色说明
+ showdat := "" //显示在表格中的数据
+ if c.Toint(arr["idx"]) > -1 {
+ showdat = strings.TrimSpace(datas[0][rowidx][c.Toint(arr["idx"])])
+ }
+ if showdat == "--" {
+ showdat = ""
+ }
+ var value any
+ value = showdat //在表单中的数据(转换后)
+ ext := "" //扩展表单
+ if name == "行码" {
+ if showdat == "" {
+ value = 0
+ showdat = "新增"
+ } else {
+ id = c.DeID(showdat)
+ if id == 0 {
+ errmsg = name + "解析错误"
+ } else {
+ csqlchk := c.NewCiySQL("zc_admin")
+ csqlchk.Where("id", id).Column("id")
+ chkid := c.Toint(c.CiyDB.Get1(csqlchk))
+ if chkid != id {
+ errmsg = name + "在数据库中不存在"
+ }
+ value = id
+ }
+ }
+ } else if name == "状态" {
+ if showdat == "" {
+ value = 0
+ } else {
+ value = c.Dcode(code_stpstatus, c.Tostr(showdat))
+ if value == -1 {
+ errmsg = name + "文字与系统数据不匹配"
+ }
+ }
+ } else if name == "性别" {
+ if showdat == "" {
+ value = 0
+ } else {
+ value = c.Dcode(code_sex, c.Tostr(showdat))
+ if value == -1 {
+ errmsg = name + "文字与系统数据不匹配"
+ }
+ }
+ } else if name == "姓名" {
+ if showdat == "" {
+ errmsg = name + "为必填项"
+ } else {
+ csqlchk := c.NewCiySQL("zc_admin")
+ csqlchk.Where("name", id).Column("id")
+ chkid := c.Toint(c.CiyDB.Get1(csqlchk))
+ if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
+ errmsg = name + "在数据库中出现重复"
+ }
+ if c.In_array(un_name, showdat) > -1 {
+ errmsg = name + "发现重复"
+ } else {
+ un_name = append(un_name, showdat)
+ }
+ }
+ } else if name == "手机号" {
+ if showdat == "" {
+ errmsg = name + "为必填项"
+ } else {
+ csqlchk := c.NewCiySQL("zc_admin")
+ csqlchk.Where("mobile", id).Column("id")
+ chkid := c.Toint(c.CiyDB.Get1(csqlchk))
+ if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
+ errmsg = name + "在数据库中出现重复"
+ }
+ if c.In_array(un_mobile, showdat) > -1 {
+ errmsg = name + "发现重复"
+ } else {
+ un_mobile = append(un_mobile, showdat)
+ }
+ }
+ } else if name == "所属组织" {
+ if showdat == "" {
+ value = 0
+ } else {
+ dats := strings.Split(showdat, "-")
+ value = c.Dcode(code_departid, dats[len(dats)-1])
+ if value == -1 {
+ errmsg = name + "文字与系统数据不匹配"
+ }
+ }
+ }
+ if showdat != "" {
+ bempty = false
+ }
+ if errmsg == "" {
+ hrhtml += "" + showdat + "" + ext + " | "
+ } else {
+ hrhtml += "" + showdat + " | "
+ }
+ }
+ if bempty {
+ continue
+ }
+
+ html += "
|---|---|
共" + c.Tostr(cnt) + "条数据\n"
+ return c.SuccJSON(w, r, map[string]any{
+ "html": html,
+ "count": cnt,
+ })
+}
+func Admin_importxls_data(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ if admin.Nopower(c.CiyDB, userid, "p500a") {
+ return c.ErrJSON(w, "您未被授权操作新增")
+ }
+ total := post.Getint("total")
+ err := c.CiyDB.Tran(func() error {
+ for i := 1; i <= total; i++ {
+ istr := c.Tostr(i)
+ id := post.Getint("id_" + istr)
+ stpstatus := post.Getint("stpstatus_" + istr)
+ name := post.Get("name_" + istr)
+ mobile := post.Get("mobile_" + istr)
+ sex := post.Getint("sex_" + istr)
+ departid := post.Getint("departid_" + istr)
+ csql := c.NewCiySQL("zc_admin")
+ csql.Where("mobile", mobile)
+ csql.Column("id")
+ chkid := c.Toint(c.CiyDB.Get1(csql))
+ if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
+ return fmt.Errorf("发现手机号有重复")
+ }
+ updata := map[string]any{}
+ updata["name"] = name
+ updata["mobile"] = mobile
+ updata["stpstatus"] = stpstatus
+ updata["sex"] = sex
+ updata["departid"] = departid
+ csql = c.NewCiySQL("zc_admin")
+ var err error
+ if id == 0 {
+ updata["addtimes"] = c.Tostamp()
+ _, err = c.CiyDB.Insert(csql, updata)
+ } else {
+ csql.Where("id", id)
+ _, err = c.CiyDB.Update(csql, updata)
+ }
+ if err != nil {
+ return fmt.Errorf("导入失败:%v", err)
+ }
+ }
+ return nil
+ })
+ if err != nil {
+ return c.ErrJSON(w, "事务"+err.Error())
+ }
+ c.CiyDB.Execute("update zc_online set usrchg=2")
+ return c.SuccJSON(w, r)
+}
diff --git a/web/admin/rigger/admin.html b/web/admin/rigger/admin.html
new file mode 100644
index 0000000..a4aeb1c
--- /dev/null
+++ b/web/admin/rigger/admin.html
@@ -0,0 +1,251 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/rigger/admin.php b/web/admin/rigger/admin.php
new file mode 100644
index 0000000..1c0b59b
--- /dev/null
+++ b/web/admin/rigger/admin.php
@@ -0,0 +1,523 @@
+get('query');
+ $csql = new \ciy\sql('zc_admin');
+ $csql->where('departid', $post->get('departid'));
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('stpstatus', $liid);
+ $csql->where('name like', objstr($query, 'name'));
+ $csql->where('mobile like', objstr($query, 'mobile'));
+ $csql->where('sex', objstr($query, 'sex'));
+ $csql->wheredaterange('logintimes', objstr($query, 'logintimes'));
+ $csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+ public static function json_init() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'zc_admin');
+ foreach ($field as $fr => $v) {
+ if ($post->is('_' . $fr))
+ $field[$fr]['c'] = ',' . $field[$fr]['c'];
+ }
+ $fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array(
+ 'type' => 'input',
+ 'form' => 'name',
+ 'name' => '姓名',
+ 'prop' => ' style="width:8em;"'
+ );
+ $input[] = array(
+ 'type' => 'input',
+ 'form' => 'mobile',
+ 'name' => '手机号',
+ 'prop' => ' style="width:8em;"'
+ );
+ $input[] = array(
+ 'type' => 'select',
+ 'form' => 'sex',
+ 'name' => '性别',
+ 'select' => 'sex',
+ 'all' => '全部'
+ );
+ $input[] = array(
+ 'type' => 'daterange',
+ 'form' => 'logintimes',
+ 'name' => '登录时间'
+ );
+ $input[] = array(
+ 'type' => 'daterange',
+ 'form' => 'addtimes',
+ 'name' => '注册时间'
+ );
+ $ret['searchinput'] = $input;
+ $csql = (new \ciy\sql('zc_depart'))->column('id,upid,name,isuse');
+ $ret['zc_depart'] = $db->get($csql);
+ $csql = new \ciy\sql('zc_role');
+ $csql->column('id,name');
+ $ret['zc_role'] = $db->get($csql);
+ }
+ return succjson($ret);
+ }
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $name = $post->get('name');
+ if (empty($name))
+ return errjson('请填写姓名');
+ $stpstatus = $post->getint('stpstatus');
+ if ($stpstatus <= 0)
+ return errjson('请填写状态');
+ $mobile = $post->get('mobile');
+ if (empty($mobile))
+ return errjson('请填写手机号');
+ $sex = $post->getint('sex');
+ if ($sex <= 0)
+ return errjson('请填写性别');
+ $departid = $post->getint('departid');
+ if ($departid == 0)
+ return errjson('请选择组织/部门');
+ $roleid = $post->getint('roleid');
+ $icon = $post->get('icon');
+ $datarow = null;
+ if ($id > 0) {
+ if (nopower($db, $rsuser['id'], 'p500u'))
+ return errjson('您未被授权操作修改');
+ $csql = new \ciy\sql('zc_admin');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ if ($datarow['roleid'] != $roleid) {
+ if (nopower($db, $rsuser['id'], 'p500r'))
+ return errjson('您没有赋予角色的权限');
+ } else
+ $roleid = 0;
+ } else {
+ if (nopower($db, $rsuser['id'], 'p500a'))
+ return errjson('您未被授权操作新增');
+ if (nopower($db, $rsuser['id'], 'p500r'))
+ $roleid = 0;
+ }
+ if ($roleid > 0) {
+ $csql = new \ciy\sql('zc_role');
+ $csql->where('id', $roleid);
+ $rolerow = $db->getone($csql);
+ if (!is_array($rolerow))
+ return errjson('角色不存在');
+ }
+ try {
+ $db->begin();
+ $csql = new \ciy\sql('zc_admin');
+ $csql->where('mobile', $mobile);
+ $csql->column('id');
+ $chkid = toint($db->get1($csql));
+ if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
+ throw new \Exception('CIYIGN数据已存在');
+
+ $updata = array();
+ $updata['icon'] = $icon;
+ $updata['name'] = $name;
+ $updata['stpstatus'] = $stpstatus;
+ $updata['mobile'] = $mobile;
+ $updata['sex'] = $sex;
+ $updata['departid'] = $departid;
+ $updata['roleid'] = $roleid;
+ if ($roleid > 0) {
+ $updata['power'] = $rolerow['power'];
+ }
+ $csql = new \ciy\sql('zc_admin');
+ if ($id > 0) {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ if ($stpstatus == 10) {
+ if ($roleid > 0 || $datarow['name'] != $name || $datarow['icon'] != $icon)
+ if ($db->execute('update zc_online set usrchg=2 where user=?', array($id)) === false)
+ throw new \Exception('更新online失败:' . $db->error);
+ } else {
+ if ($db->execute('delete from zc_online where user=?', array($id)) === false)
+ throw new \Exception('删除online失败:' . $db->error);
+ }
+ if ($datarow['name'] != $name)
+ $db->execute('update zc_online set usrchg=2');
+ } else {
+ $updata['addtimes'] = tostamp();
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增失败:' . $db->error);
+ $id = $db->insert_id();
+ if ($db->execute('update zc_online set usrchg=2') === false)
+ throw new \Exception('更新online失败:' . $db->error);
+ }
+ $updata['id'] = $id;
+ savelogdb($db, $rsuser['id'], 'zc_admin', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+ if (nopower($db, $rsuser['id'], 'p500d'))
+ return errjson('您未被授权操作');
+
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('zc_admin');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ if ($rsuser['id'] == $delid)
+ throw new \Exception('CIYIGN不能删除本人');
+ if ($row['id'] == 10)
+ throw new \Exception('CIYIGN不能删除超级管理员');
+ delme($db, $delid, 'zc_admin');
+ $db->execute('delte from zc_online where user=?', array($delid));
+ savelogdb($db, $rsuser['id'], 'zc_admin', $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $db->execute('update zc_online set usrchg=2');
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+ public static function json_repass() {
+ global $db;
+ $rsuser = verifyfast();
+ global $_token;
+ if (nopower($db, $rsuser['id'], 'p500p'))
+ return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $newpass = rand(100000, 999999);
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['trytime'] = 0;
+ $updata['password'] = sha256($newpass . $_token['salt']);
+ $csql = new \ciy\sql('zc_admin');
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ if ($db->execute('delete from zc_online where user=?', array($id)) === false)
+ throw new \Exception('删除online失败:' . $db->error);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['msg'] = '重置后密码: ' . $newpass;
+ return succjson($ret);
+ }
+ public static function json_exportxls() {
+ global $db;
+ $rsuser = verifyfast();
+ if (nopower($db, $rsuser['id'], 'p500e'))
+ return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $csql = new \ciy\sql('zc_admin');
+
+ list($where, $csql) = self::setwhere($db, $post);
+ $rows = $db->get($csql);
+ if (count($rows) > 10000)
+ return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围');
+ $fields = array();
+ $fields[] = array('width' => 60, 'style' => 'c', 'field' => 'id', 'name' => '行码');
+ $fields[] = array('width' => 100, 'style' => 'l', 'field' => 'name', 'name' => '姓名');
+ $fields[] = array('width' => 60, 'style' => 'c', 'field' => 'stpstatus', 'name' => '状态');
+ $fields[] = array('width' => 100, 'style' => 'l', 'field' => 'mobile', 'name' => '手机号');
+ $fields[] = array('width' => 60, 'style' => 'c', 'field' => 'sex', 'name' => '性别');
+ $fields[] = array('width' => 100, 'style' => 'l', 'field' => 'departid', 'name' => '所属组织');
+ $fields[] = array('width' => 100, 'style' => 'l', 'field' => 'logintimes', 'name' => '活跃时间');
+ $fields[] = array('width' => 100, 'style' => 'l', 'field' => 'addtimes', 'name' => '注册时间');
+ $code_stpstatus = getcatas($db, 'stpstatus', 'zc_cata');
+ $code_sex = getcatas($db, 'sex', 'zc_cata');
+ $csql = (new \ciy\sql('zc_depart'))->column('id,upid,name');
+ $code_departid = $db->get($csql);
+ $datas = array();
+ foreach ($rows as $row) {
+ $dat = array();
+ foreach ($fields as $field) {
+ $field = $field['field'];
+ $val = isset($row[$field]) ? $row[$field] : '';
+ if ($field == 'id')
+ $val = enid($val);
+ if ($field == 'stpstatus')
+ $val = ccode($code_stpstatus, $val);
+ if ($field == 'sex')
+ $val = ccode($code_sex, $val);
+ if ($field == 'departid')
+ $val = implode('-', mcode($code_departid, $val));
+ if ($field == 'logintimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ if ($field == 'addtimes')
+ $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val));
+ $dat[] = $val;
+ }
+ $datas[] = $dat;
+ }
+
+ $param = array();
+ $param['field'] = $fields;
+ $param['data'] = $datas;
+
+ $param['sheetname'] = '数据报表';
+ $param['titleheight'] = '25'; //列头高度
+ $param['landscape'] = true; //横向打印
+ $param['fixtopage'] = true; //打印整个工作表
+
+ $param['toptitle'] = '管理员数据报表';
+ // $param['total'] = array();
+ // $param['total'][] = array('name'=>'合计','merge'=>8,'style'=>'l');
+ // $param['total'][] = array('name'=>'=SUM(R[-'.count($datas).']C:R[-1]C)','style'=>'r');
+ // $param['total'][] = array('name'=>'=MAX(R[-'.count($datas).']C:R[-1]C)','style'=>'r');
+ // $param['total'][] = array('name'=>'','style'=>'l');
+ // $param['total'][] = array('name'=>'','style'=>'l');
+
+ //$param['rowstop'] = '| # | '; + foreach ($heads as $arr) { + $html .= '' . $arr['name'] . ' | '; + } + $html .= '' . $lineidx . ' | ';
+ $bempty = true;
+ $unqs = array();
+ $csql = new \ciy\sql('zc_admin');
+ foreach ($heads as $arr) {
+ $name = $arr['name'];
+ $errmsg = ''; //数据有误,显示红色说明
+ $showdat = ''; //显示在表格中的数据
+ if ($arr['idx'] > -1)
+ $showdat = trim($datas[$rowidx][$arr['idx']]);
+ if ($showdat == '--')
+ $showdat = '';
+ $value = $showdat; //在表单中的数据(转换后)
+ $ext = ''; //扩展表单
+ if ($name == '行码') {
+ if (empty($showdat)) {
+ $value = 0;
+ $showdat = '新增';
+ } else {
+ $id = deid($showdat);
+ if ($id == 0)
+ $errmsg = $name . '解析错误';
+ else {
+ $csqlchk = new \ciy\sql('zc_admin');
+ $csqlchk->where('id', $id)->column('id');
+ $chkid = toint($db->get1($csqlchk));
+ if ($chkid != $id)
+ $errmsg = $name . '在数据库中不存在';
+ $value = $id;
+ }
+ }
+ } else if ($name == '姓名') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ }
+ } else if ($name == '手机号') {
+ $csql->where('mobile', $showdat);
+ $unqs[] = $showdat;
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ }
+ } else if ($name == '性别') {
+ if (empty($showdat)) {
+ $errmsg = $name . '为必填项';
+ } else {
+ $value = dcode($code_sex, $showdat);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ } else if ($name == '所属组织') {
+ if (empty($showdat)) {
+ $value = 0;
+ } else {
+ $dats = explode('-', $showdat);
+ $value = dcode($code_departid, $dats[count($dats) - 1]);
+ if ($value == -1)
+ $errmsg = $name . '文字与系统数据不匹配';
+ }
+ }
+ if (!empty($showdat))
+ $bempty = false;
+
+ if (empty($errmsg))
+ $hrhtml .= '' . $showdat . '' . $ext . ' | ';
+ else
+ $hrhtml .= '' . $showdat . ' | ';
+ }
+ if ($bempty)
+ continue;
+
+ if (count($unqs) > 0) {
+ $unq = implode('|', $unqs);
+ if (in_array($unq, $uniques))
+ $firsthtml = '重复 | ';
+ else {
+ $uniques[] = $unq;
+ $csql->column('id');
+ $chkid = toint($db->get1($csql));
+ if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
+ $firsthtml = '重复 | ';
+ }
+ }
+ $html .= '
|---|---|
共' . $cnt . '条数据';
+ return succjson(array('html' => $html, 'count' => $cnt));
+ }
+ public static function json_importxls_data() {
+ global $db;
+ $rsuser = verifyfast();
+ if (nopower($db, $rsuser['id'], 'p500a'))
+ return errjson('您未被授权操作新增');
+ $post = new \ciy\post();
+ $total = $post->getint('total');
+ try {
+ $db->begin();
+ for ($i = 1; $i <= $total; $i++) {
+ $id = $post->getint('id_' . $i);
+ $name = $post->get('name_' . $i);
+ $mobile = $post->get('mobile_' . $i);
+ $sex = $post->get('sex_' . $i);
+ $departid = $post->get('departid_' . $i);
+ $csql = new \ciy\sql('zc_admin');
+ $csql->where('mobile', $mobile);
+ $csql->column('id');
+ $chkid = toint($db->get1($csql));
+ if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
+ throw new \Exception('CIYIGN发现数据有重复');
+
+ $updata = array();
+ $updata['name'] = $name;
+ $updata['mobile'] = $mobile;
+ $updata['stpstatus'] = 10;
+ $updata['sex'] = $sex;
+ $updata['departid'] = $departid;
+ $updata['addtimes'] = tostamp();
+ $csql = new \ciy\sql('zc_admin');
+ if ($id == 0) {
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('新增失败:' . $db->error);
+ } else {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ }
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $db->execute('update zc_online set usrchg=2');
+ return succjson();
+ }
+}
diff --git a/web/admin/rigger/autotask.go b/web/admin/rigger/autotask.go
new file mode 100644
index 0000000..e293c03
--- /dev/null
+++ b/web/admin/rigger/autotask.go
@@ -0,0 +1,226 @@
+package rigger
+
+import (
+ "fmt"
+ "net/http"
+
+ "ciyon/web/admin"
+ c "ciyon/zciyon"
+)
+
+func autotask_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
+ query := post.Getobj("query")
+ csql := c.NewCiySQL("zc_autotask")
+ liid := c.Getint(query, "liid")
+ if liid > 0 {
+ csql.Where("autotaskstatus", liid)
+ }
+ csql.Where("types like", c.Getstr(query, "types"))
+ order := c.Getstr(query, "order", "id desc")
+ csql.Order(order)
+ query["order"] = order
+ return query, csql
+}
+func Autotask_init(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ where, csql := autotask_setwhere(post)
+ pageno := post.Getint("pageno", 1)
+ pagecount := post.Getint("pagecount", 10)
+ csql.Limit(pageno, pagecount)
+ rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
+ if err != nil {
+ return c.ErrJSON(w, "读取错误", err)
+ }
+ rows = append(rows, map[string]any{
+ "id": "",
+ "runcycle": 0,
+ "nexttimes": c.Tostamp(),
+ })
+ ret := map[string]any{}
+ ret["where"] = where
+ ret["pageno"] = pageno
+ ret["pagecount"] = pagecount
+ ret["count"] = mainrowcount
+ ret["list"] = rows
+ if post.Getbool("field") {
+ field, fshow := c.CiyDB.GetField(csql)
+ c.FieldAdd(&field, &fshow, -1, "_btn", "操作")
+ field["runparam"]["thwidth"] = "8em"
+ field["nexttimes"]["thwidth"] = "10em"
+ field["runcycle"]["thwidth"] = "9em"
+ field["autotaskstatus"]["thwidth"] = "6em"
+ ret["fshow"] = fshow
+ ret["field"] = field
+ }
+ if post.Getbool("once") {
+ once := map[string]any{}
+ input := make([]map[string]any, 0)
+ input = append(input, map[string]any{
+ "form": "name",
+ "type": "input",
+ "name": "任务名称",
+ "prop": ` style="width:8em;"`,
+ })
+ input = append(input, map[string]any{
+ "form": "runfunc",
+ "type": "input",
+ "name": "入口函数",
+ "prop": ` style="width:8em;"`,
+ })
+ once["input"] = input
+ ret["once"] = once
+ }
+ return c.SuccJSON(w, r, ret)
+}
+func Autotask_update(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ if admin.Nopower(c.CiyDB, userid, "p602u") {
+ return c.ErrJSON(w, "您未被授权操作")
+ }
+ id := post.Getint("id")
+ name := post.Get("name")
+ if name == "" {
+ return c.ErrJSON(w, "请填写任务名称")
+ }
+ runfunc := post.Get("runfunc")
+ if runfunc == "" {
+ return c.ErrJSON(w, "请填写入口函数")
+ }
+ runparam := post.Get("runparam")
+ nexttimes := post.Getdate("nexttimes")
+ runcycle := post.Getint("runcycle")
+ if runcycle >= 0 && runcycle < 60 {
+ return c.ErrJSON(w, "请填写超过1分钟的执行周期")
+ }
+ var err error
+ var datarow map[string]any
+ if id > 0 {
+ csql := c.NewCiySQL("zc_autotask")
+ csql.Where("id", id)
+ datarow, err = c.CiyDB.Getone(csql)
+ if datarow == nil {
+ return c.ErrJSON(w, "数据不存在", err)
+ }
+ }
+ updata := map[string]any{}
+ err = c.CiyDB.Tran(func() error {
+ var csql *c.CiySQL
+ csql = c.NewCiySQL("zc_autotask")
+ csql.Where("name", name)
+ csql.Column("id")
+ chkid := c.Toint(c.CiyDB.Get1(csql))
+ if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
+ return fmt.Errorf("数据已存在")
+ }
+ updata["name"] = name
+ updata["runfunc"] = runfunc
+ updata["runparam"] = runparam
+ updata["nexttimes"] = nexttimes
+ updata["runcycle"] = runcycle
+ csql = c.NewCiySQL("zc_autotask")
+ if id > 0 {
+ csql.Where("id", id)
+ _, err = c.CiyDB.Update(csql, updata)
+ } else {
+ updata["autotaskstatus"] = 90
+ if nexttimes == 0 {
+ updata["nexttimes"] = c.Tostamp()
+ }
+ id, err = c.CiyDB.Insert(csql, updata)
+ }
+ updata["newid"] = id
+ if err != nil {
+ return fmt.Errorf("更新失败:%v", err)
+ }
+ admin.SaveLogDB(c.CiyDB, "zc_autotask", datarow, updata)
+ return nil
+ })
+ if err != nil {
+ return c.ErrJSON(w, "事务"+err.Error())
+ }
+ ret := map[string]any{}
+ ret["data"] = updata
+ return c.SuccJSON(w, r, ret)
+}
+func Autotask_del(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ if admin.Nopower(c.CiyDB, userid, "p602d") {
+ return c.ErrJSON(w, "您未被授权操作")
+ }
+ ids := post.Get("ids")
+ if ids == "" {
+ return c.ErrJSON(w, "请选择至少一条")
+ }
+ csql := c.NewCiySQL("zc_autotask")
+ csql.Where("id in", ids)
+ rows, _, err := c.CiyDB.Get(csql)
+ if err != nil {
+ return c.ErrJSON(w, "读取数据错误", err)
+ }
+ vids := make([]int, 0)
+ err = c.CiyDB.Tran(func() error {
+ for _, row := range rows {
+ delid := c.Toint(row["id"])
+ c.Delme(c.CiyDB, delid, "zc_autotask")
+ admin.SaveLogDB(c.CiyDB, "zc_autotask", row, nil)
+ vids = append(vids, delid)
+ }
+ return nil
+ })
+ if err != nil {
+ return c.ErrJSON(w, "事务"+err.Error())
+ }
+ ret := map[string]any{}
+ ret["ids"] = vids
+ return c.SuccJSON(w, r, ret)
+}
+
+func Autotask_status(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ if admin.Nopower(c.CiyDB, userid, "p602u") {
+ return c.ErrJSON(w, "您未被授权操作")
+ }
+ id := post.Getint("id")
+ status := post.Getint("status")
+ csql := c.NewCiySQL("zc_autotask")
+ csql.Where("id", id)
+ row, err := c.CiyDB.Getone(csql)
+ if err != nil {
+ return c.ErrJSON(w, "读取数据错误", err)
+ }
+ updata := map[string]any{}
+ err = c.CiyDB.Tran(func() error {
+ updata["autotaskstatus"] = status
+ csql = c.NewCiySQL("zc_autotask")
+ csql.Where("id", id)
+ _, err = c.CiyDB.Update(csql, updata)
+ if err != nil {
+ return fmt.Errorf("更新失败:%v", err)
+ }
+ admin.SaveLogDB(c.CiyDB, "zc_autotask", row, updata)
+ updata["id"] = id
+ return nil
+ })
+ if err != nil {
+ return c.ErrJSON(w, "事务"+err.Error())
+ }
+ ret := map[string]any{}
+ ret["data"] = updata
+ return c.SuccJSON(w, r, ret)
+}
diff --git a/web/admin/rigger/autotask.html b/web/admin/rigger/autotask.html
new file mode 100644
index 0000000..e9e7a5d
--- /dev/null
+++ b/web/admin/rigger/autotask.html
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/admin/rigger/autotask.php b/web/admin/rigger/autotask.php
new file mode 100644
index 0000000..0543ca5
--- /dev/null
+++ b/web/admin/rigger/autotask.php
@@ -0,0 +1,193 @@
+get('query');
+ $csql = new \ciy\sql('zc_autotask');
+ $liid = objint($query, 'liid');
+ if ($liid > 0)
+ $csql->where('autotaskstatus', $liid);
+ $csql->where('name like', objstr($query, 'name'));
+ $csql->where('runfunc like', objstr($query, 'runfunc'));
+ $order = objstr($query, 'order', 'id desc');
+ $csql->order($order);
+ $query['order'] = $order;
+ return [$query, $csql];
+ }
+ public static function json_init() {
+ global $db;
+ $rsuser = verifyfast();
+ $post = new \ciy\post();
+ list($where, $csql) = self::setwhere($db, $post);
+ $pageno = $post->getint('pageno', 1);
+ $pagecount = $post->getint('pagecount', 10);
+ $csql->limit($pageno, $pagecount);
+ $mainrowcount = $post->getint('count');
+ $rows = $db->get($csql, $mainrowcount);
+ $rows[] = array('id' => '', 'runcycle' => 0, 'nexttimes' => tostamp());
+ $ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
+ if ($post->getbool('field')) {
+ $field = array();
+ $fshow = $db->getfield($field, 'zc_autotask');
+ $fshow = fieldadd($fshow, $field, -1, '_btn', '操作');
+ $field['runparam']['thwidth'] = '8em';
+ $field['nexttimes']['thwidth'] = '10em';
+ $field['runcycle']['thwidth'] = '9em';
+ $field['autotaskstatus']['thwidth'] = '6em';
+ $ret['field'] = $field;
+ $ret['fshow'] = $fshow;
+ }
+ if ($post->getbool('once')) {
+ $ret['once'] = true;
+ $input = array();
+ $input[] = array(
+ 'type' => 'input',
+ 'form' => 'name',
+ 'name' => '任务名称',
+ 'prop' => ' style="width:8em;"'
+ );
+ $input[] = array(
+ 'type' => 'input',
+ 'form' => 'runfunc',
+ 'name' => '入口函数',
+ 'prop' => ' style="width:8em;"'
+ );
+ $ret['searchinput'] = $input;
+ }
+ return succjson($ret);
+ }
+
+ public static function json_update() {
+ global $db;
+ $rsuser = verifyfast();
+
+ if (nopower($db, $rsuser['id'], 'p602u'))
+ return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $name = $post->get('name');
+ if (empty($name))
+ return errjson('请填写任务名称');
+ $runfunc = $post->get('runfunc');
+ if (empty($runfunc))
+ return errjson('请填写入口函数');
+ $runparam = $post->get('runparam');
+ $nexttimes = $post->getdate('nexttimes');
+ $runcycle = $post->getint('runcycle');
+ if ($runcycle >= 0 && $runcycle < 60)
+ return errjson('请填写超过1分钟的执行周期');
+ $datarow = null;
+ if ($id > 0) {
+ $csql = new \ciy\sql('zc_autotask');
+ $csql->where('id', $id);
+ $datarow = $db->getone($csql);
+ if (!is_array($datarow))
+ return errjson('数据不存在');
+ }
+ try {
+ $db->begin();
+ $csql = new \ciy\sql('zc_autotask');
+ $csql->where('name', $name);
+ $csql->column('id');
+ $chkid = toint($db->get1($csql));
+ if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
+ throw new \Exception('CIYIGN数据已存在');
+
+ $updata = array();
+ $updata['name'] = $name;
+ $updata['runfunc'] = $runfunc;
+ $updata['runparam'] = $runparam;
+ $updata['nexttimes'] = $nexttimes;
+ $updata['runcycle'] = $runcycle;
+ $csql = new \ciy\sql('zc_autotask');
+ if ($id > 0) {
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ } else {
+ $updata['autotaskstatus'] = 90;
+ if ($nexttimes == 0)
+ $updata['nexttimes'] = tostamp();
+ if ($db->insert($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ $id = $db->insert_id();
+ }
+ $updata['id'] = $id;
+ savelogdb($db, $rsuser['id'], 'zc_autotask', $datarow, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+
+ public static function json_del() {
+ global $db;
+ $rsuser = verifyfast();
+
+ if (nopower($db, $rsuser['id'], 'p602d'))
+ return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $ids = $post->get('ids');
+ if (empty($ids))
+ return errjson('请选择至少一条');
+ $csql = new \ciy\sql('zc_autotask');
+ $csql->where('id in', $ids);
+ $rows = $db->get($csql);
+ $vids = array();
+ try {
+ $db->begin();
+ foreach ($rows as $row) {
+ $delid = $row['id'];
+ delme($db, $delid, 'zc_autotask');
+ savelogdb($db, $rsuser['id'], $delid, $row, null);
+ $vids[] = $delid;
+ }
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['ids'] = $vids;
+ return succjson($ret);
+ }
+ public static function json_status() {
+ global $db;
+ $rsuser = verifyfast();
+
+ if (nopower($db, $rsuser['id'], 'p602u'))
+ return errjson('您未被授权操作');
+ $post = new \ciy\post();
+ $id = $post->getint('id');
+ $status = $post->getint('status');
+ $csql = new \ciy\sql('zc_autotask');
+ $csql->where('id', $id);
+ $row = $db->getone($csql);
+ if (!is_array($row))
+ return errjson('数据不存在');
+ try {
+ $db->begin();
+ $updata = array();
+ $updata['autotaskstatus'] = $status;
+ $csql = new \ciy\sql('zc_autotask');
+ $csql->where('id', $id);
+ if ($db->update($csql, $updata) === false)
+ throw new \Exception('更新失败:' . $db->error);
+ $updata['id'] = $id;
+ savelogdb($db, $rsuser['id'], 'zc_autotask', $row, $updata);
+ $db->commit();
+ } catch (\Exception $ex) {
+ $db->rollback();
+ savelogfile('err_db', $ex->getMessage());
+ return errjson($ex->getMessage());
+ }
+ $ret['data'] = $updata;
+ return succjson($ret);
+ }
+}
diff --git a/web/admin/rigger/autotskrun.go b/web/admin/rigger/autotskrun.go
new file mode 100644
index 0000000..910ee65
--- /dev/null
+++ b/web/admin/rigger/autotskrun.go
@@ -0,0 +1,222 @@
+package rigger
+
+import (
+ "math/rand"
+ "net/http"
+
+ "ciyon/web/admin"
+ c "ciyon/zciyon"
+)
+
+func autotskrun_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
+ query := post.Getobj("query")
+ csql := c.NewCiySQL("zc_autotsk_run")
+ csql.Where("autotaskid", c.Getstr(query, "_autotaskid"))
+ csql.Where_daterange("addtimes", c.Getstr(query, "addtimes"))
+ csql.Where_numrange("runsec", c.Getstr(query, "runsec_1"), c.Getstr(query, "runsec_2"), 1)
+ csql.Where_numrange("logcnt", c.Getstr(query, "logcnt_1"), c.Getstr(query, "logcnt_2"), 1)
+ csql.Where("msg like", c.Getstr(query, "msg"))
+ order := c.Getstr(query, "order", "id desc")
+ csql.Order(order)
+ query["order"] = order
+ return query, csql
+}
+func Autotskrun_init(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ where, csql := autotskrun_setwhere(post)
+ pageno := post.Getint("pageno", 1)
+ pagecount := post.Getint("pagecount", 10)
+ csql.Limit(pageno, pagecount)
+ rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
+ if err != nil {
+ return c.ErrJSON(w, "读取错误", err)
+ }
+ ret := map[string]any{}
+ ret["where"] = where
+ ret["pageno"] = pageno
+ ret["pagecount"] = pagecount
+ ret["count"] = mainrowcount
+ ret["list"] = rows
+ if post.Getbool("field") {
+ field, fshow := c.CiyDB.GetField(csql)
+ field["msg"]["thwidth"] = "20em"
+ ret["fshow"] = fshow
+ ret["field"] = field
+ }
+ if post.Getbool("once") {
+ once := map[string]any{}
+ input := make([]map[string]any, 0)
+ input = append(input, map[string]any{
+ "form": "addtimes",
+ "type": "daterange",
+ "name": "执行时间",
+ })
+ input = append(input, map[string]any{
+ "form": "runsec",
+ "type": "num",
+ "name": "时长",
+ "prop": ` style="width:4em;"`,
+ })
+ input = append(input, map[string]any{
+ "form": "logcnt",
+ "type": "num",
+ "name": "LOG统计",
+ "prop": ` style="width:4em;"`,
+ })
+ input = append(input, map[string]any{
+ "form": "msg",
+ "type": "input",
+ "name": "任务简报",
+ "prop": ` style="width:8em;"`,
+ })
+ once["input"] = input
+ csql = c.NewCiySQL("zc_autotask")
+ csql.Column("id,name")
+ ret["zc_autotask"], _, _ = c.CiyDB.Get(csql)
+ ret["once"] = once
+ }
+ return c.SuccJSON(w, r, ret)
+}
+func Autotskrun_del(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ if admin.Nopower(c.CiyDB, userid, "p602l") {
+ return c.ErrJSON(w, "您未被授权操作")
+ }
+ ids := post.Get("ids")
+ if ids == "" {
+ return c.ErrJSON(w, "请选择至少一条")
+ }
+ csql := c.NewCiySQL("zc_autotsk_run")
+ csql.Where("id in", ids)
+ rows, _, err := c.CiyDB.Get(csql)
+ if err != nil {
+ return c.ErrJSON(w, "读取数据错误", err)
+ }
+ vids := make([]int, 0)
+ err = c.CiyDB.Tran(func() error {
+ for _, row := range rows {
+ delid := c.Toint(row["id"])
+ c.Delall(c.CiyDB, delid, "zc_autotsk_log", "runtaskid", "Log记录")
+ c.Delme(c.CiyDB, delid, "zc_autotsk_run")
+ admin.SaveLogDB(c.CiyDB, "zc_autotsk_run", row, nil)
+ vids = append(vids, delid)
+ }
+ return nil
+ })
+ if err != nil {
+ return c.ErrJSON(w, "事务"+err.Error())
+ }
+ ret := map[string]any{}
+ ret["ids"] = vids
+ return c.SuccJSON(w, r, ret)
+}
+
+func Autotskrun_exportxls(w http.ResponseWriter, r *http.Request) bool {
+ post := c.NewCiyPost(w, r)
+ _, userid := admin.Verifyfast(r, c.CiyDB, post)
+ if userid == 0 {
+ return false
+ }
+ if admin.Nopower(c.CiyDB, userid, "p602l") {
+ return c.ErrJSON(w, "您未被授权操作")
+ }
+ _, csql := autotskrun_setwhere(post)
+ rows, _, err := c.CiyDB.Get(csql)
+ if err != nil {
+ return c.ErrJSON(w, "读取错误", err)
+ }
+ if len(rows) > 10000 {
+ return c.ErrJSON(w, "将导出"+c.Tostr(len(rows))+"条,不建议超过1万条,请筛选缩小范围", err)
+ }
+ fields := []map[string]string{}
+ fields = append(fields, map[string]string{"style": "c", "width": "60", "field": "id", "name": "行码"})
+ fields = append(fields, map[string]string{"style": "l", "width": "100", "field": "autotaskid", "name": "所属任务"})
+ fields = append(fields, map[string]string{"style": "l", "width": "100", "field": "addtimes", "name": "执行时间"})
+ fields = append(fields, map[string]string{"style": "r", "width": "60", "field": "runsec", "name": "时长"})
+ fields = append(fields, map[string]string{"style": "r", "width": "60", "field": "logcnt", "name": "LOG统计"})
+ fields = append(fields, map[string]string{"style": "l", "width": "500", "field": "msg", "name": "任务简报"})
+
+ csql = c.NewCiySQL("zc_autotask")
+ csql.Column("id,name")
+ code_autotaskid, _, err2 := c.CiyDB.Get(csql)
+ if err2 != nil {
+ return c.ErrJSON(w, "读取zc_autotask错误", err2)
+ }
+
+ datas := [][]string{}
+ for _, row := range rows {
+ dat := make([]string, 0)
+ for _, f := range fields {
+ field := f["field"]
+ if val, ok := row[field]; ok {
+ var str string
+ if field == "id" {
+ str = c.EnID(c.Toint(val))
+ } else if field == "autotaskid" {
+ str = c.Ccode(code_autotaskid, c.Toint(val))
+ } else if field == "addtimes" {
+ t := c.Toint(val)
+ if t <= 0 {
+ str = "--"
+ } else {
+ str = c.Todate(t, "Y-m-d H:i")
+ }
+ } else {
+ str = c.Tostr(val)
+ }
+ dat = append(dat, str)
+ } else {
+ dat = append(dat, "")
+ }
+ }
+ datas = append(datas, dat)
+ }
+ param := map[string]any{}
+ param["sheetname"] = "数据报表"
+ param["titleheight"] = "25" //列头高度
+ param["landscape"] = true //横向打印
+ param["fixtopage"] = true //打印整个工作表
+ param["toptitle"] = "任务执行记录数据报表"
+ total := []map[string]any{} //单行统计数据
+ // total = append(total, map[string]any{"style": "l", "name": "合计", "merge": 5})
+ // total = append(total, map[string]any{"style": "r", "name": "=SUM(R[-" + c.Tostr(len(datas)) + "]C:R[-1]C)"})
+ // total = append(total, map[string]any{"style": "r", "name": "=MAX(R[-" + c.Tostr(len(datas)) + "]C:R[-1]C)"})
+ // param["rowstop"] = `