commit e2e0d9bf0b236d73526680ad687b47ccfb3b9968 Author: dimengzhe Date: Sat Apr 12 01:31:45 2025 +0800 项目源码 diff --git a/ksafepack-admin/pom.xml b/ksafepack-admin/pom.xml new file mode 100644 index 0000000..895e3e2 --- /dev/null +++ b/ksafepack-admin/pom.xml @@ -0,0 +1,64 @@ + + + + com.kelp + ksafepack + 1.0.1 + + 4.0.0 + war + loulan + + + web服务入口 + + + + + + + org.springframework.boot + spring-boot-devtools + true + + + + + com.kelp + ksafepack-framework + + + + + + + org.springframework.boot + spring-boot-maven-plugin + 2.1.1.RELEASE + + true + + + + + repackage + + + + + + org.apache.maven.plugins + maven-war-plugin + 3.3.1 + + false + ${project.artifactId} + + + + ${project.artifactId} + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/java/com/kelp/KelpApplication.java b/ksafepack-admin/src/main/java/com/kelp/KelpApplication.java new file mode 100644 index 0000000..7f1b1b9 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/KelpApplication.java @@ -0,0 +1,43 @@ +package com.kelp; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver; + +import com.kelp.common.base.RichFreeMarkerView; + +/** + * 启动程序 + * + * @author kelp + */ +@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) +@EnableScheduling +public class KelpApplication { + + public static void main(String[] args) { + + SpringApplication.run(KelpApplication.class, args); + + System.out.println("(♥◠‿◠)ノ゙ 启动成功 ლ(´ڡ`ლ)゙ \n" + " .-------. ____ __ \n" + + " | _ _ \\ \\ \\ / / \n" + " | ( ' ) | \\ _. / ' \n" + + " |(_ o _) / _( )_ .' \n" + " | (_,_).' __ ___(_ o _)' \n" + + " | |\\ \\ | || |(_,_)' \n" + " | | \\ `' /| `-' / \n" + + " | | \\ / \\ / \n" + " ''-' `'-' `-..-' "); + } + + @Bean + public CommandLineRunner customFreemarker(final FreeMarkerViewResolver resolver) { + return new CommandLineRunner() { + @Override + public void run(String... strings) throws Exception { + // 增加视图 + resolver.setViewClass(RichFreeMarkerView.class); + } + }; + } +} \ No newline at end of file diff --git a/ksafepack-admin/src/main/java/com/kelp/KelpServletInitializer.java b/ksafepack-admin/src/main/java/com/kelp/KelpServletInitializer.java new file mode 100644 index 0000000..c75afbb --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/KelpServletInitializer.java @@ -0,0 +1,16 @@ +package com.kelp; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * web容器中进行部署 + * + * @author kelp + */ +public class KelpServletInitializer extends SpringBootServletInitializer { + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(KelpApplication.class); + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/AnQuanFuWuController.java b/ksafepack-admin/src/main/java/com/kelp/business/AnQuanFuWuController.java new file mode 100644 index 0000000..fe23553 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/AnQuanFuWuController.java @@ -0,0 +1,17 @@ +package com.kelp.business; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class AnQuanFuWuController { + + private final String prefix = "business/anquanfuwu"; + + @RequestMapping({"/" + prefix}) + public String index(Model model) { + model.addAttribute("prefix", "/" + prefix); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/AnQuanWeiFuWuController.java b/ksafepack-admin/src/main/java/com/kelp/business/AnQuanWeiFuWuController.java new file mode 100644 index 0000000..990ef43 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/AnQuanWeiFuWuController.java @@ -0,0 +1,17 @@ +package com.kelp.business; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class AnQuanWeiFuWuController { + + private final String prefix = "business/anquanweifuwu"; + + @RequestMapping({"/" + prefix}) + public String index(Model model) { + model.addAttribute("prefix", "/" + prefix); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/AppController.java b/ksafepack-admin/src/main/java/com/kelp/business/AppController.java new file mode 100644 index 0000000..fdb4677 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/AppController.java @@ -0,0 +1,16 @@ +package com.kelp.business; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class AppController { + private final String prefix = "business/app"; + + @RequestMapping({"/" + prefix}) + public String index(Model model) { + model.addAttribute("prefix", "/" + prefix); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/BuyController.java b/ksafepack-admin/src/main/java/com/kelp/business/BuyController.java new file mode 100644 index 0000000..d83b579 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/BuyController.java @@ -0,0 +1,77 @@ +package com.kelp.business; + + +import com.kelp.business.dao.BuyDao; +import com.kelp.business.entity.Buy; +import com.kelp.crm.entity.ECustomer; +import com.kelp.crm.service.ECustomerService; +import com.opensymphony.oscache.util.StringUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class BuyController { + private final String prefix = "/business/buy"; + + protected String RESULT = "result"; + protected String MESSAGE = "message"; + + @Autowired + private BuyDao buyDao; + + @Autowired + private ECustomerService customerService; + + @PostMapping(path = {prefix + "/{id}"}) + public ModelMap index(@PathVariable("id") String id, Buy buy) { + + ModelMap modelMap = new ModelMap(); + ECustomer eCustomer = new ECustomer(); + String companyName = buy.getCompanyName(); + + if (StringUtil.isEmpty(companyName) || companyName.length() > 50) { + modelMap.put(MESSAGE, "公司名称不能为空或长度不能大于50!"); + modelMap.put(RESULT, false); + return modelMap; + } + eCustomer.setName(companyName); + + String name = buy.getName(); + if (StringUtil.isEmpty(name) || name.length() > 20) { + modelMap.put(MESSAGE, "姓名不能为空或长度不能大于20!"); + modelMap.put(RESULT, false); + return modelMap; + } + eCustomer.setContact(name); + + String telephone = buy.getTelephone(); + if (StringUtil.isEmpty(telephone) || telephone.length() > 20) { + modelMap.put(MESSAGE, "联系电话数据非法!"); + modelMap.put(RESULT, false); + return modelMap; + } + eCustomer.setTelephone(telephone); + eCustomer.setEffctiveTime(System.currentTimeMillis()); + eCustomer.setExpiredTime(System.currentTimeMillis()); + eCustomer.setState("00"); + // 跟单人姓名 + eCustomer.setStaffName("楼兰安全"); + + ECustomer customer = customerService.getByName(eCustomer.getName()); + if (customer == null) { + eCustomer = customerService.add(eCustomer); + buy.setCustomerId(eCustomer.getId()); + } else { + buy.setCustomerId(customer.getId()); + } + buy.setType(id); + buyDao.add(buy); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "添加成功!"); + return modelMap; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/DuLiZhanAnQuanController.java b/ksafepack-admin/src/main/java/com/kelp/business/DuLiZhanAnQuanController.java new file mode 100644 index 0000000..8f14e51 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/DuLiZhanAnQuanController.java @@ -0,0 +1,16 @@ +package com.kelp.business; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class DuLiZhanAnQuanController { + private final String prefix = "business/dulizhananquan"; + + @RequestMapping({"/" + prefix}) + public String index(Model model) { + model.addAttribute("prefix", "/" + prefix); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/GuanYuWoMenController.java b/ksafepack-admin/src/main/java/com/kelp/business/GuanYuWoMenController.java new file mode 100644 index 0000000..8bbde9e --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/GuanYuWoMenController.java @@ -0,0 +1,16 @@ +package com.kelp.business; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class GuanYuWoMenController { + private final String prefix = "business/guanyuwomen"; + + @RequestMapping({"/" + prefix}) + public String index(Model model) { + model.addAttribute("prefix", "/" + prefix); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/GuanYuWoMenLianXiController.java b/ksafepack-admin/src/main/java/com/kelp/business/GuanYuWoMenLianXiController.java new file mode 100644 index 0000000..3ce34f3 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/GuanYuWoMenLianXiController.java @@ -0,0 +1,16 @@ +package com.kelp.business; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class GuanYuWoMenLianXiController { + private final String prefix = "business/guanyuwomenlianxi"; + + @RequestMapping({"/" + prefix}) + public String index(Model model) { + model.addAttribute("prefix", "/" + prefix); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/GuanYuWoMenYouShiController.java b/ksafepack-admin/src/main/java/com/kelp/business/GuanYuWoMenYouShiController.java new file mode 100644 index 0000000..c14d8dd --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/GuanYuWoMenYouShiController.java @@ -0,0 +1,16 @@ +package com.kelp.business; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class GuanYuWoMenYouShiController { + private final String prefix = "business/guanyuwomenyoushi"; + + @RequestMapping({"/" + prefix}) + public String index(Model model) { + model.addAttribute("prefix", "/" + prefix); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/GuanYuWoMenZhaoPinController.java b/ksafepack-admin/src/main/java/com/kelp/business/GuanYuWoMenZhaoPinController.java new file mode 100644 index 0000000..7bccb0c --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/GuanYuWoMenZhaoPinController.java @@ -0,0 +1,16 @@ +package com.kelp.business; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class GuanYuWoMenZhaoPinController { + private final String prefix = "business/guanyuwomenzhaopin"; + + @RequestMapping({"/" + prefix}) + public String index(Model model) { + model.addAttribute("prefix", "/" + prefix); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/IndexController.java b/ksafepack-admin/src/main/java/com/kelp/business/IndexController.java new file mode 100644 index 0000000..b9ce8d1 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/IndexController.java @@ -0,0 +1,20 @@ +package com.kelp.business; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class IndexController { + private final String prefix = "business"; + + /** + * 主页 + */ + @RequestMapping({"/" + prefix, "/" + prefix +"/index"}) + public String index(Model model) { + model.addAttribute("prefix", "/" + prefix); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/XinWenXiangQingController.java b/ksafepack-admin/src/main/java/com/kelp/business/XinWenXiangQingController.java new file mode 100644 index 0000000..1460893 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/XinWenXiangQingController.java @@ -0,0 +1,28 @@ +package com.kelp.business; + +import com.kelp.base.Page; +import com.kelp.business.dao.NewsDao; +import com.kelp.business.entity.News; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.annotation.Resource; + +@Controller +public class XinWenXiangQingController { + private final String prefix = "business/xinwenxiangqing"; + + @Resource + private NewsDao newsDao; + + @RequestMapping({"/" + prefix}) + public String index(Model model, String id) { + model.addAttribute("prefix", "/" + prefix); + News news = newsDao.get(Long.valueOf(id)); + model.addAttribute("news", news); + Page page = newsDao.getPage(0, 10, news.getType()); + model.addAttribute("resembleNewsList", page.getData()); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/XinWenZhongXin2Controller.java b/ksafepack-admin/src/main/java/com/kelp/business/XinWenZhongXin2Controller.java new file mode 100644 index 0000000..5f10ead --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/XinWenZhongXin2Controller.java @@ -0,0 +1,33 @@ +package com.kelp.business; + +import com.kelp.base.Page; +import com.kelp.business.dao.NewsDao; +import com.kelp.business.entity.News; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.annotation.Resource; + +@Controller +public class XinWenZhongXin2Controller { + private final String prefix = "business/xinwenzhongxin2"; + + @Resource + private NewsDao newsDao; + + /** + * 新闻中心-安全微服务 + */ + @RequestMapping({"/" + prefix}) + public String index(Model model, Integer pageNum) { + model.addAttribute("prefix", "/" + prefix); + if (null == pageNum || pageNum < 0) { + pageNum = 1; + } + String type = "2"; + Page page = newsDao.getPage(pageNum, 10, type); + model.addAttribute("page", page); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/XinWenZhongXinController.java b/ksafepack-admin/src/main/java/com/kelp/business/XinWenZhongXinController.java new file mode 100644 index 0000000..7479d60 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/XinWenZhongXinController.java @@ -0,0 +1,33 @@ +package com.kelp.business; + +import com.kelp.base.Page; +import com.kelp.business.dao.NewsDao; +import com.kelp.business.entity.News; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.annotation.Resource; + +@Controller +public class XinWenZhongXinController { + private final String prefix = "business/xinwenzhongxin"; + + @Resource + private NewsDao newsDao; + + /** + * 新闻中心-法律法规 + */ + @RequestMapping({"/" + prefix}) + public String index(Model model, Integer pageNum) { + model.addAttribute("prefix", "/" + prefix); + if (null == pageNum || pageNum < 0) { + pageNum = 1; + } + String type = "1"; + Page page = newsDao.getPage(pageNum, 10, type); + model.addAttribute("page", page); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/business/YiYuan5SController.java b/ksafepack-admin/src/main/java/com/kelp/business/YiYuan5SController.java new file mode 100644 index 0000000..7d58c98 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/business/YiYuan5SController.java @@ -0,0 +1,16 @@ +package com.kelp.business; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class YiYuan5SController { + private final String prefix = "business/yiyuan5s"; + + @RequestMapping({"/" + prefix}) + public String index(Model model) { + model.addAttribute("prefix", "/" + prefix); + return prefix + "/index"; + } +} diff --git a/ksafepack-admin/src/main/java/com/kelp/common/controller/CaptchaController.java b/ksafepack-admin/src/main/java/com/kelp/common/controller/CaptchaController.java new file mode 100644 index 0000000..bc3b7bd --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/common/controller/CaptchaController.java @@ -0,0 +1,93 @@ +package com.kelp.common.controller; + +import java.awt.image.BufferedImage; +import java.io.IOException; + +import javax.annotation.Resource; +import javax.imageio.ImageIO; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import com.google.code.kaptcha.Constants; +import com.google.code.kaptcha.Producer; +import com.kelp.common.config.RedisBean; +import com.kelp.framework.base.controller.BaseController; + +/** + * 图片验证码(支持算术形式) + * + * @author kelp + */ +@Controller +@RequestMapping("/captcha") +public class CaptchaController extends BaseController { + @Resource(name = "captchaProducer") + private Producer captchaProducer; + + @Resource(name = "captchaProducerMath") + private Producer captchaProducerMath; + + @Autowired + private RedisBean redisBean; + + /** + * 验证码生成 + */ + @GetMapping(value = "/captchaImage") + public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response) { + ServletOutputStream out = null; + try { + response.setDateHeader("Expires", 0); + response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); + response.addHeader("Cache-Control", "post-check=0, pre-check=0"); + response.setHeader("Pragma", "no-cache"); + response.setContentType("image/jpeg"); + + String type = request.getParameter("type"); + String timestamp = request.getParameter("timestamp"); + + if (type == null || type.length() > 10 || timestamp == null || timestamp.length() > 20) { + return null; + } + + String capStr = null; + String code = null; + BufferedImage bi = null; + if ("math".equals(type)) { + String capText = captchaProducerMath.createText(); + capStr = capText.substring(0, capText.lastIndexOf("@")); + code = capText.substring(capText.lastIndexOf("@") + 1); + bi = captchaProducerMath.createImage(capStr); + } else if ("char".equals(type)) { + capStr = code = captchaProducer.createText(); + bi = captchaProducer.createImage(capStr); + } + + //验证码两分钟内有效 + redisBean.hset(Constants.KAPTCHA_SESSION_KEY, timestamp, code,2); + + out = response.getOutputStream(); + ImageIO.write(bi, "jpg", out); + out.flush(); + + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + return null; + } +} \ No newline at end of file diff --git a/ksafepack-admin/src/main/java/com/kelp/crm/api/controller/ACustomerController.java b/ksafepack-admin/src/main/java/com/kelp/crm/api/controller/ACustomerController.java new file mode 100644 index 0000000..aafe245 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/crm/api/controller/ACustomerController.java @@ -0,0 +1,78 @@ +package com.kelp.crm.api.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.kelp.crm.entity.ECustomer; +import com.kelp.crm.service.ECustomerService; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/api/customer") +@Controller +public class ACustomerController extends BaseController { + + @Autowired + private ECustomerService customerService; + + @RequestMapping("/index") + public String index(HttpServletRequest request, HttpServletResponse response) { + System.out.println("ip index"); + return "/ip/index"; + } + + @RequestMapping("/submit") + public @ResponseBody ModelMap submit(HttpServletRequest request, ECustomer customer) { + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(customer); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (customerService.getByName(customer.getName()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "您已提交,请等待客服联系您!"); + return modelMap; + } + + customer.setStaffName("楼兰网安"); + customer.setDescription(""); + customer.setState("00"); + customerService.add(customer); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "您已提交,请等待客服联系您!"); + return modelMap; + } + + private ErrorMessage invalid(ECustomer customer) { + + if (customer == null) { + return new ErrorMessage("数据有误!", false); + } + + if (StringUtil.isEmpty(customer.getContact()) || customer.getContact().length() > 20) { + return new ErrorMessage("请正确填写您的称呼!", false); + } + + if (StringUtil.isEmpty(customer.getTelephone()) || customer.getTelephone().length() > 20) { + return new ErrorMessage("请正确填写联系电话!", false); + } + + if (StringUtil.isEmpty(customer.getName()) || customer.getName().length() > 50) { + return new ErrorMessage("请正确填写公司名称!", false); + } + + return new ErrorMessage("", true); + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/crm/controller/EAccountController.java b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EAccountController.java new file mode 100644 index 0000000..2628d77 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EAccountController.java @@ -0,0 +1,326 @@ +package com.kelp.crm.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.biz.service.FileUploadService; +import com.kelp.common.constant.RegexConstants; +import com.kelp.common.utils.security.Md5Utils; +import com.kelp.crm.entity.EAccount; +import com.kelp.crm.service.EAccountService; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.kelp.plat.service.E_RoleService; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/crm/account") +@Controller +public class EAccountController extends BaseController { + + @Autowired + private EAccountService accountService; + + @Autowired + private E_RoleService roleService; + + @Autowired + private FileUploadService fileUploadService; + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + + ModelMap modelMap = new ModelMap(); + modelMap.put("roles", roleService.getAll()); + + // 从redis中取当前登录人所属部门id + modelMap.put("departmentId", getDepartmentId(request)); + + return new ModelAndView("/crm/account", "modelMap", modelMap); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, String qdepartmentId, + String qname, String qtelephone, String qroleId, String qstate) { + + if (page == null) { + page = new Page(); + } + + if (StringUtil.isEmpty(qdepartmentId)) { + // 从redis中取当前登录人所属部门id + qdepartmentId = getDepartmentId(request); + } + + return accountService.getPage(page.getPageIndex(), page.getLimit(), getEnterpriseId(request), qdepartmentId, + qname, qtelephone, qroleId, qstate); + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + EAccount account = accountService.getById(id); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, ""); + modelMap.put("account", account); + } + + return modelMap; + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request, EAccount account) { + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(account); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (accountService.getByTelephone(account.getTelephone()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "电话号码已经存在!"); + return modelMap; + } + + account.setId(null); + account.setEnterpriseId(Long.valueOf(getEnterpriseId(request))); + account.setPassword(Md5Utils.hash("d1234567")); + accountService.add(account); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request, EAccount account) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(account); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (account.getId() == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "数据有误!"); + modelMap.put("account", account); + return modelMap; + } + + EAccount accountP = accountService.getByTelephone(account.getTelephone()); + if (accountP != null && !account.getId().equals(accountP.getId())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "电话号码已经存在!"); + return modelMap; + } + + accountP = accountService.getById(String.valueOf(account.getId())); + if (accountP == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法请求!"); + return modelMap; + } + + account.setCreateTime(accountP.getCreateTime()); + account.setUpdateTime(System.currentTimeMillis()); + account.setEnterpriseId(Long.valueOf(getEnterpriseId(request))); + account.setPassword(accountP.getPassword()); + account.setAvatar(accountP.getAvatar()); + + accountService.update(account); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids != null && ids.length() > 0) { + String[] ids_ = ids.split(","); + accountService.delete(ids_); + } + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "删除成功!"); + + return modelMap; + + } + + private ErrorMessage invalid(EAccount account) { + + if (account == null) { + return new ErrorMessage("数据有误!", false); + } + + if (account.getDepartmentId() == null) { + return new ErrorMessage("所属部门不能为空或长度有误!", false); + } + + if (StringUtils.isEmpty(account.getName()) || account.getName().length() > 128) { + return new ErrorMessage("昵称不能为空或长度有误!", false); + } + + if (account.getRealName() != null && account.getRealName().length() > 128) { + return new ErrorMessage("真实姓名长度有误!", false); + } + + if (StringUtils.isEmpty(account.getTelephone()) || account.getTelephone().length() > 128) { + return new ErrorMessage("手机号不能为空或长度有误!", false); + } + + if (!account.getTelephone().matches(RegexConstants.MOBILE_PHONE_NUMBER_PATTERN)) { + return new ErrorMessage("手机号格式有误!", false); + } + + if (account.getSex() == null || account.getSex().length() != 1) { + return new ErrorMessage("性别不能为空或长度有误!", false); + } + + if (account.getRoleId() == null) { + return new ErrorMessage("账号角色不能为空或长度有误!", false); + } + + if (account.getState() == null || account.getState().length() != 2) { + return new ErrorMessage("账号状态不能为空或长度有误!", false); + } + + return new ErrorMessage("", true); + } + + @RequestMapping("/toSelfInfo") + public @ResponseBody ModelAndView toSelfInfo(HttpServletRequest request, HttpServletResponse response) { + ModelMap modelMap = new ModelMap(); + modelMap.put("roleName", roleService.getById(redisBean.hget(getAccountId(request), "e_role")).getName()); + + EAccount account = accountService.getById(getAccountId(request)); + account.mask(); + modelMap.put("account", account); + + return new ModelAndView("/crm/self_info", "modelMap", modelMap); + } + + @RequestMapping("/selfInfo") + public @ResponseBody ModelMap selfInof(HttpServletRequest request, HttpServletResponse response, EAccount account, + MultipartFile avatarFile) { + ModelMap modelMap = new ModelMap(); + + if (StringUtils.isEmpty(account.getName()) || account.getName().length() > 128) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "昵称不能为空或长度有误!"); + return modelMap; + } + + if (account.getRealName() != null && account.getRealName().length() > 128) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "真实姓名长度有误!"); + return modelMap; + } + + if (account.getSex() == null || account.getSex().length() != 1) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "性别不能为空或长度有误!"); + return modelMap; + } + + EAccount accountP = accountService.getById(getAccountId(request)); + accountP.setName(account.getName()); + accountP.setRealName(account.getRealName()); + accountP.setSex(account.getSex()); + + if (avatarFile != null && !avatarFile.isEmpty()) { + String avatarPath = fileUploadService.uploadImageFile(avatarFile); + if (avatarPath != null && avatarPath.equals("10")) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "文件格式不正确!"); + return modelMap; + } + + accountP.setAvatar(avatarPath); + } + + accountService.update(accountP); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "个人资料修改成功!"); + + return modelMap; + } + + @RequestMapping("/toPassword") + public @ResponseBody ModelAndView toPassword(HttpServletRequest request, HttpServletResponse response) { + return new ModelAndView("/crm/password"); + } + + @RequestMapping("/password") + public @ResponseBody ModelMap password(HttpServletRequest request, HttpServletResponse response, String opassword, + String npassword, String cpassword) { + ModelMap modelMap = new ModelMap(); + + if (StringUtils.isEmpty(opassword) || opassword.length() < 6) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "原始密码不能为空!"); + return modelMap; + } + + if (StringUtils.isEmpty(npassword) || npassword.length() < 6) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "新密码不能为空且不能少于6位!"); + return modelMap; + } + + if (!opassword.matches(RegexConstants.LETTER_DIGIT_PATTERN)) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "新密码必须包含数字和字母!"); + return modelMap; + } + + if (StringUtils.isEmpty(cpassword) || !cpassword.equals(npassword)) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "新密码与确认密码不一致!"); + return modelMap; + } + + String accountId = getAccountId(request); + EAccount account = accountService.getById(accountId); + if (!Md5Utils.hash(opassword).equals(account.getPassword())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "旧密码输入不正确!"); + return modelMap; + } + + account.setPassword(Md5Utils.hash(npassword)); + accountService.update(account); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "密码修改成功,建议您重新登录!"); + + return modelMap; + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/crm/controller/EContractController.java b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EContractController.java new file mode 100644 index 0000000..94b2407 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EContractController.java @@ -0,0 +1,191 @@ +package com.kelp.crm.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.crm.entity.EContract; +import com.kelp.crm.service.EContractService; +import com.kelp.crm.service.ECustomerService; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/crm/contract") +@Controller +public class EContractController extends BaseController { + + @Autowired + private ECustomerService customerService; + + @Autowired + private EContractService contractService; + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + + ModelMap modelMap = new ModelMap(); + modelMap.put("customers", customerService.getAll(null)); + + return new ModelAndView("/crm/contract4all", "modelMap", modelMap); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, String qstartDate, + String qendDate, String qcustomerName, String qstate) { + + if (page == null) { + page = new Page(); + } + + if (!StringUtil.isEmpty(qstate) && qstate.length() != 2) { + return new Page(); + } + + return contractService.getPage(page.getPageIndex(), page.getLimit(), qstartDate, qendDate, qcustomerName, + qstate); + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, ""); + modelMap.put("contract", contractService.getById(id)); + } + + return modelMap; + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request, EContract contract) { + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(contract); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + contract.setAccountId(Long.valueOf(getAccountId(request))); + contractService.add(contract); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "添加成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request, EContract contract) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(contract); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (contract.getId() == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "数据有误!"); + modelMap.put("contract", contract); + return modelMap; + } + + // 先设置 + EContract contractP = contractService.getById(String.valueOf(contract.getId())); + contractP.setCustomerId(contract.getCustomerId()); + contractP.setStaffName(contract.getStaffName()); + contractP.setCustomerSignatory(contract.getCustomerSignatory()); + contractP.setSignTime(contract.getSignTime()); + contractP.setEndTime(contract.getEndTime()); + contractP.setAmount(contract.getAmount()); + contractP.setFapiao(contract.getFapiao()); + contractP.setDso(contract.getDso()); + contractP.setContent(contract.getContent()); + contractP.setState(contract.getState()); + contractP.setUpdateTime(System.currentTimeMillis()); + + contractService.update(contractP); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "修改成功!"); + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids != null && ids.length() > 0) { + String[] ids_ = ids.split(","); + contractService.delete(ids_); + } + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "禁用成功!"); + + return modelMap; + + } + + private ErrorMessage invalid(EContract contract) { + + if (contract == null) { + return new ErrorMessage("数据有误!", false); + } + + if (contract.getCustomerId() == null) { + return new ErrorMessage("数据有误!", false); + } + + if (StringUtil.isEmpty(contract.getStaffName()) || contract.getStaffName().length() > 50) { + return new ErrorMessage("我方签订人名称不能为空或长度有误!", false); + } + + if (StringUtil.isEmpty(contract.getCustomerSignatory()) || contract.getCustomerSignatory().length() > 50) { + return new ErrorMessage("甲方签订人名称不能为空或长度有误!", false); + } + + if (contract.getSignTime() == null) { + return new ErrorMessage("合同签订时间不能为空!", false); + } + + if (contract.getEndTime() == null) { + return new ErrorMessage("合同终止时间不能为空!", false); + } + + if (contract.getFapiao() != null && contract.getFapiao().length() > 1000) { + return new ErrorMessage("发票信息长度有误!", false); + } + + if (contract.getDso() != null && contract.getDso().length() > 1000) { + return new ErrorMessage("回款信息长度有误!", false); + } + + if (contract.getContent() != null && contract.getContent().length() > 1000) { + return new ErrorMessage("备注内容长度有误!", false); + } + + if (StringUtil.isEmpty(contract.getState()) || contract.getState().length() != 2) { + return new ErrorMessage("状态信息有误!", false); + } + + return new ErrorMessage("", true); + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/crm/controller/ECustomerController.java b/ksafepack-admin/src/main/java/com/kelp/crm/controller/ECustomerController.java new file mode 100644 index 0000000..b4631f4 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/crm/controller/ECustomerController.java @@ -0,0 +1,205 @@ +package com.kelp.crm.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.crm.entity.ECustomer; +import com.kelp.crm.service.ECustomerService; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/crm/customer") +@Controller +public class ECustomerController extends BaseController { + + @Autowired + private ECustomerService customerService; + + @RequestMapping("/toPage4All") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + + ModelMap modelMap = new ModelMap(); + + return new ModelAndView("/crm/customer4all", "modelMap", modelMap); + } + + @RequestMapping("/list4all") + public @ResponseBody Page list4all(HttpServletRequest request, Page page, String qstartDate, + String qendDate, String qname, String qstate) { + + if (page == null) { + page = new Page(); + } + + if (!StringUtil.isEmpty(qname) && qname.length() > 50) { + return new Page(); + } + + if (!StringUtil.isEmpty(qstate) && qstate.length() != 2) { + return new Page(); + } + + return customerService.getPage(page.getPageIndex(), page.getLimit(), qstartDate, qendDate, qname, qstate); + } + + @RequestMapping("/toPage4NoVisit") + public @ResponseBody ModelAndView toPage4NoVisit(HttpServletRequest request, HttpServletResponse response) { + + ModelMap modelMap = new ModelMap(); + + return new ModelAndView("/crm/customer4novisit", "modelMap", modelMap); + } + + @RequestMapping("/list4Novisit") + public @ResponseBody Page list4Novisit(HttpServletRequest request, Page page, + String qstartDate, String qendDate) { + + if (page == null) { + page = new Page(); + } + + return customerService.getPage4NoVisit(page.getPageIndex(), page.getLimit(), qstartDate, qendDate); + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, ""); + modelMap.put("customer", customerService.getById(id)); + } + + return modelMap; + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request, ECustomer customer) { + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(customer); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (customerService.getByName(customer.getName()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "客户名称已存在!"); + return modelMap; + } + + customerService.add(customer); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "添加成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request, ECustomer customer) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(customer); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (customer.getId() == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "数据有误!"); + modelMap.put("customer", customer); + return modelMap; + } + + ECustomer customerP = customerService.getByName(customer.getName()); + if (customerP != null && !customer.getId().equals(customerP.getId())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "客户名称已存在!"); + return modelMap; + } + + // 先设置 + customerP = customerService.getById(String.valueOf(customer.getId())); + customerP.setName(customer.getName()); + customerP.setContact(customer.getContact()); + customerP.setStaffName(customer.getStaffName()); + customerP.setTelephone(customer.getTelephone()); + customerP.setEffctiveTime(customer.getEffctiveTime()); + customerP.setExpiredTime(customer.getExpiredTime()); + customerP.setState(customer.getState()); + customerP.setUpdateTime(System.currentTimeMillis()); + + customerService.update(customerP); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "修改成功!"); + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids != null && ids.length() > 0) { + String[] ids_ = ids.split(","); + customerService.delete(ids_); + } + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "禁用成功!"); + + return modelMap; + + } + + private ErrorMessage invalid(ECustomer customer) { + + if (customer == null) { + return new ErrorMessage("数据有误!", false); + } + + if (StringUtil.isEmpty(customer.getName()) || customer.getName().length() > 50) { + return new ErrorMessage("名称不能为空或长度有误!", false); + } + + if (StringUtil.isEmpty(customer.getStaffName()) || customer.getStaffName().length() > 50) { + return new ErrorMessage("跟单人名称不能为空或长度有误!", false); + } + + if (StringUtil.isEmpty(customer.getContact()) || customer.getContact().length() > 20) { + return new ErrorMessage("联系人数据非法!", false); + } + + if (StringUtil.isEmpty(customer.getTelephone()) || customer.getTelephone().length() > 20) { + return new ErrorMessage("联系电话数据非法!", false); + } + + if (!StringUtil.isEmpty(customer.getDescription()) && customer.getDescription().length() > 256) { + return new ErrorMessage("客户说明长度有误!", false); + } + + if (StringUtil.isEmpty(customer.getState()) || customer.getState().length() != 2) { + return new ErrorMessage("状态信息有误!", false); + } + + return new ErrorMessage("", true); + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/crm/controller/ECustomerVisitController.java b/ksafepack-admin/src/main/java/com/kelp/crm/controller/ECustomerVisitController.java new file mode 100644 index 0000000..666de23 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/crm/controller/ECustomerVisitController.java @@ -0,0 +1,191 @@ +package com.kelp.crm.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.common.constant.RegexConstants; +import com.kelp.common.utils.MathUtil; +import com.kelp.crm.entity.ECustomerVisit; +import com.kelp.crm.service.ECustomerService; +import com.kelp.crm.service.ECustomerVisitService; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/crm/customer/visit") +@Controller +public class ECustomerVisitController extends BaseController { + + @Autowired + private ECustomerService customerService; + + @Autowired + private ECustomerVisitService customerVisitService; + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response,String qcustomerId) { + + ModelMap modelMap = new ModelMap(); + modelMap.put("customers", customerService.getAll(null)); + modelMap.put("qcustomerId", qcustomerId); + + return new ModelAndView("/crm/customervisit", "modelMap", modelMap); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, + String qstartDate, String qendDate, String qcustomerId, String qstate) { + + if (page == null) { + page = new Page(); + } + + if (!StringUtil.isEmpty(qcustomerId) && MathUtil.string2long(qcustomerId) == null) { + return new Page(); + } + + if (!StringUtil.isEmpty(qstate) && qstate.length() != 2) { + return new Page(); + } + + return customerVisitService.getPage(page.getPageIndex(), page.getLimit(), qcustomerId, + qstartDate, qendDate, qstate); + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, ""); + modelMap.put("customerVisit", customerVisitService.getById(id)); + } + + return modelMap; + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request, ECustomerVisit customerVisit) { + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(customerVisit); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + customerVisit.setAccountId(Long.valueOf(getAccountId(request))); + customerVisitService.add(customerVisit); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "添加成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request, ECustomerVisit customerVisit) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(customerVisit); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (customerVisit.getId() == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "数据有误!"); + modelMap.put("customerVisit", customerVisit); + return modelMap; + } + + // 先设置 + ECustomerVisit customerVisitP = customerVisitService.getById(String.valueOf(customerVisit.getId())); + customerVisitP.setStaffName(customerVisit.getStaffName()); + customerVisitP.setVisitTime(customerVisit.getVisitTime()); + customerVisitP.setContent(customerVisit.getContent()); + customerVisitP.setState(customerVisit.getState()); + customerVisitP.setUpdateTime(System.currentTimeMillis()); + + customerVisitService.update(customerVisitP); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "修改成功!"); + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids != null && ids.length() > 0) { + String[] ids_ = ids.split(","); + customerVisitService.delete(ids_); + } + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "禁用成功!"); + + return modelMap; + + } + + private ErrorMessage invalid(ECustomerVisit customerVisit) { + + if (customerVisit == null) { + return new ErrorMessage("数据有误!", false); + } + + if (StringUtil.isEmpty(customerVisit.getStaffName()) || customerVisit.getStaffName().length() > 50) { + return new ErrorMessage("拜访人名称不能为空或长度有误!", false); + } + + if (StringUtil.isEmpty(customerVisit.getVisiter()) || customerVisit.getVisiter().length() > 50) { + return new ErrorMessage("约见人名称不能为空或长度有误!", false); + } + + if (StringUtils.isEmpty(customerVisit.getVisiterTelephone()) + || customerVisit.getVisiterTelephone().length() > 128) { + return new ErrorMessage("约见人手机号不能为空或长度有误!", false); + } + + if (!customerVisit.getVisiterTelephone().matches(RegexConstants.MOBILE_PHONE_NUMBER_PATTERN)) { + return new ErrorMessage("约见人手机号格式有误!", false); + } + + if (customerVisit.getVisitTime() == null) { + return new ErrorMessage("拜访时间数据非法!", false); + } + + if (customerVisit.getCustomerId() == null) { + return new ErrorMessage("拜访客户数据非法!", false); + } + + if (StringUtil.isEmpty(customerVisit.getContent()) || customerVisit.getContent().length() < 50 + || customerVisit.getContent().length() > 1000) { + return new ErrorMessage("拜访客户结果内容不能小于50个字符且不能大于1000个字符!", false); + } + + if (StringUtil.isEmpty(customerVisit.getState()) || customerVisit.getState().length() != 2) { + return new ErrorMessage("状态信息有误!", false); + } + + return new ErrorMessage("", true); + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/crm/controller/EDepartmentController.java b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EDepartmentController.java new file mode 100644 index 0000000..fb2aae5 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EDepartmentController.java @@ -0,0 +1,182 @@ +package com.kelp.crm.controller; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.crm.entity.Department; +import com.kelp.crm.service.DepartmentService; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/crm/department") +@Controller +public class EDepartmentController extends BaseController { + + @Autowired + private DepartmentService departmentService; + + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + ModelMap modelMap = new ModelMap(); + + //从redis中取当前登录人所属企业id + modelMap.put("enterpriseId", getEnterpriseId(request)); + //从redis中取当前登录人所属部门id + modelMap.put("departmentId", getDepartmentId(request)); + + return new ModelAndView("/crm/department","modelMap", modelMap); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, String qpId, String qname,String qstate) { + + if (page == null) { + page = new Page(); + } + + if(StringUtil.isEmpty(qpId)) { + //当前登录人所属部门id + qpId = getDepartmentId(request); + } + + return departmentService.getPage(page.getPageIndex(), page.getLimit(),getEnterpriseId(request), qpId, qname, qstate); + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + Department department = departmentService.getById(id); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, ""); + modelMap.put("department", department); + } + + return modelMap; + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request, Department department) { + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(department); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + department.setId(null); + department.setEnterpriseId(Long.valueOf(getEnterpriseId(request))); + departmentService.add(department); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "添加成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request, Department department) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(department); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + department.setUpdateTime(System.currentTimeMillis()); + department.setEnterpriseId(Long.valueOf(getEnterpriseId(request))); + departmentService.update(department); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "修改成功!"); + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids != null && ids.length() > 0) { + String[] ids_ = ids.split(","); + departmentService.delete(ids_); + } + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "删除成功!"); + + return modelMap; + + } + + @RequestMapping(value = "/dtop") + @ResponseBody + public List dtop(HttpServletRequest request, String id){ + + if(StringUtil.isEmpty(id)) { + id = getDepartmentId(request); + } + + return departmentService.listTop(getEnterpriseId(request),id); + } + + @RequestMapping(value = "/dsubs") + @ResponseBody + public List dsubs(HttpServletRequest request, String id){ + + if(StringUtil.isEmpty(id)) { + id = getDepartmentId(request); + } + + return departmentService.listdsub(getEnterpriseId(request),id); + } + + private ErrorMessage invalid(Department department) { + + if (department == null) { + return new ErrorMessage("数据有误!", false); + } + + if (StringUtil.isEmpty(department.getName()) + || department.getName().length() > 50) { + return new ErrorMessage("部门名称不能为空或长度有误!", false); + } + + if (department.getpId() == null) { + return new ErrorMessage("上级部门不能为空或数据非法!", false); + } + + if (StringUtil.isEmpty(department.getPhone()) || department.getPhone().length() > 20) { + return new ErrorMessage("联系电话数据非法!", false); + } + + if (StringUtil.isEmpty(department.getLeader()) || department.getLeader().length() > 50) { + return new ErrorMessage("部门领导数据非法!", false); + } + + if (StringUtil.isEmpty(department.getState()) || department.getState().length() != 2) { + return new ErrorMessage("状态信息有误!", false); + } + + return new ErrorMessage("", true); + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/crm/controller/EDistrictController.java b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EDistrictController.java new file mode 100644 index 0000000..15bd1a5 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EDistrictController.java @@ -0,0 +1,177 @@ +package com.kelp.crm.controller; + +import java.util.List; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.biz.entity.District; +import com.kelp.biz.service.DistrictService; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.opensymphony.oscache.util.StringUtil; + +@Controller +@RequestMapping("/crm/district") +public class EDistrictController extends BaseController { + + @Resource + private DistrictService districtService; + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + return new ModelAndView("/crm/district"); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, String qpId, String qname,String qstate) { + + if (page == null) { + page = new Page(); + } + + if(StringUtil.isEmpty(qpId)) { + qpId = "0"; + } + + return districtService.getPage(page.getPageIndex(), page.getLimit(), qpId, qname, qstate); + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() <= 12) { + District district = districtService.getById(id); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, ""); + modelMap.put("district", district); + } + + return modelMap; + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request, District district) { + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(district); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (districtService.getById(district.getId()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "区划代码已存在!"); + return modelMap; + } + + districtService.add(district); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "添加成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request, District district) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(district); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + districtService.update(district); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "修改成功!"); + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids != null && ids.length() > 0) { + String[] ids_ = ids.split(","); + districtService.delete(ids_); + } + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "删除成功!"); + + return modelMap; + + } + + /** + * 取得pid为参数id的所有直接下级 + * + * @param request + * @return + */ + @RequestMapping("/dsubs") + public @ResponseBody List dsubs(HttpServletRequest request,String id){ + + if(id == null || id.length() > 12){ + id = "0"; + } + + return districtService.listdsub(id); + } + + private ErrorMessage invalid(District district) { + + if (district == null) { + return new ErrorMessage("数据有误!", false); + } + + if(StringUtil.isEmpty(district.getId()) || district.getId().length() > 12){ + return new ErrorMessage("区划编码不能为空或长度有误!",false); + } + + if (StringUtil.isEmpty(district.getpId()) || district.getpId().length() > 12) { + return new ErrorMessage("父级区划不能为空或数据非法!", false); + } + + if (StringUtil.isEmpty(district.getName()) + || district.getName().length() > 50) { + return new ErrorMessage("区划名称不能为空或长度有误!", false); + } + + if (StringUtil.isEmpty(district.getState()) || district.getState().length() != 2) { + return new ErrorMessage("状态数据非法!", false); + } + + if (district.getResidents() == null) { + return new ErrorMessage("常驻人口数据不能为空!", false); + } + + if (district.getOrderNumber() == null) { + return new ErrorMessage("序号数据不能为空!", false); + } + + if (district.getLevel() == null) { + return new ErrorMessage("级别数据不能为空!", false); + } + + return new ErrorMessage("", true); + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/crm/controller/EFileController.java b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EFileController.java new file mode 100644 index 0000000..e1555bf --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EFileController.java @@ -0,0 +1,80 @@ +package com.kelp.crm.controller; + +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; + +import com.kelp.biz.service.FileUploadService; +import com.kelp.framework.base.controller.BaseController; + +@RequestMapping("/crm/file") +@Controller +public class EFileController extends BaseController { + + @Autowired + private FileUploadService fileUploadService; + + @RequestMapping("/upload4layui") + public @ResponseBody ModelMap uploadFile4LayEditor(HttpServletRequest request,MultipartFile file) { + ModelMap modelMap = new ModelMap(); + + Map data = new HashMap(); + + if (file == null || file.isEmpty()) { + modelMap.put("code", "10"); + modelMap.put("msg", "非法上传!"); + data.put("src", ""); + data.put("title", ""); + modelMap.put("data", data); + return modelMap; + } + + String avatarPath = fileUploadService.uploadImageFile(file); + if(avatarPath != null && avatarPath.equals("10")) { + modelMap.put("code", "11"); + modelMap.put("msg", "文件格式不正确!"); + data.put("src", ""); + data.put("title", ""); + modelMap.put("data", data); + return modelMap; + } + + modelMap.put("code", "0"); + modelMap.put("msg", "上传成功!"); + data.put("src", avatarPath); + data.put("title", ""); + modelMap.put("data", data); + return modelMap; + } + + @RequestMapping("/upload") + public @ResponseBody ModelMap uploadFile(HttpServletRequest request,MultipartFile file) { + ModelMap modelMap = new ModelMap(); + + if (file == null || file.isEmpty()) { + modelMap.put(MESSAGE, "非法上传!"); + modelMap.put(RESULT, false); + return modelMap; + } + + String avatarPath = fileUploadService.uploadImageFile(file); + if(avatarPath != null && avatarPath.equals("10")) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "文件格式不正确!"); + return modelMap; + } + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "添加成功!"); + return modelMap; + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/crm/controller/EIndexController.java b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EIndexController.java new file mode 100644 index 0000000..9c92ea0 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EIndexController.java @@ -0,0 +1,27 @@ +package com.kelp.crm.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.kelp.framework.base.controller.BaseController; + +@RequestMapping("/crm") +@Controller +public class EIndexController extends BaseController { + + + /** + * springboot 启动访问的页面,如果不写默认访问index + * @param request + * @param response + * @return + */ + @RequestMapping("/index") + public String index(HttpServletRequest request, HttpServletResponse response) { + return "/crm/login"; + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/crm/controller/ELoginController.java b/ksafepack-admin/src/main/java/com/kelp/crm/controller/ELoginController.java new file mode 100644 index 0000000..3f46270 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/crm/controller/ELoginController.java @@ -0,0 +1,155 @@ +package com.kelp.crm.controller; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.google.code.kaptcha.Constants; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.CookieUtil; +import com.kelp.common.utils.jwt.JwtUtil; +import com.kelp.crm.entity.EAccount; +import com.kelp.crm.service.EAccountService; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.plat.entity.TSMenu; +import com.kelp.plat.service.MenuService; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/crm") +@Controller +public class ELoginController extends BaseController { + + @Autowired + private EAccountService accountService; + + @Autowired + private MenuService menuService; + + @RequestMapping("/login") + public @ResponseBody ModelMap login(HttpServletRequest request, HttpServletResponse response,String telephone, + String password, String timestamp, String captcha) { + + ModelMap modelMap = new ModelMap(); + + if (StringUtil.isEmpty(telephone) || telephone.length() != 11) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "手机号格式有误!"); + return modelMap; + } + + if (StringUtil.isEmpty(password) || password.length() > 50) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "密码不能为空或长度错误!"); + return modelMap; + } + + if (StringUtil.isEmpty(timestamp) || timestamp.length() > 128) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法请求!"); + return modelMap; + } + + if (StringUtil.isEmpty(captcha) || captcha.length() > 4) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法请求!"); + return modelMap; + } + + String captcha_ = redisBean.hget(Constants.KAPTCHA_SESSION_KEY, timestamp); + if(captcha_ == null || !captcha_.equals(captcha)) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "验证码不正确或已过期!"); + return modelMap; + } + + // 验证登录信息 + EAccount account = accountService.getByTelephone(telephone); + if (account == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "账号不存在!"); + return modelMap; + } + if ((account != null && !account.getPassword().equals(password))) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "账号或密码错误!"); + return modelMap; + } + if (account.getState().equals("10")) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "账号已禁用!"); + return modelMap; + } + + // 删除redis中的验证码 + redisBean.hdel(Constants.KAPTCHA_SESSION_KEY, timestamp); + + String token = JwtUtil.sign(String.valueOf(account.getId()), request.getSession().getId(), KeyConstant.JWTKEY); + // 设置token到cookie + CookieUtil.addCookie(response, "token", token); + + // 向redis中写入 + redisBean.hset(String.valueOf(account.getId()), "e_token", token); + redisBean.hset(String.valueOf(account.getId()), "e_role", String.valueOf(account.getRoleId())); + redisBean.hset(String.valueOf(account.getId()), "e_enterprise", String.valueOf(account.getEnterpriseId())); + redisBean.hset(String.valueOf(account.getId()), "e_department", String.valueOf(account.getDepartmentId())); + redisBean.hset(String.valueOf(account.getId()), "e_eidpath", account.getEidPath()); + redisBean.hset(String.valueOf(account.getId()), "e_didpath", account.getDidPath()); + + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "登录成功!"); + + return modelMap; + } + + @RequestMapping("/main") + public ModelAndView main(HttpServletRequest request) { + + ModelMap modelMap = new ModelMap(); + + String token = getToken(request); + + List list = menuService.getMenus4Enterprise(getRoleId(token,"e_role")); + + modelMap.put("tsmenus", list); + + EAccount account = accountService.getById(getAccountId(token)).mask(); + + modelMap.put("eaccount", account); + + return new ModelAndView("/crm/index", "modelMap", modelMap); + } + + @RequestMapping("/logout") + public @ResponseBody ModelMap logout(HttpServletRequest request, HttpServletResponse response) { + + String token = getToken(request); + request.getSession().setMaxInactiveInterval(0); + request.getSession().invalidate(); + + String accountId = JwtUtil.getId(token); + + redisBean.hdel(accountId, "e_role"); + redisBean.hdel(accountId, "e_token"); + redisBean.hdel(accountId, "e_enterprise"); + redisBean.hdel(accountId, "e_department"); + redisBean.hdel(accountId, "e_eidpath"); + redisBean.hdel(accountId, "e_didpath"); + + CookieUtil.delCookie(request, response, "token"); + + ModelMap modelMap = new ModelMap(); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "退出成功!"); + return modelMap; + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/crm/controller/EMAccountController.java b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EMAccountController.java new file mode 100644 index 0000000..0ad4350 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EMAccountController.java @@ -0,0 +1,212 @@ +/** + * 设置管理员,管理员挂在公司下,其departmentId为 + */ +package com.kelp.crm.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.common.constant.RegexConstants; +import com.kelp.common.utils.security.Md5Utils; +import com.kelp.crm.entity.EAccount; +import com.kelp.crm.service.EAccountService; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.kelp.plat.service.E_RoleService; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/crm/maccount") +@Controller +public class EMAccountController extends BaseController { + + @Autowired + private EAccountService accountService; + + @Autowired + private E_RoleService roleService; + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + + ModelMap modelMap = new ModelMap(); + modelMap.put("roles", roleService.getAll()); + + //从redis中取当前登录人所属公司id + modelMap.put("qenterpriseId", getEnterpriseId(request)); + + return new ModelAndView("/crm/maccount","modelMap", modelMap); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, String qenterpriseId, String qname,String qtelephone,String qroleId,String qstate) { + + if (page == null) { + page = new Page(); + } + + if(StringUtil.isEmpty(qenterpriseId)) { + //从redis中取当前登录人所属部门id + qenterpriseId = getEnterpriseId(request); + } + + return accountService.getPage4m(page.getPageIndex(), page.getLimit(), qenterpriseId, qname, qtelephone, qroleId, qstate); + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + EAccount account = accountService.getById(id); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, ""); + modelMap.put("account", account); + } + + return modelMap; + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request, EAccount account) { + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(account); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (accountService.getByTelephone(account.getTelephone()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "电话号码已经存在!"); + return modelMap; + } + + account.setPassword(Md5Utils.hash("c1234567")); + accountService.add4m(account); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request, EAccount account) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(account); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (account.getId() == null ) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "数据有误!"); + modelMap.put("account", account); + return modelMap; + } + + EAccount accountP = accountService.getByTelephone(account.getTelephone()); + if (accountP != null && !account.getId().equals(accountP.getId())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "电话号码已经存在!"); + return modelMap; + } + + accountP = accountService.getById(String.valueOf(account.getId())); + if(accountP == null ) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法请求!"); + return modelMap; + } + + accountP.setUpdateTime(System.currentTimeMillis()); + accountP.setName(account.getName()); + accountP.setTelephone(account.getTelephone()); + accountP.setRealName(account.getRealName()); + accountP.setSex(account.getSex()); + accountP.setRoleId(account.getRoleId()); + accountP.setState(account.getState()); + + accountService.update4m(accountP); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids != null && ids.length() > 0) { + String[] ids_ = ids.split(","); + accountService.delete(ids_); + } + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "删除成功!"); + + return modelMap; + + } + + private ErrorMessage invalid(EAccount account) { + + if (account == null) { + return new ErrorMessage("数据有误!", false); + } + + if (account.getEnterpriseId() == null) { + return new ErrorMessage("所属公司不能为空或长度有误!", false); + } + + if (StringUtils.isEmpty(account.getName()) || account.getName().length() > 128) { + return new ErrorMessage("昵称不能为空或长度有误!", false); + } + + if (account.getRealName() != null && account.getRealName().length() > 128) { + return new ErrorMessage("真实姓名长度有误!", false); + } + + if (StringUtils.isEmpty(account.getTelephone()) || account.getTelephone().length() > 128) { + return new ErrorMessage("手机号不能为空或长度有误!", false); + } + + if(!account.getTelephone().matches(RegexConstants.MOBILE_PHONE_NUMBER_PATTERN)) { + return new ErrorMessage("手机号格式有误!", false); + } + + if (account.getSex() == null || account.getSex().length() != 1) { + return new ErrorMessage("性别不能为空或长度有误!", false); + } + + if (account.getRoleId() == null) { + return new ErrorMessage("账号角色不能为空或长度有误!", false); + } + + if (account.getState() == null || account.getState().length() != 2) { + return new ErrorMessage("账号状态不能为空或长度有误!", false); + } + + return new ErrorMessage("", true); + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/crm/controller/EnterpriseController.java b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EnterpriseController.java new file mode 100644 index 0000000..d1cedda --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/crm/controller/EnterpriseController.java @@ -0,0 +1,247 @@ +package com.kelp.crm.controller; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.biz.service.FileUploadService; +import com.kelp.crm.entity.Enterprise; +import com.kelp.crm.service.EnterpriseService; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/crm/enterprise") +@Controller +public class EnterpriseController extends BaseController { + + @Autowired + private EnterpriseService enterpriseService; + + @Autowired + private FileUploadService fileUploadService; + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + ModelMap modelMap = new ModelMap(); + + //从redis中取当前登录人所属企业id + modelMap.put("enterpriseId", getEnterpriseId(request)); + + return new ModelAndView("/crm/enterprise","modelMap", modelMap); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, String qpId, String qname,String qstate) { + + if (page == null) { + page = new Page(); + } + + + return enterpriseService.getPage(page.getPageIndex(), page.getLimit(), qpId, qname, qstate); + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + Enterprise enterprise = enterpriseService.getById(id); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, ""); + modelMap.put("enterprise", enterprise); + } + + return modelMap; + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request, Enterprise enterprise,MultipartFile avatarFile) { + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(enterprise); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (enterpriseService.getByName(enterprise.getName()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "公司名称已存在!"); + return modelMap; + } + + if (avatarFile != null && !avatarFile.isEmpty()) { + String avatarPath = fileUploadService.uploadImageFile(avatarFile); + if(avatarPath != null && avatarPath.equals("10")) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "文件格式不正确!"); + return modelMap; + } + + enterprise.setAvatar(avatarPath); + } + + enterpriseService.add(enterprise); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "添加成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request, Enterprise enterprise,MultipartFile avatarFile) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(enterprise); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (enterprise.getId() == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "数据有误!"); + modelMap.put("enterprise", enterprise); + return modelMap; + } + + Enterprise enterpriseP = enterpriseService.getByName(enterprise.getName()); + + if (enterpriseP != null && !enterprise.getId().equals(enterpriseP.getId())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "公司名称已存在!"); + return modelMap; + } + + //先设置 + enterpriseP = enterpriseService.getById(String.valueOf(enterprise.getId())); + enterprise.setAvatar(enterpriseP.getAvatar()); + + if (avatarFile != null && !avatarFile.isEmpty()) { + String avatarPath = fileUploadService.uploadImageFile(avatarFile); + if(avatarPath != null && avatarPath.equals("10")) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "文件格式不正确!"); + return modelMap; + } + + enterprise.setAvatar(avatarPath); + } + + enterprise.setUpdateTime(System.currentTimeMillis()); + enterpriseService.update(enterprise); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "修改成功!"); + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids != null && ids.length() > 0) { + String[] ids_ = ids.split(","); + enterpriseService.delete(ids_); + } + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "删除成功!"); + + return modelMap; + + } + + @RequestMapping(value = "/dtop") + @ResponseBody + public List dtop(HttpServletRequest request, String id){ + + if(StringUtil.isEmpty(id)) { + id = getEnterpriseId(request); + } + + return enterpriseService.listTop(Long.valueOf(id)); + } + + @RequestMapping(value = "/dsubs") + @ResponseBody + public List dsubs(HttpServletRequest request, String id){ + + if(StringUtil.isEmpty(id)) { + id = getEnterpriseId(request); + } + + return enterpriseService.listdsub(id); + } + + @RequestMapping(value = "/dsubs4type") + @ResponseBody + public List dsubs4type(HttpServletRequest request, String id,String type){ + + if(StringUtil.isEmpty(id)) { + id = getEnterpriseId(request); + } + + if(StringUtil.isEmpty(type) || type.length() != 2) { + type = "00"; + } + + return enterpriseService.listdsub(id,type); + } + + private ErrorMessage invalid(Enterprise enterprise) { + + if (enterprise == null) { + return new ErrorMessage("数据有误!", false); + } + + if (enterprise.getpId() == null) { + return new ErrorMessage("上级不能为空或数据非法!", false); + } + + if (StringUtil.isEmpty(enterprise.getName()) + || enterprise.getName().length() > 50) { + return new ErrorMessage("名称不能为空或长度有误!", false); + } + + if (StringUtil.isEmpty(enterprise.getTelephone()) || enterprise.getTelephone().length() > 20) { + return new ErrorMessage("联系电话数据非法!", false); + } + + if (StringUtil.isEmpty(enterprise.getContact()) || enterprise.getContact().length() > 50) { + return new ErrorMessage("联系人数据非法!", false); + } + + if(enterprise.getAddress() != null && enterprise.getAddress().length() > 256) { + return new ErrorMessage("地址长度过长!", false); + } + + if (StringUtil.isEmpty(enterprise.getType()) || enterprise.getType().length() != 2) { + return new ErrorMessage("类型信息有误!", false); + } + + if (StringUtil.isEmpty(enterprise.getState()) || enterprise.getState().length() != 2) { + return new ErrorMessage("状态信息有误!", false); + } + + return new ErrorMessage("", true); + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/plat/controller/ERoleController.java b/ksafepack-admin/src/main/java/com/kelp/plat/controller/ERoleController.java new file mode 100644 index 0000000..ba82176 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/plat/controller/ERoleController.java @@ -0,0 +1,217 @@ +package com.kelp.plat.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.kelp.plat.entity.E_Role; +import com.kelp.plat.service.E_RFService; +import com.kelp.plat.service.E_RoleService; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/plat/erole") +@Controller +public class ERoleController extends BaseController { + + @Autowired + private E_RoleService roleService; + + @Autowired + private E_RFService rfService; + + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + ModelMap modelMap = new ModelMap(); + modelMap.put("mfs", rfService.getMFs()); + + return new ModelAndView("/plat/erole","modelMap", modelMap); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, String qname,String qtype,Integer qlevel) { + + if (page == null) { + page = new Page(); + } + + return roleService.getPage(page.getPageIndex(), page.getLimit(), qname, qlevel); + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request,E_Role role) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(role); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (roleService.getByName(role.getName()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "角色名称已经存在!"); + return modelMap; + } + + role.setId(null); + roleService.add(role); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request,E_Role role) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(role); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (role.getId() == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "数据有误!"); + modelMap.put("role", role); + return modelMap; + } + + E_Role roleP = roleService.getByName(role.getName()); + if (roleP != null && !role.getId().equals(roleP.getId())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "角色名称已经存在!"); + return modelMap; + } + + roleService.update(role); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + E_Role role = roleService.getById(id); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "操作成功"); + modelMap.put("role", role); + } + + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids == null || ids.length() == 0) { + ids = ""; + } + + String[] ids_ = ids.split(","); + + roleService.delete(ids_); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "删除成功!"); + + return modelMap; + } + + private ErrorMessage invalid(E_Role role) { + + if (role == null) { + return new ErrorMessage("数据有误!", false); + } + + if (StringUtil.isEmpty(role.getName()) + || role.getName().length() > 20) { + return new ErrorMessage("角色名称不能为空或长度有误!", false); + } + + if (role.getLevel() == null) { + return new ErrorMessage("角色级别不能为空或长度有误!", false); + } + + if (!StringUtil.isEmpty(role.getDescription()) && role.getDescription().length() > 128) { + return new ErrorMessage("角色说明长度有误!", false); + } + + return new ErrorMessage("", true); + } + + @RequestMapping("/toGrant") + public @ResponseBody ModelMap toGrant(HttpServletRequest request, + String id) { + + ModelMap modelMap = new ModelMap(); + + if (id == null || id.length() > 32) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + return modelMap; + } + + modelMap.put(RESULT, true); + modelMap.put("role", roleService.getById(id)); + modelMap.put("rfs", rfService.getRFs(id)); + return modelMap; + } + + @RequestMapping("/grant") + public @ResponseBody ModelMap grant(HttpServletRequest request, + String roleId, String functionIds) { + + ModelMap modelMap = new ModelMap(); + + if (StringUtil.isEmpty(roleId) || roleId.length() > 32) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法数据!"); + return modelMap; + } + + if (StringUtil.isEmpty(functionIds)) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "授权成功!"); + return modelMap; + } + + if (functionIds.endsWith(",")) { + functionIds = functionIds.substring(0, functionIds.length() - 1); + } + + String[] functionIds_ = functionIds.split(","); + rfService.setRFs(roleId, functionIds_); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "授权成功!"); + + return modelMap; + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/plat/controller/PAccountController.java b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PAccountController.java new file mode 100644 index 0000000..c8d9971 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PAccountController.java @@ -0,0 +1,316 @@ +package com.kelp.plat.controller; + +import java.util.Date; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.biz.service.FileUploadService; +import com.kelp.common.constant.RegexConstants; +import com.kelp.common.utils.security.Md5Utils; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.kelp.plat.entity.Account; +import com.kelp.plat.service.AccountService; +import com.kelp.plat.service.RoleService; + +@RequestMapping("/plat/account") +@Controller +public class PAccountController extends BaseController { + + @Autowired + private AccountService accountService; + + @Autowired + private RoleService roleService; + + @Autowired + private FileUploadService fileUploadService; + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + + ModelMap modelMap = new ModelMap(); + modelMap.put("roles", roleService.getAll()); + + return new ModelAndView("/plat/account","modelMap", modelMap); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, String qname,String qtelephone,String qroleId,String qstate) { + + if (page == null) { + page = new Page(); + } + + return accountService.getPage(page.getPageIndex(), page.getLimit(), qname, qtelephone, qroleId, qstate); + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request,Account account) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(account); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (accountService.getByTelephone(account.getTelephone()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "电话号码已经存在!"); + return modelMap; + } + + account.setId(null); + account.setPassword(Md5Utils.hash("k1234567")); + accountService.add(account); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request,Account account) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(account); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (account.getId() == null ) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "数据有误!"); + modelMap.put("account", account); + return modelMap; + } + + Account accountP = accountService.getByTelephone(account.getTelephone()); + if (accountP != null && !account.getId().equals(accountP.getId())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "电话号码已经存在!"); + return modelMap; + } + + accountP = accountService.getById(String.valueOf(account.getId())); + if(accountP == null ) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法请求!"); + return modelMap; + } + + account.setCreateTime(accountP.getCreateTime()); + account.setUpdateTime(new Date().getTime()); + account.setPassword(accountP.getPassword()); + + accountService.update(account); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null) { + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "操作成功"); + modelMap.put("account", accountService.getById(id)); + } + + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids == null || ids.length() == 0) { + ids = ""; + } + + String[] ids_ = ids.split(","); + + accountService.delete(ids_); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "删除成功!"); + + return modelMap; + } + + private ErrorMessage invalid(Account account) { + + if (account == null) { + return new ErrorMessage("数据有误!", false); + } + + if (StringUtils.isEmpty(account.getName()) || account.getName().length() > 128) { + return new ErrorMessage("昵称不能为空或长度有误!", false); + } + + if (account.getRealName() != null && account.getRealName().length() > 128) { + return new ErrorMessage("真实姓名长度有误!", false); + } + + if (StringUtils.isEmpty(account.getTelephone()) || account.getTelephone().length() > 128) { + return new ErrorMessage("手机号不能为空或长度有误!", false); + } + + if(!account.getTelephone().matches(RegexConstants.MOBILE_PHONE_NUMBER_PATTERN)) { + return new ErrorMessage("手机号格式有误!", false); + } + + if (account.getSex() == null || account.getSex().length() != 1) { + return new ErrorMessage("性别不能为空或长度有误!", false); + } + + if (account.getRoleId() == null) { + return new ErrorMessage("账号角色不能为空或长度有误!", false); + } + + if (account.getState() == null || account.getState().length() != 2) { + return new ErrorMessage("账号状态不能为空或长度有误!", false); + } + + return new ErrorMessage("", true); + } + + + @RequestMapping("/toSelfInfo") + public @ResponseBody ModelAndView toSelfInfo(HttpServletRequest request, HttpServletResponse response) { + ModelMap modelMap = new ModelMap(); + modelMap.put("roleName", roleService.getById(redisBean.hget(getAccountId(request), "mis_role")).getName()); + + Account account = accountService.getById(getAccountId(request)); + account.mask(); + modelMap.put("account", account); + return new ModelAndView("/plat/self_info","modelMap",modelMap); + } + + @RequestMapping("/selfInfo") + public @ResponseBody ModelMap selfInof(HttpServletRequest request, HttpServletResponse response,Account account,MultipartFile avatarFile) { + ModelMap modelMap = new ModelMap(); + + if (StringUtils.isEmpty(account.getName()) || account.getName().length() > 128) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "昵称不能为空或长度有误!"); + return modelMap; + } + + if (account.getRealName() != null && account.getRealName().length() > 128) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "真实姓名长度有误!"); + return modelMap; + } + + if (account.getSex() == null || account.getSex().length() != 1) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "性别不能为空或长度有误!"); + return modelMap; + } + + Account accountP = accountService.getById(getAccountId(request)); + accountP.setName(account.getName()); + accountP.setRealName(account.getRealName()); + accountP.setSex(account.getSex()); + + if (avatarFile != null && !avatarFile.isEmpty()) { + String avatarPath = fileUploadService.uploadImageFile(avatarFile); + if(avatarPath != null && avatarPath.equals("10")) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "文件格式不正确!"); + return modelMap; + } + + accountP.setAvatar(avatarPath); + } + + accountService.update(accountP); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "个人资料修改成功!"); + + return modelMap; + } + + @RequestMapping("/toPassword") + public @ResponseBody ModelAndView toPassword(HttpServletRequest request, HttpServletResponse response) { + return new ModelAndView("/plat/password"); + } + + @RequestMapping("/password") + public @ResponseBody ModelMap password(HttpServletRequest request, HttpServletResponse response,String opassword,String npassword,String cpassword) { + ModelMap modelMap = new ModelMap(); + + if(StringUtils.isEmpty(opassword) || opassword.length() < 6) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "原始密码不能为空!"); + return modelMap; + } + + if(StringUtils.isEmpty(npassword) || npassword.length() < 6) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "新密码不能为空且不能少于6位!"); + return modelMap; + } + + if(!opassword.matches(RegexConstants.LETTER_DIGIT_PATTERN)) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "新密码必须包含数字和字母!"); + return modelMap; + } + + if(StringUtils.isEmpty(cpassword) || !cpassword.equals(npassword)) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "新密码与确认密码不一致!"); + return modelMap; + } + + String accountId = getAccountId(request); + Account account = accountService.getById(accountId); + if (account == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "此手机号未注册,请先注册!"); + return modelMap; + } + if(!Md5Utils.hash(opassword).equals(account.getPassword())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "旧密码输入不正确!"); + return modelMap; + } + + account.setPassword(Md5Utils.hash(npassword)); + accountService.update(account); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "密码修改成功,建议您重新登录!"); + + return modelMap; + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/plat/controller/PDictController.java b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PDictController.java new file mode 100644 index 0000000..b976ac6 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PDictController.java @@ -0,0 +1,169 @@ +package com.kelp.plat.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.biz.entity.Dict; +import com.kelp.biz.service.DictService; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/plat/dict") +@Controller +public class PDictController extends BaseController { + + @Autowired + private DictService dictService; + + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + return new ModelAndView("/plat/dict"); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, String qname,String qtype,String qstate) { + + if (page == null) { + page = new Page(); + } + + return dictService.getPage(page.getPageIndex(), page.getLimit(), qname, qtype, qstate); + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request,Dict dict) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(dict); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (dictService.getByCode(dict.getCode()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "字典编码已经存在!"); + return modelMap; + } + + dict.setId(null); + dictService.add(dict); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request,Dict dict) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(dict); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (dict.getId() == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "数据有误!"); + modelMap.put("dict", dict); + return modelMap; + } + + Dict dictP = dictService.getByCode(dict.getCode()); + if (dictP != null && !dict.getId().equals(dictP.getId())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "字典编码已经存在!"); + return modelMap; + } + + dictService.update(dict); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + Dict dict = dictService.getById(id); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "操作成功"); + modelMap.put("dict", dict); + } + + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids == null || ids.length() == 0) { + ids = ""; + } + + String[] ids_ = ids.split(","); + + dictService.delete(ids_); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "删除成功!"); + + return modelMap; + } + + private ErrorMessage invalid(Dict dict) { + + if (dict == null) { + return new ErrorMessage("数据有误!", false); + } + + if (StringUtil.isEmpty(dict.getName()) + || dict.getName().length() > 20) { + return new ErrorMessage("字典名称不能为空或长度有误!", false); + } + + if (StringUtil.isEmpty(dict.getCode()) + || dict.getCode().length() > 20) { + return new ErrorMessage("字典编码不能为空或长度有误!", false); + } + + if (StringUtil.isEmpty(dict.getType()) + || dict.getType().length() > 20) { + return new ErrorMessage("字典类型不能为空或长度有误!", false); + } + + if (StringUtil.isEmpty(dict.getState()) + || dict.getState().length() != 2) { + return new ErrorMessage("字典状态不能为空或长度有误!", false); + } + + + return new ErrorMessage("", true); + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/plat/controller/PFileController.java b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PFileController.java new file mode 100644 index 0000000..093ecf1 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PFileController.java @@ -0,0 +1,80 @@ +package com.kelp.plat.controller; + +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; + +import com.kelp.biz.service.FileUploadService; +import com.kelp.framework.base.controller.BaseController; + +@RequestMapping("/plat/file") +@Controller +public class PFileController extends BaseController { + + @Autowired + private FileUploadService fileUploadService; + + @RequestMapping("/upload4layui") + public @ResponseBody ModelMap uploadFile4LayEditor(HttpServletRequest request,MultipartFile file) { + ModelMap modelMap = new ModelMap(); + + Map data = new HashMap(); + + if (file == null || file.isEmpty()) { + modelMap.put("code", "10"); + modelMap.put("msg", "非法上传!"); + data.put("src", ""); + data.put("title", ""); + modelMap.put("data", data); + return modelMap; + } + + String avatarPath = fileUploadService.uploadImageFile(file); + if(avatarPath != null && avatarPath.equals("10")) { + modelMap.put("code", "11"); + modelMap.put("msg", "文件格式不正确!"); + data.put("src", ""); + data.put("title", ""); + modelMap.put("data", data); + return modelMap; + } + + modelMap.put("code", "0"); + modelMap.put("msg", "上传成功!"); + data.put("src", avatarPath); + data.put("title", ""); + modelMap.put("data", data); + return modelMap; + } + + @RequestMapping("/upload") + public @ResponseBody ModelMap uploadFile(HttpServletRequest request,MultipartFile file) { + ModelMap modelMap = new ModelMap(); + + if (file == null || file.isEmpty()) { + modelMap.put(MESSAGE, "非法上传!"); + modelMap.put(RESULT, false); + return modelMap; + } + + String avatarPath = fileUploadService.uploadImageFile(file); + if(avatarPath != null && avatarPath.equals("10")) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "文件格式不正确!"); + return modelMap; + } + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "添加成功!"); + return modelMap; + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/plat/controller/PFunctionController.java b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PFunctionController.java new file mode 100644 index 0000000..dd6636b --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PFunctionController.java @@ -0,0 +1,199 @@ +package com.kelp.plat.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.kelp.plat.entity.Function; +import com.kelp.plat.service.FunctionService; +import com.kelp.plat.service.ModuleService; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/plat/function") +@Controller +public class PFunctionController extends BaseController { + + @Autowired + private ModuleService moduleService; + + @Autowired + private FunctionService functionService; + + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + ModelMap modelMap = new ModelMap(); + modelMap.put("modules", moduleService.getAll("00")); + + return new ModelAndView("/plat/function", "modelMap", modelMap); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, String qmoduleId, String qname) { + + if (page == null) { + page = new Page(); + } + + return functionService.getPage(page.getPageIndex(), page.getLimit(),qmoduleId, qname); + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request, + Function function) { + + ModelMap modelMap = new ModelMap(); + + // 判断数据合法性 + ErrorMessage message = invalid(function); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + // 判断是否已经存在此名称 + if (functionService.getByName(function.getName()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "功能名称已经存在!"); + return modelMap; + } + + // 判断是否已经存在此名称 + if (functionService.getByUrl(function.getUrl()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "功能URL已经存在!"); + return modelMap; + } + + function.setId(null); + functionService.add(function); + + modelMap.put(MESSAGE, "保存成功!"); + modelMap.put(RESULT, true); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request, + Function function) { + + ModelMap modelMap = new ModelMap(); + + // 判断数据合法性 + ErrorMessage message = invalid(function); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (function.getId() == null) { + modelMap.put(MESSAGE, "数据有误!"); + modelMap.put(RESULT, false); + modelMap.put("function", function); + return modelMap; + } + + // 判断是否已经存在此名称 + Function functionP = functionService.getByName(function.getName()); + if (functionP != null && !functionP.getId().equals(function.getId())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "功能名称已经存在!"); + return modelMap; + } + + functionP = functionService.getByUrl(function.getUrl()); + if (functionP != null && !functionP.getId().equals(function.getId())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "功能URL已经存在!"); + return modelMap; + } + + functionService.update(function); + + modelMap.put(MESSAGE, "保存成功!"); + modelMap.put(RESULT, true); + return modelMap; + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + Function function = functionService.getById(id); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, ""); + modelMap.put("function_", function); + } + + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids == null || ids.length() == 0) { + ids = ""; + } + + String[] ids_ = ids.split(","); + + functionService.delete(ids_); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "删除成功!"); + + return modelMap; + } + + private ErrorMessage invalid(Function function) { + + if (function == null) { + return new ErrorMessage("数据有误!", false); + } + + if (StringUtil.isEmpty(function.getName()) + || function.getName().length() > 50) { + return new ErrorMessage("功能名称不能为空或长度有误!", false); + } + + if (StringUtil.isEmpty(function.getUrl()) + || function.getUrl().length() > 256) { + return new ErrorMessage("URL不能为空或长度有误!", false); + } + + if (StringUtil.isEmpty(function.getIsLog()) + || function.getIsLog().length() != 2) { + return new ErrorMessage("是否记录日志信息有误!", false); + } + + if (function.getModuleId() == null) { + return new ErrorMessage("功能所属模块信息有误!", false); + } + + if (!StringUtil.isEmpty(function.getDescription()) + && function.getDescription().length() > 128) { + return new ErrorMessage("功能描述长度有误!", false); + } + + return new ErrorMessage("", true); + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/plat/controller/PIndexController.java b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PIndexController.java new file mode 100644 index 0000000..7496f34 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PIndexController.java @@ -0,0 +1,27 @@ +package com.kelp.plat.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.kelp.framework.base.controller.BaseController; + +@RequestMapping("/plat") +@Controller +public class PIndexController extends BaseController { + + + /** + * springboot 启动访问的页面,如果不写默认访问index + * @param request + * @param response + * @return + */ + @RequestMapping("/index") + public String index(HttpServletRequest request, HttpServletResponse response) { + return "/plat/login"; + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/plat/controller/PLoginController.java b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PLoginController.java new file mode 100644 index 0000000..6689600 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PLoginController.java @@ -0,0 +1,152 @@ +package com.kelp.plat.controller; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.google.code.kaptcha.Constants; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.CookieUtil; +import com.kelp.common.utils.jwt.JwtUtil; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.plat.entity.Account; +import com.kelp.plat.entity.TSMenu; +import com.kelp.plat.service.AccountService; +import com.kelp.plat.service.MenuService; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/plat") +@Controller +public class PLoginController extends BaseController { + + @Autowired + private AccountService accountService; + + @Autowired + private MenuService menuService; + + @Value("${token.alive.time}") + private int tokenLiveCount; + + @RequestMapping("/login") + public @ResponseBody ModelMap login(HttpServletRequest request, HttpServletResponse response,String telephone, + String password, String timestamp, String captcha) { + + ModelMap modelMap = new ModelMap(); + + if (StringUtil.isEmpty(telephone) || telephone.length() != 11) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "手机号格式有误!"); + return modelMap; + } + + if (StringUtil.isEmpty(password) || password.length() > 50) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "密码不能为空或长度错误!"); + return modelMap; + } + + if (StringUtil.isEmpty(timestamp) || timestamp.length() > 128) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法请求!"); + return modelMap; + } + + if (StringUtil.isEmpty(captcha) || captcha.length() > 4) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法请求!"); + return modelMap; + } + + String captcha_ = redisBean.hget(Constants.KAPTCHA_SESSION_KEY, timestamp); + if(captcha_ == null || !captcha_.equals(captcha)) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "验证码不正确或已过期!"); + return modelMap; + } + + // 验证登录信息 + Account account = accountService.getByTelephone(telephone); + if (account == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "账号不存在!"); + return modelMap; + } + if ((account != null && !account.getPassword().equals(password))) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "账号或密码错误!"); + return modelMap; + } + if (account.getState().equals("10")) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "账号已禁用!"); + return modelMap; + } + + // 删除redis中的验证码 + redisBean.hdel(Constants.KAPTCHA_SESSION_KEY, timestamp); + + String token = JwtUtil.sign(account.getId().toString(), request.getSession().getId(), KeyConstant.JWTKEY); + // 设置token到cookie + CookieUtil.addCookie(response, "token", token); + + // 向redis中写入 + redisBean.hset(account.getId().toString(), "mis_token", token + "|" + tokenLiveCount); + redisBean.hset(account.getId().toString(), "mis_token_backup", token + "|" + tokenLiveCount); + redisBean.hset(account.getId().toString(), "mis_role", String.valueOf(account.getRoleId())); + + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "登录成功!"); + + return modelMap; + } + + @RequestMapping("/main") + public ModelAndView main(HttpServletRequest request) { + + ModelMap modelMap = new ModelMap(); + + String token = getToken(request); + + List list = menuService.getMenus(getRoleId(token,"mis_role")); + + modelMap.put("tsmenus", list); + + Account account = accountService.getById(getAccountId(token)).mask(); + + modelMap.put("paccount", account); + + return new ModelAndView("/plat/index", "modelMap", modelMap); + } + + @RequestMapping("/logout") + public @ResponseBody ModelMap logout(HttpServletRequest request, HttpServletResponse response) { + + String token = getToken(request); + request.getSession().setMaxInactiveInterval(0); + request.getSession().invalidate(); + + String accountId = JwtUtil.getId(token); + + redisBean.hdel(accountId, "mis_role"); + redisBean.hdel(accountId, "mis_token"); + + CookieUtil.delCookie(request, response, "token"); + + ModelMap modelMap = new ModelMap(); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "退出成功!"); + return modelMap; + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/plat/controller/PMenuController.java b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PMenuController.java new file mode 100644 index 0000000..535e616 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PMenuController.java @@ -0,0 +1,172 @@ +package com.kelp.plat.controller; + +import java.util.List; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.kelp.plat.entity.Menu; +import com.kelp.plat.service.FunctionService; +import com.kelp.plat.service.MenuService; +import com.opensymphony.oscache.util.StringUtil; + +@Controller +@RequestMapping("/plat/menu") +public class PMenuController extends BaseController { + + @Resource + private FunctionService functionService; + + @Resource + private MenuService menuService; + + @RequestMapping("/toPage") + public ModelAndView toPage(HttpServletRequest request) { + + ModelMap modelMap = new ModelMap(); + + modelMap.put("menus", menuService.getMenus()); + modelMap.put("functions", functionService.getFunctions()); + + return new ModelAndView("plat/menu", "modelMap", modelMap); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request,Page page, String qname, String qpId) { + + if (page == null) { + page = new Page(); + } + + return menuService.getPage(page.getPageIndex(), page.getLimit(), qname,qpId); + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + Menu menu = menuService.getById(id); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, ""); + modelMap.put("menu", menu); + } + + return modelMap; + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request, Menu menu) { + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(menu); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + menu.setId(null); + menuService.add(menu); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "添加成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request, Menu menu) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(menu); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + menuService.update(menu); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "修改成功!"); + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids != null && ids.length() > 0) { + String[] ids_ = ids.split(","); + menuService.delete(ids_); + } + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "删除成功!"); + + return modelMap; + + } + + /** + * 取得pid为参数id的所有直接下级 + * + * @param request + * @return + */ + @RequestMapping("/dsubs") + public @ResponseBody List dsubs(HttpServletRequest request,String id){ + + if(StringUtil.isEmpty(id)) { + id = "0"; + } + + return menuService.listdsub(id); + } + + private ErrorMessage invalid(Menu menu) { + + if (menu == null) { + return new ErrorMessage("数据有误!", false); + } + + if (StringUtil.isEmpty(menu.getName()) + || menu.getName().length() > 20) { + return new ErrorMessage("菜单名称不能为空或长度有误!", false); + } + + if (menu.getpId() == null + || menu.getpId() == null) { + return new ErrorMessage("上级菜单不能为空或数据非法!", false); + } + + if (!StringUtil.isEmpty(menu.getFunctionUrl()) + && menu.getFunctionUrl().length() > 256) { + return new ErrorMessage("关联的功能数据非法!", false); + } + + if (menu.getCss() != null && menu.getCss().length() > 128) { + return new ErrorMessage("css长度有误!", false); + } + + if (!StringUtil.isEmpty(menu.getDescription()) + && menu.getDescription().length() > 256) { + return new ErrorMessage("说明长度有误!", false); + } + + return new ErrorMessage("", true); + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/plat/controller/PModuleController.java b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PModuleController.java new file mode 100644 index 0000000..5eee4d6 --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PModuleController.java @@ -0,0 +1,163 @@ +package com.kelp.plat.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.kelp.plat.entity.Module; +import com.kelp.plat.service.ModuleService; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/plat/module") +@Controller +public class PModuleController extends BaseController { + + @Autowired + private ModuleService moduleService; + + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + return new ModelAndView("/plat/module"); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, String qname,String qstate) { + + if (page == null) { + page = new Page(); + } + + return moduleService.getPage(page.getPageIndex(), page.getLimit(), qname,qstate); + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request,Module module) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(module); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (moduleService.getByName(module.getName()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "模块名称已经存在!"); + return modelMap; + } + + module.setId(null); + moduleService.add(module); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request,Module module) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(module); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (module.getId() == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "数据有误!"); + modelMap.put("module", module); + return modelMap; + } + + Module moduleP = moduleService.getByName(module.getName()); + if (moduleP != null && !module.getId().equals(moduleP.getId())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "模块名称已经存在!"); + return modelMap; + } + + moduleService.update(module); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + Module module = moduleService.getById(id); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "操作成功"); + modelMap.put("module", module); + } + + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids == null || ids.length() == 0) { + ids = ""; + } + + String[] ids_ = ids.split(","); + + moduleService.delete(ids_); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "删除成功!"); + + return modelMap; + } + + private ErrorMessage invalid(Module module) { + + if (module == null) { + return new ErrorMessage("数据有误!", false); + } + + if (StringUtil.isEmpty(module.getName()) + || module.getName().length() > 20) { + return new ErrorMessage("模块名称不能为空或长度有误!", false); + } + + if (StringUtil.isEmpty(module.getState()) + || module.getState().length() != 2) { + return new ErrorMessage("模块状态不能为空或长度有误!", false); + } + + if (!StringUtil.isEmpty(module.getDescription()) && module.getDescription().length() >128) { + return new ErrorMessage("模块说明长度有误!", false); + } + + + return new ErrorMessage("", true); + } + +} diff --git a/ksafepack-admin/src/main/java/com/kelp/plat/controller/PRoleController.java b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PRoleController.java new file mode 100644 index 0000000..2a91a4b --- /dev/null +++ b/ksafepack-admin/src/main/java/com/kelp/plat/controller/PRoleController.java @@ -0,0 +1,217 @@ +package com.kelp.plat.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.base.Page; +import com.kelp.framework.base.controller.BaseController; +import com.kelp.framework.base.controller.ErrorMessage; +import com.kelp.plat.entity.Role; +import com.kelp.plat.service.RFService; +import com.kelp.plat.service.RoleService; +import com.opensymphony.oscache.util.StringUtil; + +@RequestMapping("/plat/role") +@Controller +public class PRoleController extends BaseController { + + @Autowired + private RoleService roleService; + + @Autowired + private RFService rfService; + + + @RequestMapping("/toPage") + public @ResponseBody ModelAndView toPage(HttpServletRequest request, HttpServletResponse response) { + ModelMap modelMap = new ModelMap(); + modelMap.put("mfs", rfService.getMFs()); + + return new ModelAndView("/plat/role","modelMap", modelMap); + } + + @RequestMapping("/list") + public @ResponseBody Page list(HttpServletRequest request, Page page, String qname,String qtype,Integer qlevel) { + + if (page == null) { + page = new Page(); + } + + return roleService.getPage(page.getPageIndex(), page.getLimit(), qname, qlevel); + } + + @RequestMapping("/add") + public @ResponseBody ModelMap add(HttpServletRequest request,Role role) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(role); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (roleService.getByName(role.getName()) != null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "角色名称已经存在!"); + return modelMap; + } + + role.setId(null); + roleService.add(role); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/update") + public @ResponseBody ModelMap update(HttpServletRequest request,Role role) { + + ModelMap modelMap = new ModelMap(); + + ErrorMessage message = invalid(role); + if (!message.getStatus()) { + modelMap.put(MESSAGE, message.getMessage()); + modelMap.put(RESULT, message.getStatus()); + return modelMap; + } + + if (role.getId() == null) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "数据有误!"); + modelMap.put("role", role); + return modelMap; + } + + Role roleP = roleService.getByName(role.getName()); + if (roleP != null && !role.getId().equals(roleP.getId())) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "角色名称已经存在!"); + return modelMap; + } + + roleService.update(role); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "保存成功!"); + return modelMap; + } + + @RequestMapping("/toEdit") + public @ResponseBody ModelMap toEdit(HttpServletRequest request, String id) { + + ModelMap modelMap = new ModelMap(); + + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + + if (id != null && id.length() > 0 && id.length() <= 32) { + Role role = roleService.getById(id); + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "操作成功"); + modelMap.put("role", role); + } + + return modelMap; + } + + @RequestMapping("/delete") + public @ResponseBody ModelMap delete(HttpServletRequest request, String ids) { + + ModelMap modelMap = new ModelMap(); + + if (ids == null || ids.length() == 0) { + ids = ""; + } + + String[] ids_ = ids.split(","); + + roleService.delete(ids_); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "删除成功!"); + + return modelMap; + } + + private ErrorMessage invalid(Role role) { + + if (role == null) { + return new ErrorMessage("数据有误!", false); + } + + if (StringUtil.isEmpty(role.getName()) + || role.getName().length() > 20) { + return new ErrorMessage("角色名称不能为空或长度有误!", false); + } + + if (role.getLevel() == null) { + return new ErrorMessage("角色级别不能为空或长度有误!", false); + } + + if (!StringUtil.isEmpty(role.getDescription()) && role.getDescription().length() > 128) { + return new ErrorMessage("角色说明长度有误!", false); + } + + return new ErrorMessage("", true); + } + + @RequestMapping("/toGrant") + public @ResponseBody ModelMap toGrant(HttpServletRequest request, + String id) { + + ModelMap modelMap = new ModelMap(); + + if (id == null || id.length() > 32) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法操作!"); + return modelMap; + } + + modelMap.put(RESULT, true); + modelMap.put("role", roleService.getById(id)); + modelMap.put("rfs", rfService.getRFs(id)); + return modelMap; + } + + @RequestMapping("/grant") + public @ResponseBody ModelMap grant(HttpServletRequest request, + String roleId, String functionIds) { + + ModelMap modelMap = new ModelMap(); + + if (StringUtil.isEmpty(roleId) || roleId.length() > 32) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "非法数据!"); + return modelMap; + } + + if (StringUtil.isEmpty(functionIds)) { + modelMap.put(RESULT, false); + modelMap.put(MESSAGE, "授权成功!"); + return modelMap; + } + + if (functionIds.endsWith(",")) { + functionIds = functionIds.substring(0, functionIds.length() - 1); + } + + String[] functionIds_ = functionIds.split(","); + rfService.setRFs(roleId, functionIds_); + + modelMap.put(RESULT, true); + modelMap.put(MESSAGE, "授权成功!"); + + return modelMap; + } + +} diff --git a/ksafepack-admin/src/main/resources/application-config.properties b/ksafepack-admin/src/main/resources/application-config.properties new file mode 100644 index 0000000..1193b70 --- /dev/null +++ b/ksafepack-admin/src/main/resources/application-config.properties @@ -0,0 +1,57 @@ +# 项目相关配置 +# 项目名称 +kelp.name=kelp + # 版本 +kelp.version=4.1.0 + # 版权年份 +kelp.copyright=2021 + +# 防止XSS攻击 +# 过滤开关 +xss.enabled=true +# 排除链接(多个用逗号分隔) +xss.excludes= +# 匹配链接 +xss.urlPatterns=/api/*,/plat/* + +# oscache全局缓存 +# 过滤开关 +oscache.enabled=true +# 排除链接(多个用逗号分隔) +oscache.excludes=/notice/* +# 匹配链接 +oscache.urlPatterns=/html/* + +# 用户配置 密码错误{error.count}次锁定{error.locked.minute}分钟 +user.password.error.count=5 +user.password.error.locked.minute=10 + +#对姓名、手机号进行掩码:1-不掩码;0-掩码 +mask.show=1 + +#每个手机号每天获取短信上限 +sms.maxcount=10 +#短信验证码有效时间 +sms.captcha.validtime=30 +#阿里短信网关配置 +sms.ali.accessKeyId= +sms.ali.accessKeySecret= +sms.ali.signName= +sms.ali.connect.timeout=1000 +sms.ali.read.timeout=1000 +sms.ali.product=Dysmsapi +sms.ali.domain=dysmsapi.aliyuncs.com +sms.ali.region=cn-hangzhou +sms.ali.template.code= + +#微信小程序相关配置 +wx.app.id= +wx.app.secret= +wx.app.url= + +#Scheduler Interval +scheduler.interval=* */1 * * * ? + +#对外api appid +api.appid=5521 +api.secret=161119 \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/application-datasources.properties b/ksafepack-admin/src/main/resources/application-datasources.properties new file mode 100644 index 0000000..fd3aea0 --- /dev/null +++ b/ksafepack-admin/src/main/resources/application-datasources.properties @@ -0,0 +1,31 @@ +#在service的方法上使用如@DataSource(value = DataSourceType.SLAVE)注解即可切换数据源 + +spring.datasource.type=com.alibaba.druid.pool.DruidDataSource +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver + +spring.datasource.master.url=jdbc:mysql://192.168.31.57:3306/ksafepack?serverTimezone=UTC&useSSL=false&autoReconnect=true&tinyInt1isBit=false&useUnicode=true&characterEncoding=utf8 +#spring.datasource.master.username=ENC(aRWpysKMOtKt12BiuB6ngQ==) +#spring.datasource.master.password=ENC(s94iPGH9KTaOAnbutmXky5DDi9CF68EG) +spring.datasource.master.username=root +spring.datasource.master.password=ergergerg45346t5gyg4eg5 + +spring.datasource.slave.enabled=false +spring.datasource.slave.url=jdbc:mysql://127.0.0.1:3306/ksafepack?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Hongkong +spring.datasource.slave.username=ENC(aRWpysKMOtKt12BiuB6ngQ==) +spring.datasource.slave.password=ENC(s94iPGH9KTaOAnbutmXky5DDi9CF68EG) + +spring.datasource.maxActive=10 +spring.datasource.initialSize=5 +spring.datasource.maxWait=60000 +spring.datasource.minIdle=10 +spring.datasource.timeBetweenEvictionRunsMillis=60000 +spring.datasource.minEvictableIdleTimeMillis=300000 +spring.datasource.maxEvictableIdleTimeMillis=300000 +spring.datasource.validationQuery=select 'x' +spring.datasource.testWhileIdle=true +spring.datasource.testOnBorrow=false +spring.datasource.testOnReturn=false + +spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect +spring.jpa.properties.hibernate.hbm2ddl.auto=update +spring.jpa.show-sql=true \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/application-es.properties b/ksafepack-admin/src/main/resources/application-es.properties new file mode 100644 index 0000000..cc7e2ca --- /dev/null +++ b/ksafepack-admin/src/main/resources/application-es.properties @@ -0,0 +1,24 @@ +# Elasticsearch-核心配置 + +elasticsearch.username= +elasticsearch.password= + +# http连接超时时间 +elasticsearch.connectTimeout=1000 +# socket连接超时时间 +elasticsearch.socketTimeout=30000 +# 获取连接的超时时间 +elasticsearch.connectionRequestTimeout=500 +# 最大连接数 +elasticsearch.maxConnTotal=100 +# 最大路由连接数 +elasticsearch.maxConnPerRoute=100 +#shard 数量 +elasticsearch.shards=3 +#replicas 数量 +elasticsearch.replicas=2 +#协议 +elasticsearch.protocol=http +#集群主机 +#elasticsearch.hosts=127.0.0.1:9200,127.0.0.1:9300,127.0.0.1:9400 +elasticsearch.hosts=192.168.1.151:9200,192.168.1.152:9200,192.168.1.153:9200 \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/application-redis.properties b/ksafepack-admin/src/main/resources/application-redis.properties new file mode 100644 index 0000000..fec5e84 --- /dev/null +++ b/ksafepack-admin/src/main/resources/application-redis.properties @@ -0,0 +1,8 @@ +spring.redis.database=3 +spring.redis.host=127.0.0.1 +#spring.redis.port=6324 +#spring.redis.password=ENC(a+PuvaA1K5Vy7GA0dmlKdD4buTQBV7R+) +spring.redis.port=6379 +spring.redis.password=xxxxxxx + +spring.redis.timeout=2000 \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/application-upload.properties b/ksafepack-admin/src/main/resources/application-upload.properties new file mode 100644 index 0000000..508bf57 --- /dev/null +++ b/ksafepack-admin/src/main/resources/application-upload.properties @@ -0,0 +1,26 @@ +# Whether to enable support of multipart uploads. +spring.servlet.multipart.enabled=true +# Threshold after which files are written to disk. +spring.servlet.multipart.file-size-threshold=0 +# Intermediate location of uploaded files. +#spring.servlet.multipart.location=d:/upload +spring.servlet.multipart.location=/home/kelp +# Max file size. +spring.servlet.multipart.max-file-size=5MB +# Max request size. +spring.servlet.multipart.max-request-size=10MB +# Whether to resolve the multipart request lazily at the time of file or parameter access. +spring.servlet.multipart.resolve-lazily=false + +#与spring保持一致 +file.max-file-size=5M + +#ftp ftp上传文件后通过nginx来访问图片, img/iframe/link/script不遵从同源策略 +ftp.server=127.0.0.1 +ftp.port=8008 +ftp.userName=123 +ftp.userPassword=321 +#ftp基础目录 +ftp.basePath=kelp +# http图片地址,可以使用nginx来处理 +ftp.baseUrl=http://127.0.0.1:8082/ \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/application.properties b/ksafepack-admin/src/main/resources/application.properties new file mode 100644 index 0000000..468baf7 --- /dev/null +++ b/ksafepack-admin/src/main/resources/application.properties @@ -0,0 +1,35 @@ +#context-path +server.servlet.context-path=/ycsafe +server.port=8082 +server.max-http-header-size=102400 + +#处理freemarker中的long型数据 +spring.freemarker.settings.number_format=0.## + +#静态资源路径 +spring.mvc.static-path-pattern=/static/** +# 资源缓存时间,单位秒 +spring.resources.cache.period=604800 +# 开启gzip压缩 +spring.resources.chain.compressed=true +# 启用缓存 +spring.resources.chain.cache=true + +# 热部署开关 +devtools.restart= +devtools.enabled=true + + +#spring.profiles.active=datasources,redis,activemq +spring.profiles.active=datasources,redis,config,dxxconfig,upload,es + +#加密的盐值 +jasypt.encryptor.password=kelp +jasypt.encryptor.algorithm=PBEWithMD5AndDES +jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator + +#token +token.alive.time=10 + +#日志 +#logging.config=classpath:logback-core.xml \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/data/about.txt b/ksafepack-admin/src/main/resources/data/about.txt new file mode 100644 index 0000000..66b497a --- /dev/null +++ b/ksafepack-admin/src/main/resources/data/about.txt @@ -0,0 +1,13 @@ +重剑无锋,大巧不工,在任何时候,架构都优于算法和技巧。 + +现在,也许是一个框架时代,许多的开发人员能够使用如Spring系列框架写出用户需要的应用程序,却可能忽略了架构,忽略了代码的优化。 + +也许有开发人员并不知道架构的三大原则、五小原则,并不知道Gof的23种设计模式。 +也许有开发人员写过上千行代码的类,写过上百行代码的方法,if-else/swich-case满天飞。 +也许有开发人员不知道对堆、栈的使用,不知道接口的使用,多态的静态联编、动态联编。 +也许有开发人员并不知道如何处理XSS、CSRF、框架内的SQL注入、反序列化等漏洞。 +…… + +但这并不妨碍我们追求代码的极致,让架构的思想传承下去。 +krefactory平台是一个为软件开发人员提供代码重构与优化的技术交流平台,希望大家喜欢。 +krefactory平台只有一种注册用户,所有用户享有同等权力,平台不设有任何特权用户。 \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/data/district.csv b/ksafepack-admin/src/main/resources/data/district.csv new file mode 100644 index 0000000..28f7a0e --- /dev/null +++ b/ksafepack-admin/src/main/resources/data/district.csv @@ -0,0 +1,4069 @@ +"ID","NAME","PID","level","STATE","ORDERNUMBER" +"11","北京市","0","1","Y","1" +"12","天津市","0","1","Y","2" +"13","河北省","0","1","Y","3" +"14","山西省","0","1","Y","4" +"15","内蒙古自治区","0","1","Y","5" +"21","辽宁省","0","1","Y","6" +"22","吉林省","0","1","Y","7" +"23","黑龙江省","0","1","Y","8" +"31","上海市","0","1","Y","9" +"32","江苏省","0","1","Y","10" +"33","浙江省","0","1","Y","11" +"34","安徽省","0","1","Y","12" +"35","福建省","0","1","Y","13" +"36","江西省","0","1","Y","14" +"37","山东省","0","1","Y","15" +"41","河南省","0","1","Y","16" +"42","湖北省","0","1","Y","17" +"43","湖南省","0","1","Y","18" +"44","广东省","0","1","Y","19" +"45","广西壮族自治区","0","1","Y","20" +"46","海南省","0","1","Y","21" +"50","重庆市","0","1","Y","22" +"51","四川省","0","1","Y","23" +"52","贵州省","0","1","Y","24" +"53","云南省","0","1","Y","25" +"54","西藏自治区","0","1","Y","26" +"61","陕西省","0","1","Y","27" +"62","甘肃省","0","1","Y","28" +"63","青海省","0","1","Y","29" +"64","宁夏回族自治区","0","1","Y","30" +"65","新疆维吾尔自治区","0","1","Y","31" +"66","新疆兵团","0","1","Y","32" +"1101","市辖区","11","2","Y","1" +"1102","县","11","2","Y","2" +"110101","东城区","1101","3","Y","1" +"110102","西城区","1101","3","Y","2" +"110105","朝阳区","1101","3","Y","3" +"110106","丰台区","1101","3","Y","4" +"110107","石景山区","1101","3","Y","5" +"110108","海淀区","1101","3","Y","6" +"110109","门头沟区","1101","3","Y","7" +"110111","房山区","1101","3","Y","8" +"110112","通州区","1101","3","Y","9" +"110113","顺义区","1101","3","Y","10" +"110114","昌平区","1101","3","Y","11" +"110115","大兴区","1101","3","Y","12" +"110116","怀柔区","1101","3","Y","13" +"110117","平谷区","1101","3","Y","14" +"110118","密云区","1101","3","Y","15" +"110119","延庆区","1101","3","Y","16" +"1201","市辖区","12","2","Y","1" +"1202","县","12","2","Y","2" +"120101","和平区","1201","3","Y","1" +"120102","河东区","1201","3","Y","2" +"120103","河西区","1201","3","Y","3" +"120104","南开区","1201","3","Y","4" +"120105","河北区","1201","3","Y","5" +"120106","红桥区","1201","3","Y","6" +"120110","东丽区","1201","3","Y","7" +"120111","西青区","1201","3","Y","8" +"120112","津南区","1201","3","Y","9" +"120113","北辰区","1201","3","Y","10" +"120114","武清区","1201","3","Y","11" +"120115","宝坻区","1201","3","Y","12" +"120116","滨海新区","1201","3","Y","13" +"120117","宁河区","1201","3","Y","14" +"120118","静海区","1201","3","Y","15" +"120119","蓟州区","1201","3","Y","16" +"1301","石家庄市","13","2","Y","1" +"1302","唐山市","13","2","Y","2" +"1303","秦皇岛市","13","2","Y","3" +"1304","邯郸市","13","2","Y","4" +"1305","邢台市","13","2","Y","5" +"1306","保定市","13","2","Y","6" +"1307","张家口市","13","2","Y","7" +"1308","承德市","13","2","Y","8" +"1309","沧州市","13","2","Y","9" +"1310","廊坊市","13","2","Y","10" +"1311","衡水市","13","2","Y","11" +"1331","雄安新区","13","2","Y","12" +"130101","市辖区","1301","3","Y","1" +"130102","长安区","1301","3","Y","2" +"130104","桥西区","1301","3","Y","3" +"130105","新华区","1301","3","Y","4" +"130106","开发区","1301","3","Y","5" +"130107","井陉矿区","1301","3","Y","6" +"130108","裕华区","1301","3","Y","7" +"130109","藁城区","1301","3","Y","8" +"130110","鹿泉区","1301","3","Y","9" +"130111","栾城区","1301","3","Y","10" +"130121","井陉县","1301","3","Y","11" +"130123","正定县","1301","3","Y","12" +"130125","行唐县","1301","3","Y","13" +"130126","灵寿县","1301","3","Y","14" +"130127","高邑县","1301","3","Y","15" +"130128","深泽县","1301","3","Y","16" +"130129","赞皇县","1301","3","Y","17" +"130130","无极县","1301","3","Y","18" +"130131","平山县","1301","3","Y","19" +"130132","元氏县","1301","3","Y","20" +"130133","赵县","1301","3","Y","21" +"130171","正定新区","1301","3","Y","22" +"130172","石家庄市循环工业园区","1301","3","Y","23" +"130181","辛集市","1301","3","Y","24" +"130183","晋州市","1301","3","Y","25" +"130184","新乐市","1301","3","Y","26" +"130201","市辖区","1302","3","Y","1" +"130202","路南区","1302","3","Y","2" +"130203","路北区","1302","3","Y","3" +"130204","古冶区","1302","3","Y","4" +"130205","开平区","1302","3","Y","5" +"130207","丰南区","1302","3","Y","6" +"130208","丰润区","1302","3","Y","7" +"130209","曹妃甸区","1302","3","Y","8" +"130223","滦县","1302","3","Y","9" +"130224","滦南县","1302","3","Y","10" +"130225","乐亭县","1302","3","Y","11" +"130227","迁西县","1302","3","Y","12" +"130229","玉田县","1302","3","Y","13" +"130272","海港经济开发区","1302","3","Y","14" +"130281","遵化市","1302","3","Y","15" +"130283","迁安市","1302","3","Y","16" +"130291","芦台经济技术开发区","1302","3","Y","17" +"130292","汉沽管理区","1302","3","Y","18" +"130293","高新技术开发区","1302","3","Y","19" +"130294","南堡开发区","1302","3","Y","20" +"130301","市辖区","1303","3","Y","1" +"130302","海港区","1303","3","Y","2" +"130303","山海关区","1303","3","Y","3" +"130304","北戴河区","1303","3","Y","4" +"130306","抚宁区","1303","3","Y","5" +"130321","青龙满族自治县","1303","3","Y","6" +"130322","昌黎县","1303","3","Y","7" +"130324","卢龙县","1303","3","Y","8" +"130325","秦皇岛开发区","1303","3","Y","9" +"130326","北戴河新区","1303","3","Y","10" +"130401","市辖区","1304","3","Y","1" +"130402","邯山区","1304","3","Y","2" +"130403","丛台区","1304","3","Y","3" +"130404","复兴区","1304","3","Y","4" +"130406","峰峰矿区","1304","3","Y","5" +"130407","肥乡区","1304","3","Y","6" +"130408","永年区","1304","3","Y","7" +"130423","临漳县","1304","3","Y","8" +"130424","成安县","1304","3","Y","9" +"130425","大名县","1304","3","Y","10" +"130426","涉县","1304","3","Y","11" +"130427","磁县","1304","3","Y","12" +"130430","邱县","1304","3","Y","13" +"130431","鸡泽县","1304","3","Y","14" +"130432","广平县","1304","3","Y","15" +"130433","馆陶县","1304","3","Y","16" +"130434","魏县","1304","3","Y","17" +"130435","曲周县","1304","3","Y","18" +"130472","邯郸经济开发区","1304","3","Y","19" +"130473","冀南新区","1304","3","Y","20" +"130481","武安市","1304","3","Y","21" +"130501","市辖区","1305","3","Y","1" +"130502","桥东区","1305","3","Y","2" +"130503","桥西区","1305","3","Y","3" +"130504","高开区","1305","3","Y","4" +"130521","邢台县","1305","3","Y","5" +"130522","临城县","1305","3","Y","6" +"130523","内丘县","1305","3","Y","7" +"130524","柏乡县","1305","3","Y","8" +"130525","隆尧县","1305","3","Y","9" +"130526","任县","1305","3","Y","10" +"130527","南和县","1305","3","Y","11" +"130528","宁晋县","1305","3","Y","12" +"130529","巨鹿县","1305","3","Y","13" +"130530","新河县","1305","3","Y","14" +"130531","广宗县","1305","3","Y","15" +"130532","平乡县","1305","3","Y","16" +"130533","威县","1305","3","Y","17" +"130534","清河县","1305","3","Y","18" +"130535","临西县","1305","3","Y","19" +"130581","南宫市","1305","3","Y","20" +"130582","沙河市","1305","3","Y","21" +"130601","市辖区","1306","3","Y","1" +"130602","竞秀区","1306","3","Y","2" +"130606","莲池区","1306","3","Y","3" +"130607","满城区","1306","3","Y","4" +"130608","清苑区","1306","3","Y","5" +"130609","徐水区","1306","3","Y","6" +"130623","涞水县","1306","3","Y","7" +"130624","阜平县","1306","3","Y","8" +"130626","定兴县","1306","3","Y","9" +"130627","唐县","1306","3","Y","10" +"130628","高阳县","1306","3","Y","11" +"130630","涞源县","1306","3","Y","12" +"130631","望都县","1306","3","Y","13" +"130633","易县","1306","3","Y","14" +"130634","曲阳县","1306","3","Y","15" +"130635","蠡县","1306","3","Y","16" +"130636","顺平县","1306","3","Y","17" +"130637","博野县","1306","3","Y","18" +"130671","白沟新城管委会","1306","3","Y","19" +"130672","保定国家高新技术产业开发区管理委员会","1306","3","Y","20" +"130681","涿州市","1306","3","Y","21" +"130682","定州市","1306","3","Y","22" +"130683","安国市","1306","3","Y","23" +"130684","高碑店市","1306","3","Y","24" +"130701","市辖区","1307","3","Y","1" +"130702","桥东区","1307","3","Y","2" +"130703","桥西区","1307","3","Y","3" +"130705","宣化区","1307","3","Y","4" +"130706","下花园区","1307","3","Y","5" +"130708","万全区","1307","3","Y","6" +"130709","崇礼区","1307","3","Y","7" +"130722","张北县","1307","3","Y","8" +"130723","康保县","1307","3","Y","9" +"130724","沽源县","1307","3","Y","10" +"130725","尚义县","1307","3","Y","11" +"130726","蔚县","1307","3","Y","12" +"130727","阳原县","1307","3","Y","13" +"130728","怀安县","1307","3","Y","14" +"130730","怀来县","1307","3","Y","15" +"130731","涿鹿县","1307","3","Y","16" +"130732","赤城县","1307","3","Y","17" +"130734","察北管理区","1307","3","Y","18" +"130735","塞北管理区","1307","3","Y","19" +"130736","经济开发区","1307","3","Y","20" +"130801","市辖区","1308","3","Y","1" +"130802","双桥区","1308","3","Y","2" +"130803","双滦区","1308","3","Y","3" +"130804","鹰手营子矿区","1308","3","Y","4" +"130821","承德县","1308","3","Y","5" +"130822","兴隆县","1308","3","Y","6" +"130824","滦平县","1308","3","Y","7" +"130825","隆化县","1308","3","Y","8" +"130826","丰宁满族自治县","1308","3","Y","9" +"130827","宽城满族自治县","1308","3","Y","10" +"130828","围场满族蒙古族自治县","1308","3","Y","11" +"130871","高新技术开发区","1308","3","Y","12" +"130881","平泉市","1308","3","Y","13" +"130901","市辖区","1309","3","Y","1" +"130902","新华区","1309","3","Y","2" +"130903","运河区","1309","3","Y","3" +"130921","沧县","1309","3","Y","4" +"130922","青县","1309","3","Y","5" +"130923","东光县","1309","3","Y","6" +"130924","海兴县","1309","3","Y","7" +"130925","盐山县","1309","3","Y","8" +"130926","肃宁县","1309","3","Y","9" +"130927","南皮县","1309","3","Y","10" +"130928","吴桥县","1309","3","Y","11" +"130929","献县","1309","3","Y","12" +"130930","孟村回族自治县","1309","3","Y","13" +"130971","中捷农场","1309","3","Y","14" +"130972","南大港农场","1309","3","Y","15" +"130973","开发区","1309","3","Y","16" +"130974","港城开发区","1309","3","Y","17" +"130981","泊头市","1309","3","Y","18" +"130982","任丘市","1309","3","Y","19" +"130983","黄骅市","1309","3","Y","20" +"130984","河间市","1309","3","Y","21" +"131001","市辖区","1310","3","Y","1" +"131002","安次区","1310","3","Y","2" +"131003","广阳区","1310","3","Y","3" +"131022","固安县","1310","3","Y","4" +"131023","永清县","1310","3","Y","5" +"131024","香河县","1310","3","Y","6" +"131025","大城县","1310","3","Y","7" +"131026","文安县","1310","3","Y","8" +"131028","大厂回族自治县","1310","3","Y","9" +"131071","开发区","1310","3","Y","10" +"131081","霸州市","1310","3","Y","11" +"131082","三河市","1310","3","Y","12" +"131101","市辖区","1311","3","Y","1" +"131102","桃城区","1311","3","Y","2" +"131103","冀州区","1311","3","Y","3" +"131121","枣强县","1311","3","Y","4" +"131122","武邑县","1311","3","Y","5" +"131123","武强县","1311","3","Y","6" +"131124","饶阳县","1311","3","Y","7" +"131125","安平县","1311","3","Y","8" +"131126","故城县","1311","3","Y","9" +"131127","景县","1311","3","Y","10" +"131128","阜城县","1311","3","Y","11" +"131182","深州市","1311","3","Y","12" +"131191","滨湖新区","1311","3","Y","13" +"131192","工业新区","1311","3","Y","14" +"133121","雄县","1331","3","Y","1" +"133122","容城县","1331","3","Y","2" +"133123","安新县","1331","3","Y","3" +"1401","太原市","14","2","Y","1" +"1402","大同市","14","2","Y","2" +"1403","阳泉市","14","2","Y","3" +"1404","长治市","14","2","Y","4" +"1405","晋城市","14","2","Y","5" +"1406","朔州市","14","2","Y","6" +"1407","晋中市","14","2","Y","7" +"1408","运城市","14","2","Y","8" +"1409","忻州市","14","2","Y","9" +"1410","临汾市","14","2","Y","10" +"1411","吕梁市","14","2","Y","11" +"140101","市辖区","1401","3","Y","1" +"140105","小店区","1401","3","Y","2" +"140106","迎泽区","1401","3","Y","3" +"140107","杏花岭区","1401","3","Y","4" +"140108","尖草坪区","1401","3","Y","5" +"140109","万柏林区","1401","3","Y","6" +"140110","晋源区","1401","3","Y","7" +"140121","清徐县","1401","3","Y","8" +"140122","阳曲县","1401","3","Y","9" +"140123","娄烦县","1401","3","Y","10" +"140181","古交市","1401","3","Y","11" +"140201","市辖区","1402","3","Y","1" +"140211","南郊区","1402","3","Y","2" +"140212","新荣区","1402","3","Y","3" +"140213","平城区","1402","3","Y","4" +"140214","云冈区","1402","3","Y","5" +"140215","云州区","1402","3","Y","6" +"140221","阳高县","1402","3","Y","7" +"140222","天镇县","1402","3","Y","8" +"140223","广灵县","1402","3","Y","9" +"140224","灵丘县","1402","3","Y","10" +"140225","浑源县","1402","3","Y","11" +"140226","左云县","1402","3","Y","12" +"140301","市辖区","1403","3","Y","1" +"140302","城区","1403","3","Y","2" +"140303","矿区","1403","3","Y","3" +"140311","郊区","1403","3","Y","4" +"140321","平定县","1403","3","Y","5" +"140322","盂县","1403","3","Y","6" +"140401","市辖区","1404","3","Y","1" +"140403","潞州区","1404","3","Y","2" +"140404","上党区","1404","3","Y","3" +"140405","屯留区","1404","3","Y","4" +"140406","潞城区","1404","3","Y","5" +"140423","襄垣县","1404","3","Y","6" +"140425","平顺县","1404","3","Y","7" +"140426","黎城县","1404","3","Y","8" +"140427","壶关县","1404","3","Y","9" +"140428","长子县","1404","3","Y","10" +"140429","武乡县","1404","3","Y","11" +"140430","沁县","1404","3","Y","12" +"140431","沁源","1404","3","Y","13" +"140501","市辖区","1405","3","Y","1" +"140502","城区","1405","3","Y","2" +"140521","沁水县","1405","3","Y","3" +"140522","阳城县","1405","3","Y","4" +"140524","陵川县","1405","3","Y","5" +"140525","泽州县","1405","3","Y","6" +"140581","高平市","1405","3","Y","7" +"140601","市辖区","1406","3","Y","1" +"140602","朔城区","1406","3","Y","2" +"140603","平鲁区","1406","3","Y","3" +"140621","山阴县","1406","3","Y","4" +"140622","应县","1406","3","Y","5" +"140623","右玉县","1406","3","Y","6" +"140624","怀仁县","1406","3","Y","7" +"140701","市辖区","1407","3","Y","1" +"140702","榆次区","1407","3","Y","2" +"140721","榆社县","1407","3","Y","3" +"140722","左权县","1407","3","Y","4" +"140723","和顺县","1407","3","Y","5" +"140724","昔阳县","1407","3","Y","6" +"140725","寿阳县","1407","3","Y","7" +"140726","太谷县","1407","3","Y","8" +"140727","祁县","1407","3","Y","9" +"140728","平遥县","1407","3","Y","10" +"140729","灵石县","1407","3","Y","11" +"140781","介休市","1407","3","Y","12" +"140801","市辖区","1408","3","Y","1" +"140802","盐湖区","1408","3","Y","2" +"140821","临猗县","1408","3","Y","3" +"140822","万荣县","1408","3","Y","4" +"140823","闻喜县","1408","3","Y","5" +"140824","稷山县","1408","3","Y","6" +"140825","新绛县","1408","3","Y","7" +"140826","绛县","1408","3","Y","8" +"140827","垣曲县","1408","3","Y","9" +"140828","夏县","1408","3","Y","10" +"140829","平陆县","1408","3","Y","11" +"140830","芮城县","1408","3","Y","12" +"140881","永济市","1408","3","Y","13" +"140882","河津市","1408","3","Y","14" +"140901","市辖区","1409","3","Y","1" +"140902","忻府区","1409","3","Y","2" +"140921","定襄县","1409","3","Y","3" +"140922","五台县","1409","3","Y","4" +"140923","代县","1409","3","Y","5" +"140924","繁峙县","1409","3","Y","6" +"140925","宁武县","1409","3","Y","7" +"140926","静乐县","1409","3","Y","8" +"140927","神池","1409","3","Y","9" +"140928","五寨县","1409","3","Y","10" +"140929","岢岚县","1409","3","Y","11" +"140930","河曲县","1409","3","Y","12" +"140931","保德县","1409","3","Y","13" +"140932","偏关县","1409","3","Y","14" +"140971","五台山风景区管委会","1409","3","Y","15" +"140981","原平市","1409","3","Y","16" +"141001","市辖区","1410","3","Y","1" +"141002","尧都区","1410","3","Y","2" +"141021","曲沃县","1410","3","Y","3" +"141022","翼城县","1410","3","Y","4" +"141023","襄汾县","1410","3","Y","5" +"141024","洪洞县","1410","3","Y","6" +"141025","古县","1410","3","Y","7" +"141026","安泽县","1410","3","Y","8" +"141027","浮山县","1410","3","Y","9" +"141028","吉县","1410","3","Y","10" +"141029","乡宁县","1410","3","Y","11" +"141030","大宁县","1410","3","Y","12" +"141031","隰县","1410","3","Y","13" +"141032","永和县","1410","3","Y","14" +"141033","蒲县","1410","3","Y","15" +"141034","汾西县","1410","3","Y","16" +"141081","侯马市","1410","3","Y","17" +"141082","霍州市","1410","3","Y","18" +"141101","市辖区","1411","3","Y","1" +"141102","离石区","1411","3","Y","2" +"141121","文水县","1411","3","Y","3" +"141122","交城县","1411","3","Y","4" +"141123","兴县","1411","3","Y","5" +"141124","临县","1411","3","Y","6" +"141125","柳林县","1411","3","Y","7" +"141126","石楼县","1411","3","Y","8" +"141127","岚县","1411","3","Y","9" +"141128","方山县","1411","3","Y","10" +"141129","中阳县","1411","3","Y","11" +"141130","交口县","1411","3","Y","12" +"141181","孝义市","1411","3","Y","13" +"141182","汾阳市","1411","3","Y","14" +"1501","呼和浩特市","15","2","Y","1" +"1502","包头市","15","2","Y","2" +"1503","乌海市","15","2","Y","3" +"1504","赤峰市","15","2","Y","4" +"1505","通辽市","15","2","Y","5" +"1506","鄂尔多斯市","15","2","Y","6" +"1507","呼伦贝尔市","15","2","Y","7" +"1508","巴彦淖尔市","15","2","Y","8" +"1509","乌兰察布市","15","2","Y","9" +"1522","兴安盟","15","2","Y","10" +"1525","锡林郭勒盟","15","2","Y","11" +"1529","阿拉善盟","15","2","Y","12" +"150101","市辖区","1501","3","Y","1" +"150102","新城区","1501","3","Y","2" +"150103","回民区","1501","3","Y","3" +"150104","玉泉区","1501","3","Y","4" +"150105","赛罕区","1501","3","Y","5" +"150121","土默特左旗","1501","3","Y","6" +"150122","托克托县","1501","3","Y","7" +"150123","和林格尔县","1501","3","Y","8" +"150124","清水河县","1501","3","Y","9" +"150125","武川县","1501","3","Y","10" +"150201","市辖区","1502","3","Y","1" +"150202","东河区","1502","3","Y","2" +"150203","昆都仑区","1502","3","Y","3" +"150204","青山区","1502","3","Y","4" +"150205","石拐区","1502","3","Y","5" +"150206","白云矿区","1502","3","Y","6" +"150207","九原区","1502","3","Y","7" +"150208","稀土高新技术产业开发区","1502","3","Y","8" +"150221","土默特右旗","1502","3","Y","9" +"150222","固阳县","1502","3","Y","10" +"150223","达尔罕茂明安联合旗","1502","3","Y","11" +"150301","市辖区","1503","3","Y","1" +"150302","海勃湾区","1503","3","Y","2" +"150303","海南区","1503","3","Y","3" +"150304","乌达区","1503","3","Y","4" +"150401","市辖区","1504","3","Y","1" +"150402","红山区","1504","3","Y","2" +"150403","元宝山区","1504","3","Y","3" +"150404","松山区","1504","3","Y","4" +"150421","阿鲁科尔沁旗","1504","3","Y","5" +"150422","巴林左旗","1504","3","Y","6" +"150423","巴林右旗","1504","3","Y","7" +"150424","林西县","1504","3","Y","8" +"150425","克什克腾旗","1504","3","Y","9" +"150426","翁牛特旗","1504","3","Y","10" +"150428","喀喇沁旗","1504","3","Y","11" +"150429","宁城县","1504","3","Y","12" +"150430","敖汉旗","1504","3","Y","13" +"150501","市辖区","1505","3","Y","1" +"150502","科尔沁区","1505","3","Y","2" +"150503","经济技术开发区","1505","3","Y","3" +"150521","科尔沁左翼中旗","1505","3","Y","4" +"150522","科尔沁左翼后旗","1505","3","Y","5" +"150523","开鲁县","1505","3","Y","6" +"150524","库伦旗","1505","3","Y","7" +"150525","奈曼旗","1505","3","Y","8" +"150526","扎鲁特旗","1505","3","Y","9" +"150581","霍林郭勒市","1505","3","Y","10" +"150601","市辖区","1506","3","Y","1" +"150602","东胜区","1506","3","Y","2" +"150603","康巴什新区","1506","3","Y","3" +"150621","达拉特旗","1506","3","Y","4" +"150622","准格尔旗","1506","3","Y","5" +"150623","鄂托克前旗","1506","3","Y","6" +"150624","鄂托克旗","1506","3","Y","7" +"150625","杭锦旗","1506","3","Y","8" +"150626","乌审旗","1506","3","Y","9" +"150627","伊金霍洛旗","1506","3","Y","10" +"150701","市辖区","1507","3","Y","1" +"150702","海拉尔区","1507","3","Y","2" +"150721","阿荣旗","1507","3","Y","3" +"150722","莫力达瓦达斡尔族自治旗","1507","3","Y","4" +"150723","鄂伦春自治旗","1507","3","Y","5" +"150724","鄂温克族自治旗","1507","3","Y","6" +"150725","陈巴尔虎旗","1507","3","Y","7" +"150726","新巴尔虎左旗","1507","3","Y","8" +"150727","新巴尔虎右旗","1507","3","Y","9" +"150781","满洲里市","1507","3","Y","10" +"150782","牙克石市","1507","3","Y","11" +"150783","扎兰屯市","1507","3","Y","12" +"150784","额尔古纳市","1507","3","Y","13" +"150785","根河市","1507","3","Y","14" +"150801","市辖区","1508","3","Y","1" +"150802","临河区","1508","3","Y","2" +"150821","五原县","1508","3","Y","3" +"150822","磴口县","1508","3","Y","4" +"150823","乌拉特前旗","1508","3","Y","5" +"150824","乌拉特中旗","1508","3","Y","6" +"150825","乌拉特后旗","1508","3","Y","7" +"150826","杭锦后旗","1508","3","Y","8" +"150901","市辖区","1509","3","Y","1" +"150902","集宁区","1509","3","Y","2" +"150921","卓资县","1509","3","Y","3" +"150922","化德县","1509","3","Y","4" +"150923","商都县","1509","3","Y","5" +"150924","兴和县","1509","3","Y","6" +"150925","凉城县","1509","3","Y","7" +"150926","察哈尔右翼前旗","1509","3","Y","8" +"150927","察哈尔右翼中旗","1509","3","Y","9" +"150928","察哈尔右翼后旗","1509","3","Y","10" +"150929","四子王旗","1509","3","Y","11" +"150981","丰镇市","1509","3","Y","12" +"152201","乌兰浩特市","1522","3","Y","1" +"152202","阿尔山市","1522","3","Y","2" +"152221","科尔沁右翼前旗","1522","3","Y","3" +"152222","科尔沁右翼中旗","1522","3","Y","4" +"152223","扎赉特旗","1522","3","Y","5" +"152224","突泉县","1522","3","Y","6" +"152501","二连浩特市","1525","3","Y","1" +"152502","锡林浩特市","1525","3","Y","2" +"152522","阿巴嘎旗","1525","3","Y","3" +"152523","苏尼特左旗","1525","3","Y","4" +"152524","苏尼特右旗","1525","3","Y","5" +"152525","东乌珠穆沁旗","1525","3","Y","6" +"152526","西乌珠穆沁旗","1525","3","Y","7" +"152527","太仆寺旗","1525","3","Y","8" +"152528","镶黄旗","1525","3","Y","9" +"152529","正镶白旗","1525","3","Y","10" +"152530","正蓝旗","1525","3","Y","11" +"152531","多伦县","1525","3","Y","12" +"152532","乌拉盖管理区","1525","3","Y","13" +"152902","阿拉善经济开发区","1529","3","Y","1" +"152903","孪井滩生态移民示范区","1529","3","Y","2" +"152921","阿拉善左旗","1529","3","Y","3" +"152922","阿拉善右旗","1529","3","Y","4" +"152923","额济纳旗","1529","3","Y","5" +"2101","沈阳市","21","2","Y","1" +"2102","大连市","21","2","Y","2" +"2103","鞍山市","21","2","Y","3" +"2104","抚顺市","21","2","Y","4" +"2105","本溪市","21","2","Y","5" +"2106","丹东市","21","2","Y","6" +"2107","锦州市","21","2","Y","7" +"2108","营口市","21","2","Y","8" +"2109","阜新市","21","2","Y","9" +"2110","辽阳市","21","2","Y","10" +"2111","盘锦市","21","2","Y","11" +"2112","铁岭市","21","2","Y","12" +"2113","朝阳市","21","2","Y","13" +"2114","葫芦岛市","21","2","Y","14" +"210101","市辖区","2101","3","Y","1" +"210102","和平区","2101","3","Y","2" +"210103","沈河区","2101","3","Y","3" +"210104","大东区","2101","3","Y","4" +"210105","皇姑区","2101","3","Y","5" +"210106","铁西区","2101","3","Y","6" +"210111","苏家屯区","2101","3","Y","7" +"210112","浑南区","2101","3","Y","8" +"210113","沈北新区","2101","3","Y","9" +"210114","于洪区","2101","3","Y","10" +"210115","辽中区","2101","3","Y","11" +"210123","康平县","2101","3","Y","12" +"210124","法库县","2101","3","Y","13" +"210181","新民市","2101","3","Y","14" +"210201","市辖区","2102","3","Y","1" +"210202","中山区","2102","3","Y","2" +"210203","西岗区","2102","3","Y","3" +"210204","沙河口区","2102","3","Y","4" +"210211","甘井子区","2102","3","Y","5" +"210212","旅顺口区","2102","3","Y","6" +"210213","金普新区","2102","3","Y","7" +"210214","普兰店区","2102","3","Y","8" +"210224","长海县","2102","3","Y","9" +"210281","瓦房店市","2102","3","Y","10" +"210283","庄河市","2102","3","Y","11" +"210302","铁东区","2103","3","Y","1" +"210303","铁西区","2103","3","Y","2" +"210304","立山区","2103","3","Y","3" +"210311","千山区","2103","3","Y","4" +"210321","台安县","2103","3","Y","5" +"210323","岫岩满族自治县","2103","3","Y","6" +"210381","海城市","2103","3","Y","7" +"210401","市辖区","2104","3","Y","1" +"210402","新抚区","2104","3","Y","2" +"210403","东洲区","2104","3","Y","3" +"210404","望花区","2104","3","Y","4" +"210411","顺城区","2104","3","Y","5" +"210421","抚顺县","2104","3","Y","6" +"210422","新宾满族自治县","2104","3","Y","7" +"210423","清原满族自治县","2104","3","Y","8" +"210501","市辖区","2105","3","Y","1" +"210502","平山区","2105","3","Y","2" +"210503","溪湖区","2105","3","Y","3" +"210504","明山区","2105","3","Y","4" +"210505","南芬区","2105","3","Y","5" +"210521","本溪满族自治县","2105","3","Y","6" +"210522","桓仁满族自治县","2105","3","Y","7" +"210601","市辖区","2106","3","Y","1" +"210602","元宝区","2106","3","Y","2" +"210603","振兴区","2106","3","Y","3" +"210604","振安区","2106","3","Y","4" +"210624","宽甸满族自治县","2106","3","Y","5" +"210681","东港市","2106","3","Y","6" +"210682","凤城市","2106","3","Y","7" +"210701","市辖区","2107","3","Y","1" +"210702","古塔区","2107","3","Y","2" +"210703","凌河区","2107","3","Y","3" +"210711","太和区","2107","3","Y","4" +"210726","黑山县","2107","3","Y","5" +"210727","义县","2107","3","Y","6" +"210781","凌海市","2107","3","Y","7" +"210782","北镇市","2107","3","Y","8" +"210801","市辖区","2108","3","Y","1" +"210802","站前区","2108","3","Y","2" +"210803","西市区","2108","3","Y","3" +"210804","鲅鱼圈区","2108","3","Y","4" +"210811","老边区","2108","3","Y","5" +"210881","盖州市","2108","3","Y","6" +"210882","大石桥市","2108","3","Y","7" +"210901","市辖区","2109","3","Y","1" +"210902","海州区","2109","3","Y","2" +"210903","新邱区","2109","3","Y","3" +"210904","太平区","2109","3","Y","4" +"210905","清河门区","2109","3","Y","5" +"210911","细河区","2109","3","Y","6" +"210921","阜新蒙古族自治县","2109","3","Y","7" +"210922","彰武县","2109","3","Y","8" +"211001","市辖区","2110","3","Y","1" +"211002","白塔区","2110","3","Y","2" +"211003","文圣区","2110","3","Y","3" +"211004","宏伟区","2110","3","Y","4" +"211005","弓长岭区","2110","3","Y","5" +"211011","太子河区","2110","3","Y","6" +"211021","辽阳县","2110","3","Y","7" +"211081","灯塔市","2110","3","Y","8" +"211101","市辖区","2111","3","Y","1" +"211102","双台子区","2111","3","Y","2" +"211103","兴隆台区","2111","3","Y","3" +"211104","大洼区","2111","3","Y","4" +"211122","盘山县","2111","3","Y","5" +"211201","市辖区","2112","3","Y","1" +"211202","银州区","2112","3","Y","2" +"211204","清河区","2112","3","Y","3" +"211221","铁岭县","2112","3","Y","4" +"211223","西丰县","2112","3","Y","5" +"211224","昌图县","2112","3","Y","6" +"211281","调兵山市","2112","3","Y","7" +"211282","开原市","2112","3","Y","8" +"211301","市辖区","2113","3","Y","1" +"211302","双塔区","2113","3","Y","2" +"211303","龙城区","2113","3","Y","3" +"211321","朝阳县","2113","3","Y","4" +"211322","建平县","2113","3","Y","5" +"211324","喀喇沁左翼蒙古族自治县","2113","3","Y","6" +"211381","北票市","2113","3","Y","7" +"211382","凌源市","2113","3","Y","8" +"211401","市辖区","2114","3","Y","1" +"211402","连山区","2114","3","Y","2" +"211403","龙港区","2114","3","Y","3" +"211404","南票区","2114","3","Y","4" +"211421","绥中县","2114","3","Y","5" +"211422","建昌县","2114","3","Y","6" +"211481","兴城市","2114","3","Y","7" +"2201","长春市","22","2","Y","1" +"2202","吉林市","22","2","Y","2" +"2203","四平市","22","2","Y","3" +"2204","辽源市","22","2","Y","4" +"2205","通化市","22","2","Y","5" +"2206","白山市","22","2","Y","6" +"2207","松原市","22","2","Y","7" +"2208","白城市","22","2","Y","8" +"2209","公主岭市","22","2","Y","9" +"2210","梅河口市","22","2","Y","10" +"2224","延边朝鲜族自治州","22","2","Y","11" +"2291","长春新区","22","2","Y","12" +"2299","长白山管委会","22","2","Y","13" +"220101","市辖区","2201","3","Y","1" +"220102","南关区","2201","3","Y","2" +"220103","宽城区","2201","3","Y","3" +"220104","朝阳区","2201","3","Y","4" +"220105","二道区","2201","3","Y","5" +"220106","绿园区","2201","3","Y","6" +"220107","经济技术开发区","2201","3","Y","7" +"220112","双阳区","2201","3","Y","8" +"220122","农安县","2201","3","Y","9" +"220171","汽车产业开发区","2201","3","Y","10" +"220181","九台区","2201","3","Y","11" +"220182","榆树市","2201","3","Y","12" +"220183","德惠市","2201","3","Y","13" +"220192","净月旅游开发区","2201","3","Y","14" +"220194","莲花山旅游开发区","2201","3","Y","15" +"220201","市辖区","2202","3","Y","1" +"220202","昌邑区","2202","3","Y","2" +"220203","龙潭区","2202","3","Y","3" +"220204","船营区","2202","3","Y","4" +"220205","经济技术开发区","2202","3","Y","5" +"220206","高新技术开发区","2202","3","Y","6" +"220211","丰满区","2202","3","Y","7" +"220221","永吉县","2202","3","Y","8" +"220281","蛟河市","2202","3","Y","9" +"220282","桦甸市","2202","3","Y","10" +"220283","舒兰市","2202","3","Y","11" +"220284","磐石市","2202","3","Y","12" +"220301","市辖区","2203","3","Y","1" +"220302","铁西区","2203","3","Y","2" +"220303","铁东区","2203","3","Y","3" +"220322","梨树县","2203","3","Y","4" +"220323","伊通满族自治县","2203","3","Y","5" +"220382","双辽市","2203","3","Y","6" +"220401","市辖区","2204","3","Y","1" +"220402","龙山区","2204","3","Y","2" +"220403","西安区","2204","3","Y","3" +"220421","东丰县","2204","3","Y","4" +"220422","东辽县","2204","3","Y","5" +"220471","经济开发区","2204","3","Y","6" +"220501","市辖区","2205","3","Y","1" +"220502","东昌区","2205","3","Y","2" +"220503","二道江区","2205","3","Y","3" +"220521","通化县","2205","3","Y","4" +"220523","辉南县","2205","3","Y","5" +"220524","柳河县","2205","3","Y","6" +"220571","经济开发区","2205","3","Y","7" +"220582","集安市","2205","3","Y","8" +"220601","市辖区","2206","3","Y","1" +"220602","浑江区","2206","3","Y","2" +"220605","江源区","2206","3","Y","3" +"220621","抚松县","2206","3","Y","4" +"220622","靖宇县","2206","3","Y","5" +"220623","长白朝鲜族自治县","2206","3","Y","6" +"220681","临江市","2206","3","Y","7" +"220701","市辖区","2207","3","Y","1" +"220702","宁江区","2207","3","Y","2" +"220721","前郭尔罗斯蒙古族自治县","2207","3","Y","3" +"220722","长岭县","2207","3","Y","4" +"220723","乾安县","2207","3","Y","5" +"220771","经济技术开发区","2207","3","Y","6" +"220772","哈达山旅游经济开发区","2207","3","Y","7" +"220781","扶余市","2207","3","Y","8" +"220801","市辖区","2208","3","Y","1" +"220802","洮北区","2208","3","Y","2" +"220821","镇赉县","2208","3","Y","3" +"220822","通榆县","2208","3","Y","4" +"220872","查干浩特旅游经济开发区","2208","3","Y","5" +"220881","洮南市","2208","3","Y","6" +"220882","大安市","2208","3","Y","7" +"220981","公主岭市","2209","3","Y","1" +"221081","梅河口市","2210","3","Y","1" +"222401","延吉市","2224","3","Y","1" +"222402","图们市","2224","3","Y","2" +"222403","敦化市","2224","3","Y","3" +"222404","珲春市","2224","3","Y","4" +"222405","龙井市","2224","3","Y","5" +"222406","和龙市","2224","3","Y","6" +"222424","汪清县","2224","3","Y","7" +"222426","安图县","2224","3","Y","8" +"229101","长春新区","2291","3","Y","1" +"229991","池北区","2299","3","Y","1" +"229992","池西区","2299","3","Y","2" +"229993","池南区","2299","3","Y","3" +"2301","哈尔滨市","23","2","Y","1" +"2302","齐齐哈尔市","23","2","Y","2" +"2303","鸡西市","23","2","Y","3" +"2304","鹤岗市","23","2","Y","4" +"2305","双鸭山市","23","2","Y","5" +"2306","大庆市","23","2","Y","6" +"2307","伊春市","23","2","Y","7" +"2308","佳木斯市","23","2","Y","8" +"2309","七台河市","23","2","Y","9" +"2310","牡丹江市","23","2","Y","10" +"2311","黑河市","23","2","Y","11" +"2312","绥化市","23","2","Y","12" +"2327","大兴安岭地区","23","2","Y","13" +"2371","农垦总局","23","2","Y","14" +"2372","森工总局","23","2","Y","15" +"230101","市辖区","2301","3","Y","1" +"230102","道里区","2301","3","Y","2" +"230103","南岗区","2301","3","Y","3" +"230104","道外区","2301","3","Y","4" +"230108","平房区","2301","3","Y","5" +"230109","松北区","2301","3","Y","6" +"230110","香坊区","2301","3","Y","7" +"230111","呼兰区","2301","3","Y","8" +"230112","阿城区","2301","3","Y","9" +"230113","双城区","2301","3","Y","10" +"230123","依兰县","2301","3","Y","11" +"230124","方正县","2301","3","Y","12" +"230125","宾县","2301","3","Y","13" +"230126","巴彦县","2301","3","Y","14" +"230127","木兰县","2301","3","Y","15" +"230128","通河县","2301","3","Y","16" +"230129","延寿县","2301","3","Y","17" +"230183","尚志市","2301","3","Y","18" +"230184","五常市","2301","3","Y","19" +"230201","市辖区","2302","3","Y","1" +"230202","龙沙区","2302","3","Y","2" +"230203","建华区","2302","3","Y","3" +"230204","铁锋区","2302","3","Y","4" +"230205","昂昂溪区","2302","3","Y","5" +"230206","富拉尔基区","2302","3","Y","6" +"230207","碾子山区","2302","3","Y","7" +"230208","梅里斯达斡尔族区","2302","3","Y","8" +"230221","龙江县","2302","3","Y","9" +"230223","依安县","2302","3","Y","10" +"230224","泰来县","2302","3","Y","11" +"230225","甘南县","2302","3","Y","12" +"230227","富裕县","2302","3","Y","13" +"230229","克山县","2302","3","Y","14" +"230230","克东县","2302","3","Y","15" +"230231","拜泉县","2302","3","Y","16" +"230281","讷河市","2302","3","Y","17" +"230301","市辖区","2303","3","Y","1" +"230302","鸡冠区","2303","3","Y","2" +"230303","恒山区","2303","3","Y","3" +"230304","滴道区","2303","3","Y","4" +"230305","梨树区","2303","3","Y","5" +"230306","城子河区","2303","3","Y","6" +"230307","麻山区","2303","3","Y","7" +"230321","鸡东县","2303","3","Y","8" +"230381","虎林市","2303","3","Y","9" +"230382","密山市","2303","3","Y","10" +"230401","市辖区","2304","3","Y","1" +"230402","向阳区","2304","3","Y","2" +"230403","工农区","2304","3","Y","3" +"230404","南山区","2304","3","Y","4" +"230405","兴安区","2304","3","Y","5" +"230406","东山区","2304","3","Y","6" +"230407","兴山区","2304","3","Y","7" +"230421","萝北县","2304","3","Y","8" +"230422","绥滨县","2304","3","Y","9" +"230501","市辖区","2305","3","Y","1" +"230502","尖山区","2305","3","Y","2" +"230503","岭东区","2305","3","Y","3" +"230505","四方台区","2305","3","Y","4" +"230506","宝山区","2305","3","Y","5" +"230507","双鸭山市经济技术开发区","2305","3","Y","6" +"230521","集贤县","2305","3","Y","7" +"230522","友谊县","2305","3","Y","8" +"230523","宝清县","2305","3","Y","9" +"230524","饶河县","2305","3","Y","10" +"230601","市辖区","2306","3","Y","1" +"230602","萨尔图区","2306","3","Y","2" +"230603","龙凤区","2306","3","Y","3" +"230604","让胡路区","2306","3","Y","4" +"230605","红岗区","2306","3","Y","5" +"230606","大同区","2306","3","Y","6" +"230621","肇州县","2306","3","Y","7" +"230622","肇源县","2306","3","Y","8" +"230623","林甸县","2306","3","Y","9" +"230624","杜尔伯特蒙古族自治县","2306","3","Y","10" +"230671","大庆高新技术产业开发区管理委员会","2306","3","Y","11" +"230672","大庆石化公司","2306","3","Y","12" +"230673","大庆市直属机关","2306","3","Y","13" +"230674","大庆炼化公司","2306","3","Y","14" +"230675","大庆油田有限责任公司","2306","3","Y","15" +"230701","市辖区","2307","3","Y","1" +"230702","伊春区","2307","3","Y","2" +"230703","南岔区","2307","3","Y","3" +"230704","友好区","2307","3","Y","4" +"230705","西林区","2307","3","Y","5" +"230706","翠峦区","2307","3","Y","6" +"230707","新青区","2307","3","Y","7" +"230708","美溪区","2307","3","Y","8" +"230709","金山屯区","2307","3","Y","9" +"230710","五营区","2307","3","Y","10" +"230711","乌马河区","2307","3","Y","11" +"230712","汤旺河区","2307","3","Y","12" +"230713","带岭区","2307","3","Y","13" +"230714","乌伊岭区","2307","3","Y","14" +"230715","红星区","2307","3","Y","15" +"230716","上甘岭区","2307","3","Y","16" +"230722","嘉荫县","2307","3","Y","17" +"230781","铁力市","2307","3","Y","18" +"230801","市辖区","2308","3","Y","1" +"230803","向阳区","2308","3","Y","2" +"230804","前进区","2308","3","Y","3" +"230805","东风区","2308","3","Y","4" +"230811","郊区","2308","3","Y","5" +"230822","桦南县","2308","3","Y","6" +"230826","桦川县","2308","3","Y","7" +"230828","汤原县","2308","3","Y","8" +"230881","同江市","2308","3","Y","9" +"230882","富锦市","2308","3","Y","10" +"230883","抚远县","2308","3","Y","11" +"230901","市辖区","2309","3","Y","1" +"230902","新兴区","2309","3","Y","2" +"230903","桃山区","2309","3","Y","3" +"230904","茄子河区","2309","3","Y","4" +"230921","勃利县","2309","3","Y","5" +"231001","市辖区","2310","3","Y","1" +"231002","东安区","2310","3","Y","2" +"231003","阳明区","2310","3","Y","3" +"231004","爱民区","2310","3","Y","4" +"231005","西安区","2310","3","Y","5" +"231024","东宁县","2310","3","Y","6" +"231025","林口县","2310","3","Y","7" +"231081","绥芬河市","2310","3","Y","8" +"231083","海林市","2310","3","Y","9" +"231084","宁安市","2310","3","Y","10" +"231085","穆棱市","2310","3","Y","11" +"231101","市辖区","2311","3","Y","1" +"231102","爱辉区","2311","3","Y","2" +"231121","嫩江县","2311","3","Y","3" +"231123","逊克县","2311","3","Y","4" +"231124","孙吴县","2311","3","Y","5" +"231171","风景区","2311","3","Y","6" +"231181","北安市","2311","3","Y","7" +"231182","五大连池市","2311","3","Y","8" +"231201","市辖区","2312","3","Y","1" +"231202","北林区","2312","3","Y","2" +"231221","望奎县","2312","3","Y","3" +"231222","兰西县","2312","3","Y","4" +"231223","青冈县","2312","3","Y","5" +"231224","庆安县","2312","3","Y","6" +"231225","明水县","2312","3","Y","7" +"231226","绥棱县","2312","3","Y","8" +"231281","安达市","2312","3","Y","9" +"231282","肇东市","2312","3","Y","10" +"231283","海伦市","2312","3","Y","11" +"232721","呼玛县","2327","3","Y","1" +"232722","塔河县","2327","3","Y","2" +"232723","漠河县","2327","3","Y","3" +"232791","加格达奇区","2327","3","Y","4" +"232792","松岭区","2327","3","Y","5" +"232793","新林区","2327","3","Y","6" +"232794","呼中区","2327","3","Y","7" +"237171","宝泉岭管理局","2371","3","Y","1" +"237172","红兴隆管理局","2371","3","Y","2" +"237173","建三江管理局","2371","3","Y","3" +"237174","牡丹江管理局","2371","3","Y","4" +"237175","北安管理局","2371","3","Y","5" +"237176","九三管理局","2371","3","Y","6" +"237177","齐齐哈尔管理局","2371","3","Y","7" +"237178","绥化管理局","2371","3","Y","8" +"237179","哈尔滨管理局","2371","3","Y","9" +"237180","总局局直","2371","3","Y","10" +"237271","松花江林业管理局","2372","3","Y","1" +"237272","牡丹江林业管理局","2372","3","Y","2" +"237273","合江林业管理局","2372","3","Y","3" +"3101","市辖区","31","2","Y","1" +"310101","黄浦区","3101","3","Y","1" +"310104","徐汇区","3101","3","Y","2" +"310105","长宁区","3101","3","Y","3" +"310106","静安区","3101","3","Y","4" +"310107","普陀区","3101","3","Y","5" +"310109","虹口区","3101","3","Y","6" +"310110","杨浦区","3101","3","Y","7" +"310112","闵行区","3101","3","Y","8" +"310113","宝山区","3101","3","Y","9" +"310114","嘉定区","3101","3","Y","10" +"310115","浦东新区","3101","3","Y","11" +"310116","金山区","3101","3","Y","12" +"310117","松江区","3101","3","Y","13" +"310118","青浦区","3101","3","Y","14" +"310120","奉贤区","3101","3","Y","15" +"310151","崇明区","3101","3","Y","16" +"3201","南京市","32","2","Y","1" +"3202","无锡市","32","2","Y","2" +"3203","徐州市","32","2","Y","3" +"3204","常州市","32","2","Y","4" +"3205","苏州市","32","2","Y","5" +"3206","南通市","32","2","Y","6" +"3207","连云港市","32","2","Y","7" +"3208","淮安市","32","2","Y","8" +"3209","盐城市","32","2","Y","9" +"3210","扬州市","32","2","Y","10" +"3211","镇江市","32","2","Y","11" +"3212","泰州市","32","2","Y","12" +"3213","宿迁市","32","2","Y","13" +"320101","市辖区","3201","3","Y","1" +"320102","玄武区","3201","3","Y","2" +"320104","秦淮区","3201","3","Y","3" +"320105","建邺区","3201","3","Y","4" +"320106","鼓楼区","3201","3","Y","5" +"320111","浦口区","3201","3","Y","6" +"320113","栖霞区","3201","3","Y","7" +"320114","雨花台区","3201","3","Y","8" +"320115","江宁区","3201","3","Y","9" +"320116","六合区","3201","3","Y","10" +"320124","溧水区","3201","3","Y","11" +"320125","高淳区","3201","3","Y","12" +"320171","江北新区","3201","3","Y","13" +"320201","市辖区","3202","3","Y","1" +"320205","锡山区","3202","3","Y","2" +"320206","惠山区","3202","3","Y","3" +"320211","滨湖区","3202","3","Y","4" +"320213","梁溪区","3202","3","Y","5" +"320214","新吴区","3202","3","Y","6" +"320271","经济开发区","3202","3","Y","7" +"320281","江阴市","3202","3","Y","8" +"320282","宜兴市","3202","3","Y","9" +"320301","市辖区","3203","3","Y","1" +"320302","鼓楼区","3203","3","Y","2" +"320303","云龙区","3203","3","Y","3" +"320305","贾汪区","3203","3","Y","4" +"320311","泉山区","3203","3","Y","5" +"320321","丰县","3203","3","Y","6" +"320322","沛县","3203","3","Y","7" +"320323","铜山县","3203","3","Y","8" +"320324","睢宁县","3203","3","Y","9" +"320371","徐州经济技术开发区","3203","3","Y","10" +"320381","新沂市","3203","3","Y","11" +"320382","邳州市","3203","3","Y","12" +"320401","市辖区","3204","3","Y","1" +"320402","天宁区","3204","3","Y","2" +"320404","钟楼区","3204","3","Y","3" +"320411","新北区","3204","3","Y","4" +"320412","武进区","3204","3","Y","5" +"320481","溧阳市","3204","3","Y","6" +"320482","金坛市","3204","3","Y","7" +"320501","市辖区","3205","3","Y","1" +"320505","虎丘区","3205","3","Y","2" +"320506","吴中区","3205","3","Y","3" +"320507","相城区","3205","3","Y","4" +"320508","姑苏区","3205","3","Y","5" +"320509","吴江区","3205","3","Y","6" +"320581","常熟市","3205","3","Y","7" +"320582","张家港市","3205","3","Y","8" +"320583","昆山市","3205","3","Y","9" +"320585","太仓市","3205","3","Y","10" +"320586","工业园区","3205","3","Y","11" +"320601","市辖区","3206","3","Y","1" +"320602","崇川区","3206","3","Y","2" +"320611","港闸区","3206","3","Y","3" +"320621","海安县","3206","3","Y","4" +"320623","如东县","3206","3","Y","5" +"320681","启东市","3206","3","Y","6" +"320682","如皋市","3206","3","Y","7" +"320683","通州市","3206","3","Y","8" +"320684","海门市","3206","3","Y","9" +"320685","开发区","3206","3","Y","10" +"320692","通州湾江海联动开发区","3206","3","Y","11" +"320701","市辖区","3207","3","Y","1" +"320703","连云区","3207","3","Y","2" +"320706","海州区","3207","3","Y","3" +"320707","开发区","3207","3","Y","4" +"320721","赣榆区","3207","3","Y","5" +"320722","东海县","3207","3","Y","6" +"320723","灌云县","3207","3","Y","7" +"320724","灌南县","3207","3","Y","8" +"320771","徐圩新区","3207","3","Y","9" +"320772","云台山景区","3207","3","Y","10" +"320775","高新区","3207","3","Y","11" +"320801","市辖区","3208","3","Y","1" +"320803","淮安区","3208","3","Y","2" +"320804","淮阴区","3208","3","Y","3" +"320812","清江浦区","3208","3","Y","4" +"320813","洪泽区","3208","3","Y","5" +"320826","涟水县","3208","3","Y","6" +"320830","盱眙县","3208","3","Y","7" +"320831","金湖县","3208","3","Y","8" +"320871","淮安经济开发区","3208","3","Y","9" +"320872","淮安工业园区","3208","3","Y","10" +"320873","淮安生态新城","3208","3","Y","11" +"320874","淮安盐化新材料产业园区","3208","3","Y","12" +"320901","市辖区","3209","3","Y","1" +"320902","亭湖区","3209","3","Y","2" +"320903","盐都区","3209","3","Y","3" +"320904","大丰区","3209","3","Y","4" +"320921","响水县","3209","3","Y","5" +"320922","滨海县","3209","3","Y","6" +"320923","阜宁县","3209","3","Y","7" +"320924","射阳县","3209","3","Y","8" +"320925","建湖县","3209","3","Y","9" +"320971","开发区","3209","3","Y","10" +"320972","城南新区","3209","3","Y","11" +"320981","东台市","3209","3","Y","12" +"321001","市辖区","3210","3","Y","1" +"321002","广陵区","3210","3","Y","2" +"321003","邗江区","3210","3","Y","3" +"321012","江都区","3210","3","Y","4" +"321023","宝应县","3210","3","Y","5" +"321071","瘦西湖区","3210","3","Y","6" +"321072","开发区","3210","3","Y","7" +"321073","生态科技新城","3210","3","Y","8" +"321081","仪征市","3210","3","Y","9" +"321084","高邮市","3210","3","Y","10" +"321101","市辖区","3211","3","Y","1" +"321102","京口区","3211","3","Y","2" +"321111","润州区","3211","3","Y","3" +"321112","丹徒区","3211","3","Y","4" +"321171","新区","3211","3","Y","5" +"321173","高新区","3211","3","Y","6" +"321181","丹阳市","3211","3","Y","7" +"321182","扬中市","3211","3","Y","8" +"321183","句容市","3211","3","Y","9" +"321202","海陵区","3212","3","Y","1" +"321203","高港区","3212","3","Y","2" +"321271","医药高新区","3212","3","Y","3" +"321272","农业开发区","3212","3","Y","4" +"321281","兴化市","3212","3","Y","5" +"321282","靖江市","3212","3","Y","6" +"321283","泰兴市","3212","3","Y","7" +"321284","姜堰区","3212","3","Y","8" +"321301","市辖区","3213","3","Y","1" +"321302","宿城区","3213","3","Y","2" +"321311","宿豫区","3213","3","Y","3" +"321322","沭阳县","3213","3","Y","4" +"321323","泗阳县","3213","3","Y","5" +"321324","泗洪县","3213","3","Y","6" +"321371","经济技术开发区","3213","3","Y","7" +"321372","湖滨新区","3213","3","Y","8" +"321373","洋河新区","3213","3","Y","9" +"321374","苏州宿迁工业园区","3213","3","Y","10" +"3301","杭州市","33","2","Y","1" +"3302","宁波市","33","2","Y","2" +"3303","温州市","33","2","Y","3" +"3304","嘉兴市","33","2","Y","4" +"3305","湖州市","33","2","Y","5" +"3306","绍兴市","33","2","Y","6" +"3307","金华市","33","2","Y","7" +"3308","衢州市","33","2","Y","8" +"3309","舟山市","33","2","Y","9" +"3310","台州市","33","2","Y","10" +"3311","丽水市","33","2","Y","11" +"330101","市辖区","3301","3","Y","1" +"330102","上城区","3301","3","Y","2" +"330103","下城区","3301","3","Y","3" +"330104","江干区","3301","3","Y","4" +"330105","拱墅区","3301","3","Y","5" +"330106","西湖区","3301","3","Y","6" +"330108","滨江区","3301","3","Y","7" +"330109","萧山区","3301","3","Y","8" +"330110","余杭区","3301","3","Y","9" +"330111","富阳区","3301","3","Y","10" +"330112","临安区","3301","3","Y","11" +"330122","桐庐县","3301","3","Y","12" +"330127","淳安县","3301","3","Y","13" +"330163","钱塘新区","3301","3","Y","14" +"330182","建德市","3301","3","Y","15" +"330201","市辖区","3302","3","Y","1" +"330203","海曙区","3302","3","Y","2" +"330204","江东区","3302","3","Y","3" +"330205","江北区","3302","3","Y","4" +"330206","北仑区","3302","3","Y","5" +"330211","镇海区","3302","3","Y","6" +"330212","鄞州区","3302","3","Y","7" +"330213","奉化区","3302","3","Y","8" +"330225","象山县","3302","3","Y","9" +"330226","宁海县","3302","3","Y","10" +"330271","大榭开发区","3302","3","Y","11" +"330272","宁波国家高新技术开发区","3302","3","Y","12" +"330273","东钱湖旅游度假区","3302","3","Y","13" +"330281","余姚市","3302","3","Y","14" +"330282","慈溪市","3302","3","Y","15" +"330301","市辖区","3303","3","Y","1" +"330302","鹿城区","3303","3","Y","2" +"330303","龙湾区","3303","3","Y","3" +"330304","瓯海区","3303","3","Y","4" +"330305","洞头区","3303","3","Y","5" +"330324","永嘉县","3303","3","Y","6" +"330326","平阳县","3303","3","Y","7" +"330327","苍南县","3303","3","Y","8" +"330328","文成县","3303","3","Y","9" +"330329","泰顺县","3303","3","Y","10" +"330381","瑞安市","3303","3","Y","11" +"330382","乐清市","3303","3","Y","12" +"330401","市辖区","3304","3","Y","1" +"330402","南湖区","3304","3","Y","2" +"330411","秀洲区","3304","3","Y","3" +"330421","嘉善县","3304","3","Y","4" +"330424","海盐县","3304","3","Y","5" +"330471","经济开发区","3304","3","Y","6" +"330481","海宁市","3304","3","Y","7" +"330482","平湖市","3304","3","Y","8" +"330483","桐乡市","3304","3","Y","9" +"330501","市辖区","3305","3","Y","1" +"330502","吴兴区","3305","3","Y","2" +"330503","南浔区","3305","3","Y","3" +"330521","德清县","3305","3","Y","4" +"330522","长兴县","3305","3","Y","5" +"330523","安吉县","3305","3","Y","6" +"330601","市辖区","3306","3","Y","1" +"330602","越城区","3306","3","Y","2" +"330603","柯桥区","3306","3","Y","3" +"330604","上虞区","3306","3","Y","4" +"330624","新昌县","3306","3","Y","5" +"330671","开发区","3306","3","Y","6" +"330681","诸暨市","3306","3","Y","7" +"330683","嵊州市","3306","3","Y","8" +"330701","市辖区","3307","3","Y","1" +"330702","婺城区","3307","3","Y","2" +"330703","金东区","3307","3","Y","3" +"330723","武义县","3307","3","Y","4" +"330726","浦江县","3307","3","Y","5" +"330727","磐安县","3307","3","Y","6" +"330771","开发区","3307","3","Y","7" +"330781","兰溪市","3307","3","Y","8" +"330782","义乌市","3307","3","Y","9" +"330783","东阳市","3307","3","Y","10" +"330784","永康市","3307","3","Y","11" +"330801","市辖区","3308","3","Y","1" +"330802","柯城区","3308","3","Y","2" +"330803","衢江区","3308","3","Y","3" +"330822","常山县","3308","3","Y","4" +"330824","开化县","3308","3","Y","5" +"330825","龙游县","3308","3","Y","6" +"330881","江山市","3308","3","Y","7" +"330901","市辖区","3309","3","Y","1" +"330902","定海区","3309","3","Y","2" +"330903","普陀区","3309","3","Y","3" +"330921","岱山县","3309","3","Y","4" +"330922","嵊泗县","3309","3","Y","5" +"331001","市辖区","3310","3","Y","1" +"331002","椒江区","3310","3","Y","2" +"331003","黄岩区","3310","3","Y","3" +"331004","路桥区","3310","3","Y","4" +"331022","三门县","3310","3","Y","5" +"331023","天台县","3310","3","Y","6" +"331024","仙居县","3310","3","Y","7" +"331081","温岭市","3310","3","Y","8" +"331082","临海市","3310","3","Y","9" +"331083","玉环市","3310","3","Y","10" +"331101","市辖区","3311","3","Y","1" +"331102","莲都区","3311","3","Y","2" +"331121","青田县","3311","3","Y","3" +"331122","缙云县","3311","3","Y","4" +"331123","遂昌县","3311","3","Y","5" +"331124","松阳县","3311","3","Y","6" +"331125","云和县","3311","3","Y","7" +"331126","庆元县","3311","3","Y","8" +"331127","景宁县","3311","3","Y","9" +"331181","龙泉市","3311","3","Y","10" +"3401","合肥市","34","2","Y","1" +"3402","芜湖市","34","2","Y","2" +"3403","蚌埠市","34","2","Y","3" +"3404","淮南市","34","2","Y","4" +"3405","马鞍山市","34","2","Y","5" +"3406","淮北市","34","2","Y","6" +"3407","铜陵市","34","2","Y","7" +"3408","安庆市","34","2","Y","8" +"3410","黄山市","34","2","Y","9" +"3411","滁州市","34","2","Y","10" +"3412","阜阳市","34","2","Y","11" +"3413","宿州市","34","2","Y","12" +"3415","六安市","34","2","Y","13" +"3416","亳州市","34","2","Y","14" +"3417","池州市","34","2","Y","15" +"3418","宣城市","34","2","Y","16" +"340101","市辖区","3401","3","Y","1" +"340102","瑶海区","3401","3","Y","2" +"340103","庐阳区","3401","3","Y","3" +"340104","蜀山区","3401","3","Y","4" +"340105","经开区","3401","3","Y","5" +"340106","高新区","3401","3","Y","6" +"340107","新站区","3401","3","Y","7" +"340108","巢湖市","3401","3","Y","8" +"340111","包河区","3401","3","Y","9" +"340112","合巢经开区","3401","3","Y","10" +"340121","长丰县","3401","3","Y","11" +"340122","肥东县","3401","3","Y","12" +"340123","肥西县","3401","3","Y","13" +"340124","庐江县","3401","3","Y","14" +"340201","市辖区","3402","3","Y","1" +"340202","镜湖区","3402","3","Y","2" +"340203","弋江区","3402","3","Y","3" +"340207","鸠江区","3402","3","Y","4" +"340208","三山区","3402","3","Y","5" +"340221","芜湖县","3402","3","Y","6" +"340222","繁昌县","3402","3","Y","7" +"340223","南陵县","3402","3","Y","8" +"340224","无为县","3402","3","Y","9" +"340271","经开区","3402","3","Y","10" +"340301","市辖区","3403","3","Y","1" +"340302","龙子湖区","3403","3","Y","2" +"340303","蚌山区","3403","3","Y","3" +"340304","禹会区","3403","3","Y","4" +"340305","经开区","3403","3","Y","5" +"340306","高新区","3403","3","Y","6" +"340311","淮上区","3403","3","Y","7" +"340321","怀远县","3403","3","Y","8" +"340322","五河县","3403","3","Y","9" +"340323","固镇县","3403","3","Y","10" +"340401","市辖区","3404","3","Y","1" +"340402","大通区","3404","3","Y","2" +"340403","田家庵区","3404","3","Y","3" +"340404","谢家集区","3404","3","Y","4" +"340405","八公山区","3404","3","Y","5" +"340406","潘集区","3404","3","Y","6" +"340407","毛集区","3404","3","Y","7" +"340408","山南新区","3404","3","Y","8" +"340409","开发区","3404","3","Y","9" +"340421","凤台县","3404","3","Y","10" +"340422","寿县","3404","3","Y","11" +"340501","市辖区","3405","3","Y","1" +"340503","花山区","3405","3","Y","2" +"340504","雨山区","3405","3","Y","3" +"340521","当涂县","3405","3","Y","4" +"340522","和县","3405","3","Y","5" +"340523","含山县","3405","3","Y","6" +"340571","开发区","3405","3","Y","7" +"340572","慈湖高新区","3405","3","Y","8" +"340573","示范园区","3405","3","Y","9" +"340574","博望区","3405","3","Y","10" +"340575","郑蒲港新区","3405","3","Y","11" +"340601","市辖区","3406","3","Y","1" +"340602","杜集区","3406","3","Y","2" +"340603","相山区","3406","3","Y","3" +"340604","烈山区","3406","3","Y","4" +"340621","濉溪县","3406","3","Y","5" +"340701","市辖区","3407","3","Y","1" +"340702","铜官区","3407","3","Y","2" +"340711","郊区","3407","3","Y","3" +"340721","义安区","3407","3","Y","4" +"340722","枞阳县","3407","3","Y","5" +"340771","经济开发区","3407","3","Y","6" +"340801","市辖区","3408","3","Y","1" +"340802","迎江区","3408","3","Y","2" +"340803","大观区","3408","3","Y","3" +"340805","开发区","3408","3","Y","4" +"340811","宜秀区","3408","3","Y","5" +"340822","怀宁县","3408","3","Y","6" +"340824","潜山市","3408","3","Y","7" +"340825","太湖县","3408","3","Y","8" +"340826","宿松县","3408","3","Y","9" +"340827","望江县","3408","3","Y","10" +"340828","岳西县","3408","3","Y","11" +"340871","皖河农场","3408","3","Y","12" +"340881","桐城市","3408","3","Y","13" +"341001","市辖区","3410","3","Y","1" +"341002","屯溪区","3410","3","Y","2" +"341003","黄山区","3410","3","Y","3" +"341004","徽州区","3410","3","Y","4" +"341021","歙县","3410","3","Y","5" +"341022","休宁县","3410","3","Y","6" +"341023","黟县","3410","3","Y","7" +"341024","祁门县","3410","3","Y","8" +"341101","市辖区","3411","3","Y","1" +"341102","琅琊区","3411","3","Y","2" +"341103","南谯区","3411","3","Y","3" +"341122","来安县","3411","3","Y","4" +"341124","全椒县","3411","3","Y","5" +"341125","定远县","3411","3","Y","6" +"341126","凤阳县","3411","3","Y","7" +"341171","开发区","3411","3","Y","8" +"341181","天长市","3411","3","Y","9" +"341182","明光市","3411","3","Y","10" +"341201","市辖区","3412","3","Y","1" +"341202","颍州区","3412","3","Y","2" +"341203","颍东区","3412","3","Y","3" +"341204","颍泉区","3412","3","Y","4" +"341205","阜合园区","3412","3","Y","5" +"341221","临泉县","3412","3","Y","6" +"341222","太和县","3412","3","Y","7" +"341225","阜南县","3412","3","Y","8" +"341226","颍上县","3412","3","Y","9" +"341271","经开区","3412","3","Y","10" +"341282","界首市","3412","3","Y","11" +"341301","市辖区","3413","3","Y","1" +"341302","埇桥区","3413","3","Y","2" +"341320","宿马园区","3413","3","Y","3" +"341321","砀山县","3413","3","Y","4" +"341322","萧县","3413","3","Y","5" +"341323","灵璧县","3413","3","Y","6" +"341324","泗县","3413","3","Y","7" +"341325","宿州高新区","3413","3","Y","8" +"341371","开发区","3413","3","Y","9" +"341372","鞋城管委会","3413","3","Y","10" +"341501","市辖区","3415","3","Y","1" +"341502","金安区","3415","3","Y","2" +"341503","裕安区","3415","3","Y","3" +"341504","叶集区","3415","3","Y","4" +"341522","霍邱县","3415","3","Y","5" +"341523","舒城县","3415","3","Y","6" +"341524","金寨县","3415","3","Y","7" +"341525","霍山县","3415","3","Y","8" +"341571","经济区","3415","3","Y","9" +"341601","市辖区","3416","3","Y","1" +"341602","谯城区","3416","3","Y","2" +"341621","涡阳县","3416","3","Y","3" +"341622","蒙城县","3416","3","Y","4" +"341623","利辛县","3416","3","Y","5" +"341671","经济开发区","3416","3","Y","6" +"341701","市辖区","3417","3","Y","1" +"341702","贵池区","3417","3","Y","2" +"341721","东至县","3417","3","Y","3" +"341722","石台县","3417","3","Y","4" +"341723","青阳县","3417","3","Y","5" +"341771","开发区","3417","3","Y","6" +"341772","九华山","3417","3","Y","7" +"341773","平天湖","3417","3","Y","8" +"341801","市辖区","3418","3","Y","1" +"341802","宣州区","3418","3","Y","2" +"341821","郎溪县","3418","3","Y","3" +"341822","广德县","3418","3","Y","4" +"341823","泾县","3418","3","Y","5" +"341824","绩溪县","3418","3","Y","6" +"341825","旌德县","3418","3","Y","7" +"341881","宁国市","3418","3","Y","8" +"3501","福州市","35","2","Y","1" +"3502","厦门市","35","2","Y","2" +"3503","莆田市","35","2","Y","3" +"3504","三明市","35","2","Y","4" +"3505","泉州市","35","2","Y","5" +"3506","漳州市","35","2","Y","6" +"3507","南平市","35","2","Y","7" +"3508","龙岩市","35","2","Y","8" +"3509","宁德市","35","2","Y","9" +"3571","平潭综合实验区","35","2","Y","10" +"350101","市辖区","3501","3","Y","1" +"350102","鼓楼区","3501","3","Y","2" +"350103","台江区","3501","3","Y","3" +"350104","仓山区","3501","3","Y","4" +"350105","马尾区","3501","3","Y","5" +"350111","晋安区","3501","3","Y","6" +"350121","闽侯县","3501","3","Y","7" +"350122","连江县","3501","3","Y","8" +"350123","罗源县","3501","3","Y","9" +"350124","闽清县","3501","3","Y","10" +"350125","永泰县","3501","3","Y","11" +"350131","福州高新区管委会","3501","3","Y","12" +"350181","福清市","3501","3","Y","13" +"350182","长乐市","3501","3","Y","14" +"350201","市辖区","3502","3","Y","1" +"350203","思明区","3502","3","Y","2" +"350205","海沧区","3502","3","Y","3" +"350206","湖里区","3502","3","Y","4" +"350211","集美区","3502","3","Y","5" +"350212","同安区","3502","3","Y","6" +"350213","翔安区","3502","3","Y","7" +"350301","市辖区","3503","3","Y","1" +"350302","城厢区","3503","3","Y","2" +"350303","涵江区","3503","3","Y","3" +"350304","荔城区","3503","3","Y","4" +"350305","秀屿区","3503","3","Y","5" +"350306","湄洲岛","3503","3","Y","6" +"350307","湄洲北岸开发区","3503","3","Y","7" +"350322","仙游县","3503","3","Y","8" +"350401","市辖区","3504","3","Y","1" +"350402","梅列区","3504","3","Y","2" +"350403","三元区","3504","3","Y","3" +"350421","明溪县","3504","3","Y","4" +"350423","清流县","3504","3","Y","5" +"350424","宁化县","3504","3","Y","6" +"350425","大田县","3504","3","Y","7" +"350426","尤溪县","3504","3","Y","8" +"350427","沙县","3504","3","Y","9" +"350428","将乐县","3504","3","Y","10" +"350429","泰宁县","3504","3","Y","11" +"350430","建宁县","3504","3","Y","12" +"350481","永安市","3504","3","Y","13" +"350502","鲤城区","3505","3","Y","1" +"350503","丰泽区","3505","3","Y","2" +"350504","洛江区","3505","3","Y","3" +"350505","泉港区","3505","3","Y","4" +"350521","惠安县","3505","3","Y","5" +"350524","安溪县","3505","3","Y","6" +"350525","永春县","3505","3","Y","7" +"350526","德化县","3505","3","Y","8" +"350571","泉州台商投资区","3505","3","Y","9" +"350581","石狮市","3505","3","Y","10" +"350582","晋江市","3505","3","Y","11" +"350583","南安市","3505","3","Y","12" +"350601","市辖区","3506","3","Y","1" +"350602","芗城区","3506","3","Y","2" +"350603","龙文区","3506","3","Y","3" +"350622","云霄县","3506","3","Y","4" +"350623","漳浦县","3506","3","Y","5" +"350624","诏安县","3506","3","Y","6" +"350625","长泰县","3506","3","Y","7" +"350626","东山县","3506","3","Y","8" +"350627","南靖县","3506","3","Y","9" +"350628","平和县","3506","3","Y","10" +"350629","华安县","3506","3","Y","11" +"350681","龙海市","3506","3","Y","12" +"350701","市辖区","3507","3","Y","1" +"350702","延平区","3507","3","Y","2" +"350703","建阳区","3507","3","Y","3" +"350721","顺昌县","3507","3","Y","4" +"350722","浦城县","3507","3","Y","5" +"350723","光泽县","3507","3","Y","6" +"350724","松溪县","3507","3","Y","7" +"350725","政和县","3507","3","Y","8" +"350781","邵武市","3507","3","Y","9" +"350782","武夷山市","3507","3","Y","10" +"350783","建瓯市","3507","3","Y","11" +"350801","市辖区","3508","3","Y","1" +"350802","新罗区","3508","3","Y","2" +"350803","永定区","3508","3","Y","3" +"350821","长汀县","3508","3","Y","4" +"350823","上杭县","3508","3","Y","5" +"350824","武平县","3508","3","Y","6" +"350825","连城县","3508","3","Y","7" +"350881","漳平市","3508","3","Y","8" +"350901","市辖区","3509","3","Y","1" +"350902","蕉城区","3509","3","Y","2" +"350921","霞浦县","3509","3","Y","3" +"350922","古田县","3509","3","Y","4" +"350923","屏南县","3509","3","Y","5" +"350924","寿宁县","3509","3","Y","6" +"350925","周宁县","3509","3","Y","7" +"350926","柘荣县","3509","3","Y","8" +"350981","福安市","3509","3","Y","9" +"350982","福鼎市","3509","3","Y","10" +"357121","平潭县","3571","3","Y","1" +"3601","南昌市","36","2","Y","1" +"3602","景德镇市","36","2","Y","2" +"3603","萍乡市","36","2","Y","3" +"3604","九江市","36","2","Y","4" +"3605","新余市","36","2","Y","5" +"3606","鹰潭市","36","2","Y","6" +"3607","赣州市","36","2","Y","7" +"3608","吉安市","36","2","Y","8" +"3609","宜春市","36","2","Y","9" +"3610","抚州市","36","2","Y","10" +"3611","上饶市","36","2","Y","11" +"360101","市辖区","3601","3","Y","1" +"360102","东湖区","3601","3","Y","2" +"360103","西湖区","3601","3","Y","3" +"360104","青云谱区","3601","3","Y","4" +"360105","湾里区","3601","3","Y","5" +"360111","青山湖区","3601","3","Y","6" +"360112","南昌经济技术开发区","3601","3","Y","7" +"360113","南昌高新技术产业开发区","3601","3","Y","8" +"360114","红谷滩新区","3601","3","Y","9" +"360121","南昌县","3601","3","Y","10" +"360122","新建区","3601","3","Y","11" +"360123","安义县","3601","3","Y","12" +"360124","进贤县","3601","3","Y","13" +"360201","市辖区","3602","3","Y","1" +"360202","昌江区","3602","3","Y","2" +"360203","珠山区","3602","3","Y","3" +"360205","昌南新区","3602","3","Y","4" +"360222","浮梁县","3602","3","Y","5" +"360281","乐平市","3602","3","Y","6" +"360301","市辖区","3603","3","Y","1" +"360302","安源区","3603","3","Y","2" +"360313","湘东区","3603","3","Y","3" +"360321","莲花县","3603","3","Y","4" +"360322","上栗县","3603","3","Y","5" +"360323","芦溪县","3603","3","Y","6" +"360324","萍乡市武功山管委会","3603","3","Y","7" +"360399","萍乡开发区","3603","3","Y","8" +"360401","市辖区","3604","3","Y","1" +"360402","濂溪区","3604","3","Y","2" +"360403","浔阳区","3604","3","Y","3" +"360404","柴桑区","3604","3","Y","4" +"360409","开发区","3604","3","Y","5" +"360411","八里湖新区","3604","3","Y","6" +"360423","武宁县","3604","3","Y","7" +"360424","修水县","3604","3","Y","8" +"360425","永修县","3604","3","Y","9" +"360426","德安县","3604","3","Y","10" +"360428","都昌县","3604","3","Y","11" +"360429","湖口县","3604","3","Y","12" +"360430","彭泽县","3604","3","Y","13" +"360431","共青城市","3604","3","Y","14" +"360481","瑞昌市","3604","3","Y","15" +"360483","庐山市","3604","3","Y","16" +"360501","市辖区","3605","3","Y","1" +"360502","渝水区","3605","3","Y","2" +"360503","仙女湖区","3605","3","Y","3" +"360504","高新开发区","3605","3","Y","4" +"360521","分宜县","3605","3","Y","5" +"360601","市辖区","3606","3","Y","1" +"360602","月湖区","3606","3","Y","2" +"360622","余江区","3606","3","Y","3" +"360681","贵溪市","3606","3","Y","4" +"360682","龙虎山景区","3606","3","Y","5" +"360683","鹰潭工业园区","3606","3","Y","6" +"360684","信江新区","3606","3","Y","7" +"360701","市辖区","3607","3","Y","1" +"360702","章贡区","3607","3","Y","2" +"360703","赣州经济技术开发区","3607","3","Y","3" +"360704","蓉江新区","3607","3","Y","4" +"360721","赣县区","3607","3","Y","5" +"360722","信丰县","3607","3","Y","6" +"360723","大余县","3607","3","Y","7" +"360724","上犹县","3607","3","Y","8" +"360725","崇义县","3607","3","Y","9" +"360726","安远县","3607","3","Y","10" +"360727","龙南县","3607","3","Y","11" +"360728","定南县","3607","3","Y","12" +"360729","全南县","3607","3","Y","13" +"360730","宁都县","3607","3","Y","14" +"360731","于都县","3607","3","Y","15" +"360732","兴国县","3607","3","Y","16" +"360733","会昌县","3607","3","Y","17" +"360734","寻乌县","3607","3","Y","18" +"360735","石城县","3607","3","Y","19" +"360781","瑞金市","3607","3","Y","20" +"360782","南康区","3607","3","Y","21" +"360801","市辖区","3608","3","Y","1" +"360802","吉州区","3608","3","Y","2" +"360803","青原区","3608","3","Y","3" +"360805","井冈山经济技术开发区","3608","3","Y","4" +"360821","吉安县","3608","3","Y","5" +"360822","吉水县","3608","3","Y","6" +"360823","峡江县","3608","3","Y","7" +"360824","新干县","3608","3","Y","8" +"360825","永丰县","3608","3","Y","9" +"360826","泰和县","3608","3","Y","10" +"360827","遂川县","3608","3","Y","11" +"360828","万安县","3608","3","Y","12" +"360829","安福县","3608","3","Y","13" +"360830","永新县","3608","3","Y","14" +"360881","井冈山市","3608","3","Y","15" +"360902","袁州区","3609","3","Y","1" +"360903","经济开发区","3609","3","Y","2" +"360904","宜阳新区","3609","3","Y","3" +"360905","明月山温泉风景名胜区","3609","3","Y","4" +"360921","奉新县","3609","3","Y","5" +"360922","万载县","3609","3","Y","6" +"360923","上高县","3609","3","Y","7" +"360924","宜丰县","3609","3","Y","8" +"360925","靖安县","3609","3","Y","9" +"360926","铜鼓县","3609","3","Y","10" +"360981","丰城市","3609","3","Y","11" +"360982","樟树市","3609","3","Y","12" +"360983","高安市","3609","3","Y","13" +"361001","市辖区","3610","3","Y","1" +"361002","临川区","3610","3","Y","2" +"361003","高新技术产业开发区","3610","3","Y","3" +"361004","抚州市东临新区管理委员会","3610","3","Y","4" +"361021","南城县","3610","3","Y","5" +"361022","黎川县","3610","3","Y","6" +"361023","南丰县","3610","3","Y","7" +"361024","崇仁县","3610","3","Y","8" +"361025","乐安县","3610","3","Y","9" +"361026","宜黄县","3610","3","Y","10" +"361027","金溪县","3610","3","Y","11" +"361028","资溪县","3610","3","Y","12" +"361029","东乡区","3610","3","Y","13" +"361030","广昌县","3610","3","Y","14" +"361101","市辖区","3611","3","Y","1" +"361102","信州区","3611","3","Y","2" +"361103","广丰区","3611","3","Y","3" +"361111","三清山管委会","3611","3","Y","4" +"361112","上饶市经济开发区","3611","3","Y","5" +"361121","上饶县","3611","3","Y","6" +"361123","玉山县","3611","3","Y","7" +"361124","铅山县","3611","3","Y","8" +"361125","横峰县","3611","3","Y","9" +"361126","弋阳县","3611","3","Y","10" +"361127","余干县","3611","3","Y","11" +"361128","鄱阳县","3611","3","Y","12" +"361129","万年县","3611","3","Y","13" +"361130","婺源县","3611","3","Y","14" +"361181","德兴市","3611","3","Y","15" +"3701","济南市","37","2","Y","1" +"3702","青岛市","37","2","Y","2" +"3703","淄博市","37","2","Y","3" +"3704","枣庄市","37","2","Y","4" +"3705","东营市","37","2","Y","5" +"3706","烟台市","37","2","Y","6" +"3707","潍坊市","37","2","Y","7" +"3708","济宁市","37","2","Y","8" +"3709","泰安市","37","2","Y","9" +"3710","威海市","37","2","Y","10" +"3711","日照市","37","2","Y","11" +"3712","莱芜市","37","2","Y","12" +"3713","临沂市","37","2","Y","13" +"3714","德州市","37","2","Y","14" +"3715","聊城市","37","2","Y","15" +"3716","滨州市","37","2","Y","16" +"3717","菏泽市","37","2","Y","17" +"370101","市辖区","3701","3","Y","1" +"370102","历下区","3701","3","Y","2" +"370103","济南市中区","3701","3","Y","3" +"370104","槐荫区","3701","3","Y","4" +"370105","天桥区","3701","3","Y","5" +"370110","南部山区管委会","3701","3","Y","6" +"370111","济南高新区","3701","3","Y","7" +"370112","历城区","3701","3","Y","8" +"370113","长清区","3701","3","Y","9" +"370114","章丘区","3701","3","Y","10" +"370124","平阴县","3701","3","Y","11" +"370125","济阳县","3701","3","Y","12" +"370126","商河县","3701","3","Y","13" +"370201","市辖区","3702","3","Y","1" +"370202","市南区","3702","3","Y","2" +"370206","市北区","3702","3","Y","3" +"370212","崂山区","3702","3","Y","4" +"370213","李沧区","3702","3","Y","5" +"370214","城阳区","3702","3","Y","6" +"370215","黄岛区","3702","3","Y","7" +"370281","胶州市","3702","3","Y","8" +"370282","即墨市","3702","3","Y","9" +"370283","平度市","3702","3","Y","10" +"370285","莱西市","3702","3","Y","11" +"370301","市辖区","3703","3","Y","1" +"370302","淄川区","3703","3","Y","2" +"370303","张店区","3703","3","Y","3" +"370304","博山区","3703","3","Y","4" +"370305","临淄区","3703","3","Y","5" +"370306","周村区","3703","3","Y","6" +"370307","淄博高新区","3703","3","Y","7" +"370308","文昌湖区","3703","3","Y","8" +"370321","桓台县","3703","3","Y","9" +"370322","高青县","3703","3","Y","10" +"370323","沂源县","3703","3","Y","11" +"370401","市辖区","3704","3","Y","1" +"370402","枣庄市中区","3704","3","Y","2" +"370403","薛城区","3704","3","Y","3" +"370404","峄城区","3704","3","Y","4" +"370405","台儿庄区","3704","3","Y","5" +"370406","山亭区","3704","3","Y","6" +"370407","枣庄市高新区","3704","3","Y","7" +"370481","滕州市","3704","3","Y","8" +"370501","市辖区","3705","3","Y","1" +"370502","东营区","3705","3","Y","2" +"370503","河口区","3705","3","Y","3" +"370521","垦利区","3705","3","Y","4" +"370522","利津县","3705","3","Y","5" +"370523","广饶县","3705","3","Y","6" +"370571","胜利油田","3705","3","Y","7" +"370572","东营经济开发区","3705","3","Y","8" +"370573","东营港经济开发区","3705","3","Y","9" +"370601","市辖区","3706","3","Y","1" +"370602","芝罘区","3706","3","Y","2" +"370611","福山区","3706","3","Y","3" +"370612","牟平区","3706","3","Y","4" +"370613","莱山区","3706","3","Y","5" +"370634","长岛县","3706","3","Y","6" +"370671","烟台高新区","3706","3","Y","7" +"370681","龙口市","3706","3","Y","8" +"370682","莱阳市","3706","3","Y","9" +"370683","莱州市","3706","3","Y","10" +"370684","蓬莱市","3706","3","Y","11" +"370685","招远市","3706","3","Y","12" +"370686","栖霞市","3706","3","Y","13" +"370687","海阳市","3706","3","Y","14" +"370699","烟台开发区","3706","3","Y","15" +"370701","市辖区","3707","3","Y","1" +"370702","潍城区","3707","3","Y","2" +"370703","寒亭区","3707","3","Y","3" +"370704","坊子区","3707","3","Y","4" +"370705","奎文区","3707","3","Y","5" +"370713","潍坊市高新开发区","3707","3","Y","6" +"370714","潍坊市滨海区","3707","3","Y","7" +"370716","峡山区","3707","3","Y","8" +"370717","潍坊市综合保税区","3707","3","Y","9" +"370724","临朐县","3707","3","Y","10" +"370725","昌乐县","3707","3","Y","11" +"370781","青州市","3707","3","Y","12" +"370782","诸城市","3707","3","Y","13" +"370783","寿光市","3707","3","Y","14" +"370784","安丘市","3707","3","Y","15" +"370785","高密市","3707","3","Y","16" +"370786","昌邑市","3707","3","Y","17" +"370801","市辖区","3708","3","Y","1" +"370811","任城区","3708","3","Y","2" +"370826","微山县","3708","3","Y","3" +"370827","鱼台县","3708","3","Y","4" +"370828","金乡县","3708","3","Y","5" +"370829","嘉祥县","3708","3","Y","6" +"370830","汶上县","3708","3","Y","7" +"370831","泗水县","3708","3","Y","8" +"370832","梁山县","3708","3","Y","9" +"370881","曲阜市","3708","3","Y","10" +"370882","兖州市","3708","3","Y","11" +"370883","邹城市","3708","3","Y","12" +"370890","济宁高新区","3708","3","Y","13" +"370893","济宁北湖新区","3708","3","Y","14" +"370894","济宁经济开发区","3708","3","Y","15" +"370901","市辖区","3709","3","Y","1" +"370902","泰山区","3709","3","Y","2" +"370911","岱岳区","3709","3","Y","3" +"370912","泰山景区","3709","3","Y","4" +"370921","宁阳县","3709","3","Y","5" +"370923","东平县","3709","3","Y","6" +"370982","新泰市","3709","3","Y","7" +"370983","肥城市","3709","3","Y","8" +"370990","泰安市高新区","3709","3","Y","9" +"371001","市辖区","3710","3","Y","1" +"371002","环翠区","3710","3","Y","2" +"371081","文登区","3710","3","Y","3" +"371082","荣成市","3710","3","Y","4" +"371083","乳山市","3710","3","Y","5" +"371084","高技区","3710","3","Y","6" +"371085","经技区","3710","3","Y","7" +"371086","临港区","3710","3","Y","8" +"371101","市辖区","3711","3","Y","1" +"371102","东港区","3711","3","Y","2" +"371103","岚山区","3711","3","Y","3" +"371105","日照市开发区","3711","3","Y","4" +"371106","日照国际海洋城","3711","3","Y","5" +"371107","山海天旅游度假区","3711","3","Y","6" +"371121","五莲县","3711","3","Y","7" +"371122","莒县","3711","3","Y","8" +"371201","市辖区","3712","3","Y","1" +"371202","莱城区","3712","3","Y","2" +"371203","钢城区","3712","3","Y","3" +"371204","莱芜市高新区","3712","3","Y","4" +"371205","莱芜市经济开发区","3712","3","Y","5" +"371206","雪野旅游区","3712","3","Y","6" +"371207","莱芜农高区","3712","3","Y","7" +"371301","市辖区","3713","3","Y","1" +"371302","兰山区","3713","3","Y","2" +"371311","罗庄区","3713","3","Y","3" +"371312","河东区","3713","3","Y","4" +"371313","临沂市高新区","3713","3","Y","5" +"371314","临沂市经济区","3713","3","Y","6" +"371315","临港区","3713","3","Y","7" +"371321","沂南县","3713","3","Y","8" +"371322","郯城县","3713","3","Y","9" +"371323","沂水县","3713","3","Y","10" +"371324","兰陵县","3713","3","Y","11" +"371325","费县","3713","3","Y","12" +"371326","平邑县","3713","3","Y","13" +"371327","莒南县","3713","3","Y","14" +"371328","蒙阴县","3713","3","Y","15" +"371329","临沭县","3713","3","Y","16" +"371393","临沂市蒙山管委会","3713","3","Y","17" +"371401","市辖区","3714","3","Y","1" +"371402","德城区","3714","3","Y","2" +"371412","德州市经济开发区","3714","3","Y","3" +"371413","德州市运河经济开发区","3714","3","Y","4" +"371421","陵城区","3714","3","Y","5" +"371422","宁津县","3714","3","Y","6" +"371423","庆云县","3714","3","Y","7" +"371424","临邑县","3714","3","Y","8" +"371425","齐河县","3714","3","Y","9" +"371426","平原县","3714","3","Y","10" +"371427","夏津县","3714","3","Y","11" +"371428","武城县","3714","3","Y","12" +"371481","乐陵市","3714","3","Y","13" +"371482","禹城市","3714","3","Y","14" +"371501","市辖区","3715","3","Y","1" +"371502","东昌府区","3715","3","Y","2" +"371509","聊城经济技术开发区","3715","3","Y","3" +"371521","阳谷县","3715","3","Y","4" +"371522","莘县","3715","3","Y","5" +"371523","茌平县","3715","3","Y","6" +"371524","东阿县","3715","3","Y","7" +"371525","冠县","3715","3","Y","8" +"371526","高唐县","3715","3","Y","9" +"371581","临清市","3715","3","Y","10" +"371591","聊城高新技术产业开发区","3715","3","Y","11" +"371592","江北水城旅游度假区","3715","3","Y","12" +"371601","市辖区","3716","3","Y","1" +"371602","滨城区","3716","3","Y","2" +"371603","沾化区","3716","3","Y","3" +"371621","惠民县","3716","3","Y","4" +"371622","阳信县","3716","3","Y","5" +"371623","无棣县","3716","3","Y","6" +"371625","博兴县","3716","3","Y","7" +"371626","邹平县","3716","3","Y","8" +"371671","滨州经济技术开发区","3716","3","Y","9" +"371672","滨州市高新区","3716","3","Y","10" +"371673","北海经济开发区","3716","3","Y","11" +"371701","市辖区","3717","3","Y","1" +"371702","牡丹区","3717","3","Y","2" +"371703","定陶区","3717","3","Y","3" +"371710","菏泽市开发区","3717","3","Y","4" +"371711","菏泽高新技术产业开发区","3717","3","Y","5" +"371721","曹县","3717","3","Y","6" +"371722","单县","3717","3","Y","7" +"371723","成武县","3717","3","Y","8" +"371724","巨野县","3717","3","Y","9" +"371725","郓城县","3717","3","Y","10" +"371726","鄄城县","3717","3","Y","11" +"371728","东明县","3717","3","Y","12" +"4101","郑州市","41","2","Y","1" +"4102","开封市","41","2","Y","2" +"4103","洛阳市","41","2","Y","3" +"4104","平顶山市","41","2","Y","4" +"4105","安阳市","41","2","Y","5" +"4106","鹤壁市","41","2","Y","6" +"4107","新乡市","41","2","Y","7" +"4108","焦作市","41","2","Y","8" +"4109","濮阳市","41","2","Y","9" +"4110","许昌市","41","2","Y","10" +"4111","漯河市","41","2","Y","11" +"4112","三门峡市","41","2","Y","12" +"4113","南阳市","41","2","Y","13" +"4114","商丘市","41","2","Y","14" +"4115","信阳市","41","2","Y","15" +"4116","周口市","41","2","Y","16" +"4117","驻马店市","41","2","Y","17" +"4190","省直辖县","41","2","Y","18" +"410101","市辖区","4101","3","Y","1" +"410102","中原区","4101","3","Y","2" +"410103","二七区","4101","3","Y","3" +"410104","管城回族区","4101","3","Y","4" +"410105","金水区","4101","3","Y","5" +"410106","上街区","4101","3","Y","6" +"410108","惠济区","4101","3","Y","7" +"410122","中牟县","4101","3","Y","8" +"410181","巩义市","4101","3","Y","9" +"410182","荥阳市","4101","3","Y","10" +"410183","新密市","4101","3","Y","11" +"410184","新郑市","4101","3","Y","12" +"410185","登封市","4101","3","Y","13" +"410190","开发区","4101","3","Y","14" +"410191","高新区","4101","3","Y","15" +"410192","航空港区","4101","3","Y","16" +"410193","郑东新区","4101","3","Y","17" +"410201","市辖区","4102","3","Y","1" +"410202","龙亭区","4102","3","Y","2" +"410203","顺河回族区","4102","3","Y","3" +"410204","鼓楼区","4102","3","Y","4" +"410205","禹王台区","4102","3","Y","5" +"410211","开封新区","4102","3","Y","6" +"410221","杞县","4102","3","Y","7" +"410222","通许县","4102","3","Y","8" +"410223","尉氏县","4102","3","Y","9" +"410224","祥符区","4102","3","Y","10" +"410225","兰考县","4102","3","Y","11" +"410301","市辖区","4103","3","Y","1" +"410302","老城区","4103","3","Y","2" +"410303","西工区","4103","3","Y","3" +"410304","瀍河回族区","4103","3","Y","4" +"410305","涧西区","4103","3","Y","5" +"410306","吉利区","4103","3","Y","6" +"410311","洛龙区","4103","3","Y","7" +"410322","孟津县","4103","3","Y","8" +"410323","新安县","4103","3","Y","9" +"410324","栾川县","4103","3","Y","10" +"410325","嵩县","4103","3","Y","11" +"410326","汝阳县","4103","3","Y","12" +"410327","宜阳县","4103","3","Y","13" +"410328","洛宁县","4103","3","Y","14" +"410329","伊川县","4103","3","Y","15" +"410381","偃师市","4103","3","Y","16" +"410390","高新区","4103","3","Y","17" +"410391","龙门文化旅游园区","4103","3","Y","18" +"410392","伊洛工业园区","4103","3","Y","19" +"410401","市辖区","4104","3","Y","1" +"410402","新华区","4104","3","Y","2" +"410403","卫东区","4104","3","Y","3" +"410404","石龙区","4104","3","Y","4" +"410411","湛河区","4104","3","Y","5" +"410421","宝丰县","4104","3","Y","6" +"410422","叶县","4104","3","Y","7" +"410423","鲁山县","4104","3","Y","8" +"410425","郏县","4104","3","Y","9" +"410481","舞钢市","4104","3","Y","10" +"410482","汝州市","4104","3","Y","11" +"410490","新城区","4104","3","Y","12" +"410501","市辖区","4105","3","Y","1" +"410502","文峰区","4105","3","Y","2" +"410503","北关区","4105","3","Y","3" +"410505","殷都区","4105","3","Y","4" +"410506","龙安区","4105","3","Y","5" +"410522","安阳县","4105","3","Y","6" +"410523","汤阴县","4105","3","Y","7" +"410526","滑县","4105","3","Y","8" +"410527","内黄县","4105","3","Y","9" +"410581","林州市","4105","3","Y","10" +"410590","开发区","4105","3","Y","11" +"410591","安阳新区","4105","3","Y","12" +"410601","市辖区","4106","3","Y","1" +"410602","鹤山区","4106","3","Y","2" +"410603","山城区","4106","3","Y","3" +"410611","淇滨区","4106","3","Y","4" +"410621","浚县","4106","3","Y","5" +"410622","淇县","4106","3","Y","6" +"410690","开发区","4106","3","Y","7" +"410691","城乡一体化示范区","4106","3","Y","8" +"410701","市辖区","4107","3","Y","1" +"410702","红旗区","4107","3","Y","2" +"410703","卫滨区","4107","3","Y","3" +"410704","凤泉区","4107","3","Y","4" +"410711","牧野区","4107","3","Y","5" +"410721","新乡县","4107","3","Y","6" +"410724","获嘉县","4107","3","Y","7" +"410725","原阳县","4107","3","Y","8" +"410726","延津县","4107","3","Y","9" +"410727","封丘县","4107","3","Y","10" +"410728","长垣县","4107","3","Y","11" +"410781","卫辉市","4107","3","Y","12" +"410782","辉县市","4107","3","Y","13" +"410791","高新区","4107","3","Y","14" +"410792","西工区","4107","3","Y","15" +"410793","经济技术开发区","4107","3","Y","16" +"410794","平原新区","4107","3","Y","17" +"410801","市辖区","4108","3","Y","1" +"410802","解放区","4108","3","Y","2" +"410803","中站区","4108","3","Y","3" +"410804","马村区","4108","3","Y","4" +"410811","山阳区","4108","3","Y","5" +"410821","修武县","4108","3","Y","6" +"410822","博爱县","4108","3","Y","7" +"410823","武陟县","4108","3","Y","8" +"410825","温县","4108","3","Y","9" +"410882","沁阳市","4108","3","Y","10" +"410883","孟州市","4108","3","Y","11" +"410890","焦作市城乡一体化示范区","4108","3","Y","12" +"410901","市辖区","4109","3","Y","1" +"410902","华龙区","4109","3","Y","2" +"410922","清丰县","4109","3","Y","3" +"410923","南乐县","4109","3","Y","4" +"410926","范县","4109","3","Y","5" +"410927","台前县","4109","3","Y","6" +"410928","濮阳县","4109","3","Y","7" +"410971","中原油田","4109","3","Y","8" +"410990","高新区","4109","3","Y","9" +"410991","工业园区","4109","3","Y","10" +"410992","城乡一体化示范区","4109","3","Y","11" +"411001","市辖区","4110","3","Y","1" +"411002","魏都区","4110","3","Y","2" +"411003","建安区","4110","3","Y","3" +"411024","鄢陵县","4110","3","Y","4" +"411025","襄城县","4110","3","Y","5" +"411081","禹州市","4110","3","Y","6" +"411082","长葛市","4110","3","Y","7" +"411090","东城区","4110","3","Y","8" +"411091","开发区","4110","3","Y","9" +"411092","城乡一体化示范区","4110","3","Y","10" +"411101","市辖区","4111","3","Y","1" +"411102","源汇区","4111","3","Y","2" +"411103","郾城区","4111","3","Y","3" +"411104","召陵区","4111","3","Y","4" +"411106","西城区","4111","3","Y","5" +"411121","舞阳县","4111","3","Y","6" +"411122","临颍县","4111","3","Y","7" +"411190","高新区","4111","3","Y","8" +"411201","市辖区","4112","3","Y","1" +"411202","湖滨区","4112","3","Y","2" +"411221","渑池县","4112","3","Y","3" +"411222","陕州区","4112","3","Y","4" +"411224","卢氏县","4112","3","Y","5" +"411281","义马市","4112","3","Y","6" +"411282","灵宝市","4112","3","Y","7" +"411290","开发区","4112","3","Y","8" +"411291","工业园","4112","3","Y","9" +"411301","市辖区","4113","3","Y","1" +"411302","宛城区","4113","3","Y","2" +"411303","卧龙区","4113","3","Y","3" +"411304","南阳新区","4113","3","Y","4" +"411305","官庄工区","4113","3","Y","5" +"411306","鸭河工区","4113","3","Y","6" +"411321","南召县","4113","3","Y","7" +"411322","方城县","4113","3","Y","8" +"411323","西峡县","4113","3","Y","9" +"411324","镇平县","4113","3","Y","10" +"411325","内乡县","4113","3","Y","11" +"411326","淅川县","4113","3","Y","12" +"411327","社旗县","4113","3","Y","13" +"411328","唐河县","4113","3","Y","14" +"411329","新野县","4113","3","Y","15" +"411330","桐柏县","4113","3","Y","16" +"411381","邓州市","4113","3","Y","17" +"411390","高新区","4113","3","Y","18" +"411401","市辖区","4114","3","Y","1" +"411402","梁园区","4114","3","Y","2" +"411403","睢阳区","4114","3","Y","3" +"411421","民权县","4114","3","Y","4" +"411422","睢县","4114","3","Y","5" +"411423","宁陵县","4114","3","Y","6" +"411424","柘城县","4114","3","Y","7" +"411425","虞城县","4114","3","Y","8" +"411426","夏邑县","4114","3","Y","9" +"411481","永城市","4114","3","Y","10" +"411490","开发区","4114","3","Y","11" +"411501","市辖区","4115","3","Y","1" +"411502","浉河区","4115","3","Y","2" +"411503","平桥区","4115","3","Y","3" +"411521","罗山县","4115","3","Y","4" +"411522","光山县","4115","3","Y","5" +"411523","新县","4115","3","Y","6" +"411524","商城县","4115","3","Y","7" +"411525","固始县","4115","3","Y","8" +"411526","潢川县","4115","3","Y","9" +"411527","淮滨县","4115","3","Y","10" +"411528","息县","4115","3","Y","11" +"411590","南湾管理区","4115","3","Y","12" +"411591","鸡公山管理区","4115","3","Y","13" +"411592","羊山新区","4115","3","Y","14" +"411593","信阳高新技术产业开发区","4115","3","Y","15" +"411594","上天梯非金属矿管理区","4115","3","Y","16" +"411595","明港镇","4115","3","Y","17" +"411601","市辖区","4116","3","Y","1" +"411602","川汇区","4116","3","Y","2" +"411621","扶沟县","4116","3","Y","3" +"411622","西华县","4116","3","Y","4" +"411623","商水县","4116","3","Y","5" +"411624","沈丘县","4116","3","Y","6" +"411625","郸城县","4116","3","Y","7" +"411626","淮阳县","4116","3","Y","8" +"411627","太康县","4116","3","Y","9" +"411628","鹿邑县","4116","3","Y","10" +"411671","港口物流产业集聚区","4116","3","Y","11" +"411672","经济技术开发区管委会","4116","3","Y","12" +"411673","东新区管委会","4116","3","Y","13" +"411681","项城市","4116","3","Y","14" +"411701","市辖区","4117","3","Y","1" +"411702","驿城区","4117","3","Y","2" +"411721","西平县","4117","3","Y","3" +"411722","上蔡县","4117","3","Y","4" +"411723","平舆县","4117","3","Y","5" +"411724","正阳县","4117","3","Y","6" +"411725","确山县","4117","3","Y","7" +"411726","泌阳县","4117","3","Y","8" +"411727","汝南县","4117","3","Y","9" +"411728","遂平县","4117","3","Y","10" +"411729","新蔡县","4117","3","Y","11" +"411790","高新区","4117","3","Y","12" +"411791","工业集聚区","4117","3","Y","13" +"411792","城乡一体化示范区","4117","3","Y","14" +"419001","济源市","4190","3","Y","1" +"4201","武汉市","42","2","Y","1" +"4202","黄石市","42","2","Y","2" +"4203","十堰市","42","2","Y","3" +"4205","宜昌市","42","2","Y","4" +"4206","襄阳市","42","2","Y","5" +"4207","鄂州市","42","2","Y","6" +"4208","荆门市","42","2","Y","7" +"4209","孝感市","42","2","Y","8" +"4210","荆州市","42","2","Y","9" +"4211","黄冈市","42","2","Y","10" +"4212","咸宁市","42","2","Y","11" +"4213","随州市","42","2","Y","12" +"4228","恩施土家族苗族自治州","42","2","Y","13" +"4290","省直辖县级行政单位","42","2","Y","14" +"420101","市辖区","4201","3","Y","1" +"420102","江岸区","4201","3","Y","2" +"420103","江汉区","4201","3","Y","3" +"420104","硚口区","4201","3","Y","4" +"420105","汉阳区","4201","3","Y","5" +"420106","武昌区","4201","3","Y","6" +"420107","青山区","4201","3","Y","7" +"420111","洪山区","4201","3","Y","8" +"420112","东西湖区","4201","3","Y","9" +"420113","武汉经济技术开发区(汉南区)","4201","3","Y","10" +"420114","蔡甸区","4201","3","Y","11" +"420115","江夏区","4201","3","Y","12" +"420116","黄陂区","4201","3","Y","13" +"420117","新洲区","4201","3","Y","14" +"420172","东湖新技术开发区","4201","3","Y","15" +"420173","东湖生态旅游风景区","4201","3","Y","16" +"420201","市辖区","4202","3","Y","1" +"420202","黄石港区","4202","3","Y","2" +"420203","西塞山区","4202","3","Y","3" +"420204","下陆区","4202","3","Y","4" +"420205","铁山区","4202","3","Y","5" +"420222","阳新县","4202","3","Y","6" +"420271","经济开发区","4202","3","Y","7" +"420281","大冶市","4202","3","Y","8" +"420301","市辖区","4203","3","Y","1" +"420302","茅箭区","4203","3","Y","2" +"420303","张湾区","4203","3","Y","3" +"420304","郧阳区","4203","3","Y","4" +"420322","郧西县","4203","3","Y","5" +"420323","竹山县","4203","3","Y","6" +"420324","竹溪县","4203","3","Y","7" +"420325","房县","4203","3","Y","8" +"420371","十堰经济开发区","4203","3","Y","9" +"420372","武当山特区","4203","3","Y","10" +"420381","丹江口市","4203","3","Y","11" +"420501","市辖区","4205","3","Y","1" +"420502","西陵区","4205","3","Y","2" +"420503","伍家岗区","4205","3","Y","3" +"420504","点军区","4205","3","Y","4" +"420505","猇亭区","4205","3","Y","5" +"420506","夷陵区","4205","3","Y","6" +"420525","远安县","4205","3","Y","7" +"420526","兴山县","4205","3","Y","8" +"420527","秭归县","4205","3","Y","9" +"420528","长阳土家族自治县","4205","3","Y","10" +"420529","五峰土家族自治县","4205","3","Y","11" +"420571","宜昌高新区","4205","3","Y","12" +"420581","宜都市","4205","3","Y","13" +"420582","当阳市","4205","3","Y","14" +"420583","枝江市","4205","3","Y","15" +"420601","市辖区","4206","3","Y","1" +"420602","襄城区","4206","3","Y","2" +"420606","樊城区","4206","3","Y","3" +"420607","襄州区","4206","3","Y","4" +"420624","南漳县","4206","3","Y","5" +"420625","谷城县","4206","3","Y","6" +"420626","保康县","4206","3","Y","7" +"420671","高新区","4206","3","Y","8" +"420672","鱼梁洲旅游经济开发区","4206","3","Y","9" +"420674","襄阳经济技术开发区","4206","3","Y","10" +"420682","老河口市","4206","3","Y","11" +"420683","枣阳市","4206","3","Y","12" +"420684","宜城市","4206","3","Y","13" +"420701","市辖区","4207","3","Y","1" +"420702","梁子湖区","4207","3","Y","2" +"420703","华容区","4207","3","Y","3" +"420704","鄂城区","4207","3","Y","4" +"420801","市辖区","4208","3","Y","1" +"420802","东宝区","4208","3","Y","2" +"420804","掇刀区","4208","3","Y","3" +"420821","京山县","4208","3","Y","4" +"420822","沙洋县","4208","3","Y","5" +"420871","屈家岭管理区","4208","3","Y","6" +"420872","沙洋监狱","4208","3","Y","7" +"420873","漳河新区","4208","3","Y","8" +"420881","钟祥市","4208","3","Y","9" +"420901","市辖区","4209","3","Y","1" +"420902","孝南区","4209","3","Y","2" +"420921","孝昌县","4209","3","Y","3" +"420922","大悟县","4209","3","Y","4" +"420923","云梦县","4209","3","Y","5" +"420971","高新区","4209","3","Y","6" +"420972","双峰山风景区","4209","3","Y","7" +"420973","临空经济区","4209","3","Y","8" +"420981","应城市","4209","3","Y","9" +"420982","安陆市","4209","3","Y","10" +"420984","汉川市","4209","3","Y","11" +"421001","市辖区","4210","3","Y","1" +"421002","沙市区","4210","3","Y","2" +"421003","荆州区","4210","3","Y","3" +"421022","公安县","4210","3","Y","4" +"421023","监利县","4210","3","Y","5" +"421024","江陵县","4210","3","Y","6" +"421071","荆州经济开发区","4210","3","Y","7" +"421072","纪南生态文化旅游区","4210","3","Y","8" +"421081","石首市","4210","3","Y","9" +"421083","洪湖市","4210","3","Y","10" +"421087","松滋市","4210","3","Y","11" +"421101","市辖区","4211","3","Y","1" +"421102","黄州区","4211","3","Y","2" +"421121","团风县","4211","3","Y","3" +"421122","红安县","4211","3","Y","4" +"421123","罗田县","4211","3","Y","5" +"421124","英山县","4211","3","Y","6" +"421125","浠水县","4211","3","Y","7" +"421126","蕲春县","4211","3","Y","8" +"421127","黄梅县","4211","3","Y","9" +"421171","龙感湖","4211","3","Y","10" +"421172","黄冈经济开发区","4211","3","Y","11" +"421181","麻城市","4211","3","Y","12" +"421182","武穴市","4211","3","Y","13" +"421201","市辖区","4212","3","Y","1" +"421202","咸安区","4212","3","Y","2" +"421221","嘉鱼县","4212","3","Y","3" +"421222","通城县","4212","3","Y","4" +"421223","崇阳县","4212","3","Y","5" +"421224","通山县","4212","3","Y","6" +"421281","赤壁市","4212","3","Y","7" +"421301","市辖区","4213","3","Y","1" +"421302","曾都区","4213","3","Y","2" +"421321","随县","4213","3","Y","3" +"421371","随州高新区","4213","3","Y","4" +"421372","大洪山风景区","4213","3","Y","5" +"421381","广水市","4213","3","Y","6" +"422801","恩施市","4228","3","Y","1" +"422802","利川市","4228","3","Y","2" +"422822","建始县","4228","3","Y","3" +"422823","巴东县","4228","3","Y","4" +"422825","宣恩县","4228","3","Y","5" +"422826","咸丰县","4228","3","Y","6" +"422827","来凤县","4228","3","Y","7" +"422828","鹤峰县","4228","3","Y","8" +"429004","仙桃市","4290","3","Y","1" +"429005","潜江市","4290","3","Y","2" +"429006","天门市","4290","3","Y","3" +"429021","神农架林区","4290","3","Y","4" +"4301","长沙市","43","2","Y","1" +"4302","株洲市","43","2","Y","2" +"4303","湘潭市","43","2","Y","3" +"4304","衡阳市","43","2","Y","4" +"4305","邵阳市","43","2","Y","5" +"4306","岳阳市","43","2","Y","6" +"4307","常德市","43","2","Y","7" +"4308","张家界市","43","2","Y","8" +"4309","益阳市","43","2","Y","9" +"4310","郴州市","43","2","Y","10" +"4311","永州市","43","2","Y","11" +"4312","怀化市","43","2","Y","12" +"4313","娄底市","43","2","Y","13" +"4331","湘西土家族苗族自治州","43","2","Y","14" +"430101","市辖区","4301","3","Y","1" +"430102","芙蓉区","4301","3","Y","2" +"430103","天心区","4301","3","Y","3" +"430104","岳麓区","4301","3","Y","4" +"430105","开福区","4301","3","Y","5" +"430111","雨花区","4301","3","Y","6" +"430112","望城区","4301","3","Y","7" +"430121","长沙县","4301","3","Y","8" +"430181","浏阳市","4301","3","Y","9" +"430182","宁乡市","4301","3","Y","10" +"430201","市辖区","4302","3","Y","1" +"430202","荷塘区","4302","3","Y","2" +"430203","芦淞区","4302","3","Y","3" +"430204","石峰区","4302","3","Y","4" +"430211","天元区","4302","3","Y","5" +"430212","渌口区","4302","3","Y","6" +"430223","攸县","4302","3","Y","7" +"430224","茶陵县","4302","3","Y","8" +"430225","炎陵县","4302","3","Y","9" +"430281","醴陵市","4302","3","Y","10" +"430301","市辖区","4303","3","Y","1" +"430302","雨湖区","4303","3","Y","2" +"430304","岳塘区","4303","3","Y","3" +"430321","湘潭县","4303","3","Y","4" +"430381","湘乡市","4303","3","Y","5" +"430382","韶山市","4303","3","Y","6" +"430401","市辖区","4304","3","Y","1" +"430405","珠晖区","4304","3","Y","2" +"430406","雁峰区","4304","3","Y","3" +"430407","石鼓区","4304","3","Y","4" +"430408","蒸湘区","4304","3","Y","5" +"430412","南岳区","4304","3","Y","6" +"430421","衡阳县","4304","3","Y","7" +"430422","衡南县","4304","3","Y","8" +"430423","衡山县","4304","3","Y","9" +"430424","衡东县","4304","3","Y","10" +"430426","祁东县","4304","3","Y","11" +"430481","耒阳市","4304","3","Y","12" +"430482","常宁市","4304","3","Y","13" +"430501","市辖区","4305","3","Y","1" +"430502","双清区","4305","3","Y","2" +"430503","大祥区","4305","3","Y","3" +"430511","北塔区","4305","3","Y","4" +"430521","邵东县","4305","3","Y","5" +"430522","新邵县","4305","3","Y","6" +"430523","邵阳县","4305","3","Y","7" +"430524","隆回县","4305","3","Y","8" +"430525","洞口县","4305","3","Y","9" +"430527","绥宁县","4305","3","Y","10" +"430528","新宁县","4305","3","Y","11" +"430529","城步苗族自治县","4305","3","Y","12" +"430581","武冈市","4305","3","Y","13" +"430601","市辖区","4306","3","Y","1" +"430602","岳阳楼区","4306","3","Y","2" +"430603","云溪区","4306","3","Y","3" +"430611","君山区","4306","3","Y","4" +"430621","岳阳县","4306","3","Y","5" +"430623","华容县","4306","3","Y","6" +"430624","湘阴县","4306","3","Y","7" +"430626","平江县","4306","3","Y","8" +"430681","汨罗市","4306","3","Y","9" +"430682","临湘市","4306","3","Y","10" +"430691","屈原管理区","4306","3","Y","11" +"430701","市辖区","4307","3","Y","1" +"430702","武陵区","4307","3","Y","2" +"430703","鼎城区","4307","3","Y","3" +"430721","安乡县","4307","3","Y","4" +"430722","汉寿县","4307","3","Y","5" +"430723","澧县","4307","3","Y","6" +"430724","临澧县","4307","3","Y","7" +"430725","桃源县","4307","3","Y","8" +"430726","石门县","4307","3","Y","9" +"430781","津市市","4307","3","Y","10" +"430791","西洞庭管理区","4307","3","Y","11" +"430792","西湖管理区","4307","3","Y","12" +"430801","市辖区","4308","3","Y","1" +"430802","永定区","4308","3","Y","2" +"430811","武陵源区","4308","3","Y","3" +"430821","慈利县","4308","3","Y","4" +"430822","桑植县","4308","3","Y","5" +"430901","市辖区","4309","3","Y","1" +"430902","资阳区","4309","3","Y","2" +"430903","赫山区","4309","3","Y","3" +"430921","南县","4309","3","Y","4" +"430922","桃江县","4309","3","Y","5" +"430923","安化县","4309","3","Y","6" +"430981","沅江市","4309","3","Y","7" +"430991","大通湖区","4309","3","Y","8" +"431001","市辖区","4310","3","Y","1" +"431002","北湖区","4310","3","Y","2" +"431003","苏仙区","4310","3","Y","3" +"431021","桂阳县","4310","3","Y","4" +"431022","宜章县","4310","3","Y","5" +"431023","永兴县","4310","3","Y","6" +"431024","嘉禾县","4310","3","Y","7" +"431025","临武县","4310","3","Y","8" +"431026","汝城县","4310","3","Y","9" +"431027","桂东县","4310","3","Y","10" +"431028","安仁县","4310","3","Y","11" +"431081","资兴市","4310","3","Y","12" +"431101","市辖区","4311","3","Y","1" +"431102","零陵区","4311","3","Y","2" +"431103","冷水滩区","4311","3","Y","3" +"431121","祁阳县","4311","3","Y","4" +"431122","东安县","4311","3","Y","5" +"431123","双牌县","4311","3","Y","6" +"431124","道县","4311","3","Y","7" +"431125","江永县","4311","3","Y","8" +"431126","宁远县","4311","3","Y","9" +"431127","蓝山县","4311","3","Y","10" +"431128","新田县","4311","3","Y","11" +"431129","江华瑶族自治县","4311","3","Y","12" +"431191","金洞区","4311","3","Y","13" +"431201","市辖区","4312","3","Y","1" +"431202","鹤城区","4312","3","Y","2" +"431221","中方县","4312","3","Y","3" +"431222","沅陵县","4312","3","Y","4" +"431223","辰溪县","4312","3","Y","5" +"431224","溆浦县","4312","3","Y","6" +"431225","会同县","4312","3","Y","7" +"431226","麻阳苗族自治县","4312","3","Y","8" +"431227","新晃侗族自治县","4312","3","Y","9" +"431228","芷江侗族自治县","4312","3","Y","10" +"431229","靖州苗族侗族自治县","4312","3","Y","11" +"431230","通道侗族自治县","4312","3","Y","12" +"431281","洪江市","4312","3","Y","13" +"431291","洪江区","4312","3","Y","14" +"431301","市辖区","4313","3","Y","1" +"431302","娄星区","4313","3","Y","2" +"431321","双峰县","4313","3","Y","3" +"431322","新化县","4313","3","Y","4" +"431381","冷水江市","4313","3","Y","5" +"431382","涟源市","4313","3","Y","6" +"433101","吉首市","4331","3","Y","1" +"433122","泸溪县","4331","3","Y","2" +"433123","凤凰县","4331","3","Y","3" +"433124","花垣县","4331","3","Y","4" +"433125","保靖县","4331","3","Y","5" +"433126","古丈县","4331","3","Y","6" +"433127","永顺县","4331","3","Y","7" +"433130","龙山县","4331","3","Y","8" +"4401","广州市","44","2","Y","1" +"4402","韶关市","44","2","Y","2" +"4403","深圳市","44","2","Y","3" +"4404","珠海市","44","2","Y","4" +"4405","汕头市","44","2","Y","5" +"4406","佛山市","44","2","Y","6" +"4407","江门市","44","2","Y","7" +"4408","湛江市","44","2","Y","8" +"4409","茂名市","44","2","Y","9" +"4412","肇庆市","44","2","Y","10" +"4413","惠州市","44","2","Y","11" +"4414","梅州市","44","2","Y","12" +"4415","汕尾市","44","2","Y","13" +"4416","河源市","44","2","Y","14" +"4417","阳江市","44","2","Y","15" +"4418","清远市","44","2","Y","16" +"4419","东莞市","44","2","Y","17" +"4420","中山市","44","2","Y","18" +"4451","潮州市","44","2","Y","19" +"4452","揭阳市","44","2","Y","20" +"4453","云浮市","44","2","Y","21" +"440101","市辖区","4401","3","Y","1" +"440103","荔湾区","4401","3","Y","2" +"440104","越秀区","4401","3","Y","3" +"440105","海珠区","4401","3","Y","4" +"440106","天河区","4401","3","Y","5" +"440111","白云区","4401","3","Y","6" +"440112","黄埔区","4401","3","Y","7" +"440113","番禺区","4401","3","Y","8" +"440114","花都区","4401","3","Y","9" +"440115","南沙区","4401","3","Y","10" +"440117","从化区","4401","3","Y","11" +"440118","增城区","4401","3","Y","12" +"440201","市辖区","4402","3","Y","1" +"440203","武江区","4402","3","Y","2" +"440204","浈江区","4402","3","Y","3" +"440205","曲江区","4402","3","Y","4" +"440222","始兴县","4402","3","Y","5" +"440224","仁化县","4402","3","Y","6" +"440229","翁源县","4402","3","Y","7" +"440232","乳源瑶族自治县","4402","3","Y","8" +"440233","新丰县","4402","3","Y","9" +"440281","乐昌市","4402","3","Y","10" +"440282","南雄市","4402","3","Y","11" +"440301","市辖区","4403","3","Y","1" +"440303","罗湖区","4403","3","Y","2" +"440304","福田区","4403","3","Y","3" +"440305","南山区","4403","3","Y","4" +"440306","宝安区","4403","3","Y","5" +"440307","龙岗区","4403","3","Y","6" +"440308","盐田区","4403","3","Y","7" +"440309","光明新区","4403","3","Y","8" +"440310","坪山区","4403","3","Y","9" +"440311","龙华区","4403","3","Y","10" +"440312","大鹏新区","4403","3","Y","11" +"440401","市辖区","4404","3","Y","1" +"440402","香洲区","4404","3","Y","2" +"440403","斗门区","4404","3","Y","3" +"440404","金湾区","4404","3","Y","4" +"440471","万山海洋开发试验区","4404","3","Y","5" +"440472","高新技术产业开发区","4404","3","Y","6" +"440473","高栏港经济区","4404","3","Y","7" +"440474","横琴经济开发区","4404","3","Y","8" +"440501","市辖区","4405","3","Y","1" +"440507","龙湖区","4405","3","Y","2" +"440511","金平区","4405","3","Y","3" +"440512","濠江区","4405","3","Y","4" +"440513","潮阳区","4405","3","Y","5" +"440514","潮南区","4405","3","Y","6" +"440515","澄海区","4405","3","Y","7" +"440523","南澳县","4405","3","Y","8" +"440601","市辖区","4406","3","Y","1" +"440604","禅城区","4406","3","Y","2" +"440605","南海区","4406","3","Y","3" +"440606","顺德区","4406","3","Y","4" +"440607","三水区","4406","3","Y","5" +"440608","高明区","4406","3","Y","6" +"440701","市辖区","4407","3","Y","1" +"440703","蓬江区","4407","3","Y","2" +"440704","江海区","4407","3","Y","3" +"440705","新会区","4407","3","Y","4" +"440781","台山市","4407","3","Y","5" +"440783","开平市","4407","3","Y","6" +"440784","鹤山市","4407","3","Y","7" +"440785","恩平市","4407","3","Y","8" +"440801","市辖区","4408","3","Y","1" +"440802","赤坎区","4408","3","Y","2" +"440803","霞山区","4408","3","Y","3" +"440804","坡头区","4408","3","Y","4" +"440811","麻章区","4408","3","Y","5" +"440823","遂溪县","4408","3","Y","6" +"440825","徐闻县","4408","3","Y","7" +"440871","经济技术开发区","4408","3","Y","8" +"440873","奋勇高新技术产业开发区","4408","3","Y","9" +"440881","廉江市","4408","3","Y","10" +"440882","雷州市","4408","3","Y","11" +"440883","吴川市","4408","3","Y","12" +"440902","茂南区","4409","3","Y","1" +"440904","电白区","4409","3","Y","2" +"440971","滨海新区","4409","3","Y","3" +"440972","高新区","4409","3","Y","4" +"440981","高州市","4409","3","Y","5" +"440982","化州市","4409","3","Y","6" +"440983","信宜市","4409","3","Y","7" +"441201","市辖区","4412","3","Y","1" +"441202","端州区","4412","3","Y","2" +"441203","鼎湖区","4412","3","Y","3" +"441223","广宁县","4412","3","Y","4" +"441224","怀集县","4412","3","Y","5" +"441225","封开县","4412","3","Y","6" +"441226","德庆县","4412","3","Y","7" +"441283","高要市","4412","3","Y","8" +"441284","四会市","4412","3","Y","9" +"441301","市辖区","4413","3","Y","1" +"441302","惠城区","4413","3","Y","2" +"441303","惠阳区","4413","3","Y","3" +"441322","博罗县","4413","3","Y","4" +"441323","惠东县","4413","3","Y","5" +"441324","龙门县","4413","3","Y","6" +"441371","大亚湾经济技术开发区","4413","3","Y","7" +"441372","仲恺高新技术产业开发区","4413","3","Y","8" +"441401","市辖区","4414","3","Y","1" +"441402","梅江区","4414","3","Y","2" +"441403","梅县区","4414","3","Y","3" +"441422","大埔县","4414","3","Y","4" +"441423","丰顺县","4414","3","Y","5" +"441424","五华县","4414","3","Y","6" +"441426","平远县","4414","3","Y","7" +"441427","蕉岭县","4414","3","Y","8" +"441481","兴宁市","4414","3","Y","9" +"441501","市辖区","4415","3","Y","1" +"441502","城区","4415","3","Y","2" +"441521","海丰县","4415","3","Y","3" +"441523","陆河县","4415","3","Y","4" +"441571","红海湾开发区","4415","3","Y","5" +"441572","华侨管理区","4415","3","Y","6" +"441581","陆丰市","4415","3","Y","7" +"441601","市辖区","4416","3","Y","1" +"441602","源城区","4416","3","Y","2" +"441621","紫金县","4416","3","Y","3" +"441622","龙川县","4416","3","Y","4" +"441623","连平县","4416","3","Y","5" +"441624","和平县","4416","3","Y","6" +"441625","东源县","4416","3","Y","7" +"441701","市辖区","4417","3","Y","1" +"441702","江城区","4417","3","Y","2" +"441704","阳东区","4417","3","Y","3" +"441721","阳西县","4417","3","Y","4" +"441771","海陵岛经济开发试验区","4417","3","Y","5" +"441773","高新技术产业开发区","4417","3","Y","6" +"441781","阳春市","4417","3","Y","7" +"441801","市辖区","4418","3","Y","1" +"441802","清城区","4418","3","Y","2" +"441803","清新区","4418","3","Y","3" +"441821","佛冈县","4418","3","Y","4" +"441823","阳山县","4418","3","Y","5" +"441825","连山壮族瑶族自治县","4418","3","Y","6" +"441826","连南瑶族自治县","4418","3","Y","7" +"441881","英德市","4418","3","Y","8" +"441882","连州市","4418","3","Y","9" +"441901","市直辖乡","4419","3","Y","1" +"442001","市直辖乡","4420","3","Y","1" +"445101","市辖区","4451","3","Y","1" +"445102","湘桥区","4451","3","Y","2" +"445103","潮安区","4451","3","Y","3" +"445122","饶平县","4451","3","Y","4" +"445171","枫溪区","4451","3","Y","5" +"445172","凤泉湖高新区","4451","3","Y","6" +"445201","市辖区","4452","3","Y","1" +"445202","榕城区","4452","3","Y","2" +"445203","揭东区","4452","3","Y","3" +"445222","揭西县","4452","3","Y","4" +"445224","惠来县","4452","3","Y","5" +"445272","空港经济区","4452","3","Y","6" +"445273","普宁华侨管理区","4452","3","Y","7" +"445274","大南山华侨管理区","4452","3","Y","8" +"445275","揭阳产业转移工业园","4452","3","Y","9" +"445281","普宁市","4452","3","Y","10" +"445301","市辖区","4453","3","Y","1" +"445302","云城区","4453","3","Y","2" +"445303","云安区","4453","3","Y","3" +"445321","新兴县","4453","3","Y","4" +"445322","郁南县","4453","3","Y","5" +"445381","罗定市","4453","3","Y","6" +"4501","南宁市","45","2","Y","1" +"4502","柳州市","45","2","Y","2" +"4503","桂林市","45","2","Y","3" +"4504","梧州市","45","2","Y","4" +"4505","北海市","45","2","Y","5" +"4506","防城港市","45","2","Y","6" +"4507","钦州市","45","2","Y","7" +"4508","贵港市","45","2","Y","8" +"4509","玉林市","45","2","Y","9" +"4510","百色市","45","2","Y","10" +"4511","贺州市","45","2","Y","11" +"4512","河池市","45","2","Y","12" +"4513","来宾市","45","2","Y","13" +"4514","崇左市","45","2","Y","14" +"450101","市辖区","4501","3","Y","1" +"450102","兴宁区","4501","3","Y","2" +"450103","青秀区","4501","3","Y","3" +"450105","江南区","4501","3","Y","4" +"450107","西乡塘区","4501","3","Y","5" +"450108","良庆区","4501","3","Y","6" +"450109","邕宁区","4501","3","Y","7" +"450110","武鸣区","4501","3","Y","8" +"450123","隆安县","4501","3","Y","9" +"450124","马山县","4501","3","Y","10" +"450125","上林县","4501","3","Y","11" +"450126","宾阳县","4501","3","Y","12" +"450127","横县","4501","3","Y","13" +"450201","市辖区","4502","3","Y","1" +"450202","城中区","4502","3","Y","2" +"450203","鱼峰区","4502","3","Y","3" +"450204","柳南区","4502","3","Y","4" +"450205","柳北区","4502","3","Y","5" +"450221","柳江县","4502","3","Y","6" +"450222","柳城县","4502","3","Y","7" +"450223","鹿寨县","4502","3","Y","8" +"450224","融安县","4502","3","Y","9" +"450225","融水苗族自治县","4502","3","Y","10" +"450226","三江侗族自治县","4502","3","Y","11" +"450301","市辖区","4503","3","Y","1" +"450302","秀峰区","4503","3","Y","2" +"450303","叠彩区","4503","3","Y","3" +"450304","象山区","4503","3","Y","4" +"450305","七星区","4503","3","Y","5" +"450311","雁山区","4503","3","Y","6" +"450312","临桂区","4503","3","Y","7" +"450321","阳朔县","4503","3","Y","8" +"450323","灵川县","4503","3","Y","9" +"450324","全州县","4503","3","Y","10" +"450325","兴安县","4503","3","Y","11" +"450326","永福县","4503","3","Y","12" +"450327","灌阳县","4503","3","Y","13" +"450328","龙胜各族自治县","4503","3","Y","14" +"450329","资源县","4503","3","Y","15" +"450330","平乐县","4503","3","Y","16" +"450331","荔浦市","4503","3","Y","17" +"450332","恭城瑶族自治县","4503","3","Y","18" +"450401","市辖区","4504","3","Y","1" +"450403","万秀区","4504","3","Y","2" +"450405","长洲区","4504","3","Y","3" +"450406","龙圩区","4504","3","Y","4" +"450421","苍梧县","4504","3","Y","5" +"450422","藤县","4504","3","Y","6" +"450423","蒙山县","4504","3","Y","7" +"450481","岑溪市","4504","3","Y","8" +"450502","海城区","4505","3","Y","1" +"450503","银海区","4505","3","Y","2" +"450512","铁山港区","4505","3","Y","3" +"450521","合浦县","4505","3","Y","4" +"450601","市辖区","4506","3","Y","1" +"450602","港口区","4506","3","Y","2" +"450603","防城区","4506","3","Y","3" +"450621","上思县","4506","3","Y","4" +"450681","东兴市","4506","3","Y","5" +"450701","市辖区","4507","3","Y","1" +"450702","钦南区","4507","3","Y","2" +"450703","钦北区","4507","3","Y","3" +"450721","灵山县","4507","3","Y","4" +"450722","浦北县","4507","3","Y","5" +"450801","市辖区","4508","3","Y","1" +"450802","港北区","4508","3","Y","2" +"450803","港南区","4508","3","Y","3" +"450804","覃塘区","4508","3","Y","4" +"450821","平南县","4508","3","Y","5" +"450881","桂平市","4508","3","Y","6" +"450901","市辖区","4509","3","Y","1" +"450902","玉州区","4509","3","Y","2" +"450903","福绵区","4509","3","Y","3" +"450921","容县","4509","3","Y","4" +"450922","陆川县","4509","3","Y","5" +"450923","博白县","4509","3","Y","6" +"450924","兴业县","4509","3","Y","7" +"450981","北流市","4509","3","Y","8" +"451001","市辖区","4510","3","Y","1" +"451002","右江区","4510","3","Y","2" +"451021","田阳县","4510","3","Y","3" +"451022","田东县","4510","3","Y","4" +"451023","平果县","4510","3","Y","5" +"451024","德保县","4510","3","Y","6" +"451025","靖西市","4510","3","Y","7" +"451026","那坡县","4510","3","Y","8" +"451027","凌云县","4510","3","Y","9" +"451028","乐业县","4510","3","Y","10" +"451029","田林县","4510","3","Y","11" +"451030","西林县","4510","3","Y","12" +"451031","隆林各族自治县","4510","3","Y","13" +"451101","市辖区","4511","3","Y","1" +"451102","八步区","4511","3","Y","2" +"451103","平桂区","4511","3","Y","3" +"451121","昭平县","4511","3","Y","4" +"451122","钟山县","4511","3","Y","5" +"451123","富川瑶族自治县","4511","3","Y","6" +"451201","市辖区","4512","3","Y","1" +"451202","金城江区","4512","3","Y","2" +"451221","南丹县","4512","3","Y","3" +"451222","天峨县","4512","3","Y","4" +"451223","凤山县","4512","3","Y","5" +"451224","东兰县","4512","3","Y","6" +"451225","罗城仫佬族自治县","4512","3","Y","7" +"451226","环江毛南族自治县","4512","3","Y","8" +"451227","巴马瑶族自治县","4512","3","Y","9" +"451228","都安瑶族自治县","4512","3","Y","10" +"451229","大化瑶族自治县","4512","3","Y","11" +"451281","宜州市","4512","3","Y","12" +"451301","市辖区","4513","3","Y","1" +"451302","兴宾区","4513","3","Y","2" +"451321","忻城县","4513","3","Y","3" +"451322","象州县","4513","3","Y","4" +"451323","武宣县","4513","3","Y","5" +"451324","金秀瑶族自治县","4513","3","Y","6" +"451381","合山市","4513","3","Y","7" +"451401","市辖区","4514","3","Y","1" +"451402","江州区","4514","3","Y","2" +"451421","扶绥县","4514","3","Y","3" +"451422","宁明县","4514","3","Y","4" +"451423","龙州县","4514","3","Y","5" +"451424","大新县","4514","3","Y","6" +"451425","天等县","4514","3","Y","7" +"451481","凭祥市","4514","3","Y","8" +"4601","海口市","46","2","Y","1" +"4602","三亚市","46","2","Y","2" +"4603","三沙市","46","2","Y","3" +"4604","儋州市","46","2","Y","4" +"4690","省直辖区(虚拟编码)","46","2","Y","5" +"460101","市辖区","4601","3","Y","1" +"460105","秀英区","4601","3","Y","2" +"460106","龙华区","4601","3","Y","3" +"460107","琼山区","4601","3","Y","4" +"460108","美兰区","4601","3","Y","5" +"460201","市辖区","4602","3","Y","1" +"460202","海棠区","4602","3","Y","2" +"460203","吉阳区","4602","3","Y","3" +"460204","天涯区","4602","3","Y","4" +"460205","崖州区","4602","3","Y","5" +"460321","西沙群岛","4603","3","Y","1" +"460322","南沙群岛","4603","3","Y","2" +"460323","中沙群岛的岛礁及其海域","4603","3","Y","3" +"460491","市直管","4604","3","Y","1" +"469001","五指山市","4690","3","Y","1" +"469002","琼海市","4690","3","Y","2" +"469005","文昌市","4690","3","Y","3" +"469006","万宁市","4690","3","Y","4" +"469007","东方市","4690","3","Y","5" +"469021","定安县","4690","3","Y","6" +"469022","屯昌县","4690","3","Y","7" +"469023","澄迈县","4690","3","Y","8" +"469024","临高县","4690","3","Y","9" +"469025","白沙黎族自治县","4690","3","Y","10" +"469026","昌江黎族自治县","4690","3","Y","11" +"469027","乐东黎族自治县","4690","3","Y","12" +"469028","陵水黎族自治县","4690","3","Y","13" +"469029","保亭黎族苗族自治县","4690","3","Y","14" +"469030","琼中黎族苗族自治县","4690","3","Y","15" +"469071","洋浦经济开发区","4690","3","Y","16" +"5001","市辖区","50","2","Y","1" +"5002","县","50","2","Y","2" +"500101","万州区","5001","3","Y","1" +"500102","涪陵区","5001","3","Y","2" +"500103","渝中区","5001","3","Y","3" +"500104","大渡口区","5001","3","Y","4" +"500105","江北区","5001","3","Y","5" +"500106","沙坪坝区","5001","3","Y","6" +"500107","九龙坡区","5001","3","Y","7" +"500108","南岸区","5001","3","Y","8" +"500109","北碚区","5001","3","Y","9" +"500110","綦江区","5001","3","Y","10" +"500111","大足区","5001","3","Y","11" +"500112","渝北区","5001","3","Y","12" +"500113","巴南区","5001","3","Y","13" +"500114","黔江区","5001","3","Y","14" +"500115","长寿区","5001","3","Y","15" +"500116","江津区","5001","3","Y","16" +"500117","合川区","5001","3","Y","17" +"500118","永川区","5001","3","Y","18" +"500119","南川区","5001","3","Y","19" +"500120","璧山区","5001","3","Y","20" +"500151","铜梁区","5001","3","Y","21" +"500152","潼南区","5001","3","Y","22" +"500153","荣昌区","5001","3","Y","23" +"500154","开州区","5001","3","Y","24" +"500155","梁平区","5001","3","Y","25" +"500156","武隆区","5001","3","Y","26" +"500191","两江新区","5001","3","Y","27" +"500192","万盛经开区","5001","3","Y","28" +"500229","城口县","5002","3","Y","1" +"500230","丰都县","5002","3","Y","2" +"500231","垫江县","5002","3","Y","3" +"500233","忠县","5002","3","Y","4" +"500235","云阳县","5002","3","Y","5" +"500236","奉节县","5002","3","Y","6" +"500237","巫山县","5002","3","Y","7" +"500238","巫溪县","5002","3","Y","8" +"500240","石柱土家族自治县","5002","3","Y","9" +"500241","秀山土家族苗族自治县","5002","3","Y","10" +"500242","酉阳土家族苗族自治县","5002","3","Y","11" +"500243","彭水苗族土家族自治县","5002","3","Y","12" +"5101","成都市","51","2","Y","1" +"5103","自贡市","51","2","Y","2" +"5104","攀枝花市","51","2","Y","3" +"5105","泸州市","51","2","Y","4" +"5106","德阳市","51","2","Y","5" +"5107","绵阳市","51","2","Y","6" +"5108","广元市","51","2","Y","7" +"5109","遂宁市","51","2","Y","8" +"5110","内江市","51","2","Y","9" +"5111","乐山市","51","2","Y","10" +"5113","南充市","51","2","Y","11" +"5114","眉山市","51","2","Y","12" +"5115","宜宾市","51","2","Y","13" +"5116","广安市","51","2","Y","14" +"5117","达州市","51","2","Y","15" +"5118","雅安市","51","2","Y","16" +"5119","巴中市","51","2","Y","17" +"5120","资阳市","51","2","Y","18" +"5132","阿坝藏族羌族自治州","51","2","Y","19" +"5133","甘孜藏族自治州","51","2","Y","20" +"5134","凉山彝族自治州","51","2","Y","21" +"510101","市辖区","5101","3","Y","1" +"510104","锦江区","5101","3","Y","2" +"510105","青羊区","5101","3","Y","3" +"510106","金牛区","5101","3","Y","4" +"510107","武侯区","5101","3","Y","5" +"510108","成华区","5101","3","Y","6" +"510110","天府新区","5101","3","Y","7" +"510112","龙泉驿区","5101","3","Y","8" +"510113","青白江区","5101","3","Y","9" +"510114","新都区","5101","3","Y","10" +"510115","温江区","5101","3","Y","11" +"510116","双流区","5101","3","Y","12" +"510117","郫都区","5101","3","Y","13" +"510121","金堂县","5101","3","Y","14" +"510129","大邑县","5101","3","Y","15" +"510131","蒲江县","5101","3","Y","16" +"510132","新津县","5101","3","Y","17" +"510181","都江堰市","5101","3","Y","18" +"510182","彭州市","5101","3","Y","19" +"510183","邛崃市","5101","3","Y","20" +"510184","崇州市","5101","3","Y","21" +"510185","简阳市","5101","3","Y","22" +"510199","高新区","5101","3","Y","23" +"510302","自流井区","5103","3","Y","1" +"510303","贡井区","5103","3","Y","2" +"510304","大安区","5103","3","Y","3" +"510311","沿滩区","5103","3","Y","4" +"510321","荣县","5103","3","Y","5" +"510322","富顺县","5103","3","Y","6" +"510401","市辖区","5104","3","Y","1" +"510402","东区","5104","3","Y","2" +"510403","西区","5104","3","Y","3" +"510411","仁和区","5104","3","Y","4" +"510421","米易县","5104","3","Y","5" +"510422","盐边县","5104","3","Y","6" +"510471","攀钢集团公司","5104","3","Y","7" +"510472","第十九冶金建设公司","5104","3","Y","8" +"510473","攀煤集团公司","5104","3","Y","9" +"510501","市辖区","5105","3","Y","1" +"510502","江阳区","5105","3","Y","2" +"510503","纳溪区","5105","3","Y","3" +"510504","龙马潭区","5105","3","Y","4" +"510521","泸县","5105","3","Y","5" +"510522","合江县","5105","3","Y","6" +"510524","叙永县","5105","3","Y","7" +"510525","古蔺县","5105","3","Y","8" +"510601","市辖区","5106","3","Y","1" +"510603","旌阳区","5106","3","Y","2" +"510623","中江县","5106","3","Y","3" +"510626","罗江县","5106","3","Y","4" +"510681","广汉市","5106","3","Y","5" +"510682","什邡市","5106","3","Y","6" +"510683","绵竹市","5106","3","Y","7" +"510701","市辖区","5107","3","Y","1" +"510703","涪城区","5107","3","Y","2" +"510704","游仙区","5107","3","Y","3" +"510722","三台县","5107","3","Y","4" +"510723","盐亭县","5107","3","Y","5" +"510724","安县","5107","3","Y","6" +"510725","梓潼县","5107","3","Y","7" +"510726","北川羌族自治县","5107","3","Y","8" +"510727","平武县","5107","3","Y","9" +"510771","高新区","5107","3","Y","10" +"510772","科学城","5107","3","Y","11" +"510776","科创区","5107","3","Y","12" +"510777","经开区","5107","3","Y","13" +"510778","仙海区","5107","3","Y","14" +"510781","江油市","5107","3","Y","15" +"510801","市辖区","5108","3","Y","1" +"510802","利州区","5108","3","Y","2" +"510811","昭化区","5108","3","Y","3" +"510812","朝天区","5108","3","Y","4" +"510821","旺苍县","5108","3","Y","5" +"510822","青川县","5108","3","Y","6" +"510823","剑阁县","5108","3","Y","7" +"510824","苍溪县","5108","3","Y","8" +"510871","经开区","5108","3","Y","9" +"510901","市辖区","5109","3","Y","1" +"510903","船山区","5109","3","Y","2" +"510904","安居区","5109","3","Y","3" +"510921","蓬溪县","5109","3","Y","4" +"510922","射洪县","5109","3","Y","5" +"510923","大英县","5109","3","Y","6" +"511001","市辖区","5110","3","Y","1" +"511002","市中区","5110","3","Y","2" +"511003","经开区","5110","3","Y","3" +"511011","东兴区","5110","3","Y","4" +"511024","威远县","5110","3","Y","5" +"511025","资中县","5110","3","Y","6" +"511083","隆昌市","5110","3","Y","7" +"511101","市辖区","5111","3","Y","1" +"511102","市中区","5111","3","Y","2" +"511111","沙湾区","5111","3","Y","3" +"511112","五通桥区","5111","3","Y","4" +"511113","金口河区","5111","3","Y","5" +"511123","犍为县","5111","3","Y","6" +"511124","井研县","5111","3","Y","7" +"511126","夹江县","5111","3","Y","8" +"511129","沐川县","5111","3","Y","9" +"511132","峨边彝族自治县","5111","3","Y","10" +"511133","马边彝族自治县","5111","3","Y","11" +"511181","峨眉山市","5111","3","Y","12" +"511301","市辖区","5113","3","Y","1" +"511302","顺庆区","5113","3","Y","2" +"511303","高坪区","5113","3","Y","3" +"511304","嘉陵区","5113","3","Y","4" +"511321","南部县","5113","3","Y","5" +"511322","营山县","5113","3","Y","6" +"511323","蓬安县","5113","3","Y","7" +"511324","仪陇县","5113","3","Y","8" +"511325","西充县","5113","3","Y","9" +"511381","阆中市","5113","3","Y","10" +"511401","市辖区","5114","3","Y","1" +"511402","东坡区","5114","3","Y","2" +"511403","彭山区","5114","3","Y","3" +"511421","仁寿县","5114","3","Y","4" +"511423","洪雅县","5114","3","Y","5" +"511424","丹棱县","5114","3","Y","6" +"511425","青神县","5114","3","Y","7" +"511501","市辖区","5115","3","Y","1" +"511502","翠屏区","5115","3","Y","2" +"511503","南溪区","5115","3","Y","3" +"511504","叙州区","5115","3","Y","4" +"511521","宜宾县","5115","3","Y","5" +"511523","江安县","5115","3","Y","6" +"511524","长宁县","5115","3","Y","7" +"511525","高县","5115","3","Y","8" +"511526","珙县","5115","3","Y","9" +"511527","筠连县","5115","3","Y","10" +"511528","兴文县","5115","3","Y","11" +"511529","屏山县","5115","3","Y","12" +"511601","市辖区","5116","3","Y","1" +"511602","广安区","5116","3","Y","2" +"511603","前锋区","5116","3","Y","3" +"511621","岳池县","5116","3","Y","4" +"511622","武胜县","5116","3","Y","5" +"511623","邻水县","5116","3","Y","6" +"511681","华蓥市","5116","3","Y","7" +"511701","市辖区","5117","3","Y","1" +"511702","通川区","5117","3","Y","2" +"511703","达川区","5117","3","Y","3" +"511704","经开区","5117","3","Y","4" +"511722","宣汉县","5117","3","Y","5" +"511723","开江县","5117","3","Y","6" +"511724","大竹县","5117","3","Y","7" +"511725","渠县","5117","3","Y","8" +"511781","万源市","5117","3","Y","9" +"511801","市辖区","5118","3","Y","1" +"511802","雨城区","5118","3","Y","2" +"511803","名山区","5118","3","Y","3" +"511822","荥经县","5118","3","Y","4" +"511823","汉源县","5118","3","Y","5" +"511824","石棉县","5118","3","Y","6" +"511825","天全县","5118","3","Y","7" +"511826","芦山县","5118","3","Y","8" +"511827","宝兴县","5118","3","Y","9" +"511902","巴州区","5119","3","Y","1" +"511903","恩阳区","5119","3","Y","2" +"511921","通江县","5119","3","Y","3" +"511922","南江县","5119","3","Y","4" +"511923","平昌县","5119","3","Y","5" +"512002","雁江区","5120","3","Y","1" +"512021","安岳县","5120","3","Y","2" +"512022","乐至县","5120","3","Y","3" +"513201","马尔康市","5132","3","Y","1" +"513221","汶川县","5132","3","Y","2" +"513222","理县","5132","3","Y","3" +"513223","茂县","5132","3","Y","4" +"513224","松潘县","5132","3","Y","5" +"513225","九寨沟县","5132","3","Y","6" +"513226","金川县","5132","3","Y","7" +"513227","小金县","5132","3","Y","8" +"513228","黑水县","5132","3","Y","9" +"513230","壤塘县","5132","3","Y","10" +"513231","阿坝县","5132","3","Y","11" +"513232","若尔盖县","5132","3","Y","12" +"513233","红原县","5132","3","Y","13" +"513321","康定县","5133","3","Y","1" +"513322","泸定县","5133","3","Y","2" +"513323","丹巴县","5133","3","Y","3" +"513324","九龙县","5133","3","Y","4" +"513325","雅江县","5133","3","Y","5" +"513326","道孚县","5133","3","Y","6" +"513327","炉霍县","5133","3","Y","7" +"513328","甘孜县","5133","3","Y","8" +"513329","新龙县","5133","3","Y","9" +"513330","德格县","5133","3","Y","10" +"513331","白玉县","5133","3","Y","11" +"513332","石渠县","5133","3","Y","12" +"513333","色达县","5133","3","Y","13" +"513334","理塘县","5133","3","Y","14" +"513335","巴塘县","5133","3","Y","15" +"513336","乡城县","5133","3","Y","16" +"513337","稻城县","5133","3","Y","17" +"513338","得荣县","5133","3","Y","18" +"513399","海螺沟景区管理局","5133","3","Y","19" +"513401","西昌市","5134","3","Y","1" +"513422","木里藏族自治县","5134","3","Y","2" +"513423","盐源县","5134","3","Y","3" +"513424","德昌县","5134","3","Y","4" +"513425","会理县","5134","3","Y","5" +"513426","会东县","5134","3","Y","6" +"513427","宁南县","5134","3","Y","7" +"513428","普格县","5134","3","Y","8" +"513429","布拖县","5134","3","Y","9" +"513430","金阳县","5134","3","Y","10" +"513431","昭觉县","5134","3","Y","11" +"513432","喜德县","5134","3","Y","12" +"513433","冕宁县","5134","3","Y","13" +"513434","越西县","5134","3","Y","14" +"513435","甘洛县","5134","3","Y","15" +"513436","美姑县","5134","3","Y","16" +"513437","雷波县","5134","3","Y","17" +"5201","贵阳市","52","2","Y","1" +"5202","六盘水市","52","2","Y","2" +"5203","遵义市","52","2","Y","3" +"5204","安顺市","52","2","Y","4" +"5205","毕节市","52","2","Y","5" +"5206","铜仁市","52","2","Y","6" +"5223","黔西南布依族苗族自治州","52","2","Y","7" +"5226","黔东南苗族侗族自治州","52","2","Y","8" +"5227","黔南布依族苗族自治州","52","2","Y","9" +"5271","贵安新区","52","2","Y","10" +"520101","市辖区","5201","3","Y","1" +"520102","南明区","5201","3","Y","2" +"520103","云岩区","5201","3","Y","3" +"520111","花溪区","5201","3","Y","4" +"520112","乌当区","5201","3","Y","5" +"520113","白云区","5201","3","Y","6" +"520115","观山湖区","5201","3","Y","7" +"520121","开阳县","5201","3","Y","8" +"520122","息烽县","5201","3","Y","9" +"520123","修文县","5201","3","Y","10" +"520181","清镇市","5201","3","Y","11" +"520201","钟山区","5202","3","Y","1" +"520203","六枝特区","5202","3","Y","2" +"520221","水城县","5202","3","Y","3" +"520271","钟山经济开发区","5202","3","Y","4" +"520281","盘州市","5202","3","Y","5" +"520301","市辖区","5203","3","Y","1" +"520302","红花岗区","5203","3","Y","2" +"520303","汇川区","5203","3","Y","3" +"520304","播州区","5203","3","Y","4" +"520322","桐梓县","5203","3","Y","5" +"520323","绥阳县","5203","3","Y","6" +"520324","正安县","5203","3","Y","7" +"520325","道真仡佬族苗族自治县","5203","3","Y","8" +"520326","务川仡佬族苗族自治县","5203","3","Y","9" +"520327","凤冈县","5203","3","Y","10" +"520328","湄潭县","5203","3","Y","11" +"520329","余庆县","5203","3","Y","12" +"520330","习水县","5203","3","Y","13" +"520371","新蒲新区","5203","3","Y","14" +"520381","赤水市","5203","3","Y","15" +"520382","仁怀市","5203","3","Y","16" +"520401","市辖区","5204","3","Y","1" +"520402","西秀区","5204","3","Y","2" +"520403","平坝区","5204","3","Y","3" +"520422","普定县","5204","3","Y","4" +"520423","镇宁布依族苗族自治县","5204","3","Y","5" +"520424","关岭布依族苗族自治县","5204","3","Y","6" +"520425","紫云苗族布依族自治县","5204","3","Y","7" +"520471","安顺经济技术开发区","5204","3","Y","8" +"520472","黄果树旅游区","5204","3","Y","9" +"520502","七星关区","5205","3","Y","1" +"520521","大方县","5205","3","Y","2" +"520522","黔西县","5205","3","Y","3" +"520523","金沙县","5205","3","Y","4" +"520524","织金县","5205","3","Y","5" +"520525","纳雍县","5205","3","Y","6" +"520526","威宁彝族回族苗族自治县","5205","3","Y","7" +"520527","赫章县","5205","3","Y","8" +"520571","百里杜鹃风景名胜区","5205","3","Y","9" +"520572","毕节金海湖新区","5205","3","Y","10" +"520602","碧江区","5206","3","Y","1" +"520603","万山区","5206","3","Y","2" +"520621","江口县","5206","3","Y","3" +"520622","玉屏侗族自治县","5206","3","Y","4" +"520623","石阡县","5206","3","Y","5" +"520624","思南县","5206","3","Y","6" +"520625","印江土家族苗族自治县","5206","3","Y","7" +"520626","德江县","5206","3","Y","8" +"520627","沿河土家族自治县","5206","3","Y","9" +"520628","松桃苗族自治县","5206","3","Y","10" +"522301","兴义市","5223","3","Y","1" +"522322","兴仁县","5223","3","Y","2" +"522323","普安县","5223","3","Y","3" +"522324","晴隆县","5223","3","Y","4" +"522325","贞丰县","5223","3","Y","5" +"522326","望谟县","5223","3","Y","6" +"522327","册亨县","5223","3","Y","7" +"522328","安龙县","5223","3","Y","8" +"522372","义龙新区","5223","3","Y","9" +"522601","凯里市","5226","3","Y","1" +"522622","黄平县","5226","3","Y","2" +"522623","施秉县","5226","3","Y","3" +"522624","三穗县","5226","3","Y","4" +"522625","镇远县","5226","3","Y","5" +"522626","岑巩县","5226","3","Y","6" +"522627","天柱县","5226","3","Y","7" +"522628","锦屏县","5226","3","Y","8" +"522629","剑河县","5226","3","Y","9" +"522630","台江县","5226","3","Y","10" +"522631","黎平县","5226","3","Y","11" +"522632","榕江县","5226","3","Y","12" +"522633","从江县","5226","3","Y","13" +"522634","雷山县","5226","3","Y","14" +"522635","麻江县","5226","3","Y","15" +"522636","丹寨县","5226","3","Y","16" +"522701","都匀市","5227","3","Y","1" +"522702","福泉市","5227","3","Y","2" +"522722","荔波县","5227","3","Y","3" +"522723","贵定县","5227","3","Y","4" +"522725","瓮安县","5227","3","Y","5" +"522726","独山县","5227","3","Y","6" +"522727","平塘县","5227","3","Y","7" +"522728","罗甸县","5227","3","Y","8" +"522729","长顺县","5227","3","Y","9" +"522730","龙里县","5227","3","Y","10" +"522731","惠水县","5227","3","Y","11" +"522732","三都水族自治县","5227","3","Y","12" +"527171","直管区","5271","3","Y","1" +"5301","昆明市","53","2","Y","1" +"5303","曲靖市","53","2","Y","2" +"5304","玉溪市","53","2","Y","3" +"5305","保山市","53","2","Y","4" +"5306","昭通市","53","2","Y","5" +"5307","丽江市","53","2","Y","6" +"5308","普洱市","53","2","Y","7" +"5309","临沧市","53","2","Y","8" +"5323","楚雄彝族自治州","53","2","Y","9" +"5325","红河哈尼族彝族自治州","53","2","Y","10" +"5326","文山壮族苗族自治州","53","2","Y","11" +"5328","西双版纳傣族自治州","53","2","Y","12" +"5329","大理白族自治州","53","2","Y","13" +"5331","德宏傣族景颇族自治州","53","2","Y","14" +"5333","怒江傈僳族自治州","53","2","Y","15" +"5334","迪庆藏族自治州","53","2","Y","16" +"530101","市辖区","5301","3","Y","1" +"530102","五华区","5301","3","Y","2" +"530103","盘龙区","5301","3","Y","3" +"530111","官渡区","5301","3","Y","4" +"530112","西山区","5301","3","Y","5" +"530113","东川区","5301","3","Y","6" +"530114","呈贡区","5301","3","Y","7" +"530115","晋宁区","5301","3","Y","8" +"530124","富民县","5301","3","Y","9" +"530125","宜良县","5301","3","Y","10" +"530126","石林彝族自治县","5301","3","Y","11" +"530127","嵩明县","5301","3","Y","12" +"530128","禄劝彝族苗族自治县","5301","3","Y","13" +"530129","寻甸回族彝族自治县","5301","3","Y","14" +"530181","安宁市","5301","3","Y","15" +"530301","市辖区","5303","3","Y","1" +"530302","麒麟区","5303","3","Y","2" +"530303","沾益区","5303","3","Y","3" +"530304","马龙区","5303","3","Y","4" +"530322","陆良县","5303","3","Y","5" +"530323","师宗县","5303","3","Y","6" +"530324","罗平县","5303","3","Y","7" +"530325","富源县","5303","3","Y","8" +"530326","会泽县","5303","3","Y","9" +"530381","宣威市","5303","3","Y","10" +"530401","市辖区","5304","3","Y","1" +"530402","红塔区","5304","3","Y","2" +"530403","江川区","5304","3","Y","3" +"530422","澄江县","5304","3","Y","4" +"530423","通海县","5304","3","Y","5" +"530424","华宁县","5304","3","Y","6" +"530425","易门县","5304","3","Y","7" +"530426","峨山彝族自治县","5304","3","Y","8" +"530427","新平彝族傣族自治县","5304","3","Y","9" +"530428","元江哈尼族彝族傣族自治县","5304","3","Y","10" +"530501","市辖区","5305","3","Y","1" +"530502","隆阳区","5305","3","Y","2" +"530521","施甸县","5305","3","Y","3" +"530523","龙陵县","5305","3","Y","4" +"530524","昌宁县","5305","3","Y","5" +"530581","腾冲市","5305","3","Y","6" +"530601","市辖区","5306","3","Y","1" +"530602","昭阳区","5306","3","Y","2" +"530621","鲁甸县","5306","3","Y","3" +"530622","巧家县","5306","3","Y","4" +"530623","盐津县","5306","3","Y","5" +"530624","大关县","5306","3","Y","6" +"530625","永善县","5306","3","Y","7" +"530626","绥江县","5306","3","Y","8" +"530627","镇雄县","5306","3","Y","9" +"530628","彝良县","5306","3","Y","10" +"530629","威信县","5306","3","Y","11" +"530681","水富市","5306","3","Y","12" +"530701","市辖区","5307","3","Y","1" +"530702","古城区","5307","3","Y","2" +"530721","玉龙纳西族自治县","5307","3","Y","3" +"530722","永胜县","5307","3","Y","4" +"530723","华坪县","5307","3","Y","5" +"530724","宁蒗彝族自治县","5307","3","Y","6" +"530801","市辖区","5308","3","Y","1" +"530802","思茅区","5308","3","Y","2" +"530821","宁洱县","5308","3","Y","3" +"530822","墨江县","5308","3","Y","4" +"530823","景东县","5308","3","Y","5" +"530824","景谷县","5308","3","Y","6" +"530825","镇沅县","5308","3","Y","7" +"530826","江城县","5308","3","Y","8" +"530827","孟连县","5308","3","Y","9" +"530828","澜沧县","5308","3","Y","10" +"530829","西盟县","5308","3","Y","11" +"530901","市辖区","5309","3","Y","1" +"530902","临翔区","5309","3","Y","2" +"530921","凤庆县","5309","3","Y","3" +"530922","云县","5309","3","Y","4" +"530923","永德县","5309","3","Y","5" +"530924","镇康县","5309","3","Y","6" +"530925","双江拉祜族佤族布朗族傣族自治县","5309","3","Y","7" +"530926","耿马傣族佤族自治县","5309","3","Y","8" +"530927","沧源佤族自治县","5309","3","Y","9" +"532301","楚雄市","5323","3","Y","1" +"532322","双柏县","5323","3","Y","2" +"532323","牟定县","5323","3","Y","3" +"532324","南华县","5323","3","Y","4" +"532325","姚安县","5323","3","Y","5" +"532326","大姚县","5323","3","Y","6" +"532327","永仁县","5323","3","Y","7" +"532328","元谋县","5323","3","Y","8" +"532329","武定县","5323","3","Y","9" +"532331","禄丰县","5323","3","Y","10" +"532501","个旧市","5325","3","Y","1" +"532502","开远市","5325","3","Y","2" +"532504","弥勒市","5325","3","Y","3" +"532522","蒙自县","5325","3","Y","4" +"532523","屏边苗族自治县","5325","3","Y","5" +"532524","建水县","5325","3","Y","6" +"532525","石屏县","5325","3","Y","7" +"532527","泸西县","5325","3","Y","8" +"532528","元阳县","5325","3","Y","9" +"532529","红河县","5325","3","Y","10" +"532530","金平苗族瑶族傣族自治县","5325","3","Y","11" +"532531","绿春县","5325","3","Y","12" +"532532","河口瑶族自治县","5325","3","Y","13" +"532601","文山市","5326","3","Y","1" +"532622","砚山县","5326","3","Y","2" +"532623","西畴县","5326","3","Y","3" +"532624","麻栗坡县","5326","3","Y","4" +"532625","马关县","5326","3","Y","5" +"532626","丘北县","5326","3","Y","6" +"532627","广南县","5326","3","Y","7" +"532628","富宁县","5326","3","Y","8" +"532801","景洪市","5328","3","Y","1" +"532822","勐海县","5328","3","Y","2" +"532823","勐腊县","5328","3","Y","3" +"532901","大理市","5329","3","Y","1" +"532922","漾濞彝族自治县","5329","3","Y","2" +"532923","祥云县","5329","3","Y","3" +"532924","宾川县","5329","3","Y","4" +"532925","弥渡县","5329","3","Y","5" +"532926","南涧彝族自治县","5329","3","Y","6" +"532927","巍山彝族回族自治县","5329","3","Y","7" +"532928","永平县","5329","3","Y","8" +"532929","云龙县","5329","3","Y","9" +"532930","洱源县","5329","3","Y","10" +"532931","剑川县","5329","3","Y","11" +"532932","鹤庆县","5329","3","Y","12" +"533102","瑞丽市","5331","3","Y","1" +"533103","芒市","5331","3","Y","2" +"533122","梁河县","5331","3","Y","3" +"533123","盈江县","5331","3","Y","4" +"533124","陇川县","5331","3","Y","5" +"533301","泸水市","5333","3","Y","1" +"533323","福贡县","5333","3","Y","2" +"533324","贡山独龙族怒族自治县","5333","3","Y","3" +"533325","兰坪白族普米族自治县","5333","3","Y","4" +"533421","香格里拉县","5334","3","Y","1" +"533422","德钦县","5334","3","Y","2" +"533423","维西傈僳族自治县","5334","3","Y","3" +"5401","拉萨市","54","2","Y","1" +"5402","日喀则市","54","2","Y","2" +"5403","昌都市","54","2","Y","3" +"5404","林芝市","54","2","Y","4" +"5405","山南市","54","2","Y","5" +"5424","那曲地区","54","2","Y","6" +"5425","阿里地区","54","2","Y","7" +"540101","市辖区","5401","3","Y","1" +"540102","城关区","5401","3","Y","2" +"540103","堆龙德庆区","5401","3","Y","3" +"540121","林周县","5401","3","Y","4" +"540122","当雄县","5401","3","Y","5" +"540123","尼木县","5401","3","Y","6" +"540124","曲水县","5401","3","Y","7" +"540126","达孜县","5401","3","Y","8" +"540127","墨竹工卡县","5401","3","Y","9" +"540202","桑珠孜区","5402","3","Y","1" +"540221","南木林县","5402","3","Y","2" +"540222","江孜县","5402","3","Y","3" +"540223","定日县","5402","3","Y","4" +"540224","萨迦县","5402","3","Y","5" +"540225","拉孜县","5402","3","Y","6" +"540226","昂仁县","5402","3","Y","7" +"540227","谢通门县","5402","3","Y","8" +"540228","白朗县","5402","3","Y","9" +"540229","仁布县","5402","3","Y","10" +"540230","康马县","5402","3","Y","11" +"540231","定结县","5402","3","Y","12" +"540232","仲巴县","5402","3","Y","13" +"540233","亚东县","5402","3","Y","14" +"540234","吉隆县","5402","3","Y","15" +"540235","聂拉木县","5402","3","Y","16" +"540236","萨嘎县","5402","3","Y","17" +"540237","岗巴县","5402","3","Y","18" +"540302","卡若区","5403","3","Y","1" +"540321","江达县","5403","3","Y","2" +"540322","贡觉县","5403","3","Y","3" +"540323","类乌齐县","5403","3","Y","4" +"540324","丁青县","5403","3","Y","5" +"540325","察雅县","5403","3","Y","6" +"540326","八宿县","5403","3","Y","7" +"540327","左贡县","5403","3","Y","8" +"540328","芒康县","5403","3","Y","9" +"540329","洛隆县","5403","3","Y","10" +"540330","边坝县","5403","3","Y","11" +"540402","巴宜区","5404","3","Y","1" +"540421","工布江达县","5404","3","Y","2" +"540422","米林县","5404","3","Y","3" +"540423","墨脱县","5404","3","Y","4" +"540424","波密县","5404","3","Y","5" +"540425","察隅县","5404","3","Y","6" +"540426","朗县","5404","3","Y","7" +"540502","乃东区","5405","3","Y","1" +"540521","扎囊县","5405","3","Y","2" +"540522","贡嘎县","5405","3","Y","3" +"540523","桑日县","5405","3","Y","4" +"540524","琼结县","5405","3","Y","5" +"540525","曲松县","5405","3","Y","6" +"540526","措美县","5405","3","Y","7" +"540527","洛扎县","5405","3","Y","8" +"540528","加查县","5405","3","Y","9" +"540529","隆子县","5405","3","Y","10" +"540530","错那县","5405","3","Y","11" +"540531","浪卡子县","5405","3","Y","12" +"542421","那曲县","5424","3","Y","1" +"542422","嘉黎县","5424","3","Y","2" +"542423","比如县","5424","3","Y","3" +"542424","聂荣县","5424","3","Y","4" +"542425","安多县","5424","3","Y","5" +"542426","申扎县","5424","3","Y","6" +"542427","索县","5424","3","Y","7" +"542428","班戈县","5424","3","Y","8" +"542429","巴青县","5424","3","Y","9" +"542430","尼玛县","5424","3","Y","10" +"542431","双湖县","5424","3","Y","11" +"542521","普兰县","5425","3","Y","1" +"542522","札达县","5425","3","Y","2" +"542523","噶尔县","5425","3","Y","3" +"542524","日土县","5425","3","Y","4" +"542525","革吉县","5425","3","Y","5" +"542526","改则县","5425","3","Y","6" +"542527","措勤县","5425","3","Y","7" +"6101","西安市","61","2","Y","1" +"6102","铜川市","61","2","Y","2" +"6103","宝鸡市","61","2","Y","3" +"6104","咸阳市","61","2","Y","4" +"6105","渭南市","61","2","Y","5" +"6106","延安市","61","2","Y","6" +"6107","汉中市","61","2","Y","7" +"6108","榆林市","61","2","Y","8" +"6109","安康市","61","2","Y","9" +"6110","商洛市","61","2","Y","10" +"6111","杨凌示范区","61","2","Y","11" +"6199","西咸新区","61","2","Y","12" +"610102","新城区","6101","3","Y","1" +"610103","碑林区","6101","3","Y","2" +"610104","莲湖区","6101","3","Y","3" +"610111","灞桥区","6101","3","Y","4" +"610112","未央区","6101","3","Y","5" +"610113","雁塔区","6101","3","Y","6" +"610114","阎良区","6101","3","Y","7" +"610115","临潼区","6101","3","Y","8" +"610116","长安区","6101","3","Y","9" +"610117","高陵区","6101","3","Y","10" +"610118","鄠邑区","6101","3","Y","11" +"610122","蓝田县","6101","3","Y","12" +"610124","周至县","6101","3","Y","13" +"610171","西安高新技术开发区","6101","3","Y","14" +"610192","国际港务区","6101","3","Y","15" +"610202","王益区","6102","3","Y","1" +"610203","印台区","6102","3","Y","2" +"610204","耀州区","6102","3","Y","3" +"610222","宜君县","6102","3","Y","4" +"610271","新区","6102","3","Y","5" +"610302","渭滨区","6103","3","Y","1" +"610303","金台区","6103","3","Y","2" +"610304","陈仓区","6103","3","Y","3" +"610322","凤翔县","6103","3","Y","4" +"610323","岐山县","6103","3","Y","5" +"610324","扶风县","6103","3","Y","6" +"610326","眉县","6103","3","Y","7" +"610327","陇县","6103","3","Y","8" +"610328","千阳县","6103","3","Y","9" +"610329","麟游县","6103","3","Y","10" +"610330","凤县","6103","3","Y","11" +"610331","太白县","6103","3","Y","12" +"610371","宝鸡市高新区","6103","3","Y","13" +"610402","秦都区","6104","3","Y","1" +"610404","渭城区","6104","3","Y","2" +"610422","三原县","6104","3","Y","3" +"610423","泾阳县","6104","3","Y","4" +"610424","乾县","6104","3","Y","5" +"610425","礼泉县","6104","3","Y","6" +"610426","永寿县","6104","3","Y","7" +"610428","长武县","6104","3","Y","8" +"610429","旬邑县","6104","3","Y","9" +"610430","淳化县","6104","3","Y","10" +"610431","武功县","6104","3","Y","11" +"610481","兴平市","6104","3","Y","12" +"610482","彬州市","6104","3","Y","13" +"610502","临渭区","6105","3","Y","1" +"610503","华州区","6105","3","Y","2" +"610522","潼关县","6105","3","Y","3" +"610523","大荔县","6105","3","Y","4" +"610524","合阳县","6105","3","Y","5" +"610525","澄城县","6105","3","Y","6" +"610526","蒲城县","6105","3","Y","7" +"610527","白水县","6105","3","Y","8" +"610528","富平县","6105","3","Y","9" +"610571","高新区","6105","3","Y","10" +"610572","经济技术开发区","6105","3","Y","11" +"610581","韩城市","6105","3","Y","12" +"610582","华阴市","6105","3","Y","13" +"610602","宝塔区","6106","3","Y","1" +"610603","安塞区","6106","3","Y","2" +"610621","延长县","6106","3","Y","3" +"610622","延川县","6106","3","Y","4" +"610623","子长县","6106","3","Y","5" +"610625","志丹县","6106","3","Y","6" +"610626","吴起县","6106","3","Y","7" +"610627","甘泉县","6106","3","Y","8" +"610628","富县","6106","3","Y","9" +"610629","洛川县","6106","3","Y","10" +"610630","宜川县","6106","3","Y","11" +"610631","黄龙县","6106","3","Y","12" +"610632","黄陵县","6106","3","Y","13" +"610702","汉台区","6107","3","Y","1" +"610703","南郑区","6107","3","Y","2" +"610722","城固县","6107","3","Y","3" +"610723","洋县","6107","3","Y","4" +"610724","西乡县","6107","3","Y","5" +"610725","勉县","6107","3","Y","6" +"610726","宁强县","6107","3","Y","7" +"610727","略阳县","6107","3","Y","8" +"610728","镇巴县","6107","3","Y","9" +"610729","留坝县","6107","3","Y","10" +"610730","佛坪县","6107","3","Y","11" +"610791","汉中经济开发区","6107","3","Y","12" +"610802","榆阳区","6108","3","Y","1" +"610803","横山区","6108","3","Y","2" +"610821","神木县","6108","3","Y","3" +"610822","府谷县","6108","3","Y","4" +"610824","靖边县","6108","3","Y","5" +"610825","定边县","6108","3","Y","6" +"610826","绥德县","6108","3","Y","7" +"610827","米脂县","6108","3","Y","8" +"610828","佳县","6108","3","Y","9" +"610829","吴堡县","6108","3","Y","10" +"610830","清涧县","6108","3","Y","11" +"610831","子洲县","6108","3","Y","12" +"610902","汉滨区","6109","3","Y","1" +"610921","汉阴县","6109","3","Y","2" +"610922","石泉县","6109","3","Y","3" +"610923","宁陕县","6109","3","Y","4" +"610924","紫阳县","6109","3","Y","5" +"610925","岚皋县","6109","3","Y","6" +"610926","平利县","6109","3","Y","7" +"610927","镇坪县","6109","3","Y","8" +"610928","旬阳县","6109","3","Y","9" +"610929","白河县","6109","3","Y","10" +"610971","高新区","6109","3","Y","11" +"610972","恒口示范区","6109","3","Y","12" +"611002","商州区","6110","3","Y","1" +"611021","洛南县","6110","3","Y","2" +"611022","丹凤县","6110","3","Y","3" +"611023","商南县","6110","3","Y","4" +"611024","山阳县","6110","3","Y","5" +"611025","镇安县","6110","3","Y","6" +"611026","柞水县","6110","3","Y","7" +"611071","高新区","6110","3","Y","8" +"611101","杨陵区","6111","3","Y","1" +"619901","空港新城","6199","3","Y","1" +"619902","沣东新城","6199","3","Y","2" +"619903","秦汉新城","6199","3","Y","3" +"619904","沣西新城","6199","3","Y","4" +"619905","泾河新城","6199","3","Y","5" +"6201","兰州市","62","2","Y","1" +"6202","嘉峪关市","62","2","Y","2" +"6203","金昌市","62","2","Y","3" +"6204","白银市","62","2","Y","4" +"6205","天水市","62","2","Y","5" +"6206","武威市","62","2","Y","6" +"6207","张掖市","62","2","Y","7" +"6208","平凉市","62","2","Y","8" +"6209","酒泉市","62","2","Y","9" +"6210","庆阳市","62","2","Y","10" +"6211","定西市","62","2","Y","11" +"6212","陇南市","62","2","Y","12" +"6229","临夏回族自治州","62","2","Y","13" +"6230","甘南藏族自治州","62","2","Y","14" +"620101","市辖区","6201","3","Y","1" +"620102","城关区","6201","3","Y","2" +"620103","七里河区","6201","3","Y","3" +"620104","西固区","6201","3","Y","4" +"620105","安宁区","6201","3","Y","5" +"620111","红古区","6201","3","Y","6" +"620121","永登县","6201","3","Y","7" +"620122","皋兰县","6201","3","Y","8" +"620123","榆中县","6201","3","Y","9" +"620140","兰州新区","6201","3","Y","10" +"620201","市辖区","6202","3","Y","1" +"620301","市辖区","6203","3","Y","1" +"620302","金川区","6203","3","Y","2" +"620321","永昌县","6203","3","Y","3" +"620401","市辖区","6204","3","Y","1" +"620402","白银区","6204","3","Y","2" +"620403","平川区","6204","3","Y","3" +"620421","靖远县","6204","3","Y","4" +"620422","会宁县","6204","3","Y","5" +"620423","景泰县","6204","3","Y","6" +"620501","市辖区","6205","3","Y","1" +"620502","秦州区","6205","3","Y","2" +"620503","麦积区","6205","3","Y","3" +"620521","清水县","6205","3","Y","4" +"620522","秦安县","6205","3","Y","5" +"620523","甘谷县","6205","3","Y","6" +"620524","武山县","6205","3","Y","7" +"620525","张家川回族自治县","6205","3","Y","8" +"620601","市辖区","6206","3","Y","1" +"620602","凉州区","6206","3","Y","2" +"620621","民勤县","6206","3","Y","3" +"620622","古浪县","6206","3","Y","4" +"620623","天祝藏族自治县","6206","3","Y","5" +"620701","市辖区","6207","3","Y","1" +"620702","甘州区","6207","3","Y","2" +"620721","肃南裕固族自治县","6207","3","Y","3" +"620722","民乐县","6207","3","Y","4" +"620723","临泽县","6207","3","Y","5" +"620724","高台县","6207","3","Y","6" +"620725","山丹县","6207","3","Y","7" +"620801","市辖区","6208","3","Y","1" +"620802","崆峒区","6208","3","Y","2" +"620821","泾川县","6208","3","Y","3" +"620822","灵台县","6208","3","Y","4" +"620823","崇信县","6208","3","Y","5" +"620824","华亭县","6208","3","Y","6" +"620825","庄浪县","6208","3","Y","7" +"620826","静宁县","6208","3","Y","8" +"620901","市辖区","6209","3","Y","1" +"620902","肃州区","6209","3","Y","2" +"620921","金塔县","6209","3","Y","3" +"620922","瓜州县","6209","3","Y","4" +"620923","肃北蒙古族自治县","6209","3","Y","5" +"620924","阿克塞哈萨克族自治县","6209","3","Y","6" +"620981","玉门市","6209","3","Y","7" +"620982","敦煌市","6209","3","Y","8" +"621001","市辖区","6210","3","Y","1" +"621002","西峰区","6210","3","Y","2" +"621021","庆城县","6210","3","Y","3" +"621022","环县","6210","3","Y","4" +"621023","华池县","6210","3","Y","5" +"621024","合水县","6210","3","Y","6" +"621025","正宁县","6210","3","Y","7" +"621026","宁县","6210","3","Y","8" +"621027","镇原县","6210","3","Y","9" +"621101","市辖区","6211","3","Y","1" +"621102","安定区","6211","3","Y","2" +"621121","通渭县","6211","3","Y","3" +"621122","陇西县","6211","3","Y","4" +"621123","渭源县","6211","3","Y","5" +"621124","临洮县","6211","3","Y","6" +"621125","漳县","6211","3","Y","7" +"621126","岷县","6211","3","Y","8" +"621201","市辖区","6212","3","Y","1" +"621202","武都区","6212","3","Y","2" +"621221","成县","6212","3","Y","3" +"621222","文县","6212","3","Y","4" +"621223","宕昌县","6212","3","Y","5" +"621224","康县","6212","3","Y","6" +"621225","西和县","6212","3","Y","7" +"621226","礼县","6212","3","Y","8" +"621227","徽县","6212","3","Y","9" +"621228","两当县","6212","3","Y","10" +"622901","临夏市","6229","3","Y","1" +"622921","临夏县","6229","3","Y","2" +"622922","康乐县","6229","3","Y","3" +"622923","永靖县","6229","3","Y","4" +"622924","广河县","6229","3","Y","5" +"622925","和政县","6229","3","Y","6" +"622926","东乡族自治县","6229","3","Y","7" +"622927","积石山保安族东乡族撒拉族自治县","6229","3","Y","8" +"623001","合作市","6230","3","Y","1" +"623021","临潭县","6230","3","Y","2" +"623022","卓尼县","6230","3","Y","3" +"623023","舟曲县","6230","3","Y","4" +"623024","迭部县","6230","3","Y","5" +"623025","玛曲县","6230","3","Y","6" +"623026","碌曲县","6230","3","Y","7" +"623027","夏河县","6230","3","Y","8" +"6301","西宁市","63","2","Y","1" +"6302","海东市","63","2","Y","2" +"6322","海北藏族自治州","63","2","Y","3" +"6323","黄南藏族自治州","63","2","Y","4" +"6325","海南藏族自治州","63","2","Y","5" +"6326","果洛藏族自治州","63","2","Y","6" +"6327","玉树藏族自治州","63","2","Y","7" +"6328","海西蒙古族藏族自治州","63","2","Y","8" +"630102","城东区","6301","3","Y","1" +"630103","城中区","6301","3","Y","2" +"630104","城西区","6301","3","Y","3" +"630105","城北区","6301","3","Y","4" +"630121","大通回族土族自治县","6301","3","Y","5" +"630122","湟中县","6301","3","Y","6" +"630123","湟源县","6301","3","Y","7" +"630202","乐都区","6302","3","Y","1" +"630203","平安区","6302","3","Y","2" +"630222","民和回族土族自治县","6302","3","Y","3" +"630223","互助土族自治县","6302","3","Y","4" +"630224","化隆回族自治县","6302","3","Y","5" +"630225","循化撒拉族自治县","6302","3","Y","6" +"632221","门源回族自治县","6322","3","Y","1" +"632222","祁连县","6322","3","Y","2" +"632223","海晏县","6322","3","Y","3" +"632224","刚察县","6322","3","Y","4" +"632321","同仁县","6323","3","Y","1" +"632322","尖扎县","6323","3","Y","2" +"632323","泽库县","6323","3","Y","3" +"632324","河南蒙古族自治县","6323","3","Y","4" +"632521","共和县","6325","3","Y","1" +"632522","同德县","6325","3","Y","2" +"632523","贵德县","6325","3","Y","3" +"632524","兴海县","6325","3","Y","4" +"632525","贵南县","6325","3","Y","5" +"632621","玛沁县","6326","3","Y","1" +"632622","班玛县","6326","3","Y","2" +"632623","甘德县","6326","3","Y","3" +"632624","达日县","6326","3","Y","4" +"632625","久治县","6326","3","Y","5" +"632626","玛多县","6326","3","Y","6" +"632701","玉树市","6327","3","Y","1" +"632722","杂多县","6327","3","Y","2" +"632723","称多县","6327","3","Y","3" +"632724","治多县","6327","3","Y","4" +"632725","囊谦县","6327","3","Y","5" +"632726","曲麻莱县","6327","3","Y","6" +"632801","格尔木市","6328","3","Y","1" +"632802","德令哈市","6328","3","Y","2" +"632821","乌兰县","6328","3","Y","3" +"632822","都兰县","6328","3","Y","4" +"632823","天峻县","6328","3","Y","5" +"632891","茫崖行委","6328","3","Y","6" +"632892","大柴旦行委","6328","3","Y","7" +"632893","冷湖行委","6328","3","Y","8" +"6401","银川市","64","2","Y","1" +"6402","石嘴山市","64","2","Y","2" +"6403","吴忠市","64","2","Y","3" +"6404","固原市","64","2","Y","4" +"6405","中卫市","64","2","Y","5" +"640101","市辖区","6401","3","Y","1" +"640104","兴庆区","6401","3","Y","2" +"640105","西夏区","6401","3","Y","3" +"640106","金凤区","6401","3","Y","4" +"640121","永宁县","6401","3","Y","5" +"640122","贺兰县","6401","3","Y","6" +"640181","灵武市","6401","3","Y","7" +"640201","市辖区","6402","3","Y","1" +"640202","大武口区","6402","3","Y","2" +"640205","惠农区","6402","3","Y","3" +"640221","平罗县","6402","3","Y","4" +"640301","市辖区","6403","3","Y","1" +"640302","利通区","6403","3","Y","2" +"640303","红寺堡区","6403","3","Y","3" +"640323","盐池县","6403","3","Y","4" +"640324","同心县","6403","3","Y","5" +"640381","青铜峡市","6403","3","Y","6" +"640401","市辖区","6404","3","Y","1" +"640402","原州区","6404","3","Y","2" +"640422","西吉县","6404","3","Y","3" +"640423","隆德县","6404","3","Y","4" +"640424","泾源县","6404","3","Y","5" +"640425","彭阳县","6404","3","Y","6" +"640502","沙坡头区","6405","3","Y","1" +"640521","中宁县","6405","3","Y","2" +"640522","海原县","6405","3","Y","3" +"6501","乌鲁木齐市","65","2","Y","1" +"6502","克拉玛依市","65","2","Y","2" +"6504","吐鲁番市","65","2","Y","3" +"6505","哈密市","65","2","Y","4" +"6523","昌吉回族自治州","65","2","Y","5" +"6527","博尔塔拉蒙古自治州","65","2","Y","6" +"6528","巴音郭楞蒙古自治州","65","2","Y","7" +"6529","阿克苏地区","65","2","Y","8" +"6530","克孜勒苏柯尔克孜自治州","65","2","Y","9" +"6531","喀什地区","65","2","Y","10" +"6532","和田地区","65","2","Y","11" +"6540","伊犁哈萨克自治州","65","2","Y","12" +"6542","塔城地区","65","2","Y","13" +"6543","阿勒泰地区","65","2","Y","14" +"6590","自治区直辖县级行政单位","65","2","Y","15" +"650101","市辖区","6501","3","Y","1" +"650102","天山区","6501","3","Y","2" +"650103","沙依巴克区","6501","3","Y","3" +"650104","新市区","6501","3","Y","4" +"650105","水磨沟区","6501","3","Y","5" +"650106","头屯河区","6501","3","Y","6" +"650107","达坂城区","6501","3","Y","7" +"650109","米东区","6501","3","Y","8" +"650121","乌鲁木齐县","6501","3","Y","9" +"650173","甘泉堡区","6501","3","Y","10" +"650201","市辖区","6502","3","Y","1" +"650202","独山子区","6502","3","Y","2" +"650203","克拉玛依区","6502","3","Y","3" +"650204","白碱滩区","6502","3","Y","4" +"650205","乌尔禾区","6502","3","Y","5" +"650402","高昌区","6504","3","Y","1" +"650421","鄯善县","6504","3","Y","2" +"650422","托克逊县","6504","3","Y","3" +"650502","伊州区","6505","3","Y","1" +"650521","巴里坤哈萨克自治县","6505","3","Y","2" +"650522","伊吾县","6505","3","Y","3" +"652301","昌吉市","6523","3","Y","1" +"652302","阜康市","6523","3","Y","2" +"652323","呼图壁县","6523","3","Y","3" +"652324","玛纳斯县","6523","3","Y","4" +"652325","奇台县","6523","3","Y","5" +"652327","吉木萨尔县","6523","3","Y","6" +"652328","木垒哈萨克自治县","6523","3","Y","7" +"652371","准东公司","6523","3","Y","8" +"652701","博乐市","6527","3","Y","1" +"652702","阿拉山口市","6527","3","Y","2" +"652722","精河县","6527","3","Y","3" +"652723","温泉县","6527","3","Y","4" +"652801","库尔勒市","6528","3","Y","1" +"652822","轮台县","6528","3","Y","2" +"652823","尉犁县","6528","3","Y","3" +"652824","若羌县","6528","3","Y","4" +"652825","且末县","6528","3","Y","5" +"652826","焉耆回族自治县","6528","3","Y","6" +"652827","和静县","6528","3","Y","7" +"652828","和硕县","6528","3","Y","8" +"652829","博湖县","6528","3","Y","9" +"652901","阿克苏市","6529","3","Y","1" +"652922","温宿县","6529","3","Y","2" +"652923","库车县","6529","3","Y","3" +"652924","沙雅县","6529","3","Y","4" +"652925","新和县","6529","3","Y","5" +"652926","拜城县","6529","3","Y","6" +"652927","乌什县","6529","3","Y","7" +"652928","阿瓦提县","6529","3","Y","8" +"652929","柯坪县","6529","3","Y","9" +"653001","阿图什市","6530","3","Y","1" +"653022","阿克陶县","6530","3","Y","2" +"653023","阿合奇县","6530","3","Y","3" +"653024","乌恰县","6530","3","Y","4" +"653101","喀什市","6531","3","Y","1" +"653121","疏附县","6531","3","Y","2" +"653122","疏勒县","6531","3","Y","3" +"653123","英吉沙县","6531","3","Y","4" +"653124","泽普县","6531","3","Y","5" +"653125","莎车县","6531","3","Y","6" +"653126","叶城县","6531","3","Y","7" +"653127","麦盖提县","6531","3","Y","8" +"653128","岳普湖县","6531","3","Y","9" +"653129","伽师县","6531","3","Y","10" +"653130","巴楚县","6531","3","Y","11" +"653131","塔什库尔干塔吉克自治县","6531","3","Y","12" +"653201","和田市","6532","3","Y","1" +"653221","和田县","6532","3","Y","2" +"653222","墨玉县","6532","3","Y","3" +"653223","皮山县","6532","3","Y","4" +"653224","洛浦县","6532","3","Y","5" +"653225","策勒县","6532","3","Y","6" +"653226","于田县","6532","3","Y","7" +"653227","民丰县","6532","3","Y","8" +"654002","伊宁市","6540","3","Y","1" +"654003","奎屯市","6540","3","Y","2" +"654004","霍尔果斯市","6540","3","Y","3" +"654021","伊宁县","6540","3","Y","4" +"654022","察布查尔锡伯自治县","6540","3","Y","5" +"654023","霍城县","6540","3","Y","6" +"654024","巩留县","6540","3","Y","7" +"654025","新源县","6540","3","Y","8" +"654026","昭苏县","6540","3","Y","9" +"654027","特克斯县","6540","3","Y","10" +"654028","尼勒克县","6540","3","Y","11" +"654072","都拉塔口岸","6540","3","Y","12" +"654201","塔城市","6542","3","Y","1" +"654202","乌苏市","6542","3","Y","2" +"654221","额敏县","6542","3","Y","3" +"654223","沙湾县","6542","3","Y","4" +"654224","托里县","6542","3","Y","5" +"654225","裕民县","6542","3","Y","6" +"654226","和布克赛尔蒙古自治县","6542","3","Y","7" +"654301","阿勒泰市","6543","3","Y","1" +"654321","布尔津县","6543","3","Y","2" +"654322","富蕴县","6543","3","Y","3" +"654323","福海县","6543","3","Y","4" +"654324","哈巴河县","6543","3","Y","5" +"654325","青河县","6543","3","Y","6" +"654326","吉木乃县","6543","3","Y","7" +"6601","第一师","66","2","Y","1" +"6602","第二师","66","2","Y","2" +"6603","第三师","66","2","Y","3" +"6604","第四师","66","2","Y","4" +"6605","第五师","66","2","Y","5" +"6606","第六师","66","2","Y","6" +"6607","第七师","66","2","Y","7" +"6608","第八师","66","2","Y","8" +"6609","第九师","66","2","Y","9" +"6610","第十师","66","2","Y","10" +"6611","第十一师","66","2","Y","11" +"6612","第十二师","66","2","Y","12" +"6613","第十三师","66","2","Y","13" +"6614","第十四师","66","2","Y","14" +"6615","兵直","66","2","Y","15" +"660102","二团","6601","3","Y","1" +"660103","三团","6601","3","Y","2" +"660104","四团","6601","3","Y","3" +"660106","六团","6601","3","Y","4" +"660107","七团","6601","3","Y","5" +"660108","八团","6601","3","Y","6" +"660110","十团","6601","3","Y","7" +"660111","十一团","6601","3","Y","8" +"660112","十二团","6601","3","Y","9" +"660113","十三团","6601","3","Y","10" +"660114","十四团","6601","3","Y","11" +"660116","十六团","6601","3","Y","12" +"660119","沙水处","6601","3","Y","13" +"660120","托喀依乡","6601","3","Y","14" +"660126","阿拉尔市直单位","6601","3","Y","15" +"660129","农一师医院","6601","3","Y","16" +"660130","银海事务管理中心","6601","3","Y","17" +"660131","青松建化(集团)股份有限公司","6601","3","Y","18" +"660132","电力公司","6601","3","Y","19" +"660133","西工业园区","6601","3","Y","20" +"660136","幸福农场","6601","3","Y","21" +"660139","九团","6601","3","Y","22" +"660141","幸福街道办","6601","3","Y","23" +"660142","金银川街道办","6601","3","Y","24" +"660143","青松路街道办","6601","3","Y","25" +"660190","阿拉尔经济技术开发区","6601","3","Y","26" +"660201","二十一团","6602","3","Y","1" +"660202","二十二团","6602","3","Y","2" +"660203","二十三团","6602","3","Y","3" +"660204","二十四团","6602","3","Y","4" +"660205","二十五团","6602","3","Y","5" +"660207","二十七团","6602","3","Y","6" +"660208","二十八团","6602","3","Y","7" +"660209","二十九团","6602","3","Y","8" +"660210","三十团","6602","3","Y","9" +"660211","三十一团","6602","3","Y","10" +"660212","三十三团","6602","3","Y","11" +"660213","三十四团","6602","3","Y","12" +"660215","二二三团","6602","3","Y","13" +"660216","师直单位","6602","3","Y","14" +"660219","三十八团","6602","3","Y","15" +"660220","明祥社区","6602","3","Y","16" +"660223","三十七团","6602","3","Y","17" +"660224","铁门关市迎宾街道办事处","6602","3","Y","18" +"660301","四十一团","6603","3","Y","1" +"660302","四十二团","6603","3","Y","2" +"660304","四十四团","6603","3","Y","3" +"660305","四十五团","6603","3","Y","4" +"660306","四十六团","6603","3","Y","5" +"660307","四十八团","6603","3","Y","6" +"660308","四十九团","6603","3","Y","7" +"660310","五十一团","6603","3","Y","8" +"660312","五十三团","6603","3","Y","9" +"660313","伽师农场","6603","3","Y","10" +"660314","东风农场","6603","3","Y","11" +"660315","红旗农场","6603","3","Y","12" +"660316","叶城二牧场","6603","3","Y","13" +"660317","托云牧场","6603","3","Y","14" +"660323","齐干却勒街道办","6603","3","Y","15" +"660324","师直单位","6603","3","Y","16" +"660325","五十四团","6603","3","Y","17" +"660326","前海街道办","6603","3","Y","18" +"660401","六十一团","6604","3","Y","1" +"660402","六十二团","6604","3","Y","2" +"660403","六十三团","6604","3","Y","3" +"660404","六十四团","6604","3","Y","4" +"660406","六十六团","6604","3","Y","5" +"660407","六十七团","6604","3","Y","6" +"660408","六十八团","6604","3","Y","7" +"660409","六十九团","6604","3","Y","8" +"660410","七十团","6604","3","Y","9" +"660411","七十一团","6604","3","Y","10" +"660412","七十二团","6604","3","Y","11" +"660413","七十三团","6604","3","Y","12" +"660414","七十四团","6604","3","Y","13" +"660415","七十五团","6604","3","Y","14" +"660416","七十六团","6604","3","Y","15" +"660417","七十七团","6604","3","Y","16" +"660418","七十八团","6604","3","Y","17" +"660419","七十九团","6604","3","Y","18" +"660420","师直单位","6604","3","Y","19" +"660421","伊犁青松南岗建材有限责任公司","6604","3","Y","20" +"660422","新疆南岗投资有限责任公司","6604","3","Y","21" +"660423","新疆宏远建设集团有限公司","6604","3","Y","22" +"660424","第四师公安局","6604","3","Y","23" +"660425","三十六团","6604","3","Y","24" +"660501","八十一团","6605","3","Y","1" +"660503","八十三团","6605","3","Y","2" +"660504","八十四团","6605","3","Y","3" +"660506","八十六团","6605","3","Y","4" +"660507","八十七团","6605","3","Y","5" +"660508","八十八团","6605","3","Y","6" +"660509","八十九团","6605","3","Y","7" +"660510","九十团","6605","3","Y","8" +"660511","九十一团","6605","3","Y","9" +"660512","师直单位","6605","3","Y","10" +"660601","一○一团","6606","3","Y","1" +"660602","一○二团","6606","3","Y","2" +"660603","一○三团","6606","3","Y","3" +"660604","一○五团","6606","3","Y","4" +"660605","一○六团","6606","3","Y","5" +"660606","一○七团","6606","3","Y","6" +"660607","一○八团","6606","3","Y","7" +"660608","一○九团","6606","3","Y","8" +"660609","一一○团","6606","3","Y","9" +"660610","一一一团","6606","3","Y","10" +"660611","芳草湖农场","6606","3","Y","11" +"660612","新湖农场","6606","3","Y","12" +"660613","军户农场","6606","3","Y","13" +"660614","共青团农场","6606","3","Y","14" +"660615","土墩子农场","6606","3","Y","15" +"660617","红旗农场","6606","3","Y","16" +"660618","奇台农场","6606","3","Y","17" +"660619","北塔山牧场","6606","3","Y","18" +"660620","六运湖农场","6606","3","Y","19" +"660621","师直单位","6606","3","Y","20" +"660622","五家渠市","6606","3","Y","21" +"660623","五十团","6606","3","Y","22" +"660701","一二三团","6607","3","Y","1" +"660702","一二四团","6607","3","Y","2" +"660703","一二五团","6607","3","Y","3" +"660704","一二六团","6607","3","Y","4" +"660705","一二七团","6607","3","Y","5" +"660706","一二八团","6607","3","Y","6" +"660707","一二九团","6607","3","Y","7" +"660708","一三○团","6607","3","Y","8" +"660709","一三一团","6607","3","Y","9" +"660710","一三七团","6607","3","Y","10" +"660711","师直单位","6607","3","Y","11" +"660713","一团","6607","3","Y","12" +"660801","一二一团","6608","3","Y","1" +"660804","一三三团","6608","3","Y","2" +"660805","一三四团","6608","3","Y","3" +"660806","一三六团","6608","3","Y","4" +"660807","一四一团","6608","3","Y","5" +"660808","一四二团","6608","3","Y","6" +"660809","一四三团","6608","3","Y","7" +"660810","一四四团","6608","3","Y","8" +"660811","一四七团","6608","3","Y","9" +"660812","一四八团","6608","3","Y","10" +"660813","一四九团","6608","3","Y","11" +"660814","一五零团","6608","3","Y","12" +"660815","一五二团","6608","3","Y","13" +"660816","石总场","6608","3","Y","14" +"660817","巴管处","6608","3","Y","15" +"660818","老街办","6608","3","Y","16" +"660819","东城办","6608","3","Y","17" +"660820","向阳办","6608","3","Y","18" +"660821","红山办","6608","3","Y","19" +"660822","玛管处","6608","3","Y","20" +"660823","新城办","6608","3","Y","21" +"660824","石河子镇","6608","3","Y","22" +"660827","高新区管委会","6608","3","Y","23" +"660901","一六一团","6609","3","Y","1" +"660902","一六二团","6609","3","Y","2" +"660903","一六三团","6609","3","Y","3" +"660904","一六四团","6609","3","Y","4" +"660905","一六五团","6609","3","Y","5" +"660906","一六六团","6609","3","Y","6" +"660907","一六七团","6609","3","Y","7" +"660908","一六八团","6609","3","Y","8" +"660909","一六九团","6609","3","Y","9" +"660910","一七○团","6609","3","Y","10" +"660911","团结农场","6609","3","Y","11" +"660912","师直单位","6609","3","Y","12" +"661001","一八一团","6610","3","Y","1" +"661002","一八二团","6610","3","Y","2" +"661003","一八三团","6610","3","Y","3" +"661004","一八四团","6610","3","Y","4" +"661005","一八五团","6610","3","Y","5" +"661006","一八六团","6610","3","Y","6" +"661007","一八七团","6610","3","Y","7" +"661008","一八八团","6610","3","Y","8" +"661009","屯南社区","6610","3","Y","9" +"661010","幸福社区","6610","3","Y","10" +"661014","阳光社区","6610","3","Y","11" +"661015","得仁社区","6610","3","Y","12" +"661101","建工集团","6611","3","Y","1" +"661102","建咨集团","6611","3","Y","2" +"661103","师直单位","6611","3","Y","3" +"661104","德坤建材公司","6611","3","Y","4" +"661121","五团","6611","3","Y","5" +"661201","一0四团","6612","3","Y","1" +"661202","三坪农场","6612","3","Y","2" +"661203","五一农场","6612","3","Y","3" +"661204","头屯河农场","6612","3","Y","4" +"661205","西山农场","6612","3","Y","5" +"661206","二二一团","6612","3","Y","6" +"661207","师直单位","6612","3","Y","7" +"661208","国资(集团)公司","6612","3","Y","8" +"661209","天恒基投资(集团)有限公司","6612","3","Y","9" +"661210","新疆九鼎农业(集团)有限公司","6612","3","Y","10" +"661211","中瑞恒远商贸(集团)公司","6612","3","Y","11" +"661212","二二二团","6612","3","Y","12" +"661213","新疆仲颐凯业园林有限公司","6612","3","Y","13" +"661215","新疆恒城鼎盛建设工程有限责任公司","6612","3","Y","14" +"661216","新疆天润乳业股份有限公司","6612","3","Y","15" +"661217","新疆昌平矿业有限责任公司","6612","3","Y","16" +"661218","四十七团","6612","3","Y","17" +"661301","红星一场","6613","3","Y","1" +"661302","红星二场","6613","3","Y","2" +"661303","红星四场","6613","3","Y","3" +"661304","火箭农场","6613","3","Y","4" +"661305","黄田农场","6613","3","Y","5" +"661306","柳树泉农场","6613","3","Y","6" +"661307","红山农场","6613","3","Y","7" +"661308","淖毛湖农场","6613","3","Y","8" +"661309","师直单位","6613","3","Y","9" +"661401","皮山农场","6614","3","Y","1" +"661403","一牧场","6614","3","Y","2" +"661404","二二四团","6614","3","Y","3" +"661405","师直单位","6614","3","Y","4" +"661406","二二五团","6614","3","Y","5" +"661502","直辖单位","6615","3","Y","1" diff --git a/ksafepack-admin/src/main/resources/data/ksafepack.sql b/ksafepack-admin/src/main/resources/data/ksafepack.sql new file mode 100644 index 0000000..d36af4e --- /dev/null +++ b/ksafepack-admin/src/main/resources/data/ksafepack.sql @@ -0,0 +1,4819 @@ +/* +Navicat MySQL Data Transfer + +Source Server : 127.0.0.1 +Source Server Version : 50727 +Source Host : 127.0.0.1:3306 +Source Database : ksafepack + +Target Server Type : MYSQL +Target Server Version : 50727 +File Encoding : 65001 + +Date: 2021-11-12 16:43:55 +*/ + +SET FOREIGN_KEY_CHECKS=0; + +-- ---------------------------- +-- Table structure for dt_common_dict +-- ---------------------------- +DROP TABLE IF EXISTS `dt_common_dict`; +CREATE TABLE `dt_common_dict` ( + `id` bigint(11) NOT NULL AUTO_INCREMENT, + `code` varchar(20) NOT NULL, + `name` varchar(50) NOT NULL, + `state` varchar(2) NOT NULL, + `type` varchar(20) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `UK_ef58xi7o50xnoj7pxc1xk1l2i` (`code`) +) ENGINE=InnoDB AUTO_INCREMENT=212638806044708865 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_common_dict +-- ---------------------------- +INSERT INTO `dt_common_dict` VALUES ('1', 'dev-001', 'java', '00', 'dev-langurage', '1604200548535', '1604200612065'); +INSERT INTO `dt_common_dict` VALUES ('212638806044708864', 'sex', '性别', '00', 'sex', '1636341310869', '1636341310869'); + +-- ---------------------------- +-- Table structure for dt_common_district +-- ---------------------------- +DROP TABLE IF EXISTS `dt_common_district`; +CREATE TABLE `dt_common_district` ( + `id` varchar(12) NOT NULL, + `level` int(11) DEFAULT NULL, + `name` varchar(50) NOT NULL, + `orderNumber` int(11) DEFAULT NULL, + `pId` varchar(12) NOT NULL, + `state` varchar(2) NOT NULL, + `residents` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_common_district +-- ---------------------------- +INSERT INTO `dt_common_district` VALUES ('11', '1', '北京市', '1', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('1101', '2', '市辖区', '1', '11', '00', '2000000'); +INSERT INTO `dt_common_district` VALUES ('110101', '3', '东城区', '1', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110102', '3', '西城区', '2', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110105', '3', '朝阳区', '3', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110106', '3', '丰台区', '4', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110107', '3', '石景山区', '5', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110108', '3', '海淀区', '6', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110109', '3', '门头沟区', '7', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110111', '3', '房山区', '8', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110112', '3', '通州区', '9', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110113', '3', '顺义区', '10', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110114', '3', '昌平区', '11', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110115', '3', '大兴区', '12', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110116', '3', '怀柔区', '13', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110117', '3', '平谷区', '14', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110118', '3', '密云区', '15', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('110119', '3', '延庆区', '16', '1101', '00', null); +INSERT INTO `dt_common_district` VALUES ('1102', '2', '县', '1', '11', '00', '10000'); +INSERT INTO `dt_common_district` VALUES ('12', '1', '天津市', '2', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('1201', '2', '市辖区', '1', '12', '00', null); +INSERT INTO `dt_common_district` VALUES ('120101', '3', '和平区', '1', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120102', '3', '河东区', '2', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120103', '3', '河西区', '3', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120104', '3', '南开区', '4', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120105', '3', '河北区', '5', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120106', '3', '红桥区', '6', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120110', '3', '东丽区', '7', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120111', '3', '西青区', '8', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120112', '3', '津南区', '9', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120113', '3', '北辰区', '10', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120114', '3', '武清区', '11', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120115', '3', '宝坻区', '12', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120116', '3', '滨海新区', '13', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120117', '3', '宁河区', '14', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120118', '3', '静海区', '15', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('120119', '3', '蓟州区', '16', '1201', '00', null); +INSERT INTO `dt_common_district` VALUES ('1202', '2', '县', '2', '12', '00', null); +INSERT INTO `dt_common_district` VALUES ('13', '1', '河北省', '3', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('1301', '2', '石家庄市', '1', '13', '00', null); +INSERT INTO `dt_common_district` VALUES ('130101', '3', '市辖区', '1', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130102', '3', '长安区', '2', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130104', '3', '桥西区', '3', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130105', '3', '新华区', '4', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130106', '3', '开发区', '5', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130107', '3', '井陉矿区', '6', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130108', '3', '裕华区', '7', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130109', '3', '藁城区', '8', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130110', '3', '鹿泉区', '9', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130111', '3', '栾城区', '10', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130121', '3', '井陉县', '11', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130123', '3', '正定县', '12', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130125', '3', '行唐县', '13', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130126', '3', '灵寿县', '14', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130127', '3', '高邑县', '15', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130128', '3', '深泽县', '16', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130129', '3', '赞皇县', '17', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130130', '3', '无极县', '18', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130131', '3', '平山县', '19', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130132', '3', '元氏县', '20', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130133', '3', '赵县', '21', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130171', '3', '正定新区', '22', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130172', '3', '石家庄市循环工业园区', '23', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130181', '3', '辛集市', '24', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130183', '3', '晋州市', '25', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('130184', '3', '新乐市', '26', '1301', '00', null); +INSERT INTO `dt_common_district` VALUES ('1302', '2', '唐山市', '2', '13', '00', null); +INSERT INTO `dt_common_district` VALUES ('130201', '3', '市辖区', '1', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130202', '3', '路南区', '2', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130203', '3', '路北区', '3', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130204', '3', '古冶区', '4', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130205', '3', '开平区', '5', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130207', '3', '丰南区', '6', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130208', '3', '丰润区', '7', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130209', '3', '曹妃甸区', '8', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130223', '3', '滦县', '9', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130224', '3', '滦南县', '10', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130225', '3', '乐亭县', '11', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130227', '3', '迁西县', '12', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130229', '3', '玉田县', '13', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130272', '3', '海港经济开发区', '14', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130281', '3', '遵化市', '15', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130283', '3', '迁安市', '16', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130291', '3', '芦台经济技术开发区', '17', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130292', '3', '汉沽管理区', '18', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130293', '3', '高新技术开发区', '19', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('130294', '3', '南堡开发区', '20', '1302', '00', null); +INSERT INTO `dt_common_district` VALUES ('1303', '2', '秦皇岛市', '3', '13', '00', null); +INSERT INTO `dt_common_district` VALUES ('130301', '3', '市辖区', '1', '1303', '00', null); +INSERT INTO `dt_common_district` VALUES ('130302', '3', '海港区', '2', '1303', '00', null); +INSERT INTO `dt_common_district` VALUES ('130303', '3', '山海关区', '3', '1303', '00', null); +INSERT INTO `dt_common_district` VALUES ('130304', '3', '北戴河区', '4', '1303', '00', null); +INSERT INTO `dt_common_district` VALUES ('130306', '3', '抚宁区', '5', '1303', '00', null); +INSERT INTO `dt_common_district` VALUES ('130321', '3', '青龙满族自治县', '6', '1303', '00', null); +INSERT INTO `dt_common_district` VALUES ('130322', '3', '昌黎县', '7', '1303', '00', null); +INSERT INTO `dt_common_district` VALUES ('130324', '3', '卢龙县', '8', '1303', '00', null); +INSERT INTO `dt_common_district` VALUES ('130325', '3', '秦皇岛开发区', '9', '1303', '00', null); +INSERT INTO `dt_common_district` VALUES ('130326', '3', '北戴河新区', '10', '1303', '00', null); +INSERT INTO `dt_common_district` VALUES ('1304', '2', '邯郸市', '4', '13', '00', null); +INSERT INTO `dt_common_district` VALUES ('130401', '3', '市辖区', '1', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130402', '3', '邯山区', '2', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130403', '3', '丛台区', '3', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130404', '3', '复兴区', '4', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130406', '3', '峰峰矿区', '5', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130407', '3', '肥乡区', '6', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130408', '3', '永年区', '7', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130423', '3', '临漳县', '8', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130424', '3', '成安县', '9', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130425', '3', '大名县', '10', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130426', '3', '涉县', '11', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130427', '3', '磁县', '12', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130430', '3', '邱县', '13', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130431', '3', '鸡泽县', '14', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130432', '3', '广平县', '15', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130433', '3', '馆陶县', '16', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130434', '3', '魏县', '17', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130435', '3', '曲周县', '18', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130472', '3', '邯郸经济开发区', '19', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130473', '3', '冀南新区', '20', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('130481', '3', '武安市', '21', '1304', '00', null); +INSERT INTO `dt_common_district` VALUES ('1305', '2', '邢台市', '5', '13', '00', null); +INSERT INTO `dt_common_district` VALUES ('130501', '3', '市辖区', '1', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130502', '3', '桥东区', '2', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130503', '3', '桥西区', '3', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130504', '3', '高开区', '4', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130521', '3', '邢台县', '5', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130522', '3', '临城县', '6', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130523', '3', '内丘县', '7', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130524', '3', '柏乡县', '8', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130525', '3', '隆尧县', '9', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130526', '3', '任县', '10', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130527', '3', '南和县', '11', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130528', '3', '宁晋县', '12', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130529', '3', '巨鹿县', '13', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130530', '3', '新河县', '14', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130531', '3', '广宗县', '15', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130532', '3', '平乡县', '16', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130533', '3', '威县', '17', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130534', '3', '清河县', '18', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130535', '3', '临西县', '19', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130581', '3', '南宫市', '20', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('130582', '3', '沙河市', '21', '1305', '00', null); +INSERT INTO `dt_common_district` VALUES ('1306', '2', '保定市', '6', '13', '00', null); +INSERT INTO `dt_common_district` VALUES ('130601', '3', '市辖区', '1', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130602', '3', '竞秀区', '2', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130606', '3', '莲池区', '3', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130607', '3', '满城区', '4', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130608', '3', '清苑区', '5', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130609', '3', '徐水区', '6', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130623', '3', '涞水县', '7', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130624', '3', '阜平县', '8', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130626', '3', '定兴县', '9', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130627', '3', '唐县', '10', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130628', '3', '高阳县', '11', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130630', '3', '涞源县', '12', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130631', '3', '望都县', '13', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130633', '3', '易县', '14', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130634', '3', '曲阳县', '15', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130635', '3', '蠡县', '16', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130636', '3', '顺平县', '17', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130637', '3', '博野县', '18', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130671', '3', '白沟新城管委会', '19', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130672', '3', '保定国家高新技术产业开发区管理委员会', '20', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130681', '3', '涿州市', '21', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130682', '3', '定州市', '22', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130683', '3', '安国市', '23', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('130684', '3', '高碑店市', '24', '1306', '00', null); +INSERT INTO `dt_common_district` VALUES ('1307', '2', '张家口市', '7', '13', '00', null); +INSERT INTO `dt_common_district` VALUES ('130701', '3', '市辖区', '1', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130702', '3', '桥东区', '2', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130703', '3', '桥西区', '3', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130705', '3', '宣化区', '4', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130706', '3', '下花园区', '5', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130708', '3', '万全区', '6', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130709', '3', '崇礼区', '7', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130722', '3', '张北县', '8', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130723', '3', '康保县', '9', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130724', '3', '沽源县', '10', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130725', '3', '尚义县', '11', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130726', '3', '蔚县', '12', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130727', '3', '阳原县', '13', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130728', '3', '怀安县', '14', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130730', '3', '怀来县', '15', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130731', '3', '涿鹿县', '16', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130732', '3', '赤城县', '17', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130734', '3', '察北管理区', '18', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130735', '3', '塞北管理区', '19', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('130736', '3', '经济开发区', '20', '1307', '00', null); +INSERT INTO `dt_common_district` VALUES ('1308', '2', '承德市', '8', '13', '00', null); +INSERT INTO `dt_common_district` VALUES ('130801', '3', '市辖区', '1', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('130802', '3', '双桥区', '2', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('130803', '3', '双滦区', '3', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('130804', '3', '鹰手营子矿区', '4', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('130821', '3', '承德县', '5', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('130822', '3', '兴隆县', '6', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('130824', '3', '滦平县', '7', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('130825', '3', '隆化县', '8', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('130826', '3', '丰宁满族自治县', '9', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('130827', '3', '宽城满族自治县', '10', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('130828', '3', '围场满族蒙古族自治县', '11', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('130871', '3', '高新技术开发区', '12', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('130881', '3', '平泉市', '13', '1308', '00', null); +INSERT INTO `dt_common_district` VALUES ('1309', '2', '沧州市', '9', '13', '00', null); +INSERT INTO `dt_common_district` VALUES ('130901', '3', '市辖区', '1', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130902', '3', '新华区', '2', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130903', '3', '运河区', '3', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130921', '3', '沧县', '4', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130922', '3', '青县', '5', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130923', '3', '东光县', '6', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130924', '3', '海兴县', '7', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130925', '3', '盐山县', '8', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130926', '3', '肃宁县', '9', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130927', '3', '南皮县', '10', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130928', '3', '吴桥县', '11', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130929', '3', '献县', '12', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130930', '3', '孟村回族自治县', '13', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130971', '3', '中捷农场', '14', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130972', '3', '南大港农场', '15', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130973', '3', '开发区', '16', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130974', '3', '港城开发区', '17', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130981', '3', '泊头市', '18', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130982', '3', '任丘市', '19', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130983', '3', '黄骅市', '20', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('130984', '3', '河间市', '21', '1309', '00', null); +INSERT INTO `dt_common_district` VALUES ('1310', '2', '廊坊市', '10', '13', '00', null); +INSERT INTO `dt_common_district` VALUES ('131001', '3', '市辖区', '1', '1310', '00', null); +INSERT INTO `dt_common_district` VALUES ('131002', '3', '安次区', '2', '1310', '00', null); +INSERT INTO `dt_common_district` VALUES ('131003', '3', '广阳区', '3', '1310', '00', null); +INSERT INTO `dt_common_district` VALUES ('131022', '3', '固安县', '4', '1310', '00', null); +INSERT INTO `dt_common_district` VALUES ('131023', '3', '永清县', '5', '1310', '00', null); +INSERT INTO `dt_common_district` VALUES ('131024', '3', '香河县', '6', '1310', '00', null); +INSERT INTO `dt_common_district` VALUES ('131025', '3', '大城县', '7', '1310', '00', null); +INSERT INTO `dt_common_district` VALUES ('131026', '3', '文安县', '8', '1310', '00', null); +INSERT INTO `dt_common_district` VALUES ('131028', '3', '大厂回族自治县', '9', '1310', '00', null); +INSERT INTO `dt_common_district` VALUES ('131071', '3', '开发区', '10', '1310', '00', null); +INSERT INTO `dt_common_district` VALUES ('131081', '3', '霸州市', '11', '1310', '00', null); +INSERT INTO `dt_common_district` VALUES ('131082', '3', '三河市', '12', '1310', '00', null); +INSERT INTO `dt_common_district` VALUES ('1311', '2', '衡水市', '11', '13', '00', null); +INSERT INTO `dt_common_district` VALUES ('131101', '3', '市辖区', '1', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131102', '3', '桃城区', '2', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131103', '3', '冀州区', '3', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131121', '3', '枣强县', '4', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131122', '3', '武邑县', '5', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131123', '3', '武强县', '6', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131124', '3', '饶阳县', '7', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131125', '3', '安平县', '8', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131126', '3', '故城县', '9', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131127', '3', '景县', '10', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131128', '3', '阜城县', '11', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131182', '3', '深州市', '12', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131191', '3', '滨湖新区', '13', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('131192', '3', '工业新区', '14', '1311', '00', null); +INSERT INTO `dt_common_district` VALUES ('1331', '2', '雄安新区', '12', '13', '00', null); +INSERT INTO `dt_common_district` VALUES ('133121', '3', '雄县', '1', '1331', '00', null); +INSERT INTO `dt_common_district` VALUES ('133122', '3', '容城县', '2', '1331', '00', null); +INSERT INTO `dt_common_district` VALUES ('133123', '3', '安新县', '3', '1331', '00', null); +INSERT INTO `dt_common_district` VALUES ('14', '1', '山西省', '4', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('1401', '2', '太原市', '1', '14', '00', null); +INSERT INTO `dt_common_district` VALUES ('140101', '3', '市辖区', '1', '1401', '00', null); +INSERT INTO `dt_common_district` VALUES ('140105', '3', '小店区', '2', '1401', '00', null); +INSERT INTO `dt_common_district` VALUES ('140106', '3', '迎泽区', '3', '1401', '00', null); +INSERT INTO `dt_common_district` VALUES ('140107', '3', '杏花岭区', '4', '1401', '00', null); +INSERT INTO `dt_common_district` VALUES ('140108', '3', '尖草坪区', '5', '1401', '00', null); +INSERT INTO `dt_common_district` VALUES ('140109', '3', '万柏林区', '6', '1401', '00', null); +INSERT INTO `dt_common_district` VALUES ('140110', '3', '晋源区', '7', '1401', '00', null); +INSERT INTO `dt_common_district` VALUES ('140121', '3', '清徐县', '8', '1401', '00', null); +INSERT INTO `dt_common_district` VALUES ('140122', '3', '阳曲县', '9', '1401', '00', null); +INSERT INTO `dt_common_district` VALUES ('140123', '3', '娄烦县', '10', '1401', '00', null); +INSERT INTO `dt_common_district` VALUES ('140181', '3', '古交市', '11', '1401', '00', null); +INSERT INTO `dt_common_district` VALUES ('1402', '2', '大同市', '2', '14', '00', null); +INSERT INTO `dt_common_district` VALUES ('140201', '3', '市辖区', '1', '1402', '00', null); +INSERT INTO `dt_common_district` VALUES ('140211', '3', '南郊区', '2', '1402', '00', null); +INSERT INTO `dt_common_district` VALUES ('140212', '3', '新荣区', '3', '1402', '00', null); +INSERT INTO `dt_common_district` VALUES ('140213', '3', '平城区', '4', '1402', '00', null); +INSERT INTO `dt_common_district` VALUES ('140214', '3', '云冈区', '5', '1402', '00', null); +INSERT INTO `dt_common_district` VALUES ('140215', '3', '云州区', '6', '1402', '00', null); +INSERT INTO `dt_common_district` VALUES ('140221', '3', '阳高县', '7', '1402', '00', null); +INSERT INTO `dt_common_district` VALUES ('140222', '3', '天镇县', '8', '1402', '00', null); +INSERT INTO `dt_common_district` VALUES ('140223', '3', '广灵县', '9', '1402', '00', null); +INSERT INTO `dt_common_district` VALUES ('140224', '3', '灵丘县', '10', '1402', '00', null); +INSERT INTO `dt_common_district` VALUES ('140225', '3', '浑源县', '11', '1402', '00', null); +INSERT INTO `dt_common_district` VALUES ('140226', '3', '左云县', '12', '1402', '00', null); +INSERT INTO `dt_common_district` VALUES ('1403', '2', '阳泉市', '3', '14', '00', null); +INSERT INTO `dt_common_district` VALUES ('140301', '3', '市辖区', '1', '1403', '00', null); +INSERT INTO `dt_common_district` VALUES ('140302', '3', '城区', '2', '1403', '00', null); +INSERT INTO `dt_common_district` VALUES ('140303', '3', '矿区', '3', '1403', '00', null); +INSERT INTO `dt_common_district` VALUES ('140311', '3', '郊区', '4', '1403', '00', null); +INSERT INTO `dt_common_district` VALUES ('140321', '3', '平定县', '5', '1403', '00', null); +INSERT INTO `dt_common_district` VALUES ('140322', '3', '盂县', '6', '1403', '00', null); +INSERT INTO `dt_common_district` VALUES ('1404', '2', '长治市', '4', '14', '00', null); +INSERT INTO `dt_common_district` VALUES ('140401', '3', '市辖区', '1', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('140403', '3', '潞州区', '2', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('140404', '3', '上党区', '3', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('140405', '3', '屯留区', '4', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('140406', '3', '潞城区', '5', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('140423', '3', '襄垣县', '6', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('140425', '3', '平顺县', '7', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('140426', '3', '黎城县', '8', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('140427', '3', '壶关县', '9', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('140428', '3', '长子县', '10', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('140429', '3', '武乡县', '11', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('140430', '3', '沁县', '12', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('140431', '3', '沁源', '13', '1404', '00', null); +INSERT INTO `dt_common_district` VALUES ('1405', '2', '晋城市', '5', '14', '00', null); +INSERT INTO `dt_common_district` VALUES ('140501', '3', '市辖区', '1', '1405', '00', null); +INSERT INTO `dt_common_district` VALUES ('140502', '3', '城区', '2', '1405', '00', null); +INSERT INTO `dt_common_district` VALUES ('140521', '3', '沁水县', '3', '1405', '00', null); +INSERT INTO `dt_common_district` VALUES ('140522', '3', '阳城县', '4', '1405', '00', null); +INSERT INTO `dt_common_district` VALUES ('140524', '3', '陵川县', '5', '1405', '00', null); +INSERT INTO `dt_common_district` VALUES ('140525', '3', '泽州县', '6', '1405', '00', null); +INSERT INTO `dt_common_district` VALUES ('140581', '3', '高平市', '7', '1405', '00', null); +INSERT INTO `dt_common_district` VALUES ('1406', '2', '朔州市', '6', '14', '00', null); +INSERT INTO `dt_common_district` VALUES ('140601', '3', '市辖区', '1', '1406', '00', null); +INSERT INTO `dt_common_district` VALUES ('140602', '3', '朔城区', '2', '1406', '00', null); +INSERT INTO `dt_common_district` VALUES ('140603', '3', '平鲁区', '3', '1406', '00', null); +INSERT INTO `dt_common_district` VALUES ('140621', '3', '山阴县', '4', '1406', '00', null); +INSERT INTO `dt_common_district` VALUES ('140622', '3', '应县', '5', '1406', '00', null); +INSERT INTO `dt_common_district` VALUES ('140623', '3', '右玉县', '6', '1406', '00', null); +INSERT INTO `dt_common_district` VALUES ('140624', '3', '怀仁县', '7', '1406', '00', null); +INSERT INTO `dt_common_district` VALUES ('1407', '2', '晋中市', '7', '14', '00', null); +INSERT INTO `dt_common_district` VALUES ('140701', '3', '市辖区', '1', '1407', '00', null); +INSERT INTO `dt_common_district` VALUES ('140702', '3', '榆次区', '2', '1407', '00', null); +INSERT INTO `dt_common_district` VALUES ('140721', '3', '榆社县', '3', '1407', '00', null); +INSERT INTO `dt_common_district` VALUES ('140722', '3', '左权县', '4', '1407', '00', null); +INSERT INTO `dt_common_district` VALUES ('140723', '3', '和顺县', '5', '1407', '00', null); +INSERT INTO `dt_common_district` VALUES ('140724', '3', '昔阳县', '6', '1407', '00', null); +INSERT INTO `dt_common_district` VALUES ('140725', '3', '寿阳县', '7', '1407', '00', null); +INSERT INTO `dt_common_district` VALUES ('140726', '3', '太谷县', '8', '1407', '00', null); +INSERT INTO `dt_common_district` VALUES ('140727', '3', '祁县', '9', '1407', '00', null); +INSERT INTO `dt_common_district` VALUES ('140728', '3', '平遥县', '10', '1407', '00', null); +INSERT INTO `dt_common_district` VALUES ('140729', '3', '灵石县', '11', '1407', '00', null); +INSERT INTO `dt_common_district` VALUES ('140781', '3', '介休市', '12', '1407', '00', null); +INSERT INTO `dt_common_district` VALUES ('1408', '2', '运城市', '8', '14', '00', null); +INSERT INTO `dt_common_district` VALUES ('140801', '3', '市辖区', '1', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140802', '3', '盐湖区', '2', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140821', '3', '临猗县', '3', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140822', '3', '万荣县', '4', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140823', '3', '闻喜县', '5', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140824', '3', '稷山县', '6', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140825', '3', '新绛县', '7', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140826', '3', '绛县', '8', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140827', '3', '垣曲县', '9', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140828', '3', '夏县', '10', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140829', '3', '平陆县', '11', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140830', '3', '芮城县', '12', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140881', '3', '永济市', '13', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('140882', '3', '河津市', '14', '1408', '00', null); +INSERT INTO `dt_common_district` VALUES ('1409', '2', '忻州市', '9', '14', '00', null); +INSERT INTO `dt_common_district` VALUES ('140901', '3', '市辖区', '1', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140902', '3', '忻府区', '2', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140921', '3', '定襄县', '3', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140922', '3', '五台县', '4', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140923', '3', '代县', '5', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140924', '3', '繁峙县', '6', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140925', '3', '宁武县', '7', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140926', '3', '静乐县', '8', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140927', '3', '神池', '9', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140928', '3', '五寨县', '10', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140929', '3', '岢岚县', '11', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140930', '3', '河曲县', '12', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140931', '3', '保德县', '13', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140932', '3', '偏关县', '14', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140971', '3', '五台山风景区管委会', '15', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('140981', '3', '原平市', '16', '1409', '00', null); +INSERT INTO `dt_common_district` VALUES ('1410', '2', '临汾市', '10', '14', '00', null); +INSERT INTO `dt_common_district` VALUES ('141001', '3', '市辖区', '1', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141002', '3', '尧都区', '2', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141021', '3', '曲沃县', '3', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141022', '3', '翼城县', '4', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141023', '3', '襄汾县', '5', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141024', '3', '洪洞县', '6', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141025', '3', '古县', '7', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141026', '3', '安泽县', '8', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141027', '3', '浮山县', '9', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141028', '3', '吉县', '10', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141029', '3', '乡宁县', '11', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141030', '3', '大宁县', '12', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141031', '3', '隰县', '13', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141032', '3', '永和县', '14', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141033', '3', '蒲县', '15', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141034', '3', '汾西县', '16', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141081', '3', '侯马市', '17', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('141082', '3', '霍州市', '18', '1410', '00', null); +INSERT INTO `dt_common_district` VALUES ('1411', '2', '吕梁市', '11', '14', '00', null); +INSERT INTO `dt_common_district` VALUES ('141101', '3', '市辖区', '1', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141102', '3', '离石区', '2', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141121', '3', '文水县', '3', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141122', '3', '交城县', '4', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141123', '3', '兴县', '5', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141124', '3', '临县', '6', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141125', '3', '柳林县', '7', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141126', '3', '石楼县', '8', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141127', '3', '岚县', '9', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141128', '3', '方山县', '10', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141129', '3', '中阳县', '11', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141130', '3', '交口县', '12', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141181', '3', '孝义市', '13', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('141182', '3', '汾阳市', '14', '1411', '00', null); +INSERT INTO `dt_common_district` VALUES ('15', '1', '内蒙古自治区', '5', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('1501', '2', '呼和浩特市', '1', '15', '00', null); +INSERT INTO `dt_common_district` VALUES ('150101', '3', '市辖区', '1', '1501', '00', null); +INSERT INTO `dt_common_district` VALUES ('150102', '3', '新城区', '2', '1501', '00', null); +INSERT INTO `dt_common_district` VALUES ('150103', '3', '回民区', '3', '1501', '00', null); +INSERT INTO `dt_common_district` VALUES ('150104', '3', '玉泉区', '4', '1501', '00', null); +INSERT INTO `dt_common_district` VALUES ('150105', '3', '赛罕区', '5', '1501', '00', null); +INSERT INTO `dt_common_district` VALUES ('150121', '3', '土默特左旗', '6', '1501', '00', null); +INSERT INTO `dt_common_district` VALUES ('150122', '3', '托克托县', '7', '1501', '00', null); +INSERT INTO `dt_common_district` VALUES ('150123', '3', '和林格尔县', '8', '1501', '00', null); +INSERT INTO `dt_common_district` VALUES ('150124', '3', '清水河县', '9', '1501', '00', null); +INSERT INTO `dt_common_district` VALUES ('150125', '3', '武川县', '10', '1501', '00', null); +INSERT INTO `dt_common_district` VALUES ('1502', '2', '包头市', '2', '15', '00', null); +INSERT INTO `dt_common_district` VALUES ('150201', '3', '市辖区', '1', '1502', '00', null); +INSERT INTO `dt_common_district` VALUES ('150202', '3', '东河区', '2', '1502', '00', null); +INSERT INTO `dt_common_district` VALUES ('150203', '3', '昆都仑区', '3', '1502', '00', null); +INSERT INTO `dt_common_district` VALUES ('150204', '3', '青山区', '4', '1502', '00', null); +INSERT INTO `dt_common_district` VALUES ('150205', '3', '石拐区', '5', '1502', '00', null); +INSERT INTO `dt_common_district` VALUES ('150206', '3', '白云矿区', '6', '1502', '00', null); +INSERT INTO `dt_common_district` VALUES ('150207', '3', '九原区', '7', '1502', '00', null); +INSERT INTO `dt_common_district` VALUES ('150208', '3', '稀土高新技术产业开发区', '8', '1502', '00', null); +INSERT INTO `dt_common_district` VALUES ('150221', '3', '土默特右旗', '9', '1502', '00', null); +INSERT INTO `dt_common_district` VALUES ('150222', '3', '固阳县', '10', '1502', '00', null); +INSERT INTO `dt_common_district` VALUES ('150223', '3', '达尔罕茂明安联合旗', '11', '1502', '00', null); +INSERT INTO `dt_common_district` VALUES ('1503', '2', '乌海市', '3', '15', '00', null); +INSERT INTO `dt_common_district` VALUES ('150301', '3', '市辖区', '1', '1503', '00', null); +INSERT INTO `dt_common_district` VALUES ('150302', '3', '海勃湾区', '2', '1503', '00', null); +INSERT INTO `dt_common_district` VALUES ('150303', '3', '海南区', '3', '1503', '00', null); +INSERT INTO `dt_common_district` VALUES ('150304', '3', '乌达区', '4', '1503', '00', null); +INSERT INTO `dt_common_district` VALUES ('1504', '2', '赤峰市', '4', '15', '00', null); +INSERT INTO `dt_common_district` VALUES ('150401', '3', '市辖区', '1', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('150402', '3', '红山区', '2', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('150403', '3', '元宝山区', '3', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('150404', '3', '松山区', '4', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('150421', '3', '阿鲁科尔沁旗', '5', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('150422', '3', '巴林左旗', '6', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('150423', '3', '巴林右旗', '7', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('150424', '3', '林西县', '8', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('150425', '3', '克什克腾旗', '9', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('150426', '3', '翁牛特旗', '10', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('150428', '3', '喀喇沁旗', '11', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('150429', '3', '宁城县', '12', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('150430', '3', '敖汉旗', '13', '1504', '00', null); +INSERT INTO `dt_common_district` VALUES ('1505', '2', '通辽市', '5', '15', '00', null); +INSERT INTO `dt_common_district` VALUES ('150501', '3', '市辖区', '1', '1505', '00', null); +INSERT INTO `dt_common_district` VALUES ('150502', '3', '科尔沁区', '2', '1505', '00', null); +INSERT INTO `dt_common_district` VALUES ('150503', '3', '经济技术开发区', '3', '1505', '00', null); +INSERT INTO `dt_common_district` VALUES ('150521', '3', '科尔沁左翼中旗', '4', '1505', '00', null); +INSERT INTO `dt_common_district` VALUES ('150522', '3', '科尔沁左翼后旗', '5', '1505', '00', null); +INSERT INTO `dt_common_district` VALUES ('150523', '3', '开鲁县', '6', '1505', '00', null); +INSERT INTO `dt_common_district` VALUES ('150524', '3', '库伦旗', '7', '1505', '00', null); +INSERT INTO `dt_common_district` VALUES ('150525', '3', '奈曼旗', '8', '1505', '00', null); +INSERT INTO `dt_common_district` VALUES ('150526', '3', '扎鲁特旗', '9', '1505', '00', null); +INSERT INTO `dt_common_district` VALUES ('150581', '3', '霍林郭勒市', '10', '1505', '00', null); +INSERT INTO `dt_common_district` VALUES ('1506', '2', '鄂尔多斯市', '6', '15', '00', null); +INSERT INTO `dt_common_district` VALUES ('150601', '3', '市辖区', '1', '1506', '00', null); +INSERT INTO `dt_common_district` VALUES ('150602', '3', '东胜区', '2', '1506', '00', null); +INSERT INTO `dt_common_district` VALUES ('150603', '3', '康巴什新区', '3', '1506', '00', null); +INSERT INTO `dt_common_district` VALUES ('150621', '3', '达拉特旗', '4', '1506', '00', null); +INSERT INTO `dt_common_district` VALUES ('150622', '3', '准格尔旗', '5', '1506', '00', null); +INSERT INTO `dt_common_district` VALUES ('150623', '3', '鄂托克前旗', '6', '1506', '00', null); +INSERT INTO `dt_common_district` VALUES ('150624', '3', '鄂托克旗', '7', '1506', '00', null); +INSERT INTO `dt_common_district` VALUES ('150625', '3', '杭锦旗', '8', '1506', '00', null); +INSERT INTO `dt_common_district` VALUES ('150626', '3', '乌审旗', '9', '1506', '00', null); +INSERT INTO `dt_common_district` VALUES ('150627', '3', '伊金霍洛旗', '10', '1506', '00', null); +INSERT INTO `dt_common_district` VALUES ('1507', '2', '呼伦贝尔市', '7', '15', '00', null); +INSERT INTO `dt_common_district` VALUES ('150701', '3', '市辖区', '1', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150702', '3', '海拉尔区', '2', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150721', '3', '阿荣旗', '3', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150722', '3', '莫力达瓦达斡尔族自治旗', '4', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150723', '3', '鄂伦春自治旗', '5', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150724', '3', '鄂温克族自治旗', '6', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150725', '3', '陈巴尔虎旗', '7', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150726', '3', '新巴尔虎左旗', '8', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150727', '3', '新巴尔虎右旗', '9', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150781', '3', '满洲里市', '10', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150782', '3', '牙克石市', '11', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150783', '3', '扎兰屯市', '12', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150784', '3', '额尔古纳市', '13', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('150785', '3', '根河市', '14', '1507', '00', null); +INSERT INTO `dt_common_district` VALUES ('1508', '2', '巴彦淖尔市', '8', '15', '00', null); +INSERT INTO `dt_common_district` VALUES ('150801', '3', '市辖区', '1', '1508', '00', null); +INSERT INTO `dt_common_district` VALUES ('150802', '3', '临河区', '2', '1508', '00', null); +INSERT INTO `dt_common_district` VALUES ('150821', '3', '五原县', '3', '1508', '00', null); +INSERT INTO `dt_common_district` VALUES ('150822', '3', '磴口县', '4', '1508', '00', null); +INSERT INTO `dt_common_district` VALUES ('150823', '3', '乌拉特前旗', '5', '1508', '00', null); +INSERT INTO `dt_common_district` VALUES ('150824', '3', '乌拉特中旗', '6', '1508', '00', null); +INSERT INTO `dt_common_district` VALUES ('150825', '3', '乌拉特后旗', '7', '1508', '00', null); +INSERT INTO `dt_common_district` VALUES ('150826', '3', '杭锦后旗', '8', '1508', '00', null); +INSERT INTO `dt_common_district` VALUES ('1509', '2', '乌兰察布市', '9', '15', '00', null); +INSERT INTO `dt_common_district` VALUES ('150901', '3', '市辖区', '1', '1509', '00', null); +INSERT INTO `dt_common_district` VALUES ('150902', '3', '集宁区', '2', '1509', '00', null); +INSERT INTO `dt_common_district` VALUES ('150921', '3', '卓资县', '3', '1509', '00', null); +INSERT INTO `dt_common_district` VALUES ('150922', '3', '化德县', '4', '1509', '00', null); +INSERT INTO `dt_common_district` VALUES ('150923', '3', '商都县', '5', '1509', '00', null); +INSERT INTO `dt_common_district` VALUES ('150924', '3', '兴和县', '6', '1509', '00', null); +INSERT INTO `dt_common_district` VALUES ('150925', '3', '凉城县', '7', '1509', '00', null); +INSERT INTO `dt_common_district` VALUES ('150926', '3', '察哈尔右翼前旗', '8', '1509', '00', null); +INSERT INTO `dt_common_district` VALUES ('150927', '3', '察哈尔右翼中旗', '9', '1509', '00', null); +INSERT INTO `dt_common_district` VALUES ('150928', '3', '察哈尔右翼后旗', '10', '1509', '00', null); +INSERT INTO `dt_common_district` VALUES ('150929', '3', '四子王旗', '11', '1509', '00', null); +INSERT INTO `dt_common_district` VALUES ('150981', '3', '丰镇市', '12', '1509', '00', null); +INSERT INTO `dt_common_district` VALUES ('1522', '2', '兴安盟', '10', '15', '00', null); +INSERT INTO `dt_common_district` VALUES ('152201', '3', '乌兰浩特市', '1', '1522', '00', null); +INSERT INTO `dt_common_district` VALUES ('152202', '3', '阿尔山市', '2', '1522', '00', null); +INSERT INTO `dt_common_district` VALUES ('152221', '3', '科尔沁右翼前旗', '3', '1522', '00', null); +INSERT INTO `dt_common_district` VALUES ('152222', '3', '科尔沁右翼中旗', '4', '1522', '00', null); +INSERT INTO `dt_common_district` VALUES ('152223', '3', '扎赉特旗', '5', '1522', '00', null); +INSERT INTO `dt_common_district` VALUES ('152224', '3', '突泉县', '6', '1522', '00', null); +INSERT INTO `dt_common_district` VALUES ('1525', '2', '锡林郭勒盟', '11', '15', '00', null); +INSERT INTO `dt_common_district` VALUES ('152501', '3', '二连浩特市', '1', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('152502', '3', '锡林浩特市', '2', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('152522', '3', '阿巴嘎旗', '3', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('152523', '3', '苏尼特左旗', '4', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('152524', '3', '苏尼特右旗', '5', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('152525', '3', '东乌珠穆沁旗', '6', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('152526', '3', '西乌珠穆沁旗', '7', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('152527', '3', '太仆寺旗', '8', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('152528', '3', '镶黄旗', '9', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('152529', '3', '正镶白旗', '10', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('152530', '3', '正蓝旗', '11', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('152531', '3', '多伦县', '12', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('152532', '3', '乌拉盖管理区', '13', '1525', '00', null); +INSERT INTO `dt_common_district` VALUES ('1529', '2', '阿拉善盟', '12', '15', '00', null); +INSERT INTO `dt_common_district` VALUES ('152902', '3', '阿拉善经济开发区', '1', '1529', '00', null); +INSERT INTO `dt_common_district` VALUES ('152903', '3', '孪井滩生态移民示范区', '2', '1529', '00', null); +INSERT INTO `dt_common_district` VALUES ('152921', '3', '阿拉善左旗', '3', '1529', '00', null); +INSERT INTO `dt_common_district` VALUES ('152922', '3', '阿拉善右旗', '4', '1529', '00', null); +INSERT INTO `dt_common_district` VALUES ('152923', '3', '额济纳旗', '5', '1529', '00', null); +INSERT INTO `dt_common_district` VALUES ('21', '1', '辽宁省', '6', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('2101', '2', '沈阳市', '1', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('210101', '3', '市辖区', '1', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210102', '3', '和平区', '2', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210103', '3', '沈河区', '3', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210104', '3', '大东区', '4', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210105', '3', '皇姑区', '5', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210106', '3', '铁西区', '6', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210111', '3', '苏家屯区', '7', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210112', '3', '浑南区', '8', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210113', '3', '沈北新区', '9', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210114', '3', '于洪区', '10', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210115', '3', '辽中区', '11', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210123', '3', '康平县', '12', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210124', '3', '法库县', '13', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('210181', '3', '新民市', '14', '2101', '00', null); +INSERT INTO `dt_common_district` VALUES ('2102', '2', '大连市', '2', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('210201', '3', '市辖区', '1', '2102', '00', null); +INSERT INTO `dt_common_district` VALUES ('210202', '3', '中山区', '2', '2102', '00', null); +INSERT INTO `dt_common_district` VALUES ('210203', '3', '西岗区', '3', '2102', '00', null); +INSERT INTO `dt_common_district` VALUES ('210204', '3', '沙河口区', '4', '2102', '00', null); +INSERT INTO `dt_common_district` VALUES ('210211', '3', '甘井子区', '5', '2102', '00', null); +INSERT INTO `dt_common_district` VALUES ('210212', '3', '旅顺口区', '6', '2102', '00', null); +INSERT INTO `dt_common_district` VALUES ('210213', '3', '金普新区', '7', '2102', '00', null); +INSERT INTO `dt_common_district` VALUES ('210214', '3', '普兰店区', '8', '2102', '00', null); +INSERT INTO `dt_common_district` VALUES ('210224', '3', '长海县', '9', '2102', '00', null); +INSERT INTO `dt_common_district` VALUES ('210281', '3', '瓦房店市', '10', '2102', '00', null); +INSERT INTO `dt_common_district` VALUES ('210283', '3', '庄河市', '11', '2102', '00', null); +INSERT INTO `dt_common_district` VALUES ('2103', '2', '鞍山市', '3', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('210302', '3', '铁东区', '1', '2103', '00', null); +INSERT INTO `dt_common_district` VALUES ('210303', '3', '铁西区', '2', '2103', '00', null); +INSERT INTO `dt_common_district` VALUES ('210304', '3', '立山区', '3', '2103', '00', null); +INSERT INTO `dt_common_district` VALUES ('210311', '3', '千山区', '4', '2103', '00', null); +INSERT INTO `dt_common_district` VALUES ('210321', '3', '台安县', '5', '2103', '00', null); +INSERT INTO `dt_common_district` VALUES ('210323', '3', '岫岩满族自治县', '6', '2103', '00', null); +INSERT INTO `dt_common_district` VALUES ('210381', '3', '海城市', '7', '2103', '00', null); +INSERT INTO `dt_common_district` VALUES ('2104', '2', '抚顺市', '4', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('210401', '3', '市辖区', '1', '2104', '00', null); +INSERT INTO `dt_common_district` VALUES ('210402', '3', '新抚区', '2', '2104', '00', null); +INSERT INTO `dt_common_district` VALUES ('210403', '3', '东洲区', '3', '2104', '00', null); +INSERT INTO `dt_common_district` VALUES ('210404', '3', '望花区', '4', '2104', '00', null); +INSERT INTO `dt_common_district` VALUES ('210411', '3', '顺城区', '5', '2104', '00', null); +INSERT INTO `dt_common_district` VALUES ('210421', '3', '抚顺县', '6', '2104', '00', null); +INSERT INTO `dt_common_district` VALUES ('210422', '3', '新宾满族自治县', '7', '2104', '00', null); +INSERT INTO `dt_common_district` VALUES ('210423', '3', '清原满族自治县', '8', '2104', '00', null); +INSERT INTO `dt_common_district` VALUES ('2105', '2', '本溪市', '5', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('210501', '3', '市辖区', '1', '2105', '00', null); +INSERT INTO `dt_common_district` VALUES ('210502', '3', '平山区', '2', '2105', '00', null); +INSERT INTO `dt_common_district` VALUES ('210503', '3', '溪湖区', '3', '2105', '00', null); +INSERT INTO `dt_common_district` VALUES ('210504', '3', '明山区', '4', '2105', '00', null); +INSERT INTO `dt_common_district` VALUES ('210505', '3', '南芬区', '5', '2105', '00', null); +INSERT INTO `dt_common_district` VALUES ('210521', '3', '本溪满族自治县', '6', '2105', '00', null); +INSERT INTO `dt_common_district` VALUES ('210522', '3', '桓仁满族自治县', '7', '2105', '00', null); +INSERT INTO `dt_common_district` VALUES ('2106', '2', '丹东市', '6', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('210601', '3', '市辖区', '1', '2106', '00', null); +INSERT INTO `dt_common_district` VALUES ('210602', '3', '元宝区', '2', '2106', '00', null); +INSERT INTO `dt_common_district` VALUES ('210603', '3', '振兴区', '3', '2106', '00', null); +INSERT INTO `dt_common_district` VALUES ('210604', '3', '振安区', '4', '2106', '00', null); +INSERT INTO `dt_common_district` VALUES ('210624', '3', '宽甸满族自治县', '5', '2106', '00', null); +INSERT INTO `dt_common_district` VALUES ('210681', '3', '东港市', '6', '2106', '00', null); +INSERT INTO `dt_common_district` VALUES ('210682', '3', '凤城市', '7', '2106', '00', null); +INSERT INTO `dt_common_district` VALUES ('2107', '2', '锦州市', '7', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('210701', '3', '市辖区', '1', '2107', '00', null); +INSERT INTO `dt_common_district` VALUES ('210702', '3', '古塔区', '2', '2107', '00', null); +INSERT INTO `dt_common_district` VALUES ('210703', '3', '凌河区', '3', '2107', '00', null); +INSERT INTO `dt_common_district` VALUES ('210711', '3', '太和区', '4', '2107', '00', null); +INSERT INTO `dt_common_district` VALUES ('210726', '3', '黑山县', '5', '2107', '00', null); +INSERT INTO `dt_common_district` VALUES ('210727', '3', '义县', '6', '2107', '00', null); +INSERT INTO `dt_common_district` VALUES ('210781', '3', '凌海市', '7', '2107', '00', null); +INSERT INTO `dt_common_district` VALUES ('210782', '3', '北镇市', '8', '2107', '00', null); +INSERT INTO `dt_common_district` VALUES ('2108', '2', '营口市', '8', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('210801', '3', '市辖区', '1', '2108', '00', null); +INSERT INTO `dt_common_district` VALUES ('210802', '3', '站前区', '2', '2108', '00', null); +INSERT INTO `dt_common_district` VALUES ('210803', '3', '西市区', '3', '2108', '00', null); +INSERT INTO `dt_common_district` VALUES ('210804', '3', '鲅鱼圈区', '4', '2108', '00', null); +INSERT INTO `dt_common_district` VALUES ('210811', '3', '老边区', '5', '2108', '00', null); +INSERT INTO `dt_common_district` VALUES ('210881', '3', '盖州市', '6', '2108', '00', null); +INSERT INTO `dt_common_district` VALUES ('210882', '3', '大石桥市', '7', '2108', '00', null); +INSERT INTO `dt_common_district` VALUES ('2109', '2', '阜新市', '9', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('210901', '3', '市辖区', '1', '2109', '00', null); +INSERT INTO `dt_common_district` VALUES ('210902', '3', '海州区', '2', '2109', '00', null); +INSERT INTO `dt_common_district` VALUES ('210903', '3', '新邱区', '3', '2109', '00', null); +INSERT INTO `dt_common_district` VALUES ('210904', '3', '太平区', '4', '2109', '00', null); +INSERT INTO `dt_common_district` VALUES ('210905', '3', '清河门区', '5', '2109', '00', null); +INSERT INTO `dt_common_district` VALUES ('210911', '3', '细河区', '6', '2109', '00', null); +INSERT INTO `dt_common_district` VALUES ('210921', '3', '阜新蒙古族自治县', '7', '2109', '00', null); +INSERT INTO `dt_common_district` VALUES ('210922', '3', '彰武县', '8', '2109', '00', null); +INSERT INTO `dt_common_district` VALUES ('2110', '2', '辽阳市', '10', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('211001', '3', '市辖区', '1', '2110', '00', null); +INSERT INTO `dt_common_district` VALUES ('211002', '3', '白塔区', '2', '2110', '00', null); +INSERT INTO `dt_common_district` VALUES ('211003', '3', '文圣区', '3', '2110', '00', null); +INSERT INTO `dt_common_district` VALUES ('211004', '3', '宏伟区', '4', '2110', '00', null); +INSERT INTO `dt_common_district` VALUES ('211005', '3', '弓长岭区', '5', '2110', '00', null); +INSERT INTO `dt_common_district` VALUES ('211011', '3', '太子河区', '6', '2110', '00', null); +INSERT INTO `dt_common_district` VALUES ('211021', '3', '辽阳县', '7', '2110', '00', null); +INSERT INTO `dt_common_district` VALUES ('211081', '3', '灯塔市', '8', '2110', '00', null); +INSERT INTO `dt_common_district` VALUES ('2111', '2', '盘锦市', '11', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('211101', '3', '市辖区', '1', '2111', '00', null); +INSERT INTO `dt_common_district` VALUES ('211102', '3', '双台子区', '2', '2111', '00', null); +INSERT INTO `dt_common_district` VALUES ('211103', '3', '兴隆台区', '3', '2111', '00', null); +INSERT INTO `dt_common_district` VALUES ('211104', '3', '大洼区', '4', '2111', '00', null); +INSERT INTO `dt_common_district` VALUES ('211122', '3', '盘山县', '5', '2111', '00', null); +INSERT INTO `dt_common_district` VALUES ('2112', '2', '铁岭市', '12', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('211201', '3', '市辖区', '1', '2112', '00', null); +INSERT INTO `dt_common_district` VALUES ('211202', '3', '银州区', '2', '2112', '00', null); +INSERT INTO `dt_common_district` VALUES ('211204', '3', '清河区', '3', '2112', '00', null); +INSERT INTO `dt_common_district` VALUES ('211221', '3', '铁岭县', '4', '2112', '00', null); +INSERT INTO `dt_common_district` VALUES ('211223', '3', '西丰县', '5', '2112', '00', null); +INSERT INTO `dt_common_district` VALUES ('211224', '3', '昌图县', '6', '2112', '00', null); +INSERT INTO `dt_common_district` VALUES ('211281', '3', '调兵山市', '7', '2112', '00', null); +INSERT INTO `dt_common_district` VALUES ('211282', '3', '开原市', '8', '2112', '00', null); +INSERT INTO `dt_common_district` VALUES ('2113', '2', '朝阳市', '13', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('211301', '3', '市辖区', '1', '2113', '00', null); +INSERT INTO `dt_common_district` VALUES ('211302', '3', '双塔区', '2', '2113', '00', null); +INSERT INTO `dt_common_district` VALUES ('211303', '3', '龙城区', '3', '2113', '00', null); +INSERT INTO `dt_common_district` VALUES ('211321', '3', '朝阳县', '4', '2113', '00', null); +INSERT INTO `dt_common_district` VALUES ('211322', '3', '建平县', '5', '2113', '00', null); +INSERT INTO `dt_common_district` VALUES ('211324', '3', '喀喇沁左翼蒙古族自治县', '6', '2113', '00', null); +INSERT INTO `dt_common_district` VALUES ('211381', '3', '北票市', '7', '2113', '00', null); +INSERT INTO `dt_common_district` VALUES ('211382', '3', '凌源市', '8', '2113', '00', null); +INSERT INTO `dt_common_district` VALUES ('2114', '2', '葫芦岛市', '14', '21', '00', null); +INSERT INTO `dt_common_district` VALUES ('211401', '3', '市辖区', '1', '2114', '00', null); +INSERT INTO `dt_common_district` VALUES ('211402', '3', '连山区', '2', '2114', '00', null); +INSERT INTO `dt_common_district` VALUES ('211403', '3', '龙港区', '3', '2114', '00', null); +INSERT INTO `dt_common_district` VALUES ('211404', '3', '南票区', '4', '2114', '00', null); +INSERT INTO `dt_common_district` VALUES ('211421', '3', '绥中县', '5', '2114', '00', null); +INSERT INTO `dt_common_district` VALUES ('211422', '3', '建昌县', '6', '2114', '00', null); +INSERT INTO `dt_common_district` VALUES ('211481', '3', '兴城市', '7', '2114', '00', null); +INSERT INTO `dt_common_district` VALUES ('22', '1', '吉林省', '7', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('2201', '2', '长春市', '1', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('220101', '3', '市辖区', '1', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220102', '3', '南关区', '2', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220103', '3', '宽城区', '3', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220104', '3', '朝阳区', '4', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220105', '3', '二道区', '5', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220106', '3', '绿园区', '6', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220107', '3', '经济技术开发区', '7', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220112', '3', '双阳区', '8', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220122', '3', '农安县', '9', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220171', '3', '汽车产业开发区', '10', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220181', '3', '九台区', '11', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220182', '3', '榆树市', '12', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220183', '3', '德惠市', '13', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220192', '3', '净月旅游开发区', '14', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('220194', '3', '莲花山旅游开发区', '15', '2201', '00', null); +INSERT INTO `dt_common_district` VALUES ('2202', '2', '吉林市', '2', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('220201', '3', '市辖区', '1', '2202', '00', null); +INSERT INTO `dt_common_district` VALUES ('220202', '3', '昌邑区', '2', '2202', '00', null); +INSERT INTO `dt_common_district` VALUES ('220203', '3', '龙潭区', '3', '2202', '00', null); +INSERT INTO `dt_common_district` VALUES ('220204', '3', '船营区', '4', '2202', '00', null); +INSERT INTO `dt_common_district` VALUES ('220205', '3', '经济技术开发区', '5', '2202', '00', null); +INSERT INTO `dt_common_district` VALUES ('220206', '3', '高新技术开发区', '6', '2202', '00', null); +INSERT INTO `dt_common_district` VALUES ('220211', '3', '丰满区', '7', '2202', '00', null); +INSERT INTO `dt_common_district` VALUES ('220221', '3', '永吉县', '8', '2202', '00', null); +INSERT INTO `dt_common_district` VALUES ('220281', '3', '蛟河市', '9', '2202', '00', null); +INSERT INTO `dt_common_district` VALUES ('220282', '3', '桦甸市', '10', '2202', '00', null); +INSERT INTO `dt_common_district` VALUES ('220283', '3', '舒兰市', '11', '2202', '00', null); +INSERT INTO `dt_common_district` VALUES ('220284', '3', '磐石市', '12', '2202', '00', null); +INSERT INTO `dt_common_district` VALUES ('2203', '2', '四平市', '3', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('220301', '3', '市辖区', '1', '2203', '00', null); +INSERT INTO `dt_common_district` VALUES ('220302', '3', '铁西区', '2', '2203', '00', null); +INSERT INTO `dt_common_district` VALUES ('220303', '3', '铁东区', '3', '2203', '00', null); +INSERT INTO `dt_common_district` VALUES ('220322', '3', '梨树县', '4', '2203', '00', null); +INSERT INTO `dt_common_district` VALUES ('220323', '3', '伊通满族自治县', '5', '2203', '00', null); +INSERT INTO `dt_common_district` VALUES ('220382', '3', '双辽市', '6', '2203', '00', null); +INSERT INTO `dt_common_district` VALUES ('2204', '2', '辽源市', '4', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('220401', '3', '市辖区', '1', '2204', '00', null); +INSERT INTO `dt_common_district` VALUES ('220402', '3', '龙山区', '2', '2204', '00', null); +INSERT INTO `dt_common_district` VALUES ('220403', '3', '西安区', '3', '2204', '00', null); +INSERT INTO `dt_common_district` VALUES ('220421', '3', '东丰县', '4', '2204', '00', null); +INSERT INTO `dt_common_district` VALUES ('220422', '3', '东辽县', '5', '2204', '00', null); +INSERT INTO `dt_common_district` VALUES ('220471', '3', '经济开发区', '6', '2204', '00', null); +INSERT INTO `dt_common_district` VALUES ('2205', '2', '通化市', '5', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('220501', '3', '市辖区', '1', '2205', '00', null); +INSERT INTO `dt_common_district` VALUES ('220502', '3', '东昌区', '2', '2205', '00', null); +INSERT INTO `dt_common_district` VALUES ('220503', '3', '二道江区', '3', '2205', '00', null); +INSERT INTO `dt_common_district` VALUES ('220521', '3', '通化县', '4', '2205', '00', null); +INSERT INTO `dt_common_district` VALUES ('220523', '3', '辉南县', '5', '2205', '00', null); +INSERT INTO `dt_common_district` VALUES ('220524', '3', '柳河县', '6', '2205', '00', null); +INSERT INTO `dt_common_district` VALUES ('220571', '3', '经济开发区', '7', '2205', '00', null); +INSERT INTO `dt_common_district` VALUES ('220582', '3', '集安市', '8', '2205', '00', null); +INSERT INTO `dt_common_district` VALUES ('2206', '2', '白山市', '6', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('220601', '3', '市辖区', '1', '2206', '00', null); +INSERT INTO `dt_common_district` VALUES ('220602', '3', '浑江区', '2', '2206', '00', null); +INSERT INTO `dt_common_district` VALUES ('220605', '3', '江源区', '3', '2206', '00', null); +INSERT INTO `dt_common_district` VALUES ('220621', '3', '抚松县', '4', '2206', '00', null); +INSERT INTO `dt_common_district` VALUES ('220622', '3', '靖宇县', '5', '2206', '00', null); +INSERT INTO `dt_common_district` VALUES ('220623', '3', '长白朝鲜族自治县', '6', '2206', '00', null); +INSERT INTO `dt_common_district` VALUES ('220681', '3', '临江市', '7', '2206', '00', null); +INSERT INTO `dt_common_district` VALUES ('2207', '2', '松原市', '7', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('220701', '3', '市辖区', '1', '2207', '00', null); +INSERT INTO `dt_common_district` VALUES ('220702', '3', '宁江区', '2', '2207', '00', null); +INSERT INTO `dt_common_district` VALUES ('220721', '3', '前郭尔罗斯蒙古族自治县', '3', '2207', '00', null); +INSERT INTO `dt_common_district` VALUES ('220722', '3', '长岭县', '4', '2207', '00', null); +INSERT INTO `dt_common_district` VALUES ('220723', '3', '乾安县', '5', '2207', '00', null); +INSERT INTO `dt_common_district` VALUES ('220771', '3', '经济技术开发区', '6', '2207', '00', null); +INSERT INTO `dt_common_district` VALUES ('220772', '3', '哈达山旅游经济开发区', '7', '2207', '00', null); +INSERT INTO `dt_common_district` VALUES ('220781', '3', '扶余市', '8', '2207', '00', null); +INSERT INTO `dt_common_district` VALUES ('2208', '2', '白城市', '8', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('220801', '3', '市辖区', '1', '2208', '00', null); +INSERT INTO `dt_common_district` VALUES ('220802', '3', '洮北区', '2', '2208', '00', null); +INSERT INTO `dt_common_district` VALUES ('220821', '3', '镇赉县', '3', '2208', '00', null); +INSERT INTO `dt_common_district` VALUES ('220822', '3', '通榆县', '4', '2208', '00', null); +INSERT INTO `dt_common_district` VALUES ('220872', '3', '查干浩特旅游经济开发区', '5', '2208', '00', null); +INSERT INTO `dt_common_district` VALUES ('220881', '3', '洮南市', '6', '2208', '00', null); +INSERT INTO `dt_common_district` VALUES ('220882', '3', '大安市', '7', '2208', '00', null); +INSERT INTO `dt_common_district` VALUES ('2209', '2', '公主岭市', '9', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('220981', '3', '公主岭市', '1', '2209', '00', null); +INSERT INTO `dt_common_district` VALUES ('2210', '2', '梅河口市', '10', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('221081', '3', '梅河口市', '1', '2210', '00', null); +INSERT INTO `dt_common_district` VALUES ('2224', '2', '延边朝鲜族自治州', '11', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('222401', '3', '延吉市', '1', '2224', '00', null); +INSERT INTO `dt_common_district` VALUES ('222402', '3', '图们市', '2', '2224', '00', null); +INSERT INTO `dt_common_district` VALUES ('222403', '3', '敦化市', '3', '2224', '00', null); +INSERT INTO `dt_common_district` VALUES ('222404', '3', '珲春市', '4', '2224', '00', null); +INSERT INTO `dt_common_district` VALUES ('222405', '3', '龙井市', '5', '2224', '00', null); +INSERT INTO `dt_common_district` VALUES ('222406', '3', '和龙市', '6', '2224', '00', null); +INSERT INTO `dt_common_district` VALUES ('222424', '3', '汪清县', '7', '2224', '00', null); +INSERT INTO `dt_common_district` VALUES ('222426', '3', '安图县', '8', '2224', '00', null); +INSERT INTO `dt_common_district` VALUES ('2291', '2', '长春新区', '12', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('229101', '3', '长春新区', '1', '2291', '00', null); +INSERT INTO `dt_common_district` VALUES ('2299', '2', '长白山管委会', '13', '22', '00', null); +INSERT INTO `dt_common_district` VALUES ('229991', '3', '池北区', '1', '2299', '00', null); +INSERT INTO `dt_common_district` VALUES ('229992', '3', '池西区', '2', '2299', '00', null); +INSERT INTO `dt_common_district` VALUES ('229993', '3', '池南区', '3', '2299', '00', null); +INSERT INTO `dt_common_district` VALUES ('23', '1', '黑龙江省', '8', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('2301', '2', '哈尔滨市', '1', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('230101', '3', '市辖区', '1', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230102', '3', '道里区', '2', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230103', '3', '南岗区', '3', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230104', '3', '道外区', '4', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230108', '3', '平房区', '5', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230109', '3', '松北区', '6', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230110', '3', '香坊区', '7', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230111', '3', '呼兰区', '8', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230112', '3', '阿城区', '9', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230113', '3', '双城区', '10', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230123', '3', '依兰县', '11', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230124', '3', '方正县', '12', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230125', '3', '宾县', '13', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230126', '3', '巴彦县', '14', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230127', '3', '木兰县', '15', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230128', '3', '通河县', '16', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230129', '3', '延寿县', '17', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230183', '3', '尚志市', '18', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('230184', '3', '五常市', '19', '2301', '00', null); +INSERT INTO `dt_common_district` VALUES ('2302', '2', '齐齐哈尔市', '2', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('230201', '3', '市辖区', '1', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230202', '3', '龙沙区', '2', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230203', '3', '建华区', '3', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230204', '3', '铁锋区', '4', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230205', '3', '昂昂溪区', '5', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230206', '3', '富拉尔基区', '6', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230207', '3', '碾子山区', '7', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230208', '3', '梅里斯达斡尔族区', '8', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230221', '3', '龙江县', '9', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230223', '3', '依安县', '10', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230224', '3', '泰来县', '11', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230225', '3', '甘南县', '12', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230227', '3', '富裕县', '13', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230229', '3', '克山县', '14', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230230', '3', '克东县', '15', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230231', '3', '拜泉县', '16', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('230281', '3', '讷河市', '17', '2302', '00', null); +INSERT INTO `dt_common_district` VALUES ('2303', '2', '鸡西市', '3', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('230301', '3', '市辖区', '1', '2303', '00', null); +INSERT INTO `dt_common_district` VALUES ('230302', '3', '鸡冠区', '2', '2303', '00', null); +INSERT INTO `dt_common_district` VALUES ('230303', '3', '恒山区', '3', '2303', '00', null); +INSERT INTO `dt_common_district` VALUES ('230304', '3', '滴道区', '4', '2303', '00', null); +INSERT INTO `dt_common_district` VALUES ('230305', '3', '梨树区', '5', '2303', '00', null); +INSERT INTO `dt_common_district` VALUES ('230306', '3', '城子河区', '6', '2303', '00', null); +INSERT INTO `dt_common_district` VALUES ('230307', '3', '麻山区', '7', '2303', '00', null); +INSERT INTO `dt_common_district` VALUES ('230321', '3', '鸡东县', '8', '2303', '00', null); +INSERT INTO `dt_common_district` VALUES ('230381', '3', '虎林市', '9', '2303', '00', null); +INSERT INTO `dt_common_district` VALUES ('230382', '3', '密山市', '10', '2303', '00', null); +INSERT INTO `dt_common_district` VALUES ('2304', '2', '鹤岗市', '4', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('230401', '3', '市辖区', '1', '2304', '00', null); +INSERT INTO `dt_common_district` VALUES ('230402', '3', '向阳区', '2', '2304', '00', null); +INSERT INTO `dt_common_district` VALUES ('230403', '3', '工农区', '3', '2304', '00', null); +INSERT INTO `dt_common_district` VALUES ('230404', '3', '南山区', '4', '2304', '00', null); +INSERT INTO `dt_common_district` VALUES ('230405', '3', '兴安区', '5', '2304', '00', null); +INSERT INTO `dt_common_district` VALUES ('230406', '3', '东山区', '6', '2304', '00', null); +INSERT INTO `dt_common_district` VALUES ('230407', '3', '兴山区', '7', '2304', '00', null); +INSERT INTO `dt_common_district` VALUES ('230421', '3', '萝北县', '8', '2304', '00', null); +INSERT INTO `dt_common_district` VALUES ('230422', '3', '绥滨县', '9', '2304', '00', null); +INSERT INTO `dt_common_district` VALUES ('2305', '2', '双鸭山市', '5', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('230501', '3', '市辖区', '1', '2305', '00', null); +INSERT INTO `dt_common_district` VALUES ('230502', '3', '尖山区', '2', '2305', '00', null); +INSERT INTO `dt_common_district` VALUES ('230503', '3', '岭东区', '3', '2305', '00', null); +INSERT INTO `dt_common_district` VALUES ('230505', '3', '四方台区', '4', '2305', '00', null); +INSERT INTO `dt_common_district` VALUES ('230506', '3', '宝山区', '5', '2305', '00', null); +INSERT INTO `dt_common_district` VALUES ('230507', '3', '双鸭山市经济技术开发区', '6', '2305', '00', null); +INSERT INTO `dt_common_district` VALUES ('230521', '3', '集贤县', '7', '2305', '00', null); +INSERT INTO `dt_common_district` VALUES ('230522', '3', '友谊县', '8', '2305', '00', null); +INSERT INTO `dt_common_district` VALUES ('230523', '3', '宝清县', '9', '2305', '00', null); +INSERT INTO `dt_common_district` VALUES ('230524', '3', '饶河县', '10', '2305', '00', null); +INSERT INTO `dt_common_district` VALUES ('2306', '2', '大庆市', '6', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('230601', '3', '市辖区', '1', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230602', '3', '萨尔图区', '2', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230603', '3', '龙凤区', '3', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230604', '3', '让胡路区', '4', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230605', '3', '红岗区', '5', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230606', '3', '大同区', '6', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230621', '3', '肇州县', '7', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230622', '3', '肇源县', '8', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230623', '3', '林甸县', '9', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230624', '3', '杜尔伯特蒙古族自治县', '10', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230671', '3', '大庆高新技术产业开发区管理委员会', '11', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230672', '3', '大庆石化公司', '12', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230673', '3', '大庆市直属机关', '13', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230674', '3', '大庆炼化公司', '14', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('230675', '3', '大庆油田有限责任公司', '15', '2306', '00', null); +INSERT INTO `dt_common_district` VALUES ('2307', '2', '伊春市', '7', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('230701', '3', '市辖区', '1', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230702', '3', '伊春区', '2', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230703', '3', '南岔区', '3', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230704', '3', '友好区', '4', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230705', '3', '西林区', '5', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230706', '3', '翠峦区', '6', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230707', '3', '新青区', '7', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230708', '3', '美溪区', '8', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230709', '3', '金山屯区', '9', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230710', '3', '五营区', '10', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230711', '3', '乌马河区', '11', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230712', '3', '汤旺河区', '12', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230713', '3', '带岭区', '13', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230714', '3', '乌伊岭区', '14', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230715', '3', '红星区', '15', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230716', '3', '上甘岭区', '16', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230722', '3', '嘉荫县', '17', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('230781', '3', '铁力市', '18', '2307', '00', null); +INSERT INTO `dt_common_district` VALUES ('2308', '2', '佳木斯市', '8', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('230801', '3', '市辖区', '1', '2308', '00', null); +INSERT INTO `dt_common_district` VALUES ('230803', '3', '向阳区', '2', '2308', '00', null); +INSERT INTO `dt_common_district` VALUES ('230804', '3', '前进区', '3', '2308', '00', null); +INSERT INTO `dt_common_district` VALUES ('230805', '3', '东风区', '4', '2308', '00', null); +INSERT INTO `dt_common_district` VALUES ('230811', '3', '郊区', '5', '2308', '00', null); +INSERT INTO `dt_common_district` VALUES ('230822', '3', '桦南县', '6', '2308', '00', null); +INSERT INTO `dt_common_district` VALUES ('230826', '3', '桦川县', '7', '2308', '00', null); +INSERT INTO `dt_common_district` VALUES ('230828', '3', '汤原县', '8', '2308', '00', null); +INSERT INTO `dt_common_district` VALUES ('230881', '3', '同江市', '9', '2308', '00', null); +INSERT INTO `dt_common_district` VALUES ('230882', '3', '富锦市', '10', '2308', '00', null); +INSERT INTO `dt_common_district` VALUES ('230883', '3', '抚远县', '11', '2308', '00', null); +INSERT INTO `dt_common_district` VALUES ('2309', '2', '七台河市', '9', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('230901', '3', '市辖区', '1', '2309', '00', null); +INSERT INTO `dt_common_district` VALUES ('230902', '3', '新兴区', '2', '2309', '00', null); +INSERT INTO `dt_common_district` VALUES ('230903', '3', '桃山区', '3', '2309', '00', null); +INSERT INTO `dt_common_district` VALUES ('230904', '3', '茄子河区', '4', '2309', '00', null); +INSERT INTO `dt_common_district` VALUES ('230921', '3', '勃利县', '5', '2309', '00', null); +INSERT INTO `dt_common_district` VALUES ('2310', '2', '牡丹江市', '10', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('231001', '3', '市辖区', '1', '2310', '00', null); +INSERT INTO `dt_common_district` VALUES ('231002', '3', '东安区', '2', '2310', '00', null); +INSERT INTO `dt_common_district` VALUES ('231003', '3', '阳明区', '3', '2310', '00', null); +INSERT INTO `dt_common_district` VALUES ('231004', '3', '爱民区', '4', '2310', '00', null); +INSERT INTO `dt_common_district` VALUES ('231005', '3', '西安区', '5', '2310', '00', null); +INSERT INTO `dt_common_district` VALUES ('231024', '3', '东宁县', '6', '2310', '00', null); +INSERT INTO `dt_common_district` VALUES ('231025', '3', '林口县', '7', '2310', '00', null); +INSERT INTO `dt_common_district` VALUES ('231081', '3', '绥芬河市', '8', '2310', '00', null); +INSERT INTO `dt_common_district` VALUES ('231083', '3', '海林市', '9', '2310', '00', null); +INSERT INTO `dt_common_district` VALUES ('231084', '3', '宁安市', '10', '2310', '00', null); +INSERT INTO `dt_common_district` VALUES ('231085', '3', '穆棱市', '11', '2310', '00', null); +INSERT INTO `dt_common_district` VALUES ('2311', '2', '黑河市', '11', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('231101', '3', '市辖区', '1', '2311', '00', null); +INSERT INTO `dt_common_district` VALUES ('231102', '3', '爱辉区', '2', '2311', '00', null); +INSERT INTO `dt_common_district` VALUES ('231121', '3', '嫩江县', '3', '2311', '00', null); +INSERT INTO `dt_common_district` VALUES ('231123', '3', '逊克县', '4', '2311', '00', null); +INSERT INTO `dt_common_district` VALUES ('231124', '3', '孙吴县', '5', '2311', '00', null); +INSERT INTO `dt_common_district` VALUES ('231171', '3', '风景区', '6', '2311', '00', null); +INSERT INTO `dt_common_district` VALUES ('231181', '3', '北安市', '7', '2311', '00', null); +INSERT INTO `dt_common_district` VALUES ('231182', '3', '五大连池市', '8', '2311', '00', null); +INSERT INTO `dt_common_district` VALUES ('2312', '2', '绥化市', '12', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('231201', '3', '市辖区', '1', '2312', '00', null); +INSERT INTO `dt_common_district` VALUES ('231202', '3', '北林区', '2', '2312', '00', null); +INSERT INTO `dt_common_district` VALUES ('231221', '3', '望奎县', '3', '2312', '00', null); +INSERT INTO `dt_common_district` VALUES ('231222', '3', '兰西县', '4', '2312', '00', null); +INSERT INTO `dt_common_district` VALUES ('231223', '3', '青冈县', '5', '2312', '00', null); +INSERT INTO `dt_common_district` VALUES ('231224', '3', '庆安县', '6', '2312', '00', null); +INSERT INTO `dt_common_district` VALUES ('231225', '3', '明水县', '7', '2312', '00', null); +INSERT INTO `dt_common_district` VALUES ('231226', '3', '绥棱县', '8', '2312', '00', null); +INSERT INTO `dt_common_district` VALUES ('231281', '3', '安达市', '9', '2312', '00', null); +INSERT INTO `dt_common_district` VALUES ('231282', '3', '肇东市', '10', '2312', '00', null); +INSERT INTO `dt_common_district` VALUES ('231283', '3', '海伦市', '11', '2312', '00', null); +INSERT INTO `dt_common_district` VALUES ('2327', '2', '大兴安岭地区', '13', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('232721', '3', '呼玛县', '1', '2327', '00', null); +INSERT INTO `dt_common_district` VALUES ('232722', '3', '塔河县', '2', '2327', '00', null); +INSERT INTO `dt_common_district` VALUES ('232723', '3', '漠河县', '3', '2327', '00', null); +INSERT INTO `dt_common_district` VALUES ('232791', '3', '加格达奇区', '4', '2327', '00', null); +INSERT INTO `dt_common_district` VALUES ('232792', '3', '松岭区', '5', '2327', '00', null); +INSERT INTO `dt_common_district` VALUES ('232793', '3', '新林区', '6', '2327', '00', null); +INSERT INTO `dt_common_district` VALUES ('232794', '3', '呼中区', '7', '2327', '00', null); +INSERT INTO `dt_common_district` VALUES ('2371', '2', '农垦总局', '14', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('237171', '3', '宝泉岭管理局', '1', '2371', '00', null); +INSERT INTO `dt_common_district` VALUES ('237172', '3', '红兴隆管理局', '2', '2371', '00', null); +INSERT INTO `dt_common_district` VALUES ('237173', '3', '建三江管理局', '3', '2371', '00', null); +INSERT INTO `dt_common_district` VALUES ('237174', '3', '牡丹江管理局', '4', '2371', '00', null); +INSERT INTO `dt_common_district` VALUES ('237175', '3', '北安管理局', '5', '2371', '00', null); +INSERT INTO `dt_common_district` VALUES ('237176', '3', '九三管理局', '6', '2371', '00', null); +INSERT INTO `dt_common_district` VALUES ('237177', '3', '齐齐哈尔管理局', '7', '2371', '00', null); +INSERT INTO `dt_common_district` VALUES ('237178', '3', '绥化管理局', '8', '2371', '00', null); +INSERT INTO `dt_common_district` VALUES ('237179', '3', '哈尔滨管理局', '9', '2371', '00', null); +INSERT INTO `dt_common_district` VALUES ('237180', '3', '总局局直', '10', '2371', '00', null); +INSERT INTO `dt_common_district` VALUES ('2372', '2', '森工总局', '15', '23', '00', null); +INSERT INTO `dt_common_district` VALUES ('237271', '3', '松花江林业管理局', '1', '2372', '00', null); +INSERT INTO `dt_common_district` VALUES ('237272', '3', '牡丹江林业管理局', '2', '2372', '00', null); +INSERT INTO `dt_common_district` VALUES ('237273', '3', '合江林业管理局', '3', '2372', '00', null); +INSERT INTO `dt_common_district` VALUES ('31', '1', '上海市', '9', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('3101', '2', '市辖区', '1', '31', '00', null); +INSERT INTO `dt_common_district` VALUES ('310101', '3', '黄浦区', '1', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310104', '3', '徐汇区', '2', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310105', '3', '长宁区', '3', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310106', '3', '静安区', '4', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310107', '3', '普陀区', '5', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310109', '3', '虹口区', '6', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310110', '3', '杨浦区', '7', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310112', '3', '闵行区', '8', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310113', '3', '宝山区', '9', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310114', '3', '嘉定区', '10', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310115', '3', '浦东新区', '11', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310116', '3', '金山区', '12', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310117', '3', '松江区', '13', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310118', '3', '青浦区', '14', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310120', '3', '奉贤区', '15', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('310151', '3', '崇明区', '16', '3101', '00', null); +INSERT INTO `dt_common_district` VALUES ('32', '1', '江苏省', '10', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('3201', '2', '南京市', '1', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('320101', '3', '市辖区', '1', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('320102', '3', '玄武区', '2', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('320104', '3', '秦淮区', '3', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('320105', '3', '建邺区', '4', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('320106', '3', '鼓楼区', '5', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('320111', '3', '浦口区', '6', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('320113', '3', '栖霞区', '7', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('320114', '3', '雨花台区', '8', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('320115', '3', '江宁区', '9', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('320116', '3', '六合区', '10', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('320124', '3', '溧水区', '11', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('320125', '3', '高淳区', '12', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('320171', '3', '江北新区', '13', '3201', '00', null); +INSERT INTO `dt_common_district` VALUES ('3202', '2', '无锡市', '2', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('320201', '3', '市辖区', '1', '3202', '00', null); +INSERT INTO `dt_common_district` VALUES ('320205', '3', '锡山区', '2', '3202', '00', null); +INSERT INTO `dt_common_district` VALUES ('320206', '3', '惠山区', '3', '3202', '00', null); +INSERT INTO `dt_common_district` VALUES ('320211', '3', '滨湖区', '4', '3202', '00', null); +INSERT INTO `dt_common_district` VALUES ('320213', '3', '梁溪区', '5', '3202', '00', null); +INSERT INTO `dt_common_district` VALUES ('320214', '3', '新吴区', '6', '3202', '00', null); +INSERT INTO `dt_common_district` VALUES ('320271', '3', '经济开发区', '7', '3202', '00', null); +INSERT INTO `dt_common_district` VALUES ('320281', '3', '江阴市', '8', '3202', '00', null); +INSERT INTO `dt_common_district` VALUES ('320282', '3', '宜兴市', '9', '3202', '00', null); +INSERT INTO `dt_common_district` VALUES ('3203', '2', '徐州市', '3', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('320301', '3', '市辖区', '1', '3203', '00', null); +INSERT INTO `dt_common_district` VALUES ('320302', '3', '鼓楼区', '2', '3203', '00', null); +INSERT INTO `dt_common_district` VALUES ('320303', '3', '云龙区', '3', '3203', '00', null); +INSERT INTO `dt_common_district` VALUES ('320305', '3', '贾汪区', '4', '3203', '00', null); +INSERT INTO `dt_common_district` VALUES ('320311', '3', '泉山区', '5', '3203', '00', null); +INSERT INTO `dt_common_district` VALUES ('320321', '3', '丰县', '6', '3203', '00', null); +INSERT INTO `dt_common_district` VALUES ('320322', '3', '沛县', '7', '3203', '00', null); +INSERT INTO `dt_common_district` VALUES ('320323', '3', '铜山县', '8', '3203', '00', null); +INSERT INTO `dt_common_district` VALUES ('320324', '3', '睢宁县', '9', '3203', '00', null); +INSERT INTO `dt_common_district` VALUES ('320371', '3', '徐州经济技术开发区', '10', '3203', '00', null); +INSERT INTO `dt_common_district` VALUES ('320381', '3', '新沂市', '11', '3203', '00', null); +INSERT INTO `dt_common_district` VALUES ('320382', '3', '邳州市', '12', '3203', '00', null); +INSERT INTO `dt_common_district` VALUES ('3204', '2', '常州市', '4', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('320401', '3', '市辖区', '1', '3204', '00', null); +INSERT INTO `dt_common_district` VALUES ('320402', '3', '天宁区', '2', '3204', '00', null); +INSERT INTO `dt_common_district` VALUES ('320404', '3', '钟楼区', '3', '3204', '00', null); +INSERT INTO `dt_common_district` VALUES ('320411', '3', '新北区', '4', '3204', '00', null); +INSERT INTO `dt_common_district` VALUES ('320412', '3', '武进区', '5', '3204', '00', null); +INSERT INTO `dt_common_district` VALUES ('320481', '3', '溧阳市', '6', '3204', '00', null); +INSERT INTO `dt_common_district` VALUES ('320482', '3', '金坛市', '7', '3204', '00', null); +INSERT INTO `dt_common_district` VALUES ('3205', '2', '苏州市', '5', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('320501', '3', '市辖区', '1', '3205', '00', null); +INSERT INTO `dt_common_district` VALUES ('320505', '3', '虎丘区', '2', '3205', '00', null); +INSERT INTO `dt_common_district` VALUES ('320506', '3', '吴中区', '3', '3205', '00', null); +INSERT INTO `dt_common_district` VALUES ('320507', '3', '相城区', '4', '3205', '00', null); +INSERT INTO `dt_common_district` VALUES ('320508', '3', '姑苏区', '5', '3205', '00', null); +INSERT INTO `dt_common_district` VALUES ('320509', '3', '吴江区', '6', '3205', '00', null); +INSERT INTO `dt_common_district` VALUES ('320581', '3', '常熟市', '7', '3205', '00', null); +INSERT INTO `dt_common_district` VALUES ('320582', '3', '张家港市', '8', '3205', '00', null); +INSERT INTO `dt_common_district` VALUES ('320583', '3', '昆山市', '9', '3205', '00', null); +INSERT INTO `dt_common_district` VALUES ('320585', '3', '太仓市', '10', '3205', '00', null); +INSERT INTO `dt_common_district` VALUES ('320586', '3', '工业园区', '11', '3205', '00', null); +INSERT INTO `dt_common_district` VALUES ('3206', '2', '南通市', '6', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('320601', '3', '市辖区', '1', '3206', '00', null); +INSERT INTO `dt_common_district` VALUES ('320602', '3', '崇川区', '2', '3206', '00', null); +INSERT INTO `dt_common_district` VALUES ('320611', '3', '港闸区', '3', '3206', '00', null); +INSERT INTO `dt_common_district` VALUES ('320621', '3', '海安县', '4', '3206', '00', null); +INSERT INTO `dt_common_district` VALUES ('320623', '3', '如东县', '5', '3206', '00', null); +INSERT INTO `dt_common_district` VALUES ('320681', '3', '启东市', '6', '3206', '00', null); +INSERT INTO `dt_common_district` VALUES ('320682', '3', '如皋市', '7', '3206', '00', null); +INSERT INTO `dt_common_district` VALUES ('320683', '3', '通州市', '8', '3206', '00', null); +INSERT INTO `dt_common_district` VALUES ('320684', '3', '海门市', '9', '3206', '00', null); +INSERT INTO `dt_common_district` VALUES ('320685', '3', '开发区', '10', '3206', '00', null); +INSERT INTO `dt_common_district` VALUES ('320692', '3', '通州湾江海联动开发区', '11', '3206', '00', null); +INSERT INTO `dt_common_district` VALUES ('3207', '2', '连云港市', '7', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('320701', '3', '市辖区', '1', '3207', '00', null); +INSERT INTO `dt_common_district` VALUES ('320703', '3', '连云区', '2', '3207', '00', null); +INSERT INTO `dt_common_district` VALUES ('320706', '3', '海州区', '3', '3207', '00', null); +INSERT INTO `dt_common_district` VALUES ('320707', '3', '开发区', '4', '3207', '00', null); +INSERT INTO `dt_common_district` VALUES ('320721', '3', '赣榆区', '5', '3207', '00', null); +INSERT INTO `dt_common_district` VALUES ('320722', '3', '东海县', '6', '3207', '00', null); +INSERT INTO `dt_common_district` VALUES ('320723', '3', '灌云县', '7', '3207', '00', null); +INSERT INTO `dt_common_district` VALUES ('320724', '3', '灌南县', '8', '3207', '00', null); +INSERT INTO `dt_common_district` VALUES ('320771', '3', '徐圩新区', '9', '3207', '00', null); +INSERT INTO `dt_common_district` VALUES ('320772', '3', '云台山景区', '10', '3207', '00', null); +INSERT INTO `dt_common_district` VALUES ('320775', '3', '高新区', '11', '3207', '00', null); +INSERT INTO `dt_common_district` VALUES ('3208', '2', '淮安市', '8', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('320801', '3', '市辖区', '1', '3208', '00', null); +INSERT INTO `dt_common_district` VALUES ('320803', '3', '淮安区', '2', '3208', '00', null); +INSERT INTO `dt_common_district` VALUES ('320804', '3', '淮阴区', '3', '3208', '00', null); +INSERT INTO `dt_common_district` VALUES ('320812', '3', '清江浦区', '4', '3208', '00', null); +INSERT INTO `dt_common_district` VALUES ('320813', '3', '洪泽区', '5', '3208', '00', null); +INSERT INTO `dt_common_district` VALUES ('320826', '3', '涟水县', '6', '3208', '00', null); +INSERT INTO `dt_common_district` VALUES ('320830', '3', '盱眙县', '7', '3208', '00', null); +INSERT INTO `dt_common_district` VALUES ('320831', '3', '金湖县', '8', '3208', '00', null); +INSERT INTO `dt_common_district` VALUES ('320871', '3', '淮安经济开发区', '9', '3208', '00', null); +INSERT INTO `dt_common_district` VALUES ('320872', '3', '淮安工业园区', '10', '3208', '00', null); +INSERT INTO `dt_common_district` VALUES ('320873', '3', '淮安生态新城', '11', '3208', '00', null); +INSERT INTO `dt_common_district` VALUES ('320874', '3', '淮安盐化新材料产业园区', '12', '3208', '00', null); +INSERT INTO `dt_common_district` VALUES ('3209', '2', '盐城市', '9', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('320901', '3', '市辖区', '1', '3209', '00', null); +INSERT INTO `dt_common_district` VALUES ('320902', '3', '亭湖区', '2', '3209', '00', null); +INSERT INTO `dt_common_district` VALUES ('320903', '3', '盐都区', '3', '3209', '00', null); +INSERT INTO `dt_common_district` VALUES ('320904', '3', '大丰区', '4', '3209', '00', null); +INSERT INTO `dt_common_district` VALUES ('320921', '3', '响水县', '5', '3209', '00', null); +INSERT INTO `dt_common_district` VALUES ('320922', '3', '滨海县', '6', '3209', '00', null); +INSERT INTO `dt_common_district` VALUES ('320923', '3', '阜宁县', '7', '3209', '00', null); +INSERT INTO `dt_common_district` VALUES ('320924', '3', '射阳县', '8', '3209', '00', null); +INSERT INTO `dt_common_district` VALUES ('320925', '3', '建湖县', '9', '3209', '00', null); +INSERT INTO `dt_common_district` VALUES ('320971', '3', '开发区', '10', '3209', '00', null); +INSERT INTO `dt_common_district` VALUES ('320972', '3', '城南新区', '11', '3209', '00', null); +INSERT INTO `dt_common_district` VALUES ('320981', '3', '东台市', '12', '3209', '00', null); +INSERT INTO `dt_common_district` VALUES ('3210', '2', '扬州市', '10', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('321001', '3', '市辖区', '1', '3210', '00', null); +INSERT INTO `dt_common_district` VALUES ('321002', '3', '广陵区', '2', '3210', '00', null); +INSERT INTO `dt_common_district` VALUES ('321003', '3', '邗江区', '3', '3210', '00', null); +INSERT INTO `dt_common_district` VALUES ('321012', '3', '江都区', '4', '3210', '00', null); +INSERT INTO `dt_common_district` VALUES ('321023', '3', '宝应县', '5', '3210', '00', null); +INSERT INTO `dt_common_district` VALUES ('321071', '3', '瘦西湖区', '6', '3210', '00', null); +INSERT INTO `dt_common_district` VALUES ('321072', '3', '开发区', '7', '3210', '00', null); +INSERT INTO `dt_common_district` VALUES ('321073', '3', '生态科技新城', '8', '3210', '00', null); +INSERT INTO `dt_common_district` VALUES ('321081', '3', '仪征市', '9', '3210', '00', null); +INSERT INTO `dt_common_district` VALUES ('321084', '3', '高邮市', '10', '3210', '00', null); +INSERT INTO `dt_common_district` VALUES ('3211', '2', '镇江市', '11', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('321101', '3', '市辖区', '1', '3211', '00', null); +INSERT INTO `dt_common_district` VALUES ('321102', '3', '京口区', '2', '3211', '00', null); +INSERT INTO `dt_common_district` VALUES ('321111', '3', '润州区', '3', '3211', '00', null); +INSERT INTO `dt_common_district` VALUES ('321112', '3', '丹徒区', '4', '3211', '00', null); +INSERT INTO `dt_common_district` VALUES ('321171', '3', '新区', '5', '3211', '00', null); +INSERT INTO `dt_common_district` VALUES ('321173', '3', '高新区', '6', '3211', '00', null); +INSERT INTO `dt_common_district` VALUES ('321181', '3', '丹阳市', '7', '3211', '00', null); +INSERT INTO `dt_common_district` VALUES ('321182', '3', '扬中市', '8', '3211', '00', null); +INSERT INTO `dt_common_district` VALUES ('321183', '3', '句容市', '9', '3211', '00', null); +INSERT INTO `dt_common_district` VALUES ('3212', '2', '泰州市', '12', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('321202', '3', '海陵区', '1', '3212', '00', null); +INSERT INTO `dt_common_district` VALUES ('321203', '3', '高港区', '2', '3212', '00', null); +INSERT INTO `dt_common_district` VALUES ('321271', '3', '医药高新区', '3', '3212', '00', null); +INSERT INTO `dt_common_district` VALUES ('321272', '3', '农业开发区', '4', '3212', '00', null); +INSERT INTO `dt_common_district` VALUES ('321281', '3', '兴化市', '5', '3212', '00', null); +INSERT INTO `dt_common_district` VALUES ('321282', '3', '靖江市', '6', '3212', '00', null); +INSERT INTO `dt_common_district` VALUES ('321283', '3', '泰兴市', '7', '3212', '00', null); +INSERT INTO `dt_common_district` VALUES ('321284', '3', '姜堰区', '8', '3212', '00', null); +INSERT INTO `dt_common_district` VALUES ('3213', '2', '宿迁市', '13', '32', '00', null); +INSERT INTO `dt_common_district` VALUES ('321301', '3', '市辖区', '1', '3213', '00', null); +INSERT INTO `dt_common_district` VALUES ('321302', '3', '宿城区', '2', '3213', '00', null); +INSERT INTO `dt_common_district` VALUES ('321311', '3', '宿豫区', '3', '3213', '00', null); +INSERT INTO `dt_common_district` VALUES ('321322', '3', '沭阳县', '4', '3213', '00', null); +INSERT INTO `dt_common_district` VALUES ('321323', '3', '泗阳县', '5', '3213', '00', null); +INSERT INTO `dt_common_district` VALUES ('321324', '3', '泗洪县', '6', '3213', '00', null); +INSERT INTO `dt_common_district` VALUES ('321371', '3', '经济技术开发区', '7', '3213', '00', null); +INSERT INTO `dt_common_district` VALUES ('321372', '3', '湖滨新区', '8', '3213', '00', null); +INSERT INTO `dt_common_district` VALUES ('321373', '3', '洋河新区', '9', '3213', '00', null); +INSERT INTO `dt_common_district` VALUES ('321374', '3', '苏州宿迁工业园区', '10', '3213', '00', null); +INSERT INTO `dt_common_district` VALUES ('33', '1', '浙江省', '11', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('3301', '2', '杭州市', '1', '33', '00', null); +INSERT INTO `dt_common_district` VALUES ('330101', '3', '市辖区', '1', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330102', '3', '上城区', '2', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330103', '3', '下城区', '3', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330104', '3', '江干区', '4', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330105', '3', '拱墅区', '5', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330106', '3', '西湖区', '6', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330108', '3', '滨江区', '7', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330109', '3', '萧山区', '8', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330110', '3', '余杭区', '9', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330111', '3', '富阳区', '10', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330112', '3', '临安区', '11', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330122', '3', '桐庐县', '12', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330127', '3', '淳安县', '13', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330163', '3', '钱塘新区', '14', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('330182', '3', '建德市', '15', '3301', '00', null); +INSERT INTO `dt_common_district` VALUES ('3302', '2', '宁波市', '2', '33', '00', null); +INSERT INTO `dt_common_district` VALUES ('330201', '3', '市辖区', '1', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330203', '3', '海曙区', '2', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330204', '3', '江东区', '3', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330205', '3', '江北区', '4', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330206', '3', '北仑区', '5', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330211', '3', '镇海区', '6', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330212', '3', '鄞州区', '7', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330213', '3', '奉化区', '8', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330225', '3', '象山县', '9', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330226', '3', '宁海县', '10', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330271', '3', '大榭开发区', '11', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330272', '3', '宁波国家高新技术开发区', '12', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330273', '3', '东钱湖旅游度假区', '13', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330281', '3', '余姚市', '14', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('330282', '3', '慈溪市', '15', '3302', '00', null); +INSERT INTO `dt_common_district` VALUES ('3303', '2', '温州市', '3', '33', '00', null); +INSERT INTO `dt_common_district` VALUES ('330301', '3', '市辖区', '1', '3303', '00', null); +INSERT INTO `dt_common_district` VALUES ('330302', '3', '鹿城区', '2', '3303', '00', null); +INSERT INTO `dt_common_district` VALUES ('330303', '3', '龙湾区', '3', '3303', '00', null); +INSERT INTO `dt_common_district` VALUES ('330304', '3', '瓯海区', '4', '3303', '00', null); +INSERT INTO `dt_common_district` VALUES ('330305', '3', '洞头区', '5', '3303', '00', null); +INSERT INTO `dt_common_district` VALUES ('330324', '3', '永嘉县', '6', '3303', '00', null); +INSERT INTO `dt_common_district` VALUES ('330326', '3', '平阳县', '7', '3303', '00', null); +INSERT INTO `dt_common_district` VALUES ('330327', '3', '苍南县', '8', '3303', '00', null); +INSERT INTO `dt_common_district` VALUES ('330328', '3', '文成县', '9', '3303', '00', null); +INSERT INTO `dt_common_district` VALUES ('330329', '3', '泰顺县', '10', '3303', '00', null); +INSERT INTO `dt_common_district` VALUES ('330381', '3', '瑞安市', '11', '3303', '00', null); +INSERT INTO `dt_common_district` VALUES ('330382', '3', '乐清市', '12', '3303', '00', null); +INSERT INTO `dt_common_district` VALUES ('3304', '2', '嘉兴市', '4', '33', '00', null); +INSERT INTO `dt_common_district` VALUES ('330401', '3', '市辖区', '1', '3304', '00', null); +INSERT INTO `dt_common_district` VALUES ('330402', '3', '南湖区', '2', '3304', '00', null); +INSERT INTO `dt_common_district` VALUES ('330411', '3', '秀洲区', '3', '3304', '00', null); +INSERT INTO `dt_common_district` VALUES ('330421', '3', '嘉善县', '4', '3304', '00', null); +INSERT INTO `dt_common_district` VALUES ('330424', '3', '海盐县', '5', '3304', '00', null); +INSERT INTO `dt_common_district` VALUES ('330471', '3', '经济开发区', '6', '3304', '00', null); +INSERT INTO `dt_common_district` VALUES ('330481', '3', '海宁市', '7', '3304', '00', null); +INSERT INTO `dt_common_district` VALUES ('330482', '3', '平湖市', '8', '3304', '00', null); +INSERT INTO `dt_common_district` VALUES ('330483', '3', '桐乡市', '9', '3304', '00', null); +INSERT INTO `dt_common_district` VALUES ('3305', '2', '湖州市', '5', '33', '00', null); +INSERT INTO `dt_common_district` VALUES ('330501', '3', '市辖区', '1', '3305', '00', null); +INSERT INTO `dt_common_district` VALUES ('330502', '3', '吴兴区', '2', '3305', '00', null); +INSERT INTO `dt_common_district` VALUES ('330503', '3', '南浔区', '3', '3305', '00', null); +INSERT INTO `dt_common_district` VALUES ('330521', '3', '德清县', '4', '3305', '00', null); +INSERT INTO `dt_common_district` VALUES ('330522', '3', '长兴县', '5', '3305', '00', null); +INSERT INTO `dt_common_district` VALUES ('330523', '3', '安吉县', '6', '3305', '00', null); +INSERT INTO `dt_common_district` VALUES ('3306', '2', '绍兴市', '6', '33', '00', null); +INSERT INTO `dt_common_district` VALUES ('330601', '3', '市辖区', '1', '3306', '00', null); +INSERT INTO `dt_common_district` VALUES ('330602', '3', '越城区', '2', '3306', '00', null); +INSERT INTO `dt_common_district` VALUES ('330603', '3', '柯桥区', '3', '3306', '00', null); +INSERT INTO `dt_common_district` VALUES ('330604', '3', '上虞区', '4', '3306', '00', null); +INSERT INTO `dt_common_district` VALUES ('330624', '3', '新昌县', '5', '3306', '00', null); +INSERT INTO `dt_common_district` VALUES ('330671', '3', '开发区', '6', '3306', '00', null); +INSERT INTO `dt_common_district` VALUES ('330681', '3', '诸暨市', '7', '3306', '00', null); +INSERT INTO `dt_common_district` VALUES ('330683', '3', '嵊州市', '8', '3306', '00', null); +INSERT INTO `dt_common_district` VALUES ('3307', '2', '金华市', '7', '33', '00', null); +INSERT INTO `dt_common_district` VALUES ('330701', '3', '市辖区', '1', '3307', '00', null); +INSERT INTO `dt_common_district` VALUES ('330702', '3', '婺城区', '2', '3307', '00', null); +INSERT INTO `dt_common_district` VALUES ('330703', '3', '金东区', '3', '3307', '00', null); +INSERT INTO `dt_common_district` VALUES ('330723', '3', '武义县', '4', '3307', '00', null); +INSERT INTO `dt_common_district` VALUES ('330726', '3', '浦江县', '5', '3307', '00', null); +INSERT INTO `dt_common_district` VALUES ('330727', '3', '磐安县', '6', '3307', '00', null); +INSERT INTO `dt_common_district` VALUES ('330771', '3', '开发区', '7', '3307', '00', null); +INSERT INTO `dt_common_district` VALUES ('330781', '3', '兰溪市', '8', '3307', '00', null); +INSERT INTO `dt_common_district` VALUES ('330782', '3', '义乌市', '9', '3307', '00', null); +INSERT INTO `dt_common_district` VALUES ('330783', '3', '东阳市', '10', '3307', '00', null); +INSERT INTO `dt_common_district` VALUES ('330784', '3', '永康市', '11', '3307', '00', null); +INSERT INTO `dt_common_district` VALUES ('3308', '2', '衢州市', '8', '33', '00', null); +INSERT INTO `dt_common_district` VALUES ('330801', '3', '市辖区', '1', '3308', '00', null); +INSERT INTO `dt_common_district` VALUES ('330802', '3', '柯城区', '2', '3308', '00', null); +INSERT INTO `dt_common_district` VALUES ('330803', '3', '衢江区', '3', '3308', '00', null); +INSERT INTO `dt_common_district` VALUES ('330822', '3', '常山县', '4', '3308', '00', null); +INSERT INTO `dt_common_district` VALUES ('330824', '3', '开化县', '5', '3308', '00', null); +INSERT INTO `dt_common_district` VALUES ('330825', '3', '龙游县', '6', '3308', '00', null); +INSERT INTO `dt_common_district` VALUES ('330881', '3', '江山市', '7', '3308', '00', null); +INSERT INTO `dt_common_district` VALUES ('3309', '2', '舟山市', '9', '33', '00', null); +INSERT INTO `dt_common_district` VALUES ('330901', '3', '市辖区', '1', '3309', '00', null); +INSERT INTO `dt_common_district` VALUES ('330902', '3', '定海区', '2', '3309', '00', null); +INSERT INTO `dt_common_district` VALUES ('330903', '3', '普陀区', '3', '3309', '00', null); +INSERT INTO `dt_common_district` VALUES ('330921', '3', '岱山县', '4', '3309', '00', null); +INSERT INTO `dt_common_district` VALUES ('330922', '3', '嵊泗县', '5', '3309', '00', null); +INSERT INTO `dt_common_district` VALUES ('3310', '2', '台州市', '10', '33', '00', null); +INSERT INTO `dt_common_district` VALUES ('331001', '3', '市辖区', '1', '3310', '00', null); +INSERT INTO `dt_common_district` VALUES ('331002', '3', '椒江区', '2', '3310', '00', null); +INSERT INTO `dt_common_district` VALUES ('331003', '3', '黄岩区', '3', '3310', '00', null); +INSERT INTO `dt_common_district` VALUES ('331004', '3', '路桥区', '4', '3310', '00', null); +INSERT INTO `dt_common_district` VALUES ('331022', '3', '三门县', '5', '3310', '00', null); +INSERT INTO `dt_common_district` VALUES ('331023', '3', '天台县', '6', '3310', '00', null); +INSERT INTO `dt_common_district` VALUES ('331024', '3', '仙居县', '7', '3310', '00', null); +INSERT INTO `dt_common_district` VALUES ('331081', '3', '温岭市', '8', '3310', '00', null); +INSERT INTO `dt_common_district` VALUES ('331082', '3', '临海市', '9', '3310', '00', null); +INSERT INTO `dt_common_district` VALUES ('331083', '3', '玉环市', '10', '3310', '00', null); +INSERT INTO `dt_common_district` VALUES ('3311', '2', '丽水市', '11', '33', '00', null); +INSERT INTO `dt_common_district` VALUES ('331101', '3', '市辖区', '1', '3311', '00', null); +INSERT INTO `dt_common_district` VALUES ('331102', '3', '莲都区', '2', '3311', '00', null); +INSERT INTO `dt_common_district` VALUES ('331121', '3', '青田县', '3', '3311', '00', null); +INSERT INTO `dt_common_district` VALUES ('331122', '3', '缙云县', '4', '3311', '00', null); +INSERT INTO `dt_common_district` VALUES ('331123', '3', '遂昌县', '5', '3311', '00', null); +INSERT INTO `dt_common_district` VALUES ('331124', '3', '松阳县', '6', '3311', '00', null); +INSERT INTO `dt_common_district` VALUES ('331125', '3', '云和县', '7', '3311', '00', null); +INSERT INTO `dt_common_district` VALUES ('331126', '3', '庆元县', '8', '3311', '00', null); +INSERT INTO `dt_common_district` VALUES ('331127', '3', '景宁县', '9', '3311', '00', null); +INSERT INTO `dt_common_district` VALUES ('331181', '3', '龙泉市', '10', '3311', '00', null); +INSERT INTO `dt_common_district` VALUES ('34', '1', '安徽省', '12', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('3401', '2', '合肥市', '1', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('340101', '3', '市辖区', '1', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340102', '3', '瑶海区', '2', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340103', '3', '庐阳区', '3', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340104', '3', '蜀山区', '4', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340105', '3', '经开区', '5', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340106', '3', '高新区', '6', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340107', '3', '新站区', '7', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340108', '3', '巢湖市', '8', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340111', '3', '包河区', '9', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340112', '3', '合巢经开区', '10', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340121', '3', '长丰县', '11', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340122', '3', '肥东县', '12', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340123', '3', '肥西县', '13', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('340124', '3', '庐江县', '14', '3401', '00', null); +INSERT INTO `dt_common_district` VALUES ('3402', '2', '芜湖市', '2', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('340201', '3', '市辖区', '1', '3402', '00', null); +INSERT INTO `dt_common_district` VALUES ('340202', '3', '镜湖区', '2', '3402', '00', null); +INSERT INTO `dt_common_district` VALUES ('340203', '3', '弋江区', '3', '3402', '00', null); +INSERT INTO `dt_common_district` VALUES ('340207', '3', '鸠江区', '4', '3402', '00', null); +INSERT INTO `dt_common_district` VALUES ('340208', '3', '三山区', '5', '3402', '00', null); +INSERT INTO `dt_common_district` VALUES ('340221', '3', '芜湖县', '6', '3402', '00', null); +INSERT INTO `dt_common_district` VALUES ('340222', '3', '繁昌县', '7', '3402', '00', null); +INSERT INTO `dt_common_district` VALUES ('340223', '3', '南陵县', '8', '3402', '00', null); +INSERT INTO `dt_common_district` VALUES ('340224', '3', '无为县', '9', '3402', '00', null); +INSERT INTO `dt_common_district` VALUES ('340271', '3', '经开区', '10', '3402', '00', null); +INSERT INTO `dt_common_district` VALUES ('3403', '2', '蚌埠市', '3', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('340301', '3', '市辖区', '1', '3403', '00', null); +INSERT INTO `dt_common_district` VALUES ('340302', '3', '龙子湖区', '2', '3403', '00', null); +INSERT INTO `dt_common_district` VALUES ('340303', '3', '蚌山区', '3', '3403', '00', null); +INSERT INTO `dt_common_district` VALUES ('340304', '3', '禹会区', '4', '3403', '00', null); +INSERT INTO `dt_common_district` VALUES ('340305', '3', '经开区', '5', '3403', '00', null); +INSERT INTO `dt_common_district` VALUES ('340306', '3', '高新区', '6', '3403', '00', null); +INSERT INTO `dt_common_district` VALUES ('340311', '3', '淮上区', '7', '3403', '00', null); +INSERT INTO `dt_common_district` VALUES ('340321', '3', '怀远县', '8', '3403', '00', null); +INSERT INTO `dt_common_district` VALUES ('340322', '3', '五河县', '9', '3403', '00', null); +INSERT INTO `dt_common_district` VALUES ('340323', '3', '固镇县', '10', '3403', '00', null); +INSERT INTO `dt_common_district` VALUES ('3404', '2', '淮南市', '4', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('340401', '3', '市辖区', '1', '3404', '00', null); +INSERT INTO `dt_common_district` VALUES ('340402', '3', '大通区', '2', '3404', '00', null); +INSERT INTO `dt_common_district` VALUES ('340403', '3', '田家庵区', '3', '3404', '00', null); +INSERT INTO `dt_common_district` VALUES ('340404', '3', '谢家集区', '4', '3404', '00', null); +INSERT INTO `dt_common_district` VALUES ('340405', '3', '八公山区', '5', '3404', '00', null); +INSERT INTO `dt_common_district` VALUES ('340406', '3', '潘集区', '6', '3404', '00', null); +INSERT INTO `dt_common_district` VALUES ('340407', '3', '毛集区', '7', '3404', '00', null); +INSERT INTO `dt_common_district` VALUES ('340408', '3', '山南新区', '8', '3404', '00', null); +INSERT INTO `dt_common_district` VALUES ('340409', '3', '开发区', '9', '3404', '00', null); +INSERT INTO `dt_common_district` VALUES ('340421', '3', '凤台县', '10', '3404', '00', null); +INSERT INTO `dt_common_district` VALUES ('340422', '3', '寿县', '11', '3404', '00', null); +INSERT INTO `dt_common_district` VALUES ('3405', '2', '马鞍山市', '5', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('340501', '3', '市辖区', '1', '3405', '00', null); +INSERT INTO `dt_common_district` VALUES ('340503', '3', '花山区', '2', '3405', '00', null); +INSERT INTO `dt_common_district` VALUES ('340504', '3', '雨山区', '3', '3405', '00', null); +INSERT INTO `dt_common_district` VALUES ('340521', '3', '当涂县', '4', '3405', '00', null); +INSERT INTO `dt_common_district` VALUES ('340522', '3', '和县', '5', '3405', '00', null); +INSERT INTO `dt_common_district` VALUES ('340523', '3', '含山县', '6', '3405', '00', null); +INSERT INTO `dt_common_district` VALUES ('340571', '3', '开发区', '7', '3405', '00', null); +INSERT INTO `dt_common_district` VALUES ('340572', '3', '慈湖高新区', '8', '3405', '00', null); +INSERT INTO `dt_common_district` VALUES ('340573', '3', '示范园区', '9', '3405', '00', null); +INSERT INTO `dt_common_district` VALUES ('340574', '3', '博望区', '10', '3405', '00', null); +INSERT INTO `dt_common_district` VALUES ('340575', '3', '郑蒲港新区', '11', '3405', '00', null); +INSERT INTO `dt_common_district` VALUES ('3406', '2', '淮北市', '6', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('340601', '3', '市辖区', '1', '3406', '00', null); +INSERT INTO `dt_common_district` VALUES ('340602', '3', '杜集区', '2', '3406', '00', null); +INSERT INTO `dt_common_district` VALUES ('340603', '3', '相山区', '3', '3406', '00', null); +INSERT INTO `dt_common_district` VALUES ('340604', '3', '烈山区', '4', '3406', '00', null); +INSERT INTO `dt_common_district` VALUES ('340621', '3', '濉溪县', '5', '3406', '00', null); +INSERT INTO `dt_common_district` VALUES ('3407', '2', '铜陵市', '7', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('340701', '3', '市辖区', '1', '3407', '00', null); +INSERT INTO `dt_common_district` VALUES ('340702', '3', '铜官区', '2', '3407', '00', null); +INSERT INTO `dt_common_district` VALUES ('340711', '3', '郊区', '3', '3407', '00', null); +INSERT INTO `dt_common_district` VALUES ('340721', '3', '义安区', '4', '3407', '00', null); +INSERT INTO `dt_common_district` VALUES ('340722', '3', '枞阳县', '5', '3407', '00', null); +INSERT INTO `dt_common_district` VALUES ('340771', '3', '经济开发区', '6', '3407', '00', null); +INSERT INTO `dt_common_district` VALUES ('3408', '2', '安庆市', '8', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('340801', '3', '市辖区', '1', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('340802', '3', '迎江区', '2', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('340803', '3', '大观区', '3', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('340805', '3', '开发区', '4', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('340811', '3', '宜秀区', '5', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('340822', '3', '怀宁县', '6', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('340824', '3', '潜山市', '7', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('340825', '3', '太湖县', '8', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('340826', '3', '宿松县', '9', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('340827', '3', '望江县', '10', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('340828', '3', '岳西县', '11', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('340871', '3', '皖河农场', '12', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('340881', '3', '桐城市', '13', '3408', '00', null); +INSERT INTO `dt_common_district` VALUES ('3410', '2', '黄山市', '9', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('341001', '3', '市辖区', '1', '3410', '00', null); +INSERT INTO `dt_common_district` VALUES ('341002', '3', '屯溪区', '2', '3410', '00', null); +INSERT INTO `dt_common_district` VALUES ('341003', '3', '黄山区', '3', '3410', '00', null); +INSERT INTO `dt_common_district` VALUES ('341004', '3', '徽州区', '4', '3410', '00', null); +INSERT INTO `dt_common_district` VALUES ('341021', '3', '歙县', '5', '3410', '00', null); +INSERT INTO `dt_common_district` VALUES ('341022', '3', '休宁县', '6', '3410', '00', null); +INSERT INTO `dt_common_district` VALUES ('341023', '3', '黟县', '7', '3410', '00', null); +INSERT INTO `dt_common_district` VALUES ('341024', '3', '祁门县', '8', '3410', '00', null); +INSERT INTO `dt_common_district` VALUES ('3411', '2', '滁州市', '10', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('341101', '3', '市辖区', '1', '3411', '00', null); +INSERT INTO `dt_common_district` VALUES ('341102', '3', '琅琊区', '2', '3411', '00', null); +INSERT INTO `dt_common_district` VALUES ('341103', '3', '南谯区', '3', '3411', '00', null); +INSERT INTO `dt_common_district` VALUES ('341122', '3', '来安县', '4', '3411', '00', null); +INSERT INTO `dt_common_district` VALUES ('341124', '3', '全椒县', '5', '3411', '00', null); +INSERT INTO `dt_common_district` VALUES ('341125', '3', '定远县', '6', '3411', '00', null); +INSERT INTO `dt_common_district` VALUES ('341126', '3', '凤阳县', '7', '3411', '00', null); +INSERT INTO `dt_common_district` VALUES ('341171', '3', '开发区', '8', '3411', '00', null); +INSERT INTO `dt_common_district` VALUES ('341181', '3', '天长市', '9', '3411', '00', null); +INSERT INTO `dt_common_district` VALUES ('341182', '3', '明光市', '10', '3411', '00', null); +INSERT INTO `dt_common_district` VALUES ('3412', '2', '阜阳市', '11', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('341201', '3', '市辖区', '1', '3412', '00', null); +INSERT INTO `dt_common_district` VALUES ('341202', '3', '颍州区', '2', '3412', '00', null); +INSERT INTO `dt_common_district` VALUES ('341203', '3', '颍东区', '3', '3412', '00', null); +INSERT INTO `dt_common_district` VALUES ('341204', '3', '颍泉区', '4', '3412', '00', null); +INSERT INTO `dt_common_district` VALUES ('341205', '3', '阜合园区', '5', '3412', '00', null); +INSERT INTO `dt_common_district` VALUES ('341221', '3', '临泉县', '6', '3412', '00', null); +INSERT INTO `dt_common_district` VALUES ('341222', '3', '太和县', '7', '3412', '00', null); +INSERT INTO `dt_common_district` VALUES ('341225', '3', '阜南县', '8', '3412', '00', null); +INSERT INTO `dt_common_district` VALUES ('341226', '3', '颍上县', '9', '3412', '00', null); +INSERT INTO `dt_common_district` VALUES ('341271', '3', '经开区', '10', '3412', '00', null); +INSERT INTO `dt_common_district` VALUES ('341282', '3', '界首市', '11', '3412', '00', null); +INSERT INTO `dt_common_district` VALUES ('3413', '2', '宿州市', '12', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('341301', '3', '市辖区', '1', '3413', '00', null); +INSERT INTO `dt_common_district` VALUES ('341302', '3', '埇桥区', '2', '3413', '00', null); +INSERT INTO `dt_common_district` VALUES ('341320', '3', '宿马园区', '3', '3413', '00', null); +INSERT INTO `dt_common_district` VALUES ('341321', '3', '砀山县', '4', '3413', '00', null); +INSERT INTO `dt_common_district` VALUES ('341322', '3', '萧县', '5', '3413', '00', null); +INSERT INTO `dt_common_district` VALUES ('341323', '3', '灵璧县', '6', '3413', '00', null); +INSERT INTO `dt_common_district` VALUES ('341324', '3', '泗县', '7', '3413', '00', null); +INSERT INTO `dt_common_district` VALUES ('341325', '3', '宿州高新区', '8', '3413', '00', null); +INSERT INTO `dt_common_district` VALUES ('341371', '3', '开发区', '9', '3413', '00', null); +INSERT INTO `dt_common_district` VALUES ('341372', '3', '鞋城管委会', '10', '3413', '00', null); +INSERT INTO `dt_common_district` VALUES ('3415', '2', '六安市', '13', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('341501', '3', '市辖区', '1', '3415', '00', null); +INSERT INTO `dt_common_district` VALUES ('341502', '3', '金安区', '2', '3415', '00', null); +INSERT INTO `dt_common_district` VALUES ('341503', '3', '裕安区', '3', '3415', '00', null); +INSERT INTO `dt_common_district` VALUES ('341504', '3', '叶集区', '4', '3415', '00', null); +INSERT INTO `dt_common_district` VALUES ('341522', '3', '霍邱县', '5', '3415', '00', null); +INSERT INTO `dt_common_district` VALUES ('341523', '3', '舒城县', '6', '3415', '00', null); +INSERT INTO `dt_common_district` VALUES ('341524', '3', '金寨县', '7', '3415', '00', null); +INSERT INTO `dt_common_district` VALUES ('341525', '3', '霍山县', '8', '3415', '00', null); +INSERT INTO `dt_common_district` VALUES ('341571', '3', '经济区', '9', '3415', '00', null); +INSERT INTO `dt_common_district` VALUES ('3416', '2', '亳州市', '14', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('341601', '3', '市辖区', '1', '3416', '00', null); +INSERT INTO `dt_common_district` VALUES ('341602', '3', '谯城区', '2', '3416', '00', null); +INSERT INTO `dt_common_district` VALUES ('341621', '3', '涡阳县', '3', '3416', '00', null); +INSERT INTO `dt_common_district` VALUES ('341622', '3', '蒙城县', '4', '3416', '00', null); +INSERT INTO `dt_common_district` VALUES ('341623', '3', '利辛县', '5', '3416', '00', null); +INSERT INTO `dt_common_district` VALUES ('341671', '3', '经济开发区', '6', '3416', '00', null); +INSERT INTO `dt_common_district` VALUES ('3417', '2', '池州市', '15', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('341701', '3', '市辖区', '1', '3417', '00', null); +INSERT INTO `dt_common_district` VALUES ('341702', '3', '贵池区', '2', '3417', '00', null); +INSERT INTO `dt_common_district` VALUES ('341721', '3', '东至县', '3', '3417', '00', null); +INSERT INTO `dt_common_district` VALUES ('341722', '3', '石台县', '4', '3417', '00', null); +INSERT INTO `dt_common_district` VALUES ('341723', '3', '青阳县', '5', '3417', '00', null); +INSERT INTO `dt_common_district` VALUES ('341771', '3', '开发区', '6', '3417', '00', null); +INSERT INTO `dt_common_district` VALUES ('341772', '3', '九华山', '7', '3417', '00', null); +INSERT INTO `dt_common_district` VALUES ('341773', '3', '平天湖', '8', '3417', '00', null); +INSERT INTO `dt_common_district` VALUES ('3418', '2', '宣城市', '16', '34', '00', null); +INSERT INTO `dt_common_district` VALUES ('341801', '3', '市辖区', '1', '3418', '00', null); +INSERT INTO `dt_common_district` VALUES ('341802', '3', '宣州区', '2', '3418', '00', null); +INSERT INTO `dt_common_district` VALUES ('341821', '3', '郎溪县', '3', '3418', '00', null); +INSERT INTO `dt_common_district` VALUES ('341822', '3', '广德县', '4', '3418', '00', null); +INSERT INTO `dt_common_district` VALUES ('341823', '3', '泾县', '5', '3418', '00', null); +INSERT INTO `dt_common_district` VALUES ('341824', '3', '绩溪县', '6', '3418', '00', null); +INSERT INTO `dt_common_district` VALUES ('341825', '3', '旌德县', '7', '3418', '00', null); +INSERT INTO `dt_common_district` VALUES ('341881', '3', '宁国市', '8', '3418', '00', null); +INSERT INTO `dt_common_district` VALUES ('35', '1', '福建省', '13', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('3501', '2', '福州市', '1', '35', '00', null); +INSERT INTO `dt_common_district` VALUES ('350101', '3', '市辖区', '1', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350102', '3', '鼓楼区', '2', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350103', '3', '台江区', '3', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350104', '3', '仓山区', '4', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350105', '3', '马尾区', '5', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350111', '3', '晋安区', '6', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350121', '3', '闽侯县', '7', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350122', '3', '连江县', '8', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350123', '3', '罗源县', '9', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350124', '3', '闽清县', '10', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350125', '3', '永泰县', '11', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350131', '3', '福州高新区管委会', '12', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350181', '3', '福清市', '13', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('350182', '3', '长乐市', '14', '3501', '00', null); +INSERT INTO `dt_common_district` VALUES ('3502', '2', '厦门市', '2', '35', '00', null); +INSERT INTO `dt_common_district` VALUES ('350201', '3', '市辖区', '1', '3502', '00', null); +INSERT INTO `dt_common_district` VALUES ('350203', '3', '思明区', '2', '3502', '00', null); +INSERT INTO `dt_common_district` VALUES ('350205', '3', '海沧区', '3', '3502', '00', null); +INSERT INTO `dt_common_district` VALUES ('350206', '3', '湖里区', '4', '3502', '00', null); +INSERT INTO `dt_common_district` VALUES ('350211', '3', '集美区', '5', '3502', '00', null); +INSERT INTO `dt_common_district` VALUES ('350212', '3', '同安区', '6', '3502', '00', null); +INSERT INTO `dt_common_district` VALUES ('350213', '3', '翔安区', '7', '3502', '00', null); +INSERT INTO `dt_common_district` VALUES ('3503', '2', '莆田市', '3', '35', '00', null); +INSERT INTO `dt_common_district` VALUES ('350301', '3', '市辖区', '1', '3503', '00', null); +INSERT INTO `dt_common_district` VALUES ('350302', '3', '城厢区', '2', '3503', '00', null); +INSERT INTO `dt_common_district` VALUES ('350303', '3', '涵江区', '3', '3503', '00', null); +INSERT INTO `dt_common_district` VALUES ('350304', '3', '荔城区', '4', '3503', '00', null); +INSERT INTO `dt_common_district` VALUES ('350305', '3', '秀屿区', '5', '3503', '00', null); +INSERT INTO `dt_common_district` VALUES ('350306', '3', '湄洲岛', '6', '3503', '00', null); +INSERT INTO `dt_common_district` VALUES ('350307', '3', '湄洲北岸开发区', '7', '3503', '00', null); +INSERT INTO `dt_common_district` VALUES ('350322', '3', '仙游县', '8', '3503', '00', null); +INSERT INTO `dt_common_district` VALUES ('3504', '2', '三明市', '4', '35', '00', null); +INSERT INTO `dt_common_district` VALUES ('350401', '3', '市辖区', '1', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('350402', '3', '梅列区', '2', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('350403', '3', '三元区', '3', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('350421', '3', '明溪县', '4', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('350423', '3', '清流县', '5', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('350424', '3', '宁化县', '6', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('350425', '3', '大田县', '7', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('350426', '3', '尤溪县', '8', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('350427', '3', '沙县', '9', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('350428', '3', '将乐县', '10', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('350429', '3', '泰宁县', '11', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('350430', '3', '建宁县', '12', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('350481', '3', '永安市', '13', '3504', '00', null); +INSERT INTO `dt_common_district` VALUES ('3505', '2', '泉州市', '5', '35', '00', null); +INSERT INTO `dt_common_district` VALUES ('350502', '3', '鲤城区', '1', '3505', '00', null); +INSERT INTO `dt_common_district` VALUES ('350503', '3', '丰泽区', '2', '3505', '00', null); +INSERT INTO `dt_common_district` VALUES ('350504', '3', '洛江区', '3', '3505', '00', null); +INSERT INTO `dt_common_district` VALUES ('350505', '3', '泉港区', '4', '3505', '00', null); +INSERT INTO `dt_common_district` VALUES ('350521', '3', '惠安县', '5', '3505', '00', null); +INSERT INTO `dt_common_district` VALUES ('350524', '3', '安溪县', '6', '3505', '00', null); +INSERT INTO `dt_common_district` VALUES ('350525', '3', '永春县', '7', '3505', '00', null); +INSERT INTO `dt_common_district` VALUES ('350526', '3', '德化县', '8', '3505', '00', null); +INSERT INTO `dt_common_district` VALUES ('350571', '3', '泉州台商投资区', '9', '3505', '00', null); +INSERT INTO `dt_common_district` VALUES ('350581', '3', '石狮市', '10', '3505', '00', null); +INSERT INTO `dt_common_district` VALUES ('350582', '3', '晋江市', '11', '3505', '00', null); +INSERT INTO `dt_common_district` VALUES ('350583', '3', '南安市', '12', '3505', '00', null); +INSERT INTO `dt_common_district` VALUES ('3506', '2', '漳州市', '6', '35', '00', null); +INSERT INTO `dt_common_district` VALUES ('350601', '3', '市辖区', '1', '3506', '00', null); +INSERT INTO `dt_common_district` VALUES ('350602', '3', '芗城区', '2', '3506', '00', null); +INSERT INTO `dt_common_district` VALUES ('350603', '3', '龙文区', '3', '3506', '00', null); +INSERT INTO `dt_common_district` VALUES ('350622', '3', '云霄县', '4', '3506', '00', null); +INSERT INTO `dt_common_district` VALUES ('350623', '3', '漳浦县', '5', '3506', '00', null); +INSERT INTO `dt_common_district` VALUES ('350624', '3', '诏安县', '6', '3506', '00', null); +INSERT INTO `dt_common_district` VALUES ('350625', '3', '长泰县', '7', '3506', '00', null); +INSERT INTO `dt_common_district` VALUES ('350626', '3', '东山县', '8', '3506', '00', null); +INSERT INTO `dt_common_district` VALUES ('350627', '3', '南靖县', '9', '3506', '00', null); +INSERT INTO `dt_common_district` VALUES ('350628', '3', '平和县', '10', '3506', '00', null); +INSERT INTO `dt_common_district` VALUES ('350629', '3', '华安县', '11', '3506', '00', null); +INSERT INTO `dt_common_district` VALUES ('350681', '3', '龙海市', '12', '3506', '00', null); +INSERT INTO `dt_common_district` VALUES ('3507', '2', '南平市', '7', '35', '00', null); +INSERT INTO `dt_common_district` VALUES ('350701', '3', '市辖区', '1', '3507', '00', null); +INSERT INTO `dt_common_district` VALUES ('350702', '3', '延平区', '2', '3507', '00', null); +INSERT INTO `dt_common_district` VALUES ('350703', '3', '建阳区', '3', '3507', '00', null); +INSERT INTO `dt_common_district` VALUES ('350721', '3', '顺昌县', '4', '3507', '00', null); +INSERT INTO `dt_common_district` VALUES ('350722', '3', '浦城县', '5', '3507', '00', null); +INSERT INTO `dt_common_district` VALUES ('350723', '3', '光泽县', '6', '3507', '00', null); +INSERT INTO `dt_common_district` VALUES ('350724', '3', '松溪县', '7', '3507', '00', null); +INSERT INTO `dt_common_district` VALUES ('350725', '3', '政和县', '8', '3507', '00', null); +INSERT INTO `dt_common_district` VALUES ('350781', '3', '邵武市', '9', '3507', '00', null); +INSERT INTO `dt_common_district` VALUES ('350782', '3', '武夷山市', '10', '3507', '00', null); +INSERT INTO `dt_common_district` VALUES ('350783', '3', '建瓯市', '11', '3507', '00', null); +INSERT INTO `dt_common_district` VALUES ('3508', '2', '龙岩市', '8', '35', '00', null); +INSERT INTO `dt_common_district` VALUES ('350801', '3', '市辖区', '1', '3508', '00', null); +INSERT INTO `dt_common_district` VALUES ('350802', '3', '新罗区', '2', '3508', '00', null); +INSERT INTO `dt_common_district` VALUES ('350803', '3', '永定区', '3', '3508', '00', null); +INSERT INTO `dt_common_district` VALUES ('350821', '3', '长汀县', '4', '3508', '00', null); +INSERT INTO `dt_common_district` VALUES ('350823', '3', '上杭县', '5', '3508', '00', null); +INSERT INTO `dt_common_district` VALUES ('350824', '3', '武平县', '6', '3508', '00', null); +INSERT INTO `dt_common_district` VALUES ('350825', '3', '连城县', '7', '3508', '00', null); +INSERT INTO `dt_common_district` VALUES ('350881', '3', '漳平市', '8', '3508', '00', null); +INSERT INTO `dt_common_district` VALUES ('3509', '2', '宁德市', '9', '35', '00', null); +INSERT INTO `dt_common_district` VALUES ('350901', '3', '市辖区', '1', '3509', '00', null); +INSERT INTO `dt_common_district` VALUES ('350902', '3', '蕉城区', '2', '3509', '00', null); +INSERT INTO `dt_common_district` VALUES ('350921', '3', '霞浦县', '3', '3509', '00', null); +INSERT INTO `dt_common_district` VALUES ('350922', '3', '古田县', '4', '3509', '00', null); +INSERT INTO `dt_common_district` VALUES ('350923', '3', '屏南县', '5', '3509', '00', null); +INSERT INTO `dt_common_district` VALUES ('350924', '3', '寿宁县', '6', '3509', '00', null); +INSERT INTO `dt_common_district` VALUES ('350925', '3', '周宁县', '7', '3509', '00', null); +INSERT INTO `dt_common_district` VALUES ('350926', '3', '柘荣县', '8', '3509', '00', null); +INSERT INTO `dt_common_district` VALUES ('350981', '3', '福安市', '9', '3509', '00', null); +INSERT INTO `dt_common_district` VALUES ('350982', '3', '福鼎市', '10', '3509', '00', null); +INSERT INTO `dt_common_district` VALUES ('3571', '2', '平潭综合实验区', '10', '35', '00', null); +INSERT INTO `dt_common_district` VALUES ('357121', '3', '平潭县', '1', '3571', '00', null); +INSERT INTO `dt_common_district` VALUES ('36', '1', '江西省', '14', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('3601', '2', '南昌市', '1', '36', '00', null); +INSERT INTO `dt_common_district` VALUES ('360101', '3', '市辖区', '1', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('360102', '3', '东湖区', '2', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('360103', '3', '西湖区', '3', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('360104', '3', '青云谱区', '4', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('360105', '3', '湾里区', '5', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('360111', '3', '青山湖区', '6', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('360112', '3', '南昌经济技术开发区', '7', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('360113', '3', '南昌高新技术产业开发区', '8', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('360114', '3', '红谷滩新区', '9', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('360121', '3', '南昌县', '10', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('360122', '3', '新建区', '11', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('360123', '3', '安义县', '12', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('360124', '3', '进贤县', '13', '3601', '00', null); +INSERT INTO `dt_common_district` VALUES ('3602', '2', '景德镇市', '2', '36', '00', null); +INSERT INTO `dt_common_district` VALUES ('360201', '3', '市辖区', '1', '3602', '00', null); +INSERT INTO `dt_common_district` VALUES ('360202', '3', '昌江区', '2', '3602', '00', null); +INSERT INTO `dt_common_district` VALUES ('360203', '3', '珠山区', '3', '3602', '00', null); +INSERT INTO `dt_common_district` VALUES ('360205', '3', '昌南新区', '4', '3602', '00', null); +INSERT INTO `dt_common_district` VALUES ('360222', '3', '浮梁县', '5', '3602', '00', null); +INSERT INTO `dt_common_district` VALUES ('360281', '3', '乐平市', '6', '3602', '00', null); +INSERT INTO `dt_common_district` VALUES ('3603', '2', '萍乡市', '3', '36', '00', null); +INSERT INTO `dt_common_district` VALUES ('360301', '3', '市辖区', '1', '3603', '00', null); +INSERT INTO `dt_common_district` VALUES ('360302', '3', '安源区', '2', '3603', '00', null); +INSERT INTO `dt_common_district` VALUES ('360313', '3', '湘东区', '3', '3603', '00', null); +INSERT INTO `dt_common_district` VALUES ('360321', '3', '莲花县', '4', '3603', '00', null); +INSERT INTO `dt_common_district` VALUES ('360322', '3', '上栗县', '5', '3603', '00', null); +INSERT INTO `dt_common_district` VALUES ('360323', '3', '芦溪县', '6', '3603', '00', null); +INSERT INTO `dt_common_district` VALUES ('360324', '3', '萍乡市武功山管委会', '7', '3603', '00', null); +INSERT INTO `dt_common_district` VALUES ('360399', '3', '萍乡开发区', '8', '3603', '00', null); +INSERT INTO `dt_common_district` VALUES ('3604', '2', '九江市', '4', '36', '00', null); +INSERT INTO `dt_common_district` VALUES ('360401', '3', '市辖区', '1', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360402', '3', '濂溪区', '2', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360403', '3', '浔阳区', '3', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360404', '3', '柴桑区', '4', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360409', '3', '开发区', '5', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360411', '3', '八里湖新区', '6', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360423', '3', '武宁县', '7', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360424', '3', '修水县', '8', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360425', '3', '永修县', '9', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360426', '3', '德安县', '10', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360428', '3', '都昌县', '11', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360429', '3', '湖口县', '12', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360430', '3', '彭泽县', '13', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360431', '3', '共青城市', '14', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360481', '3', '瑞昌市', '15', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('360483', '3', '庐山市', '16', '3604', '00', null); +INSERT INTO `dt_common_district` VALUES ('3605', '2', '新余市', '5', '36', '00', null); +INSERT INTO `dt_common_district` VALUES ('360501', '3', '市辖区', '1', '3605', '00', null); +INSERT INTO `dt_common_district` VALUES ('360502', '3', '渝水区', '2', '3605', '00', null); +INSERT INTO `dt_common_district` VALUES ('360503', '3', '仙女湖区', '3', '3605', '00', null); +INSERT INTO `dt_common_district` VALUES ('360504', '3', '高新开发区', '4', '3605', '00', null); +INSERT INTO `dt_common_district` VALUES ('360521', '3', '分宜县', '5', '3605', '00', null); +INSERT INTO `dt_common_district` VALUES ('3606', '2', '鹰潭市', '6', '36', '00', null); +INSERT INTO `dt_common_district` VALUES ('360601', '3', '市辖区', '1', '3606', '00', null); +INSERT INTO `dt_common_district` VALUES ('360602', '3', '月湖区', '2', '3606', '00', null); +INSERT INTO `dt_common_district` VALUES ('360622', '3', '余江区', '3', '3606', '00', null); +INSERT INTO `dt_common_district` VALUES ('360681', '3', '贵溪市', '4', '3606', '00', null); +INSERT INTO `dt_common_district` VALUES ('360682', '3', '龙虎山景区', '5', '3606', '00', null); +INSERT INTO `dt_common_district` VALUES ('360683', '3', '鹰潭工业园区', '6', '3606', '00', null); +INSERT INTO `dt_common_district` VALUES ('360684', '3', '信江新区', '7', '3606', '00', null); +INSERT INTO `dt_common_district` VALUES ('3607', '2', '赣州市', '7', '36', '00', null); +INSERT INTO `dt_common_district` VALUES ('360701', '3', '市辖区', '1', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360702', '3', '章贡区', '2', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360703', '3', '赣州经济技术开发区', '3', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360704', '3', '蓉江新区', '4', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360721', '3', '赣县区', '5', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360722', '3', '信丰县', '6', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360723', '3', '大余县', '7', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360724', '3', '上犹县', '8', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360725', '3', '崇义县', '9', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360726', '3', '安远县', '10', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360727', '3', '龙南县', '11', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360728', '3', '定南县', '12', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360729', '3', '全南县', '13', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360730', '3', '宁都县', '14', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360731', '3', '于都县', '15', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360732', '3', '兴国县', '16', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360733', '3', '会昌县', '17', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360734', '3', '寻乌县', '18', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360735', '3', '石城县', '19', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360781', '3', '瑞金市', '20', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('360782', '3', '南康区', '21', '3607', '00', null); +INSERT INTO `dt_common_district` VALUES ('3608', '2', '吉安市', '8', '36', '00', null); +INSERT INTO `dt_common_district` VALUES ('360801', '3', '市辖区', '1', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360802', '3', '吉州区', '2', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360803', '3', '青原区', '3', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360805', '3', '井冈山经济技术开发区', '4', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360821', '3', '吉安县', '5', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360822', '3', '吉水县', '6', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360823', '3', '峡江县', '7', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360824', '3', '新干县', '8', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360825', '3', '永丰县', '9', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360826', '3', '泰和县', '10', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360827', '3', '遂川县', '11', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360828', '3', '万安县', '12', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360829', '3', '安福县', '13', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360830', '3', '永新县', '14', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('360881', '3', '井冈山市', '15', '3608', '00', null); +INSERT INTO `dt_common_district` VALUES ('3609', '2', '宜春市', '9', '36', '00', null); +INSERT INTO `dt_common_district` VALUES ('360902', '3', '袁州区', '1', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('360903', '3', '经济开发区', '2', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('360904', '3', '宜阳新区', '3', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('360905', '3', '明月山温泉风景名胜区', '4', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('360921', '3', '奉新县', '5', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('360922', '3', '万载县', '6', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('360923', '3', '上高县', '7', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('360924', '3', '宜丰县', '8', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('360925', '3', '靖安县', '9', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('360926', '3', '铜鼓县', '10', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('360981', '3', '丰城市', '11', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('360982', '3', '樟树市', '12', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('360983', '3', '高安市', '13', '3609', '00', null); +INSERT INTO `dt_common_district` VALUES ('3610', '2', '抚州市', '10', '36', '00', null); +INSERT INTO `dt_common_district` VALUES ('361001', '3', '市辖区', '1', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361002', '3', '临川区', '2', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361003', '3', '高新技术产业开发区', '3', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361004', '3', '抚州市东临新区管理委员会', '4', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361021', '3', '南城县', '5', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361022', '3', '黎川县', '6', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361023', '3', '南丰县', '7', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361024', '3', '崇仁县', '8', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361025', '3', '乐安县', '9', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361026', '3', '宜黄县', '10', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361027', '3', '金溪县', '11', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361028', '3', '资溪县', '12', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361029', '3', '东乡区', '13', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('361030', '3', '广昌县', '14', '3610', '00', null); +INSERT INTO `dt_common_district` VALUES ('3611', '2', '上饶市', '11', '36', '00', null); +INSERT INTO `dt_common_district` VALUES ('361101', '3', '市辖区', '1', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361102', '3', '信州区', '2', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361103', '3', '广丰区', '3', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361111', '3', '三清山管委会', '4', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361112', '3', '上饶市经济开发区', '5', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361121', '3', '上饶县', '6', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361123', '3', '玉山县', '7', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361124', '3', '铅山县', '8', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361125', '3', '横峰县', '9', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361126', '3', '弋阳县', '10', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361127', '3', '余干县', '11', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361128', '3', '鄱阳县', '12', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361129', '3', '万年县', '13', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361130', '3', '婺源县', '14', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('361181', '3', '德兴市', '15', '3611', '00', null); +INSERT INTO `dt_common_district` VALUES ('37', '1', '山东省', '15', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('3701', '2', '济南市', '1', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('370101', '3', '市辖区', '1', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('370102', '3', '历下区', '2', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('370103', '3', '济南市中区', '3', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('370104', '3', '槐荫区', '4', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('370105', '3', '天桥区', '5', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('370110', '3', '南部山区管委会', '6', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('370111', '3', '济南高新区', '7', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('370112', '3', '历城区', '8', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('370113', '3', '长清区', '9', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('370114', '3', '章丘区', '10', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('370124', '3', '平阴县', '11', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('370125', '3', '济阳县', '12', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('370126', '3', '商河县', '13', '3701', '00', null); +INSERT INTO `dt_common_district` VALUES ('3702', '2', '青岛市', '2', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('370201', '3', '市辖区', '1', '3702', '00', null); +INSERT INTO `dt_common_district` VALUES ('370202', '3', '市南区', '2', '3702', '00', null); +INSERT INTO `dt_common_district` VALUES ('370206', '3', '市北区', '3', '3702', '00', null); +INSERT INTO `dt_common_district` VALUES ('370212', '3', '崂山区', '4', '3702', '00', null); +INSERT INTO `dt_common_district` VALUES ('370213', '3', '李沧区', '5', '3702', '00', null); +INSERT INTO `dt_common_district` VALUES ('370214', '3', '城阳区', '6', '3702', '00', null); +INSERT INTO `dt_common_district` VALUES ('370215', '3', '黄岛区', '7', '3702', '00', null); +INSERT INTO `dt_common_district` VALUES ('370281', '3', '胶州市', '8', '3702', '00', null); +INSERT INTO `dt_common_district` VALUES ('370282', '3', '即墨市', '9', '3702', '00', null); +INSERT INTO `dt_common_district` VALUES ('370283', '3', '平度市', '10', '3702', '00', null); +INSERT INTO `dt_common_district` VALUES ('370285', '3', '莱西市', '11', '3702', '00', null); +INSERT INTO `dt_common_district` VALUES ('3703', '2', '淄博市', '3', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('370301', '3', '市辖区', '1', '3703', '00', null); +INSERT INTO `dt_common_district` VALUES ('370302', '3', '淄川区', '2', '3703', '00', null); +INSERT INTO `dt_common_district` VALUES ('370303', '3', '张店区', '3', '3703', '00', null); +INSERT INTO `dt_common_district` VALUES ('370304', '3', '博山区', '4', '3703', '00', null); +INSERT INTO `dt_common_district` VALUES ('370305', '3', '临淄区', '5', '3703', '00', null); +INSERT INTO `dt_common_district` VALUES ('370306', '3', '周村区', '6', '3703', '00', null); +INSERT INTO `dt_common_district` VALUES ('370307', '3', '淄博高新区', '7', '3703', '00', null); +INSERT INTO `dt_common_district` VALUES ('370308', '3', '文昌湖区', '8', '3703', '00', null); +INSERT INTO `dt_common_district` VALUES ('370321', '3', '桓台县', '9', '3703', '00', null); +INSERT INTO `dt_common_district` VALUES ('370322', '3', '高青县', '10', '3703', '00', null); +INSERT INTO `dt_common_district` VALUES ('370323', '3', '沂源县', '11', '3703', '00', null); +INSERT INTO `dt_common_district` VALUES ('3704', '2', '枣庄市', '4', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('370401', '3', '市辖区', '1', '3704', '00', null); +INSERT INTO `dt_common_district` VALUES ('370402', '3', '枣庄市中区', '2', '3704', '00', null); +INSERT INTO `dt_common_district` VALUES ('370403', '3', '薛城区', '3', '3704', '00', null); +INSERT INTO `dt_common_district` VALUES ('370404', '3', '峄城区', '4', '3704', '00', null); +INSERT INTO `dt_common_district` VALUES ('370405', '3', '台儿庄区', '5', '3704', '00', null); +INSERT INTO `dt_common_district` VALUES ('370406', '3', '山亭区', '6', '3704', '00', null); +INSERT INTO `dt_common_district` VALUES ('370407', '3', '枣庄市高新区', '7', '3704', '00', null); +INSERT INTO `dt_common_district` VALUES ('370481', '3', '滕州市', '8', '3704', '00', null); +INSERT INTO `dt_common_district` VALUES ('3705', '2', '东营市', '5', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('370501', '3', '市辖区', '1', '3705', '00', null); +INSERT INTO `dt_common_district` VALUES ('370502', '3', '东营区', '2', '3705', '00', null); +INSERT INTO `dt_common_district` VALUES ('370503', '3', '河口区', '3', '3705', '00', null); +INSERT INTO `dt_common_district` VALUES ('370521', '3', '垦利区', '4', '3705', '00', null); +INSERT INTO `dt_common_district` VALUES ('370522', '3', '利津县', '5', '3705', '00', null); +INSERT INTO `dt_common_district` VALUES ('370523', '3', '广饶县', '6', '3705', '00', null); +INSERT INTO `dt_common_district` VALUES ('370571', '3', '胜利油田', '7', '3705', '00', null); +INSERT INTO `dt_common_district` VALUES ('370572', '3', '东营经济开发区', '8', '3705', '00', null); +INSERT INTO `dt_common_district` VALUES ('370573', '3', '东营港经济开发区', '9', '3705', '00', null); +INSERT INTO `dt_common_district` VALUES ('3706', '2', '烟台市', '6', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('370601', '3', '市辖区', '1', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370602', '3', '芝罘区', '2', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370611', '3', '福山区', '3', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370612', '3', '牟平区', '4', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370613', '3', '莱山区', '5', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370634', '3', '长岛县', '6', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370671', '3', '烟台高新区', '7', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370681', '3', '龙口市', '8', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370682', '3', '莱阳市', '9', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370683', '3', '莱州市', '10', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370684', '3', '蓬莱市', '11', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370685', '3', '招远市', '12', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370686', '3', '栖霞市', '13', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370687', '3', '海阳市', '14', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('370699', '3', '烟台开发区', '15', '3706', '00', null); +INSERT INTO `dt_common_district` VALUES ('3707', '2', '潍坊市', '7', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('370701', '3', '市辖区', '1', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370702', '3', '潍城区', '2', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370703', '3', '寒亭区', '3', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370704', '3', '坊子区', '4', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370705', '3', '奎文区', '5', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370713', '3', '潍坊市高新开发区', '6', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370714', '3', '潍坊市滨海区', '7', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370716', '3', '峡山区', '8', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370717', '3', '潍坊市综合保税区', '9', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370724', '3', '临朐县', '10', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370725', '3', '昌乐县', '11', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370781', '3', '青州市', '12', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370782', '3', '诸城市', '13', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370783', '3', '寿光市', '14', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370784', '3', '安丘市', '15', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370785', '3', '高密市', '16', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('370786', '3', '昌邑市', '17', '3707', '00', null); +INSERT INTO `dt_common_district` VALUES ('3708', '2', '济宁市', '8', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('370801', '3', '市辖区', '1', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370811', '3', '任城区', '2', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370826', '3', '微山县', '3', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370827', '3', '鱼台县', '4', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370828', '3', '金乡县', '5', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370829', '3', '嘉祥县', '6', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370830', '3', '汶上县', '7', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370831', '3', '泗水县', '8', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370832', '3', '梁山县', '9', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370881', '3', '曲阜市', '10', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370882', '3', '兖州市', '11', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370883', '3', '邹城市', '12', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370890', '3', '济宁高新区', '13', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370893', '3', '济宁北湖新区', '14', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('370894', '3', '济宁经济开发区', '15', '3708', '00', null); +INSERT INTO `dt_common_district` VALUES ('3709', '2', '泰安市', '9', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('370901', '3', '市辖区', '1', '3709', '00', null); +INSERT INTO `dt_common_district` VALUES ('370902', '3', '泰山区', '2', '3709', '00', null); +INSERT INTO `dt_common_district` VALUES ('370911', '3', '岱岳区', '3', '3709', '00', null); +INSERT INTO `dt_common_district` VALUES ('370912', '3', '泰山景区', '4', '3709', '00', null); +INSERT INTO `dt_common_district` VALUES ('370921', '3', '宁阳县', '5', '3709', '00', null); +INSERT INTO `dt_common_district` VALUES ('370923', '3', '东平县', '6', '3709', '00', null); +INSERT INTO `dt_common_district` VALUES ('370982', '3', '新泰市', '7', '3709', '00', null); +INSERT INTO `dt_common_district` VALUES ('370983', '3', '肥城市', '8', '3709', '00', null); +INSERT INTO `dt_common_district` VALUES ('370990', '3', '泰安市高新区', '9', '3709', '00', null); +INSERT INTO `dt_common_district` VALUES ('3710', '2', '威海市', '10', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('371001', '3', '市辖区', '1', '3710', '00', null); +INSERT INTO `dt_common_district` VALUES ('371002', '3', '环翠区', '2', '3710', '00', null); +INSERT INTO `dt_common_district` VALUES ('371081', '3', '文登区', '3', '3710', '00', null); +INSERT INTO `dt_common_district` VALUES ('371082', '3', '荣成市', '4', '3710', '00', null); +INSERT INTO `dt_common_district` VALUES ('371083', '3', '乳山市', '5', '3710', '00', null); +INSERT INTO `dt_common_district` VALUES ('371084', '3', '高技区', '6', '3710', '00', null); +INSERT INTO `dt_common_district` VALUES ('371085', '3', '经技区', '7', '3710', '00', null); +INSERT INTO `dt_common_district` VALUES ('371086', '3', '临港区', '8', '3710', '00', null); +INSERT INTO `dt_common_district` VALUES ('3711', '2', '日照市', '11', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('371101', '3', '市辖区', '1', '3711', '00', null); +INSERT INTO `dt_common_district` VALUES ('371102', '3', '东港区', '2', '3711', '00', null); +INSERT INTO `dt_common_district` VALUES ('371103', '3', '岚山区', '3', '3711', '00', null); +INSERT INTO `dt_common_district` VALUES ('371105', '3', '日照市开发区', '4', '3711', '00', null); +INSERT INTO `dt_common_district` VALUES ('371106', '3', '日照国际海洋城', '5', '3711', '00', null); +INSERT INTO `dt_common_district` VALUES ('371107', '3', '山海天旅游度假区', '6', '3711', '00', null); +INSERT INTO `dt_common_district` VALUES ('371121', '3', '五莲县', '7', '3711', '00', null); +INSERT INTO `dt_common_district` VALUES ('371122', '3', '莒县', '8', '3711', '00', null); +INSERT INTO `dt_common_district` VALUES ('3712', '2', '莱芜市', '12', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('371201', '3', '市辖区', '1', '3712', '00', null); +INSERT INTO `dt_common_district` VALUES ('371202', '3', '莱城区', '2', '3712', '00', null); +INSERT INTO `dt_common_district` VALUES ('371203', '3', '钢城区', '3', '3712', '00', null); +INSERT INTO `dt_common_district` VALUES ('371204', '3', '莱芜市高新区', '4', '3712', '00', null); +INSERT INTO `dt_common_district` VALUES ('371205', '3', '莱芜市经济开发区', '5', '3712', '00', null); +INSERT INTO `dt_common_district` VALUES ('371206', '3', '雪野旅游区', '6', '3712', '00', null); +INSERT INTO `dt_common_district` VALUES ('371207', '3', '莱芜农高区', '7', '3712', '00', null); +INSERT INTO `dt_common_district` VALUES ('3713', '2', '临沂市', '13', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('371301', '3', '市辖区', '1', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371302', '3', '兰山区', '2', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371311', '3', '罗庄区', '3', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371312', '3', '河东区', '4', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371313', '3', '临沂市高新区', '5', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371314', '3', '临沂市经济区', '6', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371315', '3', '临港区', '7', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371321', '3', '沂南县', '8', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371322', '3', '郯城县', '9', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371323', '3', '沂水县', '10', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371324', '3', '兰陵县', '11', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371325', '3', '费县', '12', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371326', '3', '平邑县', '13', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371327', '3', '莒南县', '14', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371328', '3', '蒙阴县', '15', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371329', '3', '临沭县', '16', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('371393', '3', '临沂市蒙山管委会', '17', '3713', '00', null); +INSERT INTO `dt_common_district` VALUES ('3714', '2', '德州市', '14', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('371401', '3', '市辖区', '1', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371402', '3', '德城区', '2', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371412', '3', '德州市经济开发区', '3', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371413', '3', '德州市运河经济开发区', '4', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371421', '3', '陵城区', '5', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371422', '3', '宁津县', '6', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371423', '3', '庆云县', '7', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371424', '3', '临邑县', '8', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371425', '3', '齐河县', '9', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371426', '3', '平原县', '10', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371427', '3', '夏津县', '11', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371428', '3', '武城县', '12', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371481', '3', '乐陵市', '13', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('371482', '3', '禹城市', '14', '3714', '00', null); +INSERT INTO `dt_common_district` VALUES ('3715', '2', '聊城市', '15', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('371501', '3', '市辖区', '1', '3715', '00', null); +INSERT INTO `dt_common_district` VALUES ('371502', '3', '东昌府区', '2', '3715', '00', null); +INSERT INTO `dt_common_district` VALUES ('371509', '3', '聊城经济技术开发区', '3', '3715', '00', null); +INSERT INTO `dt_common_district` VALUES ('371521', '3', '阳谷县', '4', '3715', '00', null); +INSERT INTO `dt_common_district` VALUES ('371522', '3', '莘县', '5', '3715', '00', null); +INSERT INTO `dt_common_district` VALUES ('371523', '3', '茌平县', '6', '3715', '00', null); +INSERT INTO `dt_common_district` VALUES ('371524', '3', '东阿县', '7', '3715', '00', null); +INSERT INTO `dt_common_district` VALUES ('371525', '3', '冠县', '8', '3715', '00', null); +INSERT INTO `dt_common_district` VALUES ('371526', '3', '高唐县', '9', '3715', '00', null); +INSERT INTO `dt_common_district` VALUES ('371581', '3', '临清市', '10', '3715', '00', null); +INSERT INTO `dt_common_district` VALUES ('371591', '3', '聊城高新技术产业开发区', '11', '3715', '00', null); +INSERT INTO `dt_common_district` VALUES ('371592', '3', '江北水城旅游度假区', '12', '3715', '00', null); +INSERT INTO `dt_common_district` VALUES ('3716', '2', '滨州市', '16', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('371601', '3', '市辖区', '1', '3716', '00', null); +INSERT INTO `dt_common_district` VALUES ('371602', '3', '滨城区', '2', '3716', '00', null); +INSERT INTO `dt_common_district` VALUES ('371603', '3', '沾化区', '3', '3716', '00', null); +INSERT INTO `dt_common_district` VALUES ('371621', '3', '惠民县', '4', '3716', '00', null); +INSERT INTO `dt_common_district` VALUES ('371622', '3', '阳信县', '5', '3716', '00', null); +INSERT INTO `dt_common_district` VALUES ('371623', '3', '无棣县', '6', '3716', '00', null); +INSERT INTO `dt_common_district` VALUES ('371625', '3', '博兴县', '7', '3716', '00', null); +INSERT INTO `dt_common_district` VALUES ('371626', '3', '邹平县', '8', '3716', '00', null); +INSERT INTO `dt_common_district` VALUES ('371671', '3', '滨州经济技术开发区', '9', '3716', '00', null); +INSERT INTO `dt_common_district` VALUES ('371672', '3', '滨州市高新区', '10', '3716', '00', null); +INSERT INTO `dt_common_district` VALUES ('371673', '3', '北海经济开发区', '11', '3716', '00', null); +INSERT INTO `dt_common_district` VALUES ('3717', '2', '菏泽市', '17', '37', '00', null); +INSERT INTO `dt_common_district` VALUES ('371701', '3', '市辖区', '1', '3717', '00', null); +INSERT INTO `dt_common_district` VALUES ('371702', '3', '牡丹区', '2', '3717', '00', null); +INSERT INTO `dt_common_district` VALUES ('371703', '3', '定陶区', '3', '3717', '00', null); +INSERT INTO `dt_common_district` VALUES ('371710', '3', '菏泽市开发区', '4', '3717', '00', null); +INSERT INTO `dt_common_district` VALUES ('371711', '3', '菏泽高新技术产业开发区', '5', '3717', '00', null); +INSERT INTO `dt_common_district` VALUES ('371721', '3', '曹县', '6', '3717', '00', null); +INSERT INTO `dt_common_district` VALUES ('371722', '3', '单县', '7', '3717', '00', null); +INSERT INTO `dt_common_district` VALUES ('371723', '3', '成武县', '8', '3717', '00', null); +INSERT INTO `dt_common_district` VALUES ('371724', '3', '巨野县', '9', '3717', '00', null); +INSERT INTO `dt_common_district` VALUES ('371725', '3', '郓城县', '10', '3717', '00', null); +INSERT INTO `dt_common_district` VALUES ('371726', '3', '鄄城县', '11', '3717', '00', null); +INSERT INTO `dt_common_district` VALUES ('371728', '3', '东明县', '12', '3717', '00', null); +INSERT INTO `dt_common_district` VALUES ('41', '1', '河南省', '16', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('4101', '2', '郑州市', '1', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('410101', '3', '市辖区', '1', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410102', '3', '中原区', '2', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410103', '3', '二七区', '3', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410104', '3', '管城回族区', '4', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410105', '3', '金水区', '5', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410106', '3', '上街区', '6', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410108', '3', '惠济区', '7', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410122', '3', '中牟县', '8', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410181', '3', '巩义市', '9', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410182', '3', '荥阳市', '10', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410183', '3', '新密市', '11', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410184', '3', '新郑市', '12', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410185', '3', '登封市', '13', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410190', '3', '开发区', '14', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410191', '3', '高新区', '15', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410192', '3', '航空港区', '16', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('410193', '3', '郑东新区', '17', '4101', '00', null); +INSERT INTO `dt_common_district` VALUES ('4102', '2', '开封市', '2', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('410201', '3', '市辖区', '1', '4102', '00', null); +INSERT INTO `dt_common_district` VALUES ('410202', '3', '龙亭区', '2', '4102', '00', null); +INSERT INTO `dt_common_district` VALUES ('410203', '3', '顺河回族区', '3', '4102', '00', null); +INSERT INTO `dt_common_district` VALUES ('410204', '3', '鼓楼区', '4', '4102', '00', null); +INSERT INTO `dt_common_district` VALUES ('410205', '3', '禹王台区', '5', '4102', '00', null); +INSERT INTO `dt_common_district` VALUES ('410211', '3', '开封新区', '6', '4102', '00', null); +INSERT INTO `dt_common_district` VALUES ('410221', '3', '杞县', '7', '4102', '00', null); +INSERT INTO `dt_common_district` VALUES ('410222', '3', '通许县', '8', '4102', '00', null); +INSERT INTO `dt_common_district` VALUES ('410223', '3', '尉氏县', '9', '4102', '00', null); +INSERT INTO `dt_common_district` VALUES ('410224', '3', '祥符区', '10', '4102', '00', null); +INSERT INTO `dt_common_district` VALUES ('410225', '3', '兰考县', '11', '4102', '00', null); +INSERT INTO `dt_common_district` VALUES ('4103', '2', '洛阳市', '3', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('410301', '3', '市辖区', '1', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410302', '3', '老城区', '2', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410303', '3', '西工区', '3', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410304', '3', '瀍河回族区', '4', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410305', '3', '涧西区', '5', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410306', '3', '吉利区', '6', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410311', '3', '洛龙区', '7', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410322', '3', '孟津县', '8', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410323', '3', '新安县', '9', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410324', '3', '栾川县', '10', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410325', '3', '嵩县', '11', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410326', '3', '汝阳县', '12', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410327', '3', '宜阳县', '13', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410328', '3', '洛宁县', '14', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410329', '3', '伊川县', '15', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410381', '3', '偃师市', '16', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410390', '3', '高新区', '17', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410391', '3', '龙门文化旅游园区', '18', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('410392', '3', '伊洛工业园区', '19', '4103', '00', null); +INSERT INTO `dt_common_district` VALUES ('4104', '2', '平顶山市', '4', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('410401', '3', '市辖区', '1', '4104', '00', null); +INSERT INTO `dt_common_district` VALUES ('410402', '3', '新华区', '2', '4104', '00', null); +INSERT INTO `dt_common_district` VALUES ('410403', '3', '卫东区', '3', '4104', '00', null); +INSERT INTO `dt_common_district` VALUES ('410404', '3', '石龙区', '4', '4104', '00', null); +INSERT INTO `dt_common_district` VALUES ('410411', '3', '湛河区', '5', '4104', '00', null); +INSERT INTO `dt_common_district` VALUES ('410421', '3', '宝丰县', '6', '4104', '00', null); +INSERT INTO `dt_common_district` VALUES ('410422', '3', '叶县', '7', '4104', '00', null); +INSERT INTO `dt_common_district` VALUES ('410423', '3', '鲁山县', '8', '4104', '00', null); +INSERT INTO `dt_common_district` VALUES ('410425', '3', '郏县', '9', '4104', '00', null); +INSERT INTO `dt_common_district` VALUES ('410481', '3', '舞钢市', '10', '4104', '00', null); +INSERT INTO `dt_common_district` VALUES ('410482', '3', '汝州市', '11', '4104', '00', null); +INSERT INTO `dt_common_district` VALUES ('410490', '3', '新城区', '12', '4104', '00', null); +INSERT INTO `dt_common_district` VALUES ('4105', '2', '安阳市', '5', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('410501', '3', '市辖区', '1', '4105', '00', null); +INSERT INTO `dt_common_district` VALUES ('410502', '3', '文峰区', '2', '4105', '00', null); +INSERT INTO `dt_common_district` VALUES ('410503', '3', '北关区', '3', '4105', '00', null); +INSERT INTO `dt_common_district` VALUES ('410505', '3', '殷都区', '4', '4105', '00', null); +INSERT INTO `dt_common_district` VALUES ('410506', '3', '龙安区', '5', '4105', '00', null); +INSERT INTO `dt_common_district` VALUES ('410522', '3', '安阳县', '6', '4105', '00', null); +INSERT INTO `dt_common_district` VALUES ('410523', '3', '汤阴县', '7', '4105', '00', null); +INSERT INTO `dt_common_district` VALUES ('410526', '3', '滑县', '8', '4105', '00', null); +INSERT INTO `dt_common_district` VALUES ('410527', '3', '内黄县', '9', '4105', '00', null); +INSERT INTO `dt_common_district` VALUES ('410581', '3', '林州市', '10', '4105', '00', null); +INSERT INTO `dt_common_district` VALUES ('410590', '3', '开发区', '11', '4105', '00', null); +INSERT INTO `dt_common_district` VALUES ('410591', '3', '安阳新区', '12', '4105', '00', null); +INSERT INTO `dt_common_district` VALUES ('4106', '2', '鹤壁市', '6', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('410601', '3', '市辖区', '1', '4106', '00', null); +INSERT INTO `dt_common_district` VALUES ('410602', '3', '鹤山区', '2', '4106', '00', null); +INSERT INTO `dt_common_district` VALUES ('410603', '3', '山城区', '3', '4106', '00', null); +INSERT INTO `dt_common_district` VALUES ('410611', '3', '淇滨区', '4', '4106', '00', null); +INSERT INTO `dt_common_district` VALUES ('410621', '3', '浚县', '5', '4106', '00', null); +INSERT INTO `dt_common_district` VALUES ('410622', '3', '淇县', '6', '4106', '00', null); +INSERT INTO `dt_common_district` VALUES ('410690', '3', '开发区', '7', '4106', '00', null); +INSERT INTO `dt_common_district` VALUES ('410691', '3', '城乡一体化示范区', '8', '4106', '00', null); +INSERT INTO `dt_common_district` VALUES ('4107', '2', '新乡市', '7', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('410701', '3', '市辖区', '1', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410702', '3', '红旗区', '2', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410703', '3', '卫滨区', '3', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410704', '3', '凤泉区', '4', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410711', '3', '牧野区', '5', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410721', '3', '新乡县', '6', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410724', '3', '获嘉县', '7', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410725', '3', '原阳县', '8', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410726', '3', '延津县', '9', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410727', '3', '封丘县', '10', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410728', '3', '长垣县', '11', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410781', '3', '卫辉市', '12', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410782', '3', '辉县市', '13', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410791', '3', '高新区', '14', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410792', '3', '西工区', '15', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410793', '3', '经济技术开发区', '16', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('410794', '3', '平原新区', '17', '4107', '00', null); +INSERT INTO `dt_common_district` VALUES ('4108', '2', '焦作市', '8', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('410801', '3', '市辖区', '1', '4108', '00', null); +INSERT INTO `dt_common_district` VALUES ('410802', '3', '解放区', '2', '4108', '00', null); +INSERT INTO `dt_common_district` VALUES ('410803', '3', '中站区', '3', '4108', '00', null); +INSERT INTO `dt_common_district` VALUES ('410804', '3', '马村区', '4', '4108', '00', null); +INSERT INTO `dt_common_district` VALUES ('410811', '3', '山阳区', '5', '4108', '00', null); +INSERT INTO `dt_common_district` VALUES ('410821', '3', '修武县', '6', '4108', '00', null); +INSERT INTO `dt_common_district` VALUES ('410822', '3', '博爱县', '7', '4108', '00', null); +INSERT INTO `dt_common_district` VALUES ('410823', '3', '武陟县', '8', '4108', '00', null); +INSERT INTO `dt_common_district` VALUES ('410825', '3', '温县', '9', '4108', '00', null); +INSERT INTO `dt_common_district` VALUES ('410882', '3', '沁阳市', '10', '4108', '00', null); +INSERT INTO `dt_common_district` VALUES ('410883', '3', '孟州市', '11', '4108', '00', null); +INSERT INTO `dt_common_district` VALUES ('410890', '3', '焦作市城乡一体化示范区', '12', '4108', '00', null); +INSERT INTO `dt_common_district` VALUES ('4109', '2', '濮阳市', '9', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('410901', '3', '市辖区', '1', '4109', '00', null); +INSERT INTO `dt_common_district` VALUES ('410902', '3', '华龙区', '2', '4109', '00', null); +INSERT INTO `dt_common_district` VALUES ('410922', '3', '清丰县', '3', '4109', '00', null); +INSERT INTO `dt_common_district` VALUES ('410923', '3', '南乐县', '4', '4109', '00', null); +INSERT INTO `dt_common_district` VALUES ('410926', '3', '范县', '5', '4109', '00', null); +INSERT INTO `dt_common_district` VALUES ('410927', '3', '台前县', '6', '4109', '00', null); +INSERT INTO `dt_common_district` VALUES ('410928', '3', '濮阳县', '7', '4109', '00', null); +INSERT INTO `dt_common_district` VALUES ('410971', '3', '中原油田', '8', '4109', '00', null); +INSERT INTO `dt_common_district` VALUES ('410990', '3', '高新区', '9', '4109', '00', null); +INSERT INTO `dt_common_district` VALUES ('410991', '3', '工业园区', '10', '4109', '00', null); +INSERT INTO `dt_common_district` VALUES ('410992', '3', '城乡一体化示范区', '11', '4109', '00', null); +INSERT INTO `dt_common_district` VALUES ('4110', '2', '许昌市', '10', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('411001', '3', '市辖区', '1', '4110', '00', null); +INSERT INTO `dt_common_district` VALUES ('411002', '3', '魏都区', '2', '4110', '00', null); +INSERT INTO `dt_common_district` VALUES ('411003', '3', '建安区', '3', '4110', '00', null); +INSERT INTO `dt_common_district` VALUES ('411024', '3', '鄢陵县', '4', '4110', '00', null); +INSERT INTO `dt_common_district` VALUES ('411025', '3', '襄城县', '5', '4110', '00', null); +INSERT INTO `dt_common_district` VALUES ('411081', '3', '禹州市', '6', '4110', '00', null); +INSERT INTO `dt_common_district` VALUES ('411082', '3', '长葛市', '7', '4110', '00', null); +INSERT INTO `dt_common_district` VALUES ('411090', '3', '东城区', '8', '4110', '00', null); +INSERT INTO `dt_common_district` VALUES ('411091', '3', '开发区', '9', '4110', '00', null); +INSERT INTO `dt_common_district` VALUES ('411092', '3', '城乡一体化示范区', '10', '4110', '00', null); +INSERT INTO `dt_common_district` VALUES ('4111', '2', '漯河市', '11', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('411101', '3', '市辖区', '1', '4111', '00', null); +INSERT INTO `dt_common_district` VALUES ('411102', '3', '源汇区', '2', '4111', '00', null); +INSERT INTO `dt_common_district` VALUES ('411103', '3', '郾城区', '3', '4111', '00', null); +INSERT INTO `dt_common_district` VALUES ('411104', '3', '召陵区', '4', '4111', '00', null); +INSERT INTO `dt_common_district` VALUES ('411106', '3', '西城区', '5', '4111', '00', null); +INSERT INTO `dt_common_district` VALUES ('411121', '3', '舞阳县', '6', '4111', '00', null); +INSERT INTO `dt_common_district` VALUES ('411122', '3', '临颍县', '7', '4111', '00', null); +INSERT INTO `dt_common_district` VALUES ('411190', '3', '高新区', '8', '4111', '00', null); +INSERT INTO `dt_common_district` VALUES ('4112', '2', '三门峡市', '12', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('411201', '3', '市辖区', '1', '4112', '00', null); +INSERT INTO `dt_common_district` VALUES ('411202', '3', '湖滨区', '2', '4112', '00', null); +INSERT INTO `dt_common_district` VALUES ('411221', '3', '渑池县', '3', '4112', '00', null); +INSERT INTO `dt_common_district` VALUES ('411222', '3', '陕州区', '4', '4112', '00', null); +INSERT INTO `dt_common_district` VALUES ('411224', '3', '卢氏县', '5', '4112', '00', null); +INSERT INTO `dt_common_district` VALUES ('411281', '3', '义马市', '6', '4112', '00', null); +INSERT INTO `dt_common_district` VALUES ('411282', '3', '灵宝市', '7', '4112', '00', null); +INSERT INTO `dt_common_district` VALUES ('411290', '3', '开发区', '8', '4112', '00', null); +INSERT INTO `dt_common_district` VALUES ('411291', '3', '工业园', '9', '4112', '00', null); +INSERT INTO `dt_common_district` VALUES ('4113', '2', '南阳市', '13', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('411301', '3', '市辖区', '1', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411302', '3', '宛城区', '2', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411303', '3', '卧龙区', '3', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411304', '3', '南阳新区', '4', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411305', '3', '官庄工区', '5', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411306', '3', '鸭河工区', '6', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411321', '3', '南召县', '7', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411322', '3', '方城县', '8', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411323', '3', '西峡县', '9', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411324', '3', '镇平县', '10', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411325', '3', '内乡县', '11', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411326', '3', '淅川县', '12', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411327', '3', '社旗县', '13', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411328', '3', '唐河县', '14', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411329', '3', '新野县', '15', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411330', '3', '桐柏县', '16', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411381', '3', '邓州市', '17', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('411390', '3', '高新区', '18', '4113', '00', null); +INSERT INTO `dt_common_district` VALUES ('4114', '2', '商丘市', '14', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('411401', '3', '市辖区', '1', '4114', '00', null); +INSERT INTO `dt_common_district` VALUES ('411402', '3', '梁园区', '2', '4114', '00', null); +INSERT INTO `dt_common_district` VALUES ('411403', '3', '睢阳区', '3', '4114', '00', null); +INSERT INTO `dt_common_district` VALUES ('411421', '3', '民权县', '4', '4114', '00', null); +INSERT INTO `dt_common_district` VALUES ('411422', '3', '睢县', '5', '4114', '00', null); +INSERT INTO `dt_common_district` VALUES ('411423', '3', '宁陵县', '6', '4114', '00', null); +INSERT INTO `dt_common_district` VALUES ('411424', '3', '柘城县', '7', '4114', '00', null); +INSERT INTO `dt_common_district` VALUES ('411425', '3', '虞城县', '8', '4114', '00', null); +INSERT INTO `dt_common_district` VALUES ('411426', '3', '夏邑县', '9', '4114', '00', null); +INSERT INTO `dt_common_district` VALUES ('411481', '3', '永城市', '10', '4114', '00', null); +INSERT INTO `dt_common_district` VALUES ('411490', '3', '开发区', '11', '4114', '00', null); +INSERT INTO `dt_common_district` VALUES ('4115', '2', '信阳市', '15', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('411501', '3', '市辖区', '1', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411502', '3', '浉河区', '2', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411503', '3', '平桥区', '3', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411521', '3', '罗山县', '4', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411522', '3', '光山县', '5', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411523', '3', '新县', '6', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411524', '3', '商城县', '7', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411525', '3', '固始县', '8', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411526', '3', '潢川县', '9', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411527', '3', '淮滨县', '10', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411528', '3', '息县', '11', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411590', '3', '南湾管理区', '12', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411591', '3', '鸡公山管理区', '13', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411592', '3', '羊山新区', '14', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411593', '3', '信阳高新技术产业开发区', '15', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411594', '3', '上天梯非金属矿管理区', '16', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('411595', '3', '明港镇', '17', '4115', '00', null); +INSERT INTO `dt_common_district` VALUES ('4116', '2', '周口市', '16', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('411601', '3', '市辖区', '1', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411602', '3', '川汇区', '2', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411621', '3', '扶沟县', '3', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411622', '3', '西华县', '4', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411623', '3', '商水县', '5', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411624', '3', '沈丘县', '6', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411625', '3', '郸城县', '7', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411626', '3', '淮阳县', '8', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411627', '3', '太康县', '9', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411628', '3', '鹿邑县', '10', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411671', '3', '港口物流产业集聚区', '11', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411672', '3', '经济技术开发区管委会', '12', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411673', '3', '东新区管委会', '13', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('411681', '3', '项城市', '14', '4116', '00', null); +INSERT INTO `dt_common_district` VALUES ('4117', '2', '驻马店市', '17', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('411701', '3', '市辖区', '1', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411702', '3', '驿城区', '2', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411721', '3', '西平县', '3', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411722', '3', '上蔡县', '4', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411723', '3', '平舆县', '5', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411724', '3', '正阳县', '6', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411725', '3', '确山县', '7', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411726', '3', '泌阳县', '8', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411727', '3', '汝南县', '9', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411728', '3', '遂平县', '10', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411729', '3', '新蔡县', '11', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411790', '3', '高新区', '12', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411791', '3', '工业集聚区', '13', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('411792', '3', '城乡一体化示范区', '14', '4117', '00', null); +INSERT INTO `dt_common_district` VALUES ('4190', '2', '省直辖县', '18', '41', '00', null); +INSERT INTO `dt_common_district` VALUES ('419001', '3', '济源市', '1', '4190', '00', null); +INSERT INTO `dt_common_district` VALUES ('42', '1', '湖北省', '17', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('4201', '2', '武汉市', '1', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('420101', '3', '市辖区', '1', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420102', '3', '江岸区', '2', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420103', '3', '江汉区', '3', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420104', '3', '硚口区', '4', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420105', '3', '汉阳区', '5', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420106', '3', '武昌区', '6', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420107', '3', '青山区', '7', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420111', '3', '洪山区', '8', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420112', '3', '东西湖区', '9', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420113', '3', '武汉经济技术开发区(汉南区)', '10', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420114', '3', '蔡甸区', '11', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420115', '3', '江夏区', '12', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420116', '3', '黄陂区', '13', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420117', '3', '新洲区', '14', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420172', '3', '东湖新技术开发区', '15', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('420173', '3', '东湖生态旅游风景区', '16', '4201', '00', null); +INSERT INTO `dt_common_district` VALUES ('4202', '2', '黄石市', '2', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('420201', '3', '市辖区', '1', '4202', '00', null); +INSERT INTO `dt_common_district` VALUES ('420202', '3', '黄石港区', '2', '4202', '00', null); +INSERT INTO `dt_common_district` VALUES ('420203', '3', '西塞山区', '3', '4202', '00', null); +INSERT INTO `dt_common_district` VALUES ('420204', '3', '下陆区', '4', '4202', '00', null); +INSERT INTO `dt_common_district` VALUES ('420205', '3', '铁山区', '5', '4202', '00', null); +INSERT INTO `dt_common_district` VALUES ('420222', '3', '阳新县', '6', '4202', '00', null); +INSERT INTO `dt_common_district` VALUES ('420271', '3', '经济开发区', '7', '4202', '00', null); +INSERT INTO `dt_common_district` VALUES ('420281', '3', '大冶市', '8', '4202', '00', null); +INSERT INTO `dt_common_district` VALUES ('4203', '2', '十堰市', '3', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('420301', '3', '市辖区', '1', '4203', '00', null); +INSERT INTO `dt_common_district` VALUES ('420302', '3', '茅箭区', '2', '4203', '00', null); +INSERT INTO `dt_common_district` VALUES ('420303', '3', '张湾区', '3', '4203', '00', null); +INSERT INTO `dt_common_district` VALUES ('420304', '3', '郧阳区', '4', '4203', '00', null); +INSERT INTO `dt_common_district` VALUES ('420322', '3', '郧西县', '5', '4203', '00', null); +INSERT INTO `dt_common_district` VALUES ('420323', '3', '竹山县', '6', '4203', '00', null); +INSERT INTO `dt_common_district` VALUES ('420324', '3', '竹溪县', '7', '4203', '00', null); +INSERT INTO `dt_common_district` VALUES ('420325', '3', '房县', '8', '4203', '00', null); +INSERT INTO `dt_common_district` VALUES ('420371', '3', '十堰经济开发区', '9', '4203', '00', null); +INSERT INTO `dt_common_district` VALUES ('420372', '3', '武当山特区', '10', '4203', '00', null); +INSERT INTO `dt_common_district` VALUES ('420381', '3', '丹江口市', '11', '4203', '00', null); +INSERT INTO `dt_common_district` VALUES ('4205', '2', '宜昌市', '4', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('420501', '3', '市辖区', '1', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420502', '3', '西陵区', '2', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420503', '3', '伍家岗区', '3', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420504', '3', '点军区', '4', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420505', '3', '猇亭区', '5', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420506', '3', '夷陵区', '6', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420525', '3', '远安县', '7', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420526', '3', '兴山县', '8', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420527', '3', '秭归县', '9', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420528', '3', '长阳土家族自治县', '10', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420529', '3', '五峰土家族自治县', '11', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420571', '3', '宜昌高新区', '12', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420581', '3', '宜都市', '13', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420582', '3', '当阳市', '14', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('420583', '3', '枝江市', '15', '4205', '00', null); +INSERT INTO `dt_common_district` VALUES ('4206', '2', '襄阳市', '5', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('420601', '3', '市辖区', '1', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('420602', '3', '襄城区', '2', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('420606', '3', '樊城区', '3', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('420607', '3', '襄州区', '4', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('420624', '3', '南漳县', '5', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('420625', '3', '谷城县', '6', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('420626', '3', '保康县', '7', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('420671', '3', '高新区', '8', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('420672', '3', '鱼梁洲旅游经济开发区', '9', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('420674', '3', '襄阳经济技术开发区', '10', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('420682', '3', '老河口市', '11', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('420683', '3', '枣阳市', '12', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('420684', '3', '宜城市', '13', '4206', '00', null); +INSERT INTO `dt_common_district` VALUES ('4207', '2', '鄂州市', '6', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('420701', '3', '市辖区', '1', '4207', '00', null); +INSERT INTO `dt_common_district` VALUES ('420702', '3', '梁子湖区', '2', '4207', '00', null); +INSERT INTO `dt_common_district` VALUES ('420703', '3', '华容区', '3', '4207', '00', null); +INSERT INTO `dt_common_district` VALUES ('420704', '3', '鄂城区', '4', '4207', '00', null); +INSERT INTO `dt_common_district` VALUES ('4208', '2', '荆门市', '7', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('420801', '3', '市辖区', '1', '4208', '00', null); +INSERT INTO `dt_common_district` VALUES ('420802', '3', '东宝区', '2', '4208', '00', null); +INSERT INTO `dt_common_district` VALUES ('420804', '3', '掇刀区', '3', '4208', '00', null); +INSERT INTO `dt_common_district` VALUES ('420821', '3', '京山县', '4', '4208', '00', null); +INSERT INTO `dt_common_district` VALUES ('420822', '3', '沙洋县', '5', '4208', '00', null); +INSERT INTO `dt_common_district` VALUES ('420871', '3', '屈家岭管理区', '6', '4208', '00', null); +INSERT INTO `dt_common_district` VALUES ('420872', '3', '沙洋监狱', '7', '4208', '00', null); +INSERT INTO `dt_common_district` VALUES ('420873', '3', '漳河新区', '8', '4208', '00', null); +INSERT INTO `dt_common_district` VALUES ('420881', '3', '钟祥市', '9', '4208', '00', null); +INSERT INTO `dt_common_district` VALUES ('4209', '2', '孝感市', '8', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('420901', '3', '市辖区', '1', '4209', '00', null); +INSERT INTO `dt_common_district` VALUES ('420902', '3', '孝南区', '2', '4209', '00', null); +INSERT INTO `dt_common_district` VALUES ('420921', '3', '孝昌县', '3', '4209', '00', null); +INSERT INTO `dt_common_district` VALUES ('420922', '3', '大悟县', '4', '4209', '00', null); +INSERT INTO `dt_common_district` VALUES ('420923', '3', '云梦县', '5', '4209', '00', null); +INSERT INTO `dt_common_district` VALUES ('420971', '3', '高新区', '6', '4209', '00', null); +INSERT INTO `dt_common_district` VALUES ('420972', '3', '双峰山风景区', '7', '4209', '00', null); +INSERT INTO `dt_common_district` VALUES ('420973', '3', '临空经济区', '8', '4209', '00', null); +INSERT INTO `dt_common_district` VALUES ('420981', '3', '应城市', '9', '4209', '00', null); +INSERT INTO `dt_common_district` VALUES ('420982', '3', '安陆市', '10', '4209', '00', null); +INSERT INTO `dt_common_district` VALUES ('420984', '3', '汉川市', '11', '4209', '00', null); +INSERT INTO `dt_common_district` VALUES ('4210', '2', '荆州市', '9', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('421001', '3', '市辖区', '1', '4210', '00', null); +INSERT INTO `dt_common_district` VALUES ('421002', '3', '沙市区', '2', '4210', '00', null); +INSERT INTO `dt_common_district` VALUES ('421003', '3', '荆州区', '3', '4210', '00', null); +INSERT INTO `dt_common_district` VALUES ('421022', '3', '公安县', '4', '4210', '00', null); +INSERT INTO `dt_common_district` VALUES ('421023', '3', '监利县', '5', '4210', '00', null); +INSERT INTO `dt_common_district` VALUES ('421024', '3', '江陵县', '6', '4210', '00', null); +INSERT INTO `dt_common_district` VALUES ('421071', '3', '荆州经济开发区', '7', '4210', '00', null); +INSERT INTO `dt_common_district` VALUES ('421072', '3', '纪南生态文化旅游区', '8', '4210', '00', null); +INSERT INTO `dt_common_district` VALUES ('421081', '3', '石首市', '9', '4210', '00', null); +INSERT INTO `dt_common_district` VALUES ('421083', '3', '洪湖市', '10', '4210', '00', null); +INSERT INTO `dt_common_district` VALUES ('421087', '3', '松滋市', '11', '4210', '00', null); +INSERT INTO `dt_common_district` VALUES ('4211', '2', '黄冈市', '10', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('421101', '3', '市辖区', '1', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('421102', '3', '黄州区', '2', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('421121', '3', '团风县', '3', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('421122', '3', '红安县', '4', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('421123', '3', '罗田县', '5', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('421124', '3', '英山县', '6', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('421125', '3', '浠水县', '7', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('421126', '3', '蕲春县', '8', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('421127', '3', '黄梅县', '9', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('421171', '3', '龙感湖', '10', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('421172', '3', '黄冈经济开发区', '11', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('421181', '3', '麻城市', '12', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('421182', '3', '武穴市', '13', '4211', '00', null); +INSERT INTO `dt_common_district` VALUES ('4212', '2', '咸宁市', '11', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('421201', '3', '市辖区', '1', '4212', '00', null); +INSERT INTO `dt_common_district` VALUES ('421202', '3', '咸安区', '2', '4212', '00', null); +INSERT INTO `dt_common_district` VALUES ('421221', '3', '嘉鱼县', '3', '4212', '00', null); +INSERT INTO `dt_common_district` VALUES ('421222', '3', '通城县', '4', '4212', '00', null); +INSERT INTO `dt_common_district` VALUES ('421223', '3', '崇阳县', '5', '4212', '00', null); +INSERT INTO `dt_common_district` VALUES ('421224', '3', '通山县', '6', '4212', '00', null); +INSERT INTO `dt_common_district` VALUES ('421281', '3', '赤壁市', '7', '4212', '00', null); +INSERT INTO `dt_common_district` VALUES ('4213', '2', '随州市', '12', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('421301', '3', '市辖区', '1', '4213', '00', null); +INSERT INTO `dt_common_district` VALUES ('421302', '3', '曾都区', '2', '4213', '00', null); +INSERT INTO `dt_common_district` VALUES ('421321', '3', '随县', '3', '4213', '00', null); +INSERT INTO `dt_common_district` VALUES ('421371', '3', '随州高新区', '4', '4213', '00', null); +INSERT INTO `dt_common_district` VALUES ('421372', '3', '大洪山风景区', '5', '4213', '00', null); +INSERT INTO `dt_common_district` VALUES ('421381', '3', '广水市', '6', '4213', '00', null); +INSERT INTO `dt_common_district` VALUES ('4228', '2', '恩施土家族苗族自治州', '13', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('422801', '3', '恩施市', '1', '4228', '00', null); +INSERT INTO `dt_common_district` VALUES ('422802', '3', '利川市', '2', '4228', '00', null); +INSERT INTO `dt_common_district` VALUES ('422822', '3', '建始县', '3', '4228', '00', null); +INSERT INTO `dt_common_district` VALUES ('422823', '3', '巴东县', '4', '4228', '00', null); +INSERT INTO `dt_common_district` VALUES ('422825', '3', '宣恩县', '5', '4228', '00', null); +INSERT INTO `dt_common_district` VALUES ('422826', '3', '咸丰县', '6', '4228', '00', null); +INSERT INTO `dt_common_district` VALUES ('422827', '3', '来凤县', '7', '4228', '00', null); +INSERT INTO `dt_common_district` VALUES ('422828', '3', '鹤峰县', '8', '4228', '00', null); +INSERT INTO `dt_common_district` VALUES ('4290', '2', '省直辖县级行政单位', '14', '42', '00', null); +INSERT INTO `dt_common_district` VALUES ('429004', '3', '仙桃市', '1', '4290', '00', null); +INSERT INTO `dt_common_district` VALUES ('429005', '3', '潜江市', '2', '4290', '00', null); +INSERT INTO `dt_common_district` VALUES ('429006', '3', '天门市', '3', '4290', '00', null); +INSERT INTO `dt_common_district` VALUES ('429021', '3', '神农架林区', '4', '4290', '00', null); +INSERT INTO `dt_common_district` VALUES ('43', '1', '湖南省', '18', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('4301', '2', '长沙市', '1', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('430101', '3', '市辖区', '1', '4301', '00', null); +INSERT INTO `dt_common_district` VALUES ('430102', '3', '芙蓉区', '2', '4301', '00', null); +INSERT INTO `dt_common_district` VALUES ('430103', '3', '天心区', '3', '4301', '00', null); +INSERT INTO `dt_common_district` VALUES ('430104', '3', '岳麓区', '4', '4301', '00', null); +INSERT INTO `dt_common_district` VALUES ('430105', '3', '开福区', '5', '4301', '00', null); +INSERT INTO `dt_common_district` VALUES ('430111', '3', '雨花区', '6', '4301', '00', null); +INSERT INTO `dt_common_district` VALUES ('430112', '3', '望城区', '7', '4301', '00', null); +INSERT INTO `dt_common_district` VALUES ('430121', '3', '长沙县', '8', '4301', '00', null); +INSERT INTO `dt_common_district` VALUES ('430181', '3', '浏阳市', '9', '4301', '00', null); +INSERT INTO `dt_common_district` VALUES ('430182', '3', '宁乡市', '10', '4301', '00', null); +INSERT INTO `dt_common_district` VALUES ('4302', '2', '株洲市', '2', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('430201', '3', '市辖区', '1', '4302', '00', null); +INSERT INTO `dt_common_district` VALUES ('430202', '3', '荷塘区', '2', '4302', '00', null); +INSERT INTO `dt_common_district` VALUES ('430203', '3', '芦淞区', '3', '4302', '00', null); +INSERT INTO `dt_common_district` VALUES ('430204', '3', '石峰区', '4', '4302', '00', null); +INSERT INTO `dt_common_district` VALUES ('430211', '3', '天元区', '5', '4302', '00', null); +INSERT INTO `dt_common_district` VALUES ('430212', '3', '渌口区', '6', '4302', '00', null); +INSERT INTO `dt_common_district` VALUES ('430223', '3', '攸县', '7', '4302', '00', null); +INSERT INTO `dt_common_district` VALUES ('430224', '3', '茶陵县', '8', '4302', '00', null); +INSERT INTO `dt_common_district` VALUES ('430225', '3', '炎陵县', '9', '4302', '00', null); +INSERT INTO `dt_common_district` VALUES ('430281', '3', '醴陵市', '10', '4302', '00', null); +INSERT INTO `dt_common_district` VALUES ('4303', '2', '湘潭市', '3', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('430301', '3', '市辖区', '1', '4303', '00', null); +INSERT INTO `dt_common_district` VALUES ('430302', '3', '雨湖区', '2', '4303', '00', null); +INSERT INTO `dt_common_district` VALUES ('430304', '3', '岳塘区', '3', '4303', '00', null); +INSERT INTO `dt_common_district` VALUES ('430321', '3', '湘潭县', '4', '4303', '00', null); +INSERT INTO `dt_common_district` VALUES ('430381', '3', '湘乡市', '5', '4303', '00', null); +INSERT INTO `dt_common_district` VALUES ('430382', '3', '韶山市', '6', '4303', '00', null); +INSERT INTO `dt_common_district` VALUES ('4304', '2', '衡阳市', '4', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('430401', '3', '市辖区', '1', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('430405', '3', '珠晖区', '2', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('430406', '3', '雁峰区', '3', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('430407', '3', '石鼓区', '4', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('430408', '3', '蒸湘区', '5', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('430412', '3', '南岳区', '6', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('430421', '3', '衡阳县', '7', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('430422', '3', '衡南县', '8', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('430423', '3', '衡山县', '9', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('430424', '3', '衡东县', '10', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('430426', '3', '祁东县', '11', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('430481', '3', '耒阳市', '12', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('430482', '3', '常宁市', '13', '4304', '00', null); +INSERT INTO `dt_common_district` VALUES ('4305', '2', '邵阳市', '5', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('430501', '3', '市辖区', '1', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('430502', '3', '双清区', '2', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('430503', '3', '大祥区', '3', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('430511', '3', '北塔区', '4', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('430521', '3', '邵东县', '5', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('430522', '3', '新邵县', '6', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('430523', '3', '邵阳县', '7', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('430524', '3', '隆回县', '8', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('430525', '3', '洞口县', '9', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('430527', '3', '绥宁县', '10', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('430528', '3', '新宁县', '11', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('430529', '3', '城步苗族自治县', '12', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('430581', '3', '武冈市', '13', '4305', '00', null); +INSERT INTO `dt_common_district` VALUES ('4306', '2', '岳阳市', '6', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('430601', '3', '市辖区', '1', '4306', '00', null); +INSERT INTO `dt_common_district` VALUES ('430602', '3', '岳阳楼区', '2', '4306', '00', null); +INSERT INTO `dt_common_district` VALUES ('430603', '3', '云溪区', '3', '4306', '00', null); +INSERT INTO `dt_common_district` VALUES ('430611', '3', '君山区', '4', '4306', '00', null); +INSERT INTO `dt_common_district` VALUES ('430621', '3', '岳阳县', '5', '4306', '00', null); +INSERT INTO `dt_common_district` VALUES ('430623', '3', '华容县', '6', '4306', '00', null); +INSERT INTO `dt_common_district` VALUES ('430624', '3', '湘阴县', '7', '4306', '00', null); +INSERT INTO `dt_common_district` VALUES ('430626', '3', '平江县', '8', '4306', '00', null); +INSERT INTO `dt_common_district` VALUES ('430681', '3', '汨罗市', '9', '4306', '00', null); +INSERT INTO `dt_common_district` VALUES ('430682', '3', '临湘市', '10', '4306', '00', null); +INSERT INTO `dt_common_district` VALUES ('430691', '3', '屈原管理区', '11', '4306', '00', null); +INSERT INTO `dt_common_district` VALUES ('4307', '2', '常德市', '7', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('430701', '3', '市辖区', '1', '4307', '00', null); +INSERT INTO `dt_common_district` VALUES ('430702', '3', '武陵区', '2', '4307', '00', null); +INSERT INTO `dt_common_district` VALUES ('430703', '3', '鼎城区', '3', '4307', '00', null); +INSERT INTO `dt_common_district` VALUES ('430721', '3', '安乡县', '4', '4307', '00', null); +INSERT INTO `dt_common_district` VALUES ('430722', '3', '汉寿县', '5', '4307', '00', null); +INSERT INTO `dt_common_district` VALUES ('430723', '3', '澧县', '6', '4307', '00', null); +INSERT INTO `dt_common_district` VALUES ('430724', '3', '临澧县', '7', '4307', '00', null); +INSERT INTO `dt_common_district` VALUES ('430725', '3', '桃源县', '8', '4307', '00', null); +INSERT INTO `dt_common_district` VALUES ('430726', '3', '石门县', '9', '4307', '00', null); +INSERT INTO `dt_common_district` VALUES ('430781', '3', '津市市', '10', '4307', '00', null); +INSERT INTO `dt_common_district` VALUES ('430791', '3', '西洞庭管理区', '11', '4307', '00', null); +INSERT INTO `dt_common_district` VALUES ('430792', '3', '西湖管理区', '12', '4307', '00', null); +INSERT INTO `dt_common_district` VALUES ('4308', '2', '张家界市', '8', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('430801', '3', '市辖区', '1', '4308', '00', null); +INSERT INTO `dt_common_district` VALUES ('430802', '3', '永定区', '2', '4308', '00', null); +INSERT INTO `dt_common_district` VALUES ('430811', '3', '武陵源区', '3', '4308', '00', null); +INSERT INTO `dt_common_district` VALUES ('430821', '3', '慈利县', '4', '4308', '00', null); +INSERT INTO `dt_common_district` VALUES ('430822', '3', '桑植县', '5', '4308', '00', null); +INSERT INTO `dt_common_district` VALUES ('4309', '2', '益阳市', '9', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('430901', '3', '市辖区', '1', '4309', '00', null); +INSERT INTO `dt_common_district` VALUES ('430902', '3', '资阳区', '2', '4309', '00', null); +INSERT INTO `dt_common_district` VALUES ('430903', '3', '赫山区', '3', '4309', '00', null); +INSERT INTO `dt_common_district` VALUES ('430921', '3', '南县', '4', '4309', '00', null); +INSERT INTO `dt_common_district` VALUES ('430922', '3', '桃江县', '5', '4309', '00', null); +INSERT INTO `dt_common_district` VALUES ('430923', '3', '安化县', '6', '4309', '00', null); +INSERT INTO `dt_common_district` VALUES ('430981', '3', '沅江市', '7', '4309', '00', null); +INSERT INTO `dt_common_district` VALUES ('430991', '3', '大通湖区', '8', '4309', '00', null); +INSERT INTO `dt_common_district` VALUES ('4310', '2', '郴州市', '10', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('431001', '3', '市辖区', '1', '4310', '00', null); +INSERT INTO `dt_common_district` VALUES ('431002', '3', '北湖区', '2', '4310', '00', null); +INSERT INTO `dt_common_district` VALUES ('431003', '3', '苏仙区', '3', '4310', '00', null); +INSERT INTO `dt_common_district` VALUES ('431021', '3', '桂阳县', '4', '4310', '00', null); +INSERT INTO `dt_common_district` VALUES ('431022', '3', '宜章县', '5', '4310', '00', null); +INSERT INTO `dt_common_district` VALUES ('431023', '3', '永兴县', '6', '4310', '00', null); +INSERT INTO `dt_common_district` VALUES ('431024', '3', '嘉禾县', '7', '4310', '00', null); +INSERT INTO `dt_common_district` VALUES ('431025', '3', '临武县', '8', '4310', '00', null); +INSERT INTO `dt_common_district` VALUES ('431026', '3', '汝城县', '9', '4310', '00', null); +INSERT INTO `dt_common_district` VALUES ('431027', '3', '桂东县', '10', '4310', '00', null); +INSERT INTO `dt_common_district` VALUES ('431028', '3', '安仁县', '11', '4310', '00', null); +INSERT INTO `dt_common_district` VALUES ('431081', '3', '资兴市', '12', '4310', '00', null); +INSERT INTO `dt_common_district` VALUES ('4311', '2', '永州市', '11', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('431101', '3', '市辖区', '1', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('431102', '3', '零陵区', '2', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('431103', '3', '冷水滩区', '3', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('431121', '3', '祁阳县', '4', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('431122', '3', '东安县', '5', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('431123', '3', '双牌县', '6', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('431124', '3', '道县', '7', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('431125', '3', '江永县', '8', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('431126', '3', '宁远县', '9', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('431127', '3', '蓝山县', '10', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('431128', '3', '新田县', '11', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('431129', '3', '江华瑶族自治县', '12', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('431191', '3', '金洞区', '13', '4311', '00', null); +INSERT INTO `dt_common_district` VALUES ('4312', '2', '怀化市', '12', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('431201', '3', '市辖区', '1', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431202', '3', '鹤城区', '2', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431221', '3', '中方县', '3', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431222', '3', '沅陵县', '4', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431223', '3', '辰溪县', '5', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431224', '3', '溆浦县', '6', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431225', '3', '会同县', '7', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431226', '3', '麻阳苗族自治县', '8', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431227', '3', '新晃侗族自治县', '9', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431228', '3', '芷江侗族自治县', '10', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431229', '3', '靖州苗族侗族自治县', '11', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431230', '3', '通道侗族自治县', '12', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431281', '3', '洪江市', '13', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('431291', '3', '洪江区', '14', '4312', '00', null); +INSERT INTO `dt_common_district` VALUES ('4313', '2', '娄底市', '13', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('431301', '3', '市辖区', '1', '4313', '00', null); +INSERT INTO `dt_common_district` VALUES ('431302', '3', '娄星区', '2', '4313', '00', null); +INSERT INTO `dt_common_district` VALUES ('431321', '3', '双峰县', '3', '4313', '00', null); +INSERT INTO `dt_common_district` VALUES ('431322', '3', '新化县', '4', '4313', '00', null); +INSERT INTO `dt_common_district` VALUES ('431381', '3', '冷水江市', '5', '4313', '00', null); +INSERT INTO `dt_common_district` VALUES ('431382', '3', '涟源市', '6', '4313', '00', null); +INSERT INTO `dt_common_district` VALUES ('4331', '2', '湘西土家族苗族自治州', '14', '43', '00', null); +INSERT INTO `dt_common_district` VALUES ('433101', '3', '吉首市', '1', '4331', '00', null); +INSERT INTO `dt_common_district` VALUES ('433122', '3', '泸溪县', '2', '4331', '00', null); +INSERT INTO `dt_common_district` VALUES ('433123', '3', '凤凰县', '3', '4331', '00', null); +INSERT INTO `dt_common_district` VALUES ('433124', '3', '花垣县', '4', '4331', '00', null); +INSERT INTO `dt_common_district` VALUES ('433125', '3', '保靖县', '5', '4331', '00', null); +INSERT INTO `dt_common_district` VALUES ('433126', '3', '古丈县', '6', '4331', '00', null); +INSERT INTO `dt_common_district` VALUES ('433127', '3', '永顺县', '7', '4331', '00', null); +INSERT INTO `dt_common_district` VALUES ('433130', '3', '龙山县', '8', '4331', '00', null); +INSERT INTO `dt_common_district` VALUES ('44', '1', '广东省', '19', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('4401', '2', '广州市', '1', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('440101', '3', '市辖区', '1', '4401', '00', null); +INSERT INTO `dt_common_district` VALUES ('440103', '3', '荔湾区', '2', '4401', '00', null); +INSERT INTO `dt_common_district` VALUES ('440104', '3', '越秀区', '3', '4401', '00', null); +INSERT INTO `dt_common_district` VALUES ('440105', '3', '海珠区', '4', '4401', '00', null); +INSERT INTO `dt_common_district` VALUES ('440106', '3', '天河区', '5', '4401', '00', null); +INSERT INTO `dt_common_district` VALUES ('440111', '3', '白云区', '6', '4401', '00', null); +INSERT INTO `dt_common_district` VALUES ('440112', '3', '黄埔区', '7', '4401', '00', null); +INSERT INTO `dt_common_district` VALUES ('440113', '3', '番禺区', '8', '4401', '00', null); +INSERT INTO `dt_common_district` VALUES ('440114', '3', '花都区', '9', '4401', '00', null); +INSERT INTO `dt_common_district` VALUES ('440115', '3', '南沙区', '10', '4401', '00', null); +INSERT INTO `dt_common_district` VALUES ('440117', '3', '从化区', '11', '4401', '00', null); +INSERT INTO `dt_common_district` VALUES ('440118', '3', '增城区', '12', '4401', '00', null); +INSERT INTO `dt_common_district` VALUES ('4402', '2', '韶关市', '2', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('440201', '3', '市辖区', '1', '4402', '00', null); +INSERT INTO `dt_common_district` VALUES ('440203', '3', '武江区', '2', '4402', '00', null); +INSERT INTO `dt_common_district` VALUES ('440204', '3', '浈江区', '3', '4402', '00', null); +INSERT INTO `dt_common_district` VALUES ('440205', '3', '曲江区', '4', '4402', '00', null); +INSERT INTO `dt_common_district` VALUES ('440222', '3', '始兴县', '5', '4402', '00', null); +INSERT INTO `dt_common_district` VALUES ('440224', '3', '仁化县', '6', '4402', '00', null); +INSERT INTO `dt_common_district` VALUES ('440229', '3', '翁源县', '7', '4402', '00', null); +INSERT INTO `dt_common_district` VALUES ('440232', '3', '乳源瑶族自治县', '8', '4402', '00', null); +INSERT INTO `dt_common_district` VALUES ('440233', '3', '新丰县', '9', '4402', '00', null); +INSERT INTO `dt_common_district` VALUES ('440281', '3', '乐昌市', '10', '4402', '00', null); +INSERT INTO `dt_common_district` VALUES ('440282', '3', '南雄市', '11', '4402', '00', null); +INSERT INTO `dt_common_district` VALUES ('4403', '2', '深圳市', '3', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('440301', '3', '市辖区', '1', '4403', '00', null); +INSERT INTO `dt_common_district` VALUES ('440303', '3', '罗湖区', '2', '4403', '00', null); +INSERT INTO `dt_common_district` VALUES ('440304', '3', '福田区', '3', '4403', '00', null); +INSERT INTO `dt_common_district` VALUES ('440305', '3', '南山区', '4', '4403', '00', null); +INSERT INTO `dt_common_district` VALUES ('440306', '3', '宝安区', '5', '4403', '00', null); +INSERT INTO `dt_common_district` VALUES ('440307', '3', '龙岗区', '6', '4403', '00', null); +INSERT INTO `dt_common_district` VALUES ('440308', '3', '盐田区', '7', '4403', '00', null); +INSERT INTO `dt_common_district` VALUES ('440309', '3', '光明新区', '8', '4403', '00', null); +INSERT INTO `dt_common_district` VALUES ('440310', '3', '坪山区', '9', '4403', '00', null); +INSERT INTO `dt_common_district` VALUES ('440311', '3', '龙华区', '10', '4403', '00', null); +INSERT INTO `dt_common_district` VALUES ('440312', '3', '大鹏新区', '11', '4403', '00', null); +INSERT INTO `dt_common_district` VALUES ('4404', '2', '珠海市', '4', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('440401', '3', '市辖区', '1', '4404', '00', null); +INSERT INTO `dt_common_district` VALUES ('440402', '3', '香洲区', '2', '4404', '00', null); +INSERT INTO `dt_common_district` VALUES ('440403', '3', '斗门区', '3', '4404', '00', null); +INSERT INTO `dt_common_district` VALUES ('440404', '3', '金湾区', '4', '4404', '00', null); +INSERT INTO `dt_common_district` VALUES ('440471', '3', '万山海洋开发试验区', '5', '4404', '00', null); +INSERT INTO `dt_common_district` VALUES ('440472', '3', '高新技术产业开发区', '6', '4404', '00', null); +INSERT INTO `dt_common_district` VALUES ('440473', '3', '高栏港经济区', '7', '4404', '00', null); +INSERT INTO `dt_common_district` VALUES ('440474', '3', '横琴经济开发区', '8', '4404', '00', null); +INSERT INTO `dt_common_district` VALUES ('4405', '2', '汕头市', '5', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('440501', '3', '市辖区', '1', '4405', '00', null); +INSERT INTO `dt_common_district` VALUES ('440507', '3', '龙湖区', '2', '4405', '00', null); +INSERT INTO `dt_common_district` VALUES ('440511', '3', '金平区', '3', '4405', '00', null); +INSERT INTO `dt_common_district` VALUES ('440512', '3', '濠江区', '4', '4405', '00', null); +INSERT INTO `dt_common_district` VALUES ('440513', '3', '潮阳区', '5', '4405', '00', null); +INSERT INTO `dt_common_district` VALUES ('440514', '3', '潮南区', '6', '4405', '00', null); +INSERT INTO `dt_common_district` VALUES ('440515', '3', '澄海区', '7', '4405', '00', null); +INSERT INTO `dt_common_district` VALUES ('440523', '3', '南澳县', '8', '4405', '00', null); +INSERT INTO `dt_common_district` VALUES ('4406', '2', '佛山市', '6', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('440601', '3', '市辖区', '1', '4406', '00', null); +INSERT INTO `dt_common_district` VALUES ('440604', '3', '禅城区', '2', '4406', '00', null); +INSERT INTO `dt_common_district` VALUES ('440605', '3', '南海区', '3', '4406', '00', null); +INSERT INTO `dt_common_district` VALUES ('440606', '3', '顺德区', '4', '4406', '00', null); +INSERT INTO `dt_common_district` VALUES ('440607', '3', '三水区', '5', '4406', '00', null); +INSERT INTO `dt_common_district` VALUES ('440608', '3', '高明区', '6', '4406', '00', null); +INSERT INTO `dt_common_district` VALUES ('4407', '2', '江门市', '7', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('440701', '3', '市辖区', '1', '4407', '00', null); +INSERT INTO `dt_common_district` VALUES ('440703', '3', '蓬江区', '2', '4407', '00', null); +INSERT INTO `dt_common_district` VALUES ('440704', '3', '江海区', '3', '4407', '00', null); +INSERT INTO `dt_common_district` VALUES ('440705', '3', '新会区', '4', '4407', '00', null); +INSERT INTO `dt_common_district` VALUES ('440781', '3', '台山市', '5', '4407', '00', null); +INSERT INTO `dt_common_district` VALUES ('440783', '3', '开平市', '6', '4407', '00', null); +INSERT INTO `dt_common_district` VALUES ('440784', '3', '鹤山市', '7', '4407', '00', null); +INSERT INTO `dt_common_district` VALUES ('440785', '3', '恩平市', '8', '4407', '00', null); +INSERT INTO `dt_common_district` VALUES ('4408', '2', '湛江市', '8', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('440801', '3', '市辖区', '1', '4408', '00', null); +INSERT INTO `dt_common_district` VALUES ('440802', '3', '赤坎区', '2', '4408', '00', null); +INSERT INTO `dt_common_district` VALUES ('440803', '3', '霞山区', '3', '4408', '00', null); +INSERT INTO `dt_common_district` VALUES ('440804', '3', '坡头区', '4', '4408', '00', null); +INSERT INTO `dt_common_district` VALUES ('440811', '3', '麻章区', '5', '4408', '00', null); +INSERT INTO `dt_common_district` VALUES ('440823', '3', '遂溪县', '6', '4408', '00', null); +INSERT INTO `dt_common_district` VALUES ('440825', '3', '徐闻县', '7', '4408', '00', null); +INSERT INTO `dt_common_district` VALUES ('440871', '3', '经济技术开发区', '8', '4408', '00', null); +INSERT INTO `dt_common_district` VALUES ('440873', '3', '奋勇高新技术产业开发区', '9', '4408', '00', null); +INSERT INTO `dt_common_district` VALUES ('440881', '3', '廉江市', '10', '4408', '00', null); +INSERT INTO `dt_common_district` VALUES ('440882', '3', '雷州市', '11', '4408', '00', null); +INSERT INTO `dt_common_district` VALUES ('440883', '3', '吴川市', '12', '4408', '00', null); +INSERT INTO `dt_common_district` VALUES ('4409', '2', '茂名市', '9', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('440902', '3', '茂南区', '1', '4409', '00', null); +INSERT INTO `dt_common_district` VALUES ('440904', '3', '电白区', '2', '4409', '00', null); +INSERT INTO `dt_common_district` VALUES ('440971', '3', '滨海新区', '3', '4409', '00', null); +INSERT INTO `dt_common_district` VALUES ('440972', '3', '高新区', '4', '4409', '00', null); +INSERT INTO `dt_common_district` VALUES ('440981', '3', '高州市', '5', '4409', '00', null); +INSERT INTO `dt_common_district` VALUES ('440982', '3', '化州市', '6', '4409', '00', null); +INSERT INTO `dt_common_district` VALUES ('440983', '3', '信宜市', '7', '4409', '00', null); +INSERT INTO `dt_common_district` VALUES ('4412', '2', '肇庆市', '10', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('441201', '3', '市辖区', '1', '4412', '00', null); +INSERT INTO `dt_common_district` VALUES ('441202', '3', '端州区', '2', '4412', '00', null); +INSERT INTO `dt_common_district` VALUES ('441203', '3', '鼎湖区', '3', '4412', '00', null); +INSERT INTO `dt_common_district` VALUES ('441223', '3', '广宁县', '4', '4412', '00', null); +INSERT INTO `dt_common_district` VALUES ('441224', '3', '怀集县', '5', '4412', '00', null); +INSERT INTO `dt_common_district` VALUES ('441225', '3', '封开县', '6', '4412', '00', null); +INSERT INTO `dt_common_district` VALUES ('441226', '3', '德庆县', '7', '4412', '00', null); +INSERT INTO `dt_common_district` VALUES ('441283', '3', '高要市', '8', '4412', '00', null); +INSERT INTO `dt_common_district` VALUES ('441284', '3', '四会市', '9', '4412', '00', null); +INSERT INTO `dt_common_district` VALUES ('4413', '2', '惠州市', '11', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('441301', '3', '市辖区', '1', '4413', '00', null); +INSERT INTO `dt_common_district` VALUES ('441302', '3', '惠城区', '2', '4413', '00', null); +INSERT INTO `dt_common_district` VALUES ('441303', '3', '惠阳区', '3', '4413', '00', null); +INSERT INTO `dt_common_district` VALUES ('441322', '3', '博罗县', '4', '4413', '00', null); +INSERT INTO `dt_common_district` VALUES ('441323', '3', '惠东县', '5', '4413', '00', null); +INSERT INTO `dt_common_district` VALUES ('441324', '3', '龙门县', '6', '4413', '00', null); +INSERT INTO `dt_common_district` VALUES ('441371', '3', '大亚湾经济技术开发区', '7', '4413', '00', null); +INSERT INTO `dt_common_district` VALUES ('441372', '3', '仲恺高新技术产业开发区', '8', '4413', '00', null); +INSERT INTO `dt_common_district` VALUES ('4414', '2', '梅州市', '12', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('441401', '3', '市辖区', '1', '4414', '00', null); +INSERT INTO `dt_common_district` VALUES ('441402', '3', '梅江区', '2', '4414', '00', null); +INSERT INTO `dt_common_district` VALUES ('441403', '3', '梅县区', '3', '4414', '00', null); +INSERT INTO `dt_common_district` VALUES ('441422', '3', '大埔县', '4', '4414', '00', null); +INSERT INTO `dt_common_district` VALUES ('441423', '3', '丰顺县', '5', '4414', '00', null); +INSERT INTO `dt_common_district` VALUES ('441424', '3', '五华县', '6', '4414', '00', null); +INSERT INTO `dt_common_district` VALUES ('441426', '3', '平远县', '7', '4414', '00', null); +INSERT INTO `dt_common_district` VALUES ('441427', '3', '蕉岭县', '8', '4414', '00', null); +INSERT INTO `dt_common_district` VALUES ('441481', '3', '兴宁市', '9', '4414', '00', null); +INSERT INTO `dt_common_district` VALUES ('4415', '2', '汕尾市', '13', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('441501', '3', '市辖区', '1', '4415', '00', null); +INSERT INTO `dt_common_district` VALUES ('441502', '3', '城区', '2', '4415', '00', null); +INSERT INTO `dt_common_district` VALUES ('441521', '3', '海丰县', '3', '4415', '00', null); +INSERT INTO `dt_common_district` VALUES ('441523', '3', '陆河县', '4', '4415', '00', null); +INSERT INTO `dt_common_district` VALUES ('441571', '3', '红海湾开发区', '5', '4415', '00', null); +INSERT INTO `dt_common_district` VALUES ('441572', '3', '华侨管理区', '6', '4415', '00', null); +INSERT INTO `dt_common_district` VALUES ('441581', '3', '陆丰市', '7', '4415', '00', null); +INSERT INTO `dt_common_district` VALUES ('4416', '2', '河源市', '14', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('441601', '3', '市辖区', '1', '4416', '00', null); +INSERT INTO `dt_common_district` VALUES ('441602', '3', '源城区', '2', '4416', '00', null); +INSERT INTO `dt_common_district` VALUES ('441621', '3', '紫金县', '3', '4416', '00', null); +INSERT INTO `dt_common_district` VALUES ('441622', '3', '龙川县', '4', '4416', '00', null); +INSERT INTO `dt_common_district` VALUES ('441623', '3', '连平县', '5', '4416', '00', null); +INSERT INTO `dt_common_district` VALUES ('441624', '3', '和平县', '6', '4416', '00', null); +INSERT INTO `dt_common_district` VALUES ('441625', '3', '东源县', '7', '4416', '00', null); +INSERT INTO `dt_common_district` VALUES ('4417', '2', '阳江市', '15', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('441701', '3', '市辖区', '1', '4417', '00', null); +INSERT INTO `dt_common_district` VALUES ('441702', '3', '江城区', '2', '4417', '00', null); +INSERT INTO `dt_common_district` VALUES ('441704', '3', '阳东区', '3', '4417', '00', null); +INSERT INTO `dt_common_district` VALUES ('441721', '3', '阳西县', '4', '4417', '00', null); +INSERT INTO `dt_common_district` VALUES ('441771', '3', '海陵岛经济开发试验区', '5', '4417', '00', null); +INSERT INTO `dt_common_district` VALUES ('441773', '3', '高新技术产业开发区', '6', '4417', '00', null); +INSERT INTO `dt_common_district` VALUES ('441781', '3', '阳春市', '7', '4417', '00', null); +INSERT INTO `dt_common_district` VALUES ('4418', '2', '清远市', '16', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('441801', '3', '市辖区', '1', '4418', '00', null); +INSERT INTO `dt_common_district` VALUES ('441802', '3', '清城区', '2', '4418', '00', null); +INSERT INTO `dt_common_district` VALUES ('441803', '3', '清新区', '3', '4418', '00', null); +INSERT INTO `dt_common_district` VALUES ('441821', '3', '佛冈县', '4', '4418', '00', null); +INSERT INTO `dt_common_district` VALUES ('441823', '3', '阳山县', '5', '4418', '00', null); +INSERT INTO `dt_common_district` VALUES ('441825', '3', '连山壮族瑶族自治县', '6', '4418', '00', null); +INSERT INTO `dt_common_district` VALUES ('441826', '3', '连南瑶族自治县', '7', '4418', '00', null); +INSERT INTO `dt_common_district` VALUES ('441881', '3', '英德市', '8', '4418', '00', null); +INSERT INTO `dt_common_district` VALUES ('441882', '3', '连州市', '9', '4418', '00', null); +INSERT INTO `dt_common_district` VALUES ('4419', '2', '东莞市', '17', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('441901', '3', '市直辖乡', '1', '4419', '00', null); +INSERT INTO `dt_common_district` VALUES ('4420', '2', '中山市', '18', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('442001', '3', '市直辖乡', '1', '4420', '00', null); +INSERT INTO `dt_common_district` VALUES ('4451', '2', '潮州市', '19', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('445101', '3', '市辖区', '1', '4451', '00', null); +INSERT INTO `dt_common_district` VALUES ('445102', '3', '湘桥区', '2', '4451', '00', null); +INSERT INTO `dt_common_district` VALUES ('445103', '3', '潮安区', '3', '4451', '00', null); +INSERT INTO `dt_common_district` VALUES ('445122', '3', '饶平县', '4', '4451', '00', null); +INSERT INTO `dt_common_district` VALUES ('445171', '3', '枫溪区', '5', '4451', '00', null); +INSERT INTO `dt_common_district` VALUES ('445172', '3', '凤泉湖高新区', '6', '4451', '00', null); +INSERT INTO `dt_common_district` VALUES ('4452', '2', '揭阳市', '20', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('445201', '3', '市辖区', '1', '4452', '00', null); +INSERT INTO `dt_common_district` VALUES ('445202', '3', '榕城区', '2', '4452', '00', null); +INSERT INTO `dt_common_district` VALUES ('445203', '3', '揭东区', '3', '4452', '00', null); +INSERT INTO `dt_common_district` VALUES ('445222', '3', '揭西县', '4', '4452', '00', null); +INSERT INTO `dt_common_district` VALUES ('445224', '3', '惠来县', '5', '4452', '00', null); +INSERT INTO `dt_common_district` VALUES ('445272', '3', '空港经济区', '6', '4452', '00', null); +INSERT INTO `dt_common_district` VALUES ('445273', '3', '普宁华侨管理区', '7', '4452', '00', null); +INSERT INTO `dt_common_district` VALUES ('445274', '3', '大南山华侨管理区', '8', '4452', '00', null); +INSERT INTO `dt_common_district` VALUES ('445275', '3', '揭阳产业转移工业园', '9', '4452', '00', null); +INSERT INTO `dt_common_district` VALUES ('445281', '3', '普宁市', '10', '4452', '00', null); +INSERT INTO `dt_common_district` VALUES ('4453', '2', '云浮市', '21', '44', '00', null); +INSERT INTO `dt_common_district` VALUES ('445301', '3', '市辖区', '1', '4453', '00', null); +INSERT INTO `dt_common_district` VALUES ('445302', '3', '云城区', '2', '4453', '00', null); +INSERT INTO `dt_common_district` VALUES ('445303', '3', '云安区', '3', '4453', '00', null); +INSERT INTO `dt_common_district` VALUES ('445321', '3', '新兴县', '4', '4453', '00', null); +INSERT INTO `dt_common_district` VALUES ('445322', '3', '郁南县', '5', '4453', '00', null); +INSERT INTO `dt_common_district` VALUES ('445381', '3', '罗定市', '6', '4453', '00', null); +INSERT INTO `dt_common_district` VALUES ('45', '1', '广西壮族自治区', '20', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('4501', '2', '南宁市', '1', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('450101', '3', '市辖区', '1', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('450102', '3', '兴宁区', '2', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('450103', '3', '青秀区', '3', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('450105', '3', '江南区', '4', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('450107', '3', '西乡塘区', '5', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('450108', '3', '良庆区', '6', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('450109', '3', '邕宁区', '7', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('450110', '3', '武鸣区', '8', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('450123', '3', '隆安县', '9', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('450124', '3', '马山县', '10', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('450125', '3', '上林县', '11', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('450126', '3', '宾阳县', '12', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('450127', '3', '横县', '13', '4501', '00', null); +INSERT INTO `dt_common_district` VALUES ('4502', '2', '柳州市', '2', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('450201', '3', '市辖区', '1', '4502', '00', null); +INSERT INTO `dt_common_district` VALUES ('450202', '3', '城中区', '2', '4502', '00', null); +INSERT INTO `dt_common_district` VALUES ('450203', '3', '鱼峰区', '3', '4502', '00', null); +INSERT INTO `dt_common_district` VALUES ('450204', '3', '柳南区', '4', '4502', '00', null); +INSERT INTO `dt_common_district` VALUES ('450205', '3', '柳北区', '5', '4502', '00', null); +INSERT INTO `dt_common_district` VALUES ('450221', '3', '柳江县', '6', '4502', '00', null); +INSERT INTO `dt_common_district` VALUES ('450222', '3', '柳城县', '7', '4502', '00', null); +INSERT INTO `dt_common_district` VALUES ('450223', '3', '鹿寨县', '8', '4502', '00', null); +INSERT INTO `dt_common_district` VALUES ('450224', '3', '融安县', '9', '4502', '00', null); +INSERT INTO `dt_common_district` VALUES ('450225', '3', '融水苗族自治县', '10', '4502', '00', null); +INSERT INTO `dt_common_district` VALUES ('450226', '3', '三江侗族自治县', '11', '4502', '00', null); +INSERT INTO `dt_common_district` VALUES ('4503', '2', '桂林市', '3', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('450301', '3', '市辖区', '1', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450302', '3', '秀峰区', '2', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450303', '3', '叠彩区', '3', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450304', '3', '象山区', '4', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450305', '3', '七星区', '5', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450311', '3', '雁山区', '6', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450312', '3', '临桂区', '7', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450321', '3', '阳朔县', '8', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450323', '3', '灵川县', '9', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450324', '3', '全州县', '10', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450325', '3', '兴安县', '11', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450326', '3', '永福县', '12', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450327', '3', '灌阳县', '13', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450328', '3', '龙胜各族自治县', '14', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450329', '3', '资源县', '15', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450330', '3', '平乐县', '16', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450331', '3', '荔浦市', '17', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('450332', '3', '恭城瑶族自治县', '18', '4503', '00', null); +INSERT INTO `dt_common_district` VALUES ('4504', '2', '梧州市', '4', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('450401', '3', '市辖区', '1', '4504', '00', null); +INSERT INTO `dt_common_district` VALUES ('450403', '3', '万秀区', '2', '4504', '00', null); +INSERT INTO `dt_common_district` VALUES ('450405', '3', '长洲区', '3', '4504', '00', null); +INSERT INTO `dt_common_district` VALUES ('450406', '3', '龙圩区', '4', '4504', '00', null); +INSERT INTO `dt_common_district` VALUES ('450421', '3', '苍梧县', '5', '4504', '00', null); +INSERT INTO `dt_common_district` VALUES ('450422', '3', '藤县', '6', '4504', '00', null); +INSERT INTO `dt_common_district` VALUES ('450423', '3', '蒙山县', '7', '4504', '00', null); +INSERT INTO `dt_common_district` VALUES ('450481', '3', '岑溪市', '8', '4504', '00', null); +INSERT INTO `dt_common_district` VALUES ('4505', '2', '北海市', '5', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('450502', '3', '海城区', '1', '4505', '00', null); +INSERT INTO `dt_common_district` VALUES ('450503', '3', '银海区', '2', '4505', '00', null); +INSERT INTO `dt_common_district` VALUES ('450512', '3', '铁山港区', '3', '4505', '00', null); +INSERT INTO `dt_common_district` VALUES ('450521', '3', '合浦县', '4', '4505', '00', null); +INSERT INTO `dt_common_district` VALUES ('4506', '2', '防城港市', '6', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('450601', '3', '市辖区', '1', '4506', '00', null); +INSERT INTO `dt_common_district` VALUES ('450602', '3', '港口区', '2', '4506', '00', null); +INSERT INTO `dt_common_district` VALUES ('450603', '3', '防城区', '3', '4506', '00', null); +INSERT INTO `dt_common_district` VALUES ('450621', '3', '上思县', '4', '4506', '00', null); +INSERT INTO `dt_common_district` VALUES ('450681', '3', '东兴市', '5', '4506', '00', null); +INSERT INTO `dt_common_district` VALUES ('4507', '2', '钦州市', '7', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('450701', '3', '市辖区', '1', '4507', '00', null); +INSERT INTO `dt_common_district` VALUES ('450702', '3', '钦南区', '2', '4507', '00', null); +INSERT INTO `dt_common_district` VALUES ('450703', '3', '钦北区', '3', '4507', '00', null); +INSERT INTO `dt_common_district` VALUES ('450721', '3', '灵山县', '4', '4507', '00', null); +INSERT INTO `dt_common_district` VALUES ('450722', '3', '浦北县', '5', '4507', '00', null); +INSERT INTO `dt_common_district` VALUES ('4508', '2', '贵港市', '8', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('450801', '3', '市辖区', '1', '4508', '00', null); +INSERT INTO `dt_common_district` VALUES ('450802', '3', '港北区', '2', '4508', '00', null); +INSERT INTO `dt_common_district` VALUES ('450803', '3', '港南区', '3', '4508', '00', null); +INSERT INTO `dt_common_district` VALUES ('450804', '3', '覃塘区', '4', '4508', '00', null); +INSERT INTO `dt_common_district` VALUES ('450821', '3', '平南县', '5', '4508', '00', null); +INSERT INTO `dt_common_district` VALUES ('450881', '3', '桂平市', '6', '4508', '00', null); +INSERT INTO `dt_common_district` VALUES ('4509', '2', '玉林市', '9', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('450901', '3', '市辖区', '1', '4509', '00', null); +INSERT INTO `dt_common_district` VALUES ('450902', '3', '玉州区', '2', '4509', '00', null); +INSERT INTO `dt_common_district` VALUES ('450903', '3', '福绵区', '3', '4509', '00', null); +INSERT INTO `dt_common_district` VALUES ('450921', '3', '容县', '4', '4509', '00', null); +INSERT INTO `dt_common_district` VALUES ('450922', '3', '陆川县', '5', '4509', '00', null); +INSERT INTO `dt_common_district` VALUES ('450923', '3', '博白县', '6', '4509', '00', null); +INSERT INTO `dt_common_district` VALUES ('450924', '3', '兴业县', '7', '4509', '00', null); +INSERT INTO `dt_common_district` VALUES ('450981', '3', '北流市', '8', '4509', '00', null); +INSERT INTO `dt_common_district` VALUES ('4510', '2', '百色市', '10', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('451001', '3', '市辖区', '1', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('451002', '3', '右江区', '2', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('451021', '3', '田阳县', '3', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('451022', '3', '田东县', '4', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('451023', '3', '平果县', '5', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('451024', '3', '德保县', '6', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('451025', '3', '靖西市', '7', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('451026', '3', '那坡县', '8', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('451027', '3', '凌云县', '9', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('451028', '3', '乐业县', '10', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('451029', '3', '田林县', '11', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('451030', '3', '西林县', '12', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('451031', '3', '隆林各族自治县', '13', '4510', '00', null); +INSERT INTO `dt_common_district` VALUES ('4511', '2', '贺州市', '11', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('451101', '3', '市辖区', '1', '4511', '00', null); +INSERT INTO `dt_common_district` VALUES ('451102', '3', '八步区', '2', '4511', '00', null); +INSERT INTO `dt_common_district` VALUES ('451103', '3', '平桂区', '3', '4511', '00', null); +INSERT INTO `dt_common_district` VALUES ('451121', '3', '昭平县', '4', '4511', '00', null); +INSERT INTO `dt_common_district` VALUES ('451122', '3', '钟山县', '5', '4511', '00', null); +INSERT INTO `dt_common_district` VALUES ('451123', '3', '富川瑶族自治县', '6', '4511', '00', null); +INSERT INTO `dt_common_district` VALUES ('4512', '2', '河池市', '12', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('451201', '3', '市辖区', '1', '4512', '00', null); +INSERT INTO `dt_common_district` VALUES ('451202', '3', '金城江区', '2', '4512', '00', null); +INSERT INTO `dt_common_district` VALUES ('451221', '3', '南丹县', '3', '4512', '00', null); +INSERT INTO `dt_common_district` VALUES ('451222', '3', '天峨县', '4', '4512', '00', null); +INSERT INTO `dt_common_district` VALUES ('451223', '3', '凤山县', '5', '4512', '00', null); +INSERT INTO `dt_common_district` VALUES ('451224', '3', '东兰县', '6', '4512', '00', null); +INSERT INTO `dt_common_district` VALUES ('451225', '3', '罗城仫佬族自治县', '7', '4512', '00', null); +INSERT INTO `dt_common_district` VALUES ('451226', '3', '环江毛南族自治县', '8', '4512', '00', null); +INSERT INTO `dt_common_district` VALUES ('451227', '3', '巴马瑶族自治县', '9', '4512', '00', null); +INSERT INTO `dt_common_district` VALUES ('451228', '3', '都安瑶族自治县', '10', '4512', '00', null); +INSERT INTO `dt_common_district` VALUES ('451229', '3', '大化瑶族自治县', '11', '4512', '00', null); +INSERT INTO `dt_common_district` VALUES ('451281', '3', '宜州市', '12', '4512', '00', null); +INSERT INTO `dt_common_district` VALUES ('4513', '2', '来宾市', '13', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('451301', '3', '市辖区', '1', '4513', '00', null); +INSERT INTO `dt_common_district` VALUES ('451302', '3', '兴宾区', '2', '4513', '00', null); +INSERT INTO `dt_common_district` VALUES ('451321', '3', '忻城县', '3', '4513', '00', null); +INSERT INTO `dt_common_district` VALUES ('451322', '3', '象州县', '4', '4513', '00', null); +INSERT INTO `dt_common_district` VALUES ('451323', '3', '武宣县', '5', '4513', '00', null); +INSERT INTO `dt_common_district` VALUES ('451324', '3', '金秀瑶族自治县', '6', '4513', '00', null); +INSERT INTO `dt_common_district` VALUES ('451381', '3', '合山市', '7', '4513', '00', null); +INSERT INTO `dt_common_district` VALUES ('4514', '2', '崇左市', '14', '45', '00', null); +INSERT INTO `dt_common_district` VALUES ('451401', '3', '市辖区', '1', '4514', '00', null); +INSERT INTO `dt_common_district` VALUES ('451402', '3', '江州区', '2', '4514', '00', null); +INSERT INTO `dt_common_district` VALUES ('451421', '3', '扶绥县', '3', '4514', '00', null); +INSERT INTO `dt_common_district` VALUES ('451422', '3', '宁明县', '4', '4514', '00', null); +INSERT INTO `dt_common_district` VALUES ('451423', '3', '龙州县', '5', '4514', '00', null); +INSERT INTO `dt_common_district` VALUES ('451424', '3', '大新县', '6', '4514', '00', null); +INSERT INTO `dt_common_district` VALUES ('451425', '3', '天等县', '7', '4514', '00', null); +INSERT INTO `dt_common_district` VALUES ('451481', '3', '凭祥市', '8', '4514', '00', null); +INSERT INTO `dt_common_district` VALUES ('46', '1', '海南省', '21', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('4601', '2', '海口市', '1', '46', '00', null); +INSERT INTO `dt_common_district` VALUES ('460101', '3', '市辖区', '1', '4601', '00', null); +INSERT INTO `dt_common_district` VALUES ('460105', '3', '秀英区', '2', '4601', '00', null); +INSERT INTO `dt_common_district` VALUES ('460106', '3', '龙华区', '3', '4601', '00', null); +INSERT INTO `dt_common_district` VALUES ('460107', '3', '琼山区', '4', '4601', '00', null); +INSERT INTO `dt_common_district` VALUES ('460108', '3', '美兰区', '5', '4601', '00', null); +INSERT INTO `dt_common_district` VALUES ('4602', '2', '三亚市', '2', '46', '00', null); +INSERT INTO `dt_common_district` VALUES ('460201', '3', '市辖区', '1', '4602', '00', null); +INSERT INTO `dt_common_district` VALUES ('460202', '3', '海棠区', '2', '4602', '00', null); +INSERT INTO `dt_common_district` VALUES ('460203', '3', '吉阳区', '3', '4602', '00', null); +INSERT INTO `dt_common_district` VALUES ('460204', '3', '天涯区', '4', '4602', '00', null); +INSERT INTO `dt_common_district` VALUES ('460205', '3', '崖州区', '5', '4602', '00', null); +INSERT INTO `dt_common_district` VALUES ('4603', '2', '三沙市', '3', '46', '00', null); +INSERT INTO `dt_common_district` VALUES ('460321', '3', '西沙群岛', '1', '4603', '00', null); +INSERT INTO `dt_common_district` VALUES ('460322', '3', '南沙群岛', '2', '4603', '00', null); +INSERT INTO `dt_common_district` VALUES ('460323', '3', '中沙群岛的岛礁及其海域', '3', '4603', '00', null); +INSERT INTO `dt_common_district` VALUES ('4604', '2', '儋州市', '4', '46', '00', null); +INSERT INTO `dt_common_district` VALUES ('460491', '3', '市直管', '1', '4604', '00', null); +INSERT INTO `dt_common_district` VALUES ('4690', '2', '省直辖区(虚拟编码)', '5', '46', '00', null); +INSERT INTO `dt_common_district` VALUES ('469001', '3', '五指山市', '1', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469002', '3', '琼海市', '2', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469005', '3', '文昌市', '3', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469006', '3', '万宁市', '4', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469007', '3', '东方市', '5', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469021', '3', '定安县', '6', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469022', '3', '屯昌县', '7', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469023', '3', '澄迈县', '8', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469024', '3', '临高县', '9', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469025', '3', '白沙黎族自治县', '10', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469026', '3', '昌江黎族自治县', '11', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469027', '3', '乐东黎族自治县', '12', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469028', '3', '陵水黎族自治县', '13', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469029', '3', '保亭黎族苗族自治县', '14', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469030', '3', '琼中黎族苗族自治县', '15', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('469071', '3', '洋浦经济开发区', '16', '4690', '00', null); +INSERT INTO `dt_common_district` VALUES ('50', '1', '重庆市', '22', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('5001', '2', '市辖区', '1', '50', '00', null); +INSERT INTO `dt_common_district` VALUES ('500101', '3', '万州区', '1', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500102', '3', '涪陵区', '2', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500103', '3', '渝中区', '3', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500104', '3', '大渡口区', '4', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500105', '3', '江北区', '5', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500106', '3', '沙坪坝区', '6', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500107', '3', '九龙坡区', '7', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500108', '3', '南岸区', '8', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500109', '3', '北碚区', '9', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500110', '3', '綦江区', '10', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500111', '3', '大足区', '11', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500112', '3', '渝北区', '12', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500113', '3', '巴南区', '13', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500114', '3', '黔江区', '14', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500115', '3', '长寿区', '15', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500116', '3', '江津区', '16', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500117', '3', '合川区', '17', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500118', '3', '永川区', '18', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500119', '3', '南川区', '19', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500120', '3', '璧山区', '20', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500151', '3', '铜梁区', '21', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500152', '3', '潼南区', '22', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500153', '3', '荣昌区', '23', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500154', '3', '开州区', '24', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500155', '3', '梁平区', '25', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500156', '3', '武隆区', '26', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500191', '3', '两江新区', '27', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('500192', '3', '万盛经开区', '28', '5001', '00', null); +INSERT INTO `dt_common_district` VALUES ('5002', '2', '县', '2', '50', '00', null); +INSERT INTO `dt_common_district` VALUES ('500229', '3', '城口县', '1', '5002', '00', null); +INSERT INTO `dt_common_district` VALUES ('500230', '3', '丰都县', '2', '5002', '00', null); +INSERT INTO `dt_common_district` VALUES ('500231', '3', '垫江县', '3', '5002', '00', null); +INSERT INTO `dt_common_district` VALUES ('500233', '3', '忠县', '4', '5002', '00', null); +INSERT INTO `dt_common_district` VALUES ('500235', '3', '云阳县', '5', '5002', '00', null); +INSERT INTO `dt_common_district` VALUES ('500236', '3', '奉节县', '6', '5002', '00', null); +INSERT INTO `dt_common_district` VALUES ('500237', '3', '巫山县', '7', '5002', '00', null); +INSERT INTO `dt_common_district` VALUES ('500238', '3', '巫溪县', '8', '5002', '00', null); +INSERT INTO `dt_common_district` VALUES ('500240', '3', '石柱土家族自治县', '9', '5002', '00', null); +INSERT INTO `dt_common_district` VALUES ('500241', '3', '秀山土家族苗族自治县', '10', '5002', '00', null); +INSERT INTO `dt_common_district` VALUES ('500242', '3', '酉阳土家族苗族自治县', '11', '5002', '00', null); +INSERT INTO `dt_common_district` VALUES ('500243', '3', '彭水苗族土家族自治县', '12', '5002', '00', null); +INSERT INTO `dt_common_district` VALUES ('51', '1', '四川省', '23', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('5101', '2', '成都市', '1', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('510101', '3', '市辖区', '1', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510104', '3', '锦江区', '2', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510105', '3', '青羊区', '3', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510106', '3', '金牛区', '4', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510107', '3', '武侯区', '5', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510108', '3', '成华区', '6', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510110', '3', '天府新区', '7', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510112', '3', '龙泉驿区', '8', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510113', '3', '青白江区', '9', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510114', '3', '新都区', '10', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510115', '3', '温江区', '11', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510116', '3', '双流区', '12', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510117', '3', '郫都区', '13', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510121', '3', '金堂县', '14', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510129', '3', '大邑县', '15', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510131', '3', '蒲江县', '16', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510132', '3', '新津县', '17', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510181', '3', '都江堰市', '18', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510182', '3', '彭州市', '19', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510183', '3', '邛崃市', '20', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510184', '3', '崇州市', '21', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510185', '3', '简阳市', '22', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('510199', '3', '高新区', '23', '5101', '00', null); +INSERT INTO `dt_common_district` VALUES ('5103', '2', '自贡市', '2', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('510302', '3', '自流井区', '1', '5103', '00', null); +INSERT INTO `dt_common_district` VALUES ('510303', '3', '贡井区', '2', '5103', '00', null); +INSERT INTO `dt_common_district` VALUES ('510304', '3', '大安区', '3', '5103', '00', null); +INSERT INTO `dt_common_district` VALUES ('510311', '3', '沿滩区', '4', '5103', '00', null); +INSERT INTO `dt_common_district` VALUES ('510321', '3', '荣县', '5', '5103', '00', null); +INSERT INTO `dt_common_district` VALUES ('510322', '3', '富顺县', '6', '5103', '00', null); +INSERT INTO `dt_common_district` VALUES ('5104', '2', '攀枝花市', '3', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('510401', '3', '市辖区', '1', '5104', '00', null); +INSERT INTO `dt_common_district` VALUES ('510402', '3', '东区', '2', '5104', '00', null); +INSERT INTO `dt_common_district` VALUES ('510403', '3', '西区', '3', '5104', '00', null); +INSERT INTO `dt_common_district` VALUES ('510411', '3', '仁和区', '4', '5104', '00', null); +INSERT INTO `dt_common_district` VALUES ('510421', '3', '米易县', '5', '5104', '00', null); +INSERT INTO `dt_common_district` VALUES ('510422', '3', '盐边县', '6', '5104', '00', null); +INSERT INTO `dt_common_district` VALUES ('510471', '3', '攀钢集团公司', '7', '5104', '00', null); +INSERT INTO `dt_common_district` VALUES ('510472', '3', '第十九冶金建设公司', '8', '5104', '00', null); +INSERT INTO `dt_common_district` VALUES ('510473', '3', '攀煤集团公司', '9', '5104', '00', null); +INSERT INTO `dt_common_district` VALUES ('5105', '2', '泸州市', '4', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('510501', '3', '市辖区', '1', '5105', '00', null); +INSERT INTO `dt_common_district` VALUES ('510502', '3', '江阳区', '2', '5105', '00', null); +INSERT INTO `dt_common_district` VALUES ('510503', '3', '纳溪区', '3', '5105', '00', null); +INSERT INTO `dt_common_district` VALUES ('510504', '3', '龙马潭区', '4', '5105', '00', null); +INSERT INTO `dt_common_district` VALUES ('510521', '3', '泸县', '5', '5105', '00', null); +INSERT INTO `dt_common_district` VALUES ('510522', '3', '合江县', '6', '5105', '00', null); +INSERT INTO `dt_common_district` VALUES ('510524', '3', '叙永县', '7', '5105', '00', null); +INSERT INTO `dt_common_district` VALUES ('510525', '3', '古蔺县', '8', '5105', '00', null); +INSERT INTO `dt_common_district` VALUES ('5106', '2', '德阳市', '5', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('510601', '3', '市辖区', '1', '5106', '00', null); +INSERT INTO `dt_common_district` VALUES ('510603', '3', '旌阳区', '2', '5106', '00', null); +INSERT INTO `dt_common_district` VALUES ('510623', '3', '中江县', '3', '5106', '00', null); +INSERT INTO `dt_common_district` VALUES ('510626', '3', '罗江县', '4', '5106', '00', null); +INSERT INTO `dt_common_district` VALUES ('510681', '3', '广汉市', '5', '5106', '00', null); +INSERT INTO `dt_common_district` VALUES ('510682', '3', '什邡市', '6', '5106', '00', null); +INSERT INTO `dt_common_district` VALUES ('510683', '3', '绵竹市', '7', '5106', '00', null); +INSERT INTO `dt_common_district` VALUES ('5107', '2', '绵阳市', '6', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('510701', '3', '市辖区', '1', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510703', '3', '涪城区', '2', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510704', '3', '游仙区', '3', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510722', '3', '三台县', '4', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510723', '3', '盐亭县', '5', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510724', '3', '安县', '6', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510725', '3', '梓潼县', '7', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510726', '3', '北川羌族自治县', '8', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510727', '3', '平武县', '9', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510771', '3', '高新区', '10', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510772', '3', '科学城', '11', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510776', '3', '科创区', '12', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510777', '3', '经开区', '13', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510778', '3', '仙海区', '14', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('510781', '3', '江油市', '15', '5107', '00', null); +INSERT INTO `dt_common_district` VALUES ('5108', '2', '广元市', '7', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('510801', '3', '市辖区', '1', '5108', '00', null); +INSERT INTO `dt_common_district` VALUES ('510802', '3', '利州区', '2', '5108', '00', null); +INSERT INTO `dt_common_district` VALUES ('510811', '3', '昭化区', '3', '5108', '00', null); +INSERT INTO `dt_common_district` VALUES ('510812', '3', '朝天区', '4', '5108', '00', null); +INSERT INTO `dt_common_district` VALUES ('510821', '3', '旺苍县', '5', '5108', '00', null); +INSERT INTO `dt_common_district` VALUES ('510822', '3', '青川县', '6', '5108', '00', null); +INSERT INTO `dt_common_district` VALUES ('510823', '3', '剑阁县', '7', '5108', '00', null); +INSERT INTO `dt_common_district` VALUES ('510824', '3', '苍溪县', '8', '5108', '00', null); +INSERT INTO `dt_common_district` VALUES ('510871', '3', '经开区', '9', '5108', '00', null); +INSERT INTO `dt_common_district` VALUES ('5109', '2', '遂宁市', '8', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('510901', '3', '市辖区', '1', '5109', '00', null); +INSERT INTO `dt_common_district` VALUES ('510903', '3', '船山区', '2', '5109', '00', null); +INSERT INTO `dt_common_district` VALUES ('510904', '3', '安居区', '3', '5109', '00', null); +INSERT INTO `dt_common_district` VALUES ('510921', '3', '蓬溪县', '4', '5109', '00', null); +INSERT INTO `dt_common_district` VALUES ('510922', '3', '射洪县', '5', '5109', '00', null); +INSERT INTO `dt_common_district` VALUES ('510923', '3', '大英县', '6', '5109', '00', null); +INSERT INTO `dt_common_district` VALUES ('5110', '2', '内江市', '9', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('511001', '3', '市辖区', '1', '5110', '00', null); +INSERT INTO `dt_common_district` VALUES ('511002', '3', '市中区', '2', '5110', '00', null); +INSERT INTO `dt_common_district` VALUES ('511003', '3', '经开区', '3', '5110', '00', null); +INSERT INTO `dt_common_district` VALUES ('511011', '3', '东兴区', '4', '5110', '00', null); +INSERT INTO `dt_common_district` VALUES ('511024', '3', '威远县', '5', '5110', '00', null); +INSERT INTO `dt_common_district` VALUES ('511025', '3', '资中县', '6', '5110', '00', null); +INSERT INTO `dt_common_district` VALUES ('511083', '3', '隆昌市', '7', '5110', '00', null); +INSERT INTO `dt_common_district` VALUES ('5111', '2', '乐山市', '10', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('511101', '3', '市辖区', '1', '5111', '00', null); +INSERT INTO `dt_common_district` VALUES ('511102', '3', '市中区', '2', '5111', '00', null); +INSERT INTO `dt_common_district` VALUES ('511111', '3', '沙湾区', '3', '5111', '00', null); +INSERT INTO `dt_common_district` VALUES ('511112', '3', '五通桥区', '4', '5111', '00', null); +INSERT INTO `dt_common_district` VALUES ('511113', '3', '金口河区', '5', '5111', '00', null); +INSERT INTO `dt_common_district` VALUES ('511123', '3', '犍为县', '6', '5111', '00', null); +INSERT INTO `dt_common_district` VALUES ('511124', '3', '井研县', '7', '5111', '00', null); +INSERT INTO `dt_common_district` VALUES ('511126', '3', '夹江县', '8', '5111', '00', null); +INSERT INTO `dt_common_district` VALUES ('511129', '3', '沐川县', '9', '5111', '00', null); +INSERT INTO `dt_common_district` VALUES ('511132', '3', '峨边彝族自治县', '10', '5111', '00', null); +INSERT INTO `dt_common_district` VALUES ('511133', '3', '马边彝族自治县', '11', '5111', '00', null); +INSERT INTO `dt_common_district` VALUES ('511181', '3', '峨眉山市', '12', '5111', '00', null); +INSERT INTO `dt_common_district` VALUES ('5113', '2', '南充市', '11', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('511301', '3', '市辖区', '1', '5113', '00', null); +INSERT INTO `dt_common_district` VALUES ('511302', '3', '顺庆区', '2', '5113', '00', null); +INSERT INTO `dt_common_district` VALUES ('511303', '3', '高坪区', '3', '5113', '00', null); +INSERT INTO `dt_common_district` VALUES ('511304', '3', '嘉陵区', '4', '5113', '00', null); +INSERT INTO `dt_common_district` VALUES ('511321', '3', '南部县', '5', '5113', '00', null); +INSERT INTO `dt_common_district` VALUES ('511322', '3', '营山县', '6', '5113', '00', null); +INSERT INTO `dt_common_district` VALUES ('511323', '3', '蓬安县', '7', '5113', '00', null); +INSERT INTO `dt_common_district` VALUES ('511324', '3', '仪陇县', '8', '5113', '00', null); +INSERT INTO `dt_common_district` VALUES ('511325', '3', '西充县', '9', '5113', '00', null); +INSERT INTO `dt_common_district` VALUES ('511381', '3', '阆中市', '10', '5113', '00', null); +INSERT INTO `dt_common_district` VALUES ('5114', '2', '眉山市', '12', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('511401', '3', '市辖区', '1', '5114', '00', null); +INSERT INTO `dt_common_district` VALUES ('511402', '3', '东坡区', '2', '5114', '00', null); +INSERT INTO `dt_common_district` VALUES ('511403', '3', '彭山区', '3', '5114', '00', null); +INSERT INTO `dt_common_district` VALUES ('511421', '3', '仁寿县', '4', '5114', '00', null); +INSERT INTO `dt_common_district` VALUES ('511423', '3', '洪雅县', '5', '5114', '00', null); +INSERT INTO `dt_common_district` VALUES ('511424', '3', '丹棱县', '6', '5114', '00', null); +INSERT INTO `dt_common_district` VALUES ('511425', '3', '青神县', '7', '5114', '00', null); +INSERT INTO `dt_common_district` VALUES ('5115', '2', '宜宾市', '13', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('511501', '3', '市辖区', '1', '5115', '00', null); +INSERT INTO `dt_common_district` VALUES ('511502', '3', '翠屏区', '2', '5115', '00', null); +INSERT INTO `dt_common_district` VALUES ('511503', '3', '南溪区', '3', '5115', '00', null); +INSERT INTO `dt_common_district` VALUES ('511504', '3', '叙州区', '4', '5115', '00', null); +INSERT INTO `dt_common_district` VALUES ('511521', '3', '宜宾县', '5', '5115', '00', null); +INSERT INTO `dt_common_district` VALUES ('511523', '3', '江安县', '6', '5115', '00', null); +INSERT INTO `dt_common_district` VALUES ('511524', '3', '长宁县', '7', '5115', '00', null); +INSERT INTO `dt_common_district` VALUES ('511525', '3', '高县', '8', '5115', '00', null); +INSERT INTO `dt_common_district` VALUES ('511526', '3', '珙县', '9', '5115', '00', null); +INSERT INTO `dt_common_district` VALUES ('511527', '3', '筠连县', '10', '5115', '00', null); +INSERT INTO `dt_common_district` VALUES ('511528', '3', '兴文县', '11', '5115', '00', null); +INSERT INTO `dt_common_district` VALUES ('511529', '3', '屏山县', '12', '5115', '00', null); +INSERT INTO `dt_common_district` VALUES ('5116', '2', '广安市', '14', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('511601', '3', '市辖区', '1', '5116', '00', null); +INSERT INTO `dt_common_district` VALUES ('511602', '3', '广安区', '2', '5116', '00', null); +INSERT INTO `dt_common_district` VALUES ('511603', '3', '前锋区', '3', '5116', '00', null); +INSERT INTO `dt_common_district` VALUES ('511621', '3', '岳池县', '4', '5116', '00', null); +INSERT INTO `dt_common_district` VALUES ('511622', '3', '武胜县', '5', '5116', '00', null); +INSERT INTO `dt_common_district` VALUES ('511623', '3', '邻水县', '6', '5116', '00', null); +INSERT INTO `dt_common_district` VALUES ('511681', '3', '华蓥市', '7', '5116', '00', null); +INSERT INTO `dt_common_district` VALUES ('5117', '2', '达州市', '15', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('511701', '3', '市辖区', '1', '5117', '00', null); +INSERT INTO `dt_common_district` VALUES ('511702', '3', '通川区', '2', '5117', '00', null); +INSERT INTO `dt_common_district` VALUES ('511703', '3', '达川区', '3', '5117', '00', null); +INSERT INTO `dt_common_district` VALUES ('511704', '3', '经开区', '4', '5117', '00', null); +INSERT INTO `dt_common_district` VALUES ('511722', '3', '宣汉县', '5', '5117', '00', null); +INSERT INTO `dt_common_district` VALUES ('511723', '3', '开江县', '6', '5117', '00', null); +INSERT INTO `dt_common_district` VALUES ('511724', '3', '大竹县', '7', '5117', '00', null); +INSERT INTO `dt_common_district` VALUES ('511725', '3', '渠县', '8', '5117', '00', null); +INSERT INTO `dt_common_district` VALUES ('511781', '3', '万源市', '9', '5117', '00', null); +INSERT INTO `dt_common_district` VALUES ('5118', '2', '雅安市', '16', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('511801', '3', '市辖区', '1', '5118', '00', null); +INSERT INTO `dt_common_district` VALUES ('511802', '3', '雨城区', '2', '5118', '00', null); +INSERT INTO `dt_common_district` VALUES ('511803', '3', '名山区', '3', '5118', '00', null); +INSERT INTO `dt_common_district` VALUES ('511822', '3', '荥经县', '4', '5118', '00', null); +INSERT INTO `dt_common_district` VALUES ('511823', '3', '汉源县', '5', '5118', '00', null); +INSERT INTO `dt_common_district` VALUES ('511824', '3', '石棉县', '6', '5118', '00', null); +INSERT INTO `dt_common_district` VALUES ('511825', '3', '天全县', '7', '5118', '00', null); +INSERT INTO `dt_common_district` VALUES ('511826', '3', '芦山县', '8', '5118', '00', null); +INSERT INTO `dt_common_district` VALUES ('511827', '3', '宝兴县', '9', '5118', '00', null); +INSERT INTO `dt_common_district` VALUES ('5119', '2', '巴中市', '17', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('511902', '3', '巴州区', '1', '5119', '00', null); +INSERT INTO `dt_common_district` VALUES ('511903', '3', '恩阳区', '2', '5119', '00', null); +INSERT INTO `dt_common_district` VALUES ('511921', '3', '通江县', '3', '5119', '00', null); +INSERT INTO `dt_common_district` VALUES ('511922', '3', '南江县', '4', '5119', '00', null); +INSERT INTO `dt_common_district` VALUES ('511923', '3', '平昌县', '5', '5119', '00', null); +INSERT INTO `dt_common_district` VALUES ('5120', '2', '资阳市', '18', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('512002', '3', '雁江区', '1', '5120', '00', null); +INSERT INTO `dt_common_district` VALUES ('512021', '3', '安岳县', '2', '5120', '00', null); +INSERT INTO `dt_common_district` VALUES ('512022', '3', '乐至县', '3', '5120', '00', null); +INSERT INTO `dt_common_district` VALUES ('5132', '2', '阿坝藏族羌族自治州', '19', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('513201', '3', '马尔康市', '1', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('513221', '3', '汶川县', '2', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('513222', '3', '理县', '3', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('513223', '3', '茂县', '4', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('513224', '3', '松潘县', '5', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('513225', '3', '九寨沟县', '6', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('513226', '3', '金川县', '7', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('513227', '3', '小金县', '8', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('513228', '3', '黑水县', '9', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('513230', '3', '壤塘县', '10', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('513231', '3', '阿坝县', '11', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('513232', '3', '若尔盖县', '12', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('513233', '3', '红原县', '13', '5132', '00', null); +INSERT INTO `dt_common_district` VALUES ('5133', '2', '甘孜藏族自治州', '20', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('513321', '3', '康定县', '1', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513322', '3', '泸定县', '2', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513323', '3', '丹巴县', '3', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513324', '3', '九龙县', '4', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513325', '3', '雅江县', '5', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513326', '3', '道孚县', '6', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513327', '3', '炉霍县', '7', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513328', '3', '甘孜县', '8', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513329', '3', '新龙县', '9', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513330', '3', '德格县', '10', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513331', '3', '白玉县', '11', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513332', '3', '石渠县', '12', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513333', '3', '色达县', '13', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513334', '3', '理塘县', '14', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513335', '3', '巴塘县', '15', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513336', '3', '乡城县', '16', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513337', '3', '稻城县', '17', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513338', '3', '得荣县', '18', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('513399', '3', '海螺沟景区管理局', '19', '5133', '00', null); +INSERT INTO `dt_common_district` VALUES ('5134', '2', '凉山彝族自治州', '21', '51', '00', null); +INSERT INTO `dt_common_district` VALUES ('513401', '3', '西昌市', '1', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513422', '3', '木里藏族自治县', '2', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513423', '3', '盐源县', '3', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513424', '3', '德昌县', '4', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513425', '3', '会理县', '5', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513426', '3', '会东县', '6', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513427', '3', '宁南县', '7', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513428', '3', '普格县', '8', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513429', '3', '布拖县', '9', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513430', '3', '金阳县', '10', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513431', '3', '昭觉县', '11', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513432', '3', '喜德县', '12', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513433', '3', '冕宁县', '13', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513434', '3', '越西县', '14', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513435', '3', '甘洛县', '15', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513436', '3', '美姑县', '16', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('513437', '3', '雷波县', '17', '5134', '00', null); +INSERT INTO `dt_common_district` VALUES ('52', '1', '贵州省', '24', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('5201', '2', '贵阳市', '1', '52', '00', null); +INSERT INTO `dt_common_district` VALUES ('520101', '3', '市辖区', '1', '5201', '00', null); +INSERT INTO `dt_common_district` VALUES ('520102', '3', '南明区', '2', '5201', '00', null); +INSERT INTO `dt_common_district` VALUES ('520103', '3', '云岩区', '3', '5201', '00', null); +INSERT INTO `dt_common_district` VALUES ('520111', '3', '花溪区', '4', '5201', '00', null); +INSERT INTO `dt_common_district` VALUES ('520112', '3', '乌当区', '5', '5201', '00', null); +INSERT INTO `dt_common_district` VALUES ('520113', '3', '白云区', '6', '5201', '00', null); +INSERT INTO `dt_common_district` VALUES ('520115', '3', '观山湖区', '7', '5201', '00', null); +INSERT INTO `dt_common_district` VALUES ('520121', '3', '开阳县', '8', '5201', '00', null); +INSERT INTO `dt_common_district` VALUES ('520122', '3', '息烽县', '9', '5201', '00', null); +INSERT INTO `dt_common_district` VALUES ('520123', '3', '修文县', '10', '5201', '00', null); +INSERT INTO `dt_common_district` VALUES ('520181', '3', '清镇市', '11', '5201', '00', null); +INSERT INTO `dt_common_district` VALUES ('5202', '2', '六盘水市', '2', '52', '00', null); +INSERT INTO `dt_common_district` VALUES ('520201', '3', '钟山区', '1', '5202', '00', null); +INSERT INTO `dt_common_district` VALUES ('520203', '3', '六枝特区', '2', '5202', '00', null); +INSERT INTO `dt_common_district` VALUES ('520221', '3', '水城县', '3', '5202', '00', null); +INSERT INTO `dt_common_district` VALUES ('520271', '3', '钟山经济开发区', '4', '5202', '00', null); +INSERT INTO `dt_common_district` VALUES ('520281', '3', '盘州市', '5', '5202', '00', null); +INSERT INTO `dt_common_district` VALUES ('5203', '2', '遵义市', '3', '52', '00', null); +INSERT INTO `dt_common_district` VALUES ('520301', '3', '市辖区', '1', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520302', '3', '红花岗区', '2', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520303', '3', '汇川区', '3', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520304', '3', '播州区', '4', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520322', '3', '桐梓县', '5', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520323', '3', '绥阳县', '6', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520324', '3', '正安县', '7', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520325', '3', '道真仡佬族苗族自治县', '8', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520326', '3', '务川仡佬族苗族自治县', '9', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520327', '3', '凤冈县', '10', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520328', '3', '湄潭县', '11', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520329', '3', '余庆县', '12', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520330', '3', '习水县', '13', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520371', '3', '新蒲新区', '14', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520381', '3', '赤水市', '15', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('520382', '3', '仁怀市', '16', '5203', '00', null); +INSERT INTO `dt_common_district` VALUES ('5204', '2', '安顺市', '4', '52', '00', null); +INSERT INTO `dt_common_district` VALUES ('520401', '3', '市辖区', '1', '5204', '00', null); +INSERT INTO `dt_common_district` VALUES ('520402', '3', '西秀区', '2', '5204', '00', null); +INSERT INTO `dt_common_district` VALUES ('520403', '3', '平坝区', '3', '5204', '00', null); +INSERT INTO `dt_common_district` VALUES ('520422', '3', '普定县', '4', '5204', '00', null); +INSERT INTO `dt_common_district` VALUES ('520423', '3', '镇宁布依族苗族自治县', '5', '5204', '00', null); +INSERT INTO `dt_common_district` VALUES ('520424', '3', '关岭布依族苗族自治县', '6', '5204', '00', null); +INSERT INTO `dt_common_district` VALUES ('520425', '3', '紫云苗族布依族自治县', '7', '5204', '00', null); +INSERT INTO `dt_common_district` VALUES ('520471', '3', '安顺经济技术开发区', '8', '5204', '00', null); +INSERT INTO `dt_common_district` VALUES ('520472', '3', '黄果树旅游区', '9', '5204', '00', null); +INSERT INTO `dt_common_district` VALUES ('5205', '2', '毕节市', '5', '52', '00', null); +INSERT INTO `dt_common_district` VALUES ('520502', '3', '七星关区', '1', '5205', '00', null); +INSERT INTO `dt_common_district` VALUES ('520521', '3', '大方县', '2', '5205', '00', null); +INSERT INTO `dt_common_district` VALUES ('520522', '3', '黔西县', '3', '5205', '00', null); +INSERT INTO `dt_common_district` VALUES ('520523', '3', '金沙县', '4', '5205', '00', null); +INSERT INTO `dt_common_district` VALUES ('520524', '3', '织金县', '5', '5205', '00', null); +INSERT INTO `dt_common_district` VALUES ('520525', '3', '纳雍县', '6', '5205', '00', null); +INSERT INTO `dt_common_district` VALUES ('520526', '3', '威宁彝族回族苗族自治县', '7', '5205', '00', null); +INSERT INTO `dt_common_district` VALUES ('520527', '3', '赫章县', '8', '5205', '00', null); +INSERT INTO `dt_common_district` VALUES ('520571', '3', '百里杜鹃风景名胜区', '9', '5205', '00', null); +INSERT INTO `dt_common_district` VALUES ('520572', '3', '毕节金海湖新区', '10', '5205', '00', null); +INSERT INTO `dt_common_district` VALUES ('5206', '2', '铜仁市', '6', '52', '00', null); +INSERT INTO `dt_common_district` VALUES ('520602', '3', '碧江区', '1', '5206', '00', null); +INSERT INTO `dt_common_district` VALUES ('520603', '3', '万山区', '2', '5206', '00', null); +INSERT INTO `dt_common_district` VALUES ('520621', '3', '江口县', '3', '5206', '00', null); +INSERT INTO `dt_common_district` VALUES ('520622', '3', '玉屏侗族自治县', '4', '5206', '00', null); +INSERT INTO `dt_common_district` VALUES ('520623', '3', '石阡县', '5', '5206', '00', null); +INSERT INTO `dt_common_district` VALUES ('520624', '3', '思南县', '6', '5206', '00', null); +INSERT INTO `dt_common_district` VALUES ('520625', '3', '印江土家族苗族自治县', '7', '5206', '00', null); +INSERT INTO `dt_common_district` VALUES ('520626', '3', '德江县', '8', '5206', '00', null); +INSERT INTO `dt_common_district` VALUES ('520627', '3', '沿河土家族自治县', '9', '5206', '00', null); +INSERT INTO `dt_common_district` VALUES ('520628', '3', '松桃苗族自治县', '10', '5206', '00', null); +INSERT INTO `dt_common_district` VALUES ('5223', '2', '黔西南布依族苗族自治州', '7', '52', '00', null); +INSERT INTO `dt_common_district` VALUES ('522301', '3', '兴义市', '1', '5223', '00', null); +INSERT INTO `dt_common_district` VALUES ('522322', '3', '兴仁县', '2', '5223', '00', null); +INSERT INTO `dt_common_district` VALUES ('522323', '3', '普安县', '3', '5223', '00', null); +INSERT INTO `dt_common_district` VALUES ('522324', '3', '晴隆县', '4', '5223', '00', null); +INSERT INTO `dt_common_district` VALUES ('522325', '3', '贞丰县', '5', '5223', '00', null); +INSERT INTO `dt_common_district` VALUES ('522326', '3', '望谟县', '6', '5223', '00', null); +INSERT INTO `dt_common_district` VALUES ('522327', '3', '册亨县', '7', '5223', '00', null); +INSERT INTO `dt_common_district` VALUES ('522328', '3', '安龙县', '8', '5223', '00', null); +INSERT INTO `dt_common_district` VALUES ('522372', '3', '义龙新区', '9', '5223', '00', null); +INSERT INTO `dt_common_district` VALUES ('5226', '2', '黔东南苗族侗族自治州', '8', '52', '00', null); +INSERT INTO `dt_common_district` VALUES ('522601', '3', '凯里市', '1', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522622', '3', '黄平县', '2', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522623', '3', '施秉县', '3', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522624', '3', '三穗县', '4', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522625', '3', '镇远县', '5', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522626', '3', '岑巩县', '6', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522627', '3', '天柱县', '7', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522628', '3', '锦屏县', '8', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522629', '3', '剑河县', '9', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522630', '3', '台江县', '10', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522631', '3', '黎平县', '11', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522632', '3', '榕江县', '12', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522633', '3', '从江县', '13', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522634', '3', '雷山县', '14', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522635', '3', '麻江县', '15', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('522636', '3', '丹寨县', '16', '5226', '00', null); +INSERT INTO `dt_common_district` VALUES ('5227', '2', '黔南布依族苗族自治州', '9', '52', '00', null); +INSERT INTO `dt_common_district` VALUES ('522701', '3', '都匀市', '1', '5227', '00', null); +INSERT INTO `dt_common_district` VALUES ('522702', '3', '福泉市', '2', '5227', '00', null); +INSERT INTO `dt_common_district` VALUES ('522722', '3', '荔波县', '3', '5227', '00', null); +INSERT INTO `dt_common_district` VALUES ('522723', '3', '贵定县', '4', '5227', '00', null); +INSERT INTO `dt_common_district` VALUES ('522725', '3', '瓮安县', '5', '5227', '00', null); +INSERT INTO `dt_common_district` VALUES ('522726', '3', '独山县', '6', '5227', '00', null); +INSERT INTO `dt_common_district` VALUES ('522727', '3', '平塘县', '7', '5227', '00', null); +INSERT INTO `dt_common_district` VALUES ('522728', '3', '罗甸县', '8', '5227', '00', null); +INSERT INTO `dt_common_district` VALUES ('522729', '3', '长顺县', '9', '5227', '00', null); +INSERT INTO `dt_common_district` VALUES ('522730', '3', '龙里县', '10', '5227', '00', null); +INSERT INTO `dt_common_district` VALUES ('522731', '3', '惠水县', '11', '5227', '00', null); +INSERT INTO `dt_common_district` VALUES ('522732', '3', '三都水族自治县', '12', '5227', '00', null); +INSERT INTO `dt_common_district` VALUES ('5271', '2', '贵安新区', '10', '52', '00', null); +INSERT INTO `dt_common_district` VALUES ('527171', '3', '直管区', '1', '5271', '00', null); +INSERT INTO `dt_common_district` VALUES ('53', '1', '云南省', '25', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('5301', '2', '昆明市', '1', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('530101', '3', '市辖区', '1', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530102', '3', '五华区', '2', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530103', '3', '盘龙区', '3', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530111', '3', '官渡区', '4', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530112', '3', '西山区', '5', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530113', '3', '东川区', '6', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530114', '3', '呈贡区', '7', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530115', '3', '晋宁区', '8', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530124', '3', '富民县', '9', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530125', '3', '宜良县', '10', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530126', '3', '石林彝族自治县', '11', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530127', '3', '嵩明县', '12', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530128', '3', '禄劝彝族苗族自治县', '13', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530129', '3', '寻甸回族彝族自治县', '14', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('530181', '3', '安宁市', '15', '5301', '00', null); +INSERT INTO `dt_common_district` VALUES ('5303', '2', '曲靖市', '2', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('530301', '3', '市辖区', '1', '5303', '00', null); +INSERT INTO `dt_common_district` VALUES ('530302', '3', '麒麟区', '2', '5303', '00', null); +INSERT INTO `dt_common_district` VALUES ('530303', '3', '沾益区', '3', '5303', '00', null); +INSERT INTO `dt_common_district` VALUES ('530304', '3', '马龙区', '4', '5303', '00', null); +INSERT INTO `dt_common_district` VALUES ('530322', '3', '陆良县', '5', '5303', '00', null); +INSERT INTO `dt_common_district` VALUES ('530323', '3', '师宗县', '6', '5303', '00', null); +INSERT INTO `dt_common_district` VALUES ('530324', '3', '罗平县', '7', '5303', '00', null); +INSERT INTO `dt_common_district` VALUES ('530325', '3', '富源县', '8', '5303', '00', null); +INSERT INTO `dt_common_district` VALUES ('530326', '3', '会泽县', '9', '5303', '00', null); +INSERT INTO `dt_common_district` VALUES ('530381', '3', '宣威市', '10', '5303', '00', null); +INSERT INTO `dt_common_district` VALUES ('5304', '2', '玉溪市', '3', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('530401', '3', '市辖区', '1', '5304', '00', null); +INSERT INTO `dt_common_district` VALUES ('530402', '3', '红塔区', '2', '5304', '00', null); +INSERT INTO `dt_common_district` VALUES ('530403', '3', '江川区', '3', '5304', '00', null); +INSERT INTO `dt_common_district` VALUES ('530422', '3', '澄江县', '4', '5304', '00', null); +INSERT INTO `dt_common_district` VALUES ('530423', '3', '通海县', '5', '5304', '00', null); +INSERT INTO `dt_common_district` VALUES ('530424', '3', '华宁县', '6', '5304', '00', null); +INSERT INTO `dt_common_district` VALUES ('530425', '3', '易门县', '7', '5304', '00', null); +INSERT INTO `dt_common_district` VALUES ('530426', '3', '峨山彝族自治县', '8', '5304', '00', null); +INSERT INTO `dt_common_district` VALUES ('530427', '3', '新平彝族傣族自治县', '9', '5304', '00', null); +INSERT INTO `dt_common_district` VALUES ('530428', '3', '元江哈尼族彝族傣族自治县', '10', '5304', '00', null); +INSERT INTO `dt_common_district` VALUES ('5305', '2', '保山市', '4', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('530501', '3', '市辖区', '1', '5305', '00', null); +INSERT INTO `dt_common_district` VALUES ('530502', '3', '隆阳区', '2', '5305', '00', null); +INSERT INTO `dt_common_district` VALUES ('530521', '3', '施甸县', '3', '5305', '00', null); +INSERT INTO `dt_common_district` VALUES ('530523', '3', '龙陵县', '4', '5305', '00', null); +INSERT INTO `dt_common_district` VALUES ('530524', '3', '昌宁县', '5', '5305', '00', null); +INSERT INTO `dt_common_district` VALUES ('530581', '3', '腾冲市', '6', '5305', '00', null); +INSERT INTO `dt_common_district` VALUES ('5306', '2', '昭通市', '5', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('530601', '3', '市辖区', '1', '5306', '00', null); +INSERT INTO `dt_common_district` VALUES ('530602', '3', '昭阳区', '2', '5306', '00', null); +INSERT INTO `dt_common_district` VALUES ('530621', '3', '鲁甸县', '3', '5306', '00', null); +INSERT INTO `dt_common_district` VALUES ('530622', '3', '巧家县', '4', '5306', '00', null); +INSERT INTO `dt_common_district` VALUES ('530623', '3', '盐津县', '5', '5306', '00', null); +INSERT INTO `dt_common_district` VALUES ('530624', '3', '大关县', '6', '5306', '00', null); +INSERT INTO `dt_common_district` VALUES ('530625', '3', '永善县', '7', '5306', '00', null); +INSERT INTO `dt_common_district` VALUES ('530626', '3', '绥江县', '8', '5306', '00', null); +INSERT INTO `dt_common_district` VALUES ('530627', '3', '镇雄县', '9', '5306', '00', null); +INSERT INTO `dt_common_district` VALUES ('530628', '3', '彝良县', '10', '5306', '00', null); +INSERT INTO `dt_common_district` VALUES ('530629', '3', '威信县', '11', '5306', '00', null); +INSERT INTO `dt_common_district` VALUES ('530681', '3', '水富市', '12', '5306', '00', null); +INSERT INTO `dt_common_district` VALUES ('5307', '2', '丽江市', '6', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('530701', '3', '市辖区', '1', '5307', '00', null); +INSERT INTO `dt_common_district` VALUES ('530702', '3', '古城区', '2', '5307', '00', null); +INSERT INTO `dt_common_district` VALUES ('530721', '3', '玉龙纳西族自治县', '3', '5307', '00', null); +INSERT INTO `dt_common_district` VALUES ('530722', '3', '永胜县', '4', '5307', '00', null); +INSERT INTO `dt_common_district` VALUES ('530723', '3', '华坪县', '5', '5307', '00', null); +INSERT INTO `dt_common_district` VALUES ('530724', '3', '宁蒗彝族自治县', '6', '5307', '00', null); +INSERT INTO `dt_common_district` VALUES ('5308', '2', '普洱市', '7', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('530801', '3', '市辖区', '1', '5308', '00', null); +INSERT INTO `dt_common_district` VALUES ('530802', '3', '思茅区', '2', '5308', '00', null); +INSERT INTO `dt_common_district` VALUES ('530821', '3', '宁洱县', '3', '5308', '00', null); +INSERT INTO `dt_common_district` VALUES ('530822', '3', '墨江县', '4', '5308', '00', null); +INSERT INTO `dt_common_district` VALUES ('530823', '3', '景东县', '5', '5308', '00', null); +INSERT INTO `dt_common_district` VALUES ('530824', '3', '景谷县', '6', '5308', '00', null); +INSERT INTO `dt_common_district` VALUES ('530825', '3', '镇沅县', '7', '5308', '00', null); +INSERT INTO `dt_common_district` VALUES ('530826', '3', '江城县', '8', '5308', '00', null); +INSERT INTO `dt_common_district` VALUES ('530827', '3', '孟连县', '9', '5308', '00', null); +INSERT INTO `dt_common_district` VALUES ('530828', '3', '澜沧县', '10', '5308', '00', null); +INSERT INTO `dt_common_district` VALUES ('530829', '3', '西盟县', '11', '5308', '00', null); +INSERT INTO `dt_common_district` VALUES ('5309', '2', '临沧市', '8', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('530901', '3', '市辖区', '1', '5309', '00', null); +INSERT INTO `dt_common_district` VALUES ('530902', '3', '临翔区', '2', '5309', '00', null); +INSERT INTO `dt_common_district` VALUES ('530921', '3', '凤庆县', '3', '5309', '00', null); +INSERT INTO `dt_common_district` VALUES ('530922', '3', '云县', '4', '5309', '00', null); +INSERT INTO `dt_common_district` VALUES ('530923', '3', '永德县', '5', '5309', '00', null); +INSERT INTO `dt_common_district` VALUES ('530924', '3', '镇康县', '6', '5309', '00', null); +INSERT INTO `dt_common_district` VALUES ('530925', '3', '双江拉祜族佤族布朗族傣族自治县', '7', '5309', '00', null); +INSERT INTO `dt_common_district` VALUES ('530926', '3', '耿马傣族佤族自治县', '8', '5309', '00', null); +INSERT INTO `dt_common_district` VALUES ('530927', '3', '沧源佤族自治县', '9', '5309', '00', null); +INSERT INTO `dt_common_district` VALUES ('5323', '2', '楚雄彝族自治州', '9', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('532301', '3', '楚雄市', '1', '5323', '00', null); +INSERT INTO `dt_common_district` VALUES ('532322', '3', '双柏县', '2', '5323', '00', null); +INSERT INTO `dt_common_district` VALUES ('532323', '3', '牟定县', '3', '5323', '00', null); +INSERT INTO `dt_common_district` VALUES ('532324', '3', '南华县', '4', '5323', '00', null); +INSERT INTO `dt_common_district` VALUES ('532325', '3', '姚安县', '5', '5323', '00', null); +INSERT INTO `dt_common_district` VALUES ('532326', '3', '大姚县', '6', '5323', '00', null); +INSERT INTO `dt_common_district` VALUES ('532327', '3', '永仁县', '7', '5323', '00', null); +INSERT INTO `dt_common_district` VALUES ('532328', '3', '元谋县', '8', '5323', '00', null); +INSERT INTO `dt_common_district` VALUES ('532329', '3', '武定县', '9', '5323', '00', null); +INSERT INTO `dt_common_district` VALUES ('532331', '3', '禄丰县', '10', '5323', '00', null); +INSERT INTO `dt_common_district` VALUES ('5325', '2', '红河哈尼族彝族自治州', '10', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('532501', '3', '个旧市', '1', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('532502', '3', '开远市', '2', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('532504', '3', '弥勒市', '3', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('532522', '3', '蒙自县', '4', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('532523', '3', '屏边苗族自治县', '5', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('532524', '3', '建水县', '6', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('532525', '3', '石屏县', '7', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('532527', '3', '泸西县', '8', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('532528', '3', '元阳县', '9', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('532529', '3', '红河县', '10', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('532530', '3', '金平苗族瑶族傣族自治县', '11', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('532531', '3', '绿春县', '12', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('532532', '3', '河口瑶族自治县', '13', '5325', '00', null); +INSERT INTO `dt_common_district` VALUES ('5326', '2', '文山壮族苗族自治州', '11', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('532601', '3', '文山市', '1', '5326', '00', null); +INSERT INTO `dt_common_district` VALUES ('532622', '3', '砚山县', '2', '5326', '00', null); +INSERT INTO `dt_common_district` VALUES ('532623', '3', '西畴县', '3', '5326', '00', null); +INSERT INTO `dt_common_district` VALUES ('532624', '3', '麻栗坡县', '4', '5326', '00', null); +INSERT INTO `dt_common_district` VALUES ('532625', '3', '马关县', '5', '5326', '00', null); +INSERT INTO `dt_common_district` VALUES ('532626', '3', '丘北县', '6', '5326', '00', null); +INSERT INTO `dt_common_district` VALUES ('532627', '3', '广南县', '7', '5326', '00', null); +INSERT INTO `dt_common_district` VALUES ('532628', '3', '富宁县', '8', '5326', '00', null); +INSERT INTO `dt_common_district` VALUES ('5328', '2', '西双版纳傣族自治州', '12', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('532801', '3', '景洪市', '1', '5328', '00', null); +INSERT INTO `dt_common_district` VALUES ('532822', '3', '勐海县', '2', '5328', '00', null); +INSERT INTO `dt_common_district` VALUES ('532823', '3', '勐腊县', '3', '5328', '00', null); +INSERT INTO `dt_common_district` VALUES ('5329', '2', '大理白族自治州', '13', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('532901', '3', '大理市', '1', '5329', '00', null); +INSERT INTO `dt_common_district` VALUES ('532922', '3', '漾濞彝族自治县', '2', '5329', '00', null); +INSERT INTO `dt_common_district` VALUES ('532923', '3', '祥云县', '3', '5329', '00', null); +INSERT INTO `dt_common_district` VALUES ('532924', '3', '宾川县', '4', '5329', '00', null); +INSERT INTO `dt_common_district` VALUES ('532925', '3', '弥渡县', '5', '5329', '00', null); +INSERT INTO `dt_common_district` VALUES ('532926', '3', '南涧彝族自治县', '6', '5329', '00', null); +INSERT INTO `dt_common_district` VALUES ('532927', '3', '巍山彝族回族自治县', '7', '5329', '00', null); +INSERT INTO `dt_common_district` VALUES ('532928', '3', '永平县', '8', '5329', '00', null); +INSERT INTO `dt_common_district` VALUES ('532929', '3', '云龙县', '9', '5329', '00', null); +INSERT INTO `dt_common_district` VALUES ('532930', '3', '洱源县', '10', '5329', '00', null); +INSERT INTO `dt_common_district` VALUES ('532931', '3', '剑川县', '11', '5329', '00', null); +INSERT INTO `dt_common_district` VALUES ('532932', '3', '鹤庆县', '12', '5329', '00', null); +INSERT INTO `dt_common_district` VALUES ('5331', '2', '德宏傣族景颇族自治州', '14', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('533102', '3', '瑞丽市', '1', '5331', '00', null); +INSERT INTO `dt_common_district` VALUES ('533103', '3', '芒市', '2', '5331', '00', null); +INSERT INTO `dt_common_district` VALUES ('533122', '3', '梁河县', '3', '5331', '00', null); +INSERT INTO `dt_common_district` VALUES ('533123', '3', '盈江县', '4', '5331', '00', null); +INSERT INTO `dt_common_district` VALUES ('533124', '3', '陇川县', '5', '5331', '00', null); +INSERT INTO `dt_common_district` VALUES ('5333', '2', '怒江傈僳族自治州', '15', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('533301', '3', '泸水市', '1', '5333', '00', null); +INSERT INTO `dt_common_district` VALUES ('533323', '3', '福贡县', '2', '5333', '00', null); +INSERT INTO `dt_common_district` VALUES ('533324', '3', '贡山独龙族怒族自治县', '3', '5333', '00', null); +INSERT INTO `dt_common_district` VALUES ('533325', '3', '兰坪白族普米族自治县', '4', '5333', '00', null); +INSERT INTO `dt_common_district` VALUES ('5334', '2', '迪庆藏族自治州', '16', '53', '00', null); +INSERT INTO `dt_common_district` VALUES ('533421', '3', '香格里拉县', '1', '5334', '00', null); +INSERT INTO `dt_common_district` VALUES ('533422', '3', '德钦县', '2', '5334', '00', null); +INSERT INTO `dt_common_district` VALUES ('533423', '3', '维西傈僳族自治县', '3', '5334', '00', null); +INSERT INTO `dt_common_district` VALUES ('54', '1', '西藏自治区', '26', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('5401', '2', '拉萨市', '1', '54', '00', null); +INSERT INTO `dt_common_district` VALUES ('540101', '3', '市辖区', '1', '5401', '00', null); +INSERT INTO `dt_common_district` VALUES ('540102', '3', '城关区', '2', '5401', '00', null); +INSERT INTO `dt_common_district` VALUES ('540103', '3', '堆龙德庆区', '3', '5401', '00', null); +INSERT INTO `dt_common_district` VALUES ('540121', '3', '林周县', '4', '5401', '00', null); +INSERT INTO `dt_common_district` VALUES ('540122', '3', '当雄县', '5', '5401', '00', null); +INSERT INTO `dt_common_district` VALUES ('540123', '3', '尼木县', '6', '5401', '00', null); +INSERT INTO `dt_common_district` VALUES ('540124', '3', '曲水县', '7', '5401', '00', null); +INSERT INTO `dt_common_district` VALUES ('540126', '3', '达孜县', '8', '5401', '00', null); +INSERT INTO `dt_common_district` VALUES ('540127', '3', '墨竹工卡县', '9', '5401', '00', null); +INSERT INTO `dt_common_district` VALUES ('5402', '2', '日喀则市', '2', '54', '00', null); +INSERT INTO `dt_common_district` VALUES ('540202', '3', '桑珠孜区', '1', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540221', '3', '南木林县', '2', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540222', '3', '江孜县', '3', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540223', '3', '定日县', '4', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540224', '3', '萨迦县', '5', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540225', '3', '拉孜县', '6', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540226', '3', '昂仁县', '7', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540227', '3', '谢通门县', '8', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540228', '3', '白朗县', '9', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540229', '3', '仁布县', '10', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540230', '3', '康马县', '11', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540231', '3', '定结县', '12', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540232', '3', '仲巴县', '13', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540233', '3', '亚东县', '14', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540234', '3', '吉隆县', '15', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540235', '3', '聂拉木县', '16', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540236', '3', '萨嘎县', '17', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('540237', '3', '岗巴县', '18', '5402', '00', null); +INSERT INTO `dt_common_district` VALUES ('5403', '2', '昌都市', '3', '54', '00', null); +INSERT INTO `dt_common_district` VALUES ('540302', '3', '卡若区', '1', '5403', '00', null); +INSERT INTO `dt_common_district` VALUES ('540321', '3', '江达县', '2', '5403', '00', null); +INSERT INTO `dt_common_district` VALUES ('540322', '3', '贡觉县', '3', '5403', '00', null); +INSERT INTO `dt_common_district` VALUES ('540323', '3', '类乌齐县', '4', '5403', '00', null); +INSERT INTO `dt_common_district` VALUES ('540324', '3', '丁青县', '5', '5403', '00', null); +INSERT INTO `dt_common_district` VALUES ('540325', '3', '察雅县', '6', '5403', '00', null); +INSERT INTO `dt_common_district` VALUES ('540326', '3', '八宿县', '7', '5403', '00', null); +INSERT INTO `dt_common_district` VALUES ('540327', '3', '左贡县', '8', '5403', '00', null); +INSERT INTO `dt_common_district` VALUES ('540328', '3', '芒康县', '9', '5403', '00', null); +INSERT INTO `dt_common_district` VALUES ('540329', '3', '洛隆县', '10', '5403', '00', null); +INSERT INTO `dt_common_district` VALUES ('540330', '3', '边坝县', '11', '5403', '00', null); +INSERT INTO `dt_common_district` VALUES ('5404', '2', '林芝市', '4', '54', '00', null); +INSERT INTO `dt_common_district` VALUES ('540402', '3', '巴宜区', '1', '5404', '00', null); +INSERT INTO `dt_common_district` VALUES ('540421', '3', '工布江达县', '2', '5404', '00', null); +INSERT INTO `dt_common_district` VALUES ('540422', '3', '米林县', '3', '5404', '00', null); +INSERT INTO `dt_common_district` VALUES ('540423', '3', '墨脱县', '4', '5404', '00', null); +INSERT INTO `dt_common_district` VALUES ('540424', '3', '波密县', '5', '5404', '00', null); +INSERT INTO `dt_common_district` VALUES ('540425', '3', '察隅县', '6', '5404', '00', null); +INSERT INTO `dt_common_district` VALUES ('540426', '3', '朗县', '7', '5404', '00', null); +INSERT INTO `dt_common_district` VALUES ('5405', '2', '山南市', '5', '54', '00', null); +INSERT INTO `dt_common_district` VALUES ('540502', '3', '乃东区', '1', '5405', '00', null); +INSERT INTO `dt_common_district` VALUES ('540521', '3', '扎囊县', '2', '5405', '00', null); +INSERT INTO `dt_common_district` VALUES ('540522', '3', '贡嘎县', '3', '5405', '00', null); +INSERT INTO `dt_common_district` VALUES ('540523', '3', '桑日县', '4', '5405', '00', null); +INSERT INTO `dt_common_district` VALUES ('540524', '3', '琼结县', '5', '5405', '00', null); +INSERT INTO `dt_common_district` VALUES ('540525', '3', '曲松县', '6', '5405', '00', null); +INSERT INTO `dt_common_district` VALUES ('540526', '3', '措美县', '7', '5405', '00', null); +INSERT INTO `dt_common_district` VALUES ('540527', '3', '洛扎县', '8', '5405', '00', null); +INSERT INTO `dt_common_district` VALUES ('540528', '3', '加查县', '9', '5405', '00', null); +INSERT INTO `dt_common_district` VALUES ('540529', '3', '隆子县', '10', '5405', '00', null); +INSERT INTO `dt_common_district` VALUES ('540530', '3', '错那县', '11', '5405', '00', null); +INSERT INTO `dt_common_district` VALUES ('540531', '3', '浪卡子县', '12', '5405', '00', null); +INSERT INTO `dt_common_district` VALUES ('5424', '2', '那曲地区', '6', '54', '00', null); +INSERT INTO `dt_common_district` VALUES ('542421', '3', '那曲县', '1', '5424', '00', null); +INSERT INTO `dt_common_district` VALUES ('542422', '3', '嘉黎县', '2', '5424', '00', null); +INSERT INTO `dt_common_district` VALUES ('542423', '3', '比如县', '3', '5424', '00', null); +INSERT INTO `dt_common_district` VALUES ('542424', '3', '聂荣县', '4', '5424', '00', null); +INSERT INTO `dt_common_district` VALUES ('542425', '3', '安多县', '5', '5424', '00', null); +INSERT INTO `dt_common_district` VALUES ('542426', '3', '申扎县', '6', '5424', '00', null); +INSERT INTO `dt_common_district` VALUES ('542427', '3', '索县', '7', '5424', '00', null); +INSERT INTO `dt_common_district` VALUES ('542428', '3', '班戈县', '8', '5424', '00', null); +INSERT INTO `dt_common_district` VALUES ('542429', '3', '巴青县', '9', '5424', '00', null); +INSERT INTO `dt_common_district` VALUES ('542430', '3', '尼玛县', '10', '5424', '00', null); +INSERT INTO `dt_common_district` VALUES ('542431', '3', '双湖县', '11', '5424', '00', null); +INSERT INTO `dt_common_district` VALUES ('5425', '2', '阿里地区', '7', '54', '00', null); +INSERT INTO `dt_common_district` VALUES ('542521', '3', '普兰县', '1', '5425', '00', null); +INSERT INTO `dt_common_district` VALUES ('542522', '3', '札达县', '2', '5425', '00', null); +INSERT INTO `dt_common_district` VALUES ('542523', '3', '噶尔县', '3', '5425', '00', null); +INSERT INTO `dt_common_district` VALUES ('542524', '3', '日土县', '4', '5425', '00', null); +INSERT INTO `dt_common_district` VALUES ('542525', '3', '革吉县', '5', '5425', '00', null); +INSERT INTO `dt_common_district` VALUES ('542526', '3', '改则县', '6', '5425', '00', null); +INSERT INTO `dt_common_district` VALUES ('542527', '3', '措勤县', '7', '5425', '00', null); +INSERT INTO `dt_common_district` VALUES ('61', '1', '陕西省', '27', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('6101', '2', '西安市', '1', '61', '00', null); +INSERT INTO `dt_common_district` VALUES ('610102', '3', '新城区', '1', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610103', '3', '碑林区', '2', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610104', '3', '莲湖区', '3', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610111', '3', '灞桥区', '4', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610112', '3', '未央区', '5', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610113', '3', '雁塔区', '6', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610114', '3', '阎良区', '7', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610115', '3', '临潼区', '8', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610116', '3', '长安区', '9', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610117', '3', '高陵区', '10', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610118', '3', '鄠邑区', '11', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610122', '3', '蓝田县', '12', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610124', '3', '周至县', '13', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610171', '3', '西安高新技术开发区', '14', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('610192', '3', '国际港务区', '15', '6101', '00', null); +INSERT INTO `dt_common_district` VALUES ('6102', '2', '铜川市', '2', '61', '00', null); +INSERT INTO `dt_common_district` VALUES ('610202', '3', '王益区', '1', '6102', '00', null); +INSERT INTO `dt_common_district` VALUES ('610203', '3', '印台区', '2', '6102', '00', null); +INSERT INTO `dt_common_district` VALUES ('610204', '3', '耀州区', '3', '6102', '00', null); +INSERT INTO `dt_common_district` VALUES ('610222', '3', '宜君县', '4', '6102', '00', null); +INSERT INTO `dt_common_district` VALUES ('610271', '3', '新区', '5', '6102', '00', null); +INSERT INTO `dt_common_district` VALUES ('6103', '2', '宝鸡市', '3', '61', '00', null); +INSERT INTO `dt_common_district` VALUES ('610302', '3', '渭滨区', '1', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('610303', '3', '金台区', '2', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('610304', '3', '陈仓区', '3', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('610322', '3', '凤翔县', '4', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('610323', '3', '岐山县', '5', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('610324', '3', '扶风县', '6', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('610326', '3', '眉县', '7', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('610327', '3', '陇县', '8', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('610328', '3', '千阳县', '9', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('610329', '3', '麟游县', '10', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('610330', '3', '凤县', '11', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('610331', '3', '太白县', '12', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('610371', '3', '宝鸡市高新区', '13', '6103', '00', null); +INSERT INTO `dt_common_district` VALUES ('6104', '2', '咸阳市', '4', '61', '00', null); +INSERT INTO `dt_common_district` VALUES ('610402', '3', '秦都区', '1', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('610404', '3', '渭城区', '2', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('610422', '3', '三原县', '3', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('610423', '3', '泾阳县', '4', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('610424', '3', '乾县', '5', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('610425', '3', '礼泉县', '6', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('610426', '3', '永寿县', '7', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('610428', '3', '长武县', '8', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('610429', '3', '旬邑县', '9', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('610430', '3', '淳化县', '10', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('610431', '3', '武功县', '11', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('610481', '3', '兴平市', '12', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('610482', '3', '彬州市', '13', '6104', '00', null); +INSERT INTO `dt_common_district` VALUES ('6105', '2', '渭南市', '5', '61', '00', null); +INSERT INTO `dt_common_district` VALUES ('610502', '3', '临渭区', '1', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('610503', '3', '华州区', '2', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('610522', '3', '潼关县', '3', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('610523', '3', '大荔县', '4', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('610524', '3', '合阳县', '5', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('610525', '3', '澄城县', '6', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('610526', '3', '蒲城县', '7', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('610527', '3', '白水县', '8', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('610528', '3', '富平县', '9', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('610571', '3', '高新区', '10', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('610572', '3', '经济技术开发区', '11', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('610581', '3', '韩城市', '12', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('610582', '3', '华阴市', '13', '6105', '00', null); +INSERT INTO `dt_common_district` VALUES ('6106', '2', '延安市', '6', '61', '00', null); +INSERT INTO `dt_common_district` VALUES ('610602', '3', '宝塔区', '1', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('610603', '3', '安塞区', '2', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('610621', '3', '延长县', '3', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('610622', '3', '延川县', '4', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('610623', '3', '子长县', '5', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('610625', '3', '志丹县', '6', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('610626', '3', '吴起县', '7', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('610627', '3', '甘泉县', '8', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('610628', '3', '富县', '9', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('610629', '3', '洛川县', '10', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('610630', '3', '宜川县', '11', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('610631', '3', '黄龙县', '12', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('610632', '3', '黄陵县', '13', '6106', '00', null); +INSERT INTO `dt_common_district` VALUES ('6107', '2', '汉中市', '7', '61', '00', null); +INSERT INTO `dt_common_district` VALUES ('610702', '3', '汉台区', '1', '6107', '00', null); +INSERT INTO `dt_common_district` VALUES ('610703', '3', '南郑区', '2', '6107', '00', null); +INSERT INTO `dt_common_district` VALUES ('610722', '3', '城固县', '3', '6107', '00', null); +INSERT INTO `dt_common_district` VALUES ('610723', '3', '洋县', '4', '6107', '00', null); +INSERT INTO `dt_common_district` VALUES ('610724', '3', '西乡县', '5', '6107', '00', null); +INSERT INTO `dt_common_district` VALUES ('610725', '3', '勉县', '6', '6107', '00', null); +INSERT INTO `dt_common_district` VALUES ('610726', '3', '宁强县', '7', '6107', '00', null); +INSERT INTO `dt_common_district` VALUES ('610727', '3', '略阳县', '8', '6107', '00', null); +INSERT INTO `dt_common_district` VALUES ('610728', '3', '镇巴县', '9', '6107', '00', null); +INSERT INTO `dt_common_district` VALUES ('610729', '3', '留坝县', '10', '6107', '00', null); +INSERT INTO `dt_common_district` VALUES ('610730', '3', '佛坪县', '11', '6107', '00', null); +INSERT INTO `dt_common_district` VALUES ('610791', '3', '汉中经济开发区', '12', '6107', '00', null); +INSERT INTO `dt_common_district` VALUES ('6108', '2', '榆林市', '8', '61', '00', null); +INSERT INTO `dt_common_district` VALUES ('610802', '3', '榆阳区', '1', '6108', '00', null); +INSERT INTO `dt_common_district` VALUES ('610803', '3', '横山区', '2', '6108', '00', null); +INSERT INTO `dt_common_district` VALUES ('610821', '3', '神木县', '3', '6108', '00', null); +INSERT INTO `dt_common_district` VALUES ('610822', '3', '府谷县', '4', '6108', '00', null); +INSERT INTO `dt_common_district` VALUES ('610824', '3', '靖边县', '5', '6108', '00', null); +INSERT INTO `dt_common_district` VALUES ('610825', '3', '定边县', '6', '6108', '00', null); +INSERT INTO `dt_common_district` VALUES ('610826', '3', '绥德县', '7', '6108', '00', null); +INSERT INTO `dt_common_district` VALUES ('610827', '3', '米脂县', '8', '6108', '00', null); +INSERT INTO `dt_common_district` VALUES ('610828', '3', '佳县', '9', '6108', '00', null); +INSERT INTO `dt_common_district` VALUES ('610829', '3', '吴堡县', '10', '6108', '00', null); +INSERT INTO `dt_common_district` VALUES ('610830', '3', '清涧县', '11', '6108', '00', null); +INSERT INTO `dt_common_district` VALUES ('610831', '3', '子洲县', '12', '6108', '00', null); +INSERT INTO `dt_common_district` VALUES ('6109', '2', '安康市', '9', '61', '00', null); +INSERT INTO `dt_common_district` VALUES ('610902', '3', '汉滨区', '1', '6109', '00', null); +INSERT INTO `dt_common_district` VALUES ('610921', '3', '汉阴县', '2', '6109', '00', null); +INSERT INTO `dt_common_district` VALUES ('610922', '3', '石泉县', '3', '6109', '00', null); +INSERT INTO `dt_common_district` VALUES ('610923', '3', '宁陕县', '4', '6109', '00', null); +INSERT INTO `dt_common_district` VALUES ('610924', '3', '紫阳县', '5', '6109', '00', null); +INSERT INTO `dt_common_district` VALUES ('610925', '3', '岚皋县', '6', '6109', '00', null); +INSERT INTO `dt_common_district` VALUES ('610926', '3', '平利县', '7', '6109', '00', null); +INSERT INTO `dt_common_district` VALUES ('610927', '3', '镇坪县', '8', '6109', '00', null); +INSERT INTO `dt_common_district` VALUES ('610928', '3', '旬阳县', '9', '6109', '00', null); +INSERT INTO `dt_common_district` VALUES ('610929', '3', '白河县', '10', '6109', '00', null); +INSERT INTO `dt_common_district` VALUES ('610971', '3', '高新区', '11', '6109', '00', null); +INSERT INTO `dt_common_district` VALUES ('610972', '3', '恒口示范区', '12', '6109', '00', null); +INSERT INTO `dt_common_district` VALUES ('6110', '2', '商洛市', '10', '61', '00', null); +INSERT INTO `dt_common_district` VALUES ('611002', '3', '商州区', '1', '6110', '00', null); +INSERT INTO `dt_common_district` VALUES ('611021', '3', '洛南县', '2', '6110', '00', null); +INSERT INTO `dt_common_district` VALUES ('611022', '3', '丹凤县', '3', '6110', '00', null); +INSERT INTO `dt_common_district` VALUES ('611023', '3', '商南县', '4', '6110', '00', null); +INSERT INTO `dt_common_district` VALUES ('611024', '3', '山阳县', '5', '6110', '00', null); +INSERT INTO `dt_common_district` VALUES ('611025', '3', '镇安县', '6', '6110', '00', null); +INSERT INTO `dt_common_district` VALUES ('611026', '3', '柞水县', '7', '6110', '00', null); +INSERT INTO `dt_common_district` VALUES ('611071', '3', '高新区', '8', '6110', '00', null); +INSERT INTO `dt_common_district` VALUES ('6111', '2', '杨凌示范区', '11', '61', '00', null); +INSERT INTO `dt_common_district` VALUES ('611101', '3', '杨陵区', '1', '6111', '00', null); +INSERT INTO `dt_common_district` VALUES ('6199', '2', '西咸新区', '12', '61', '00', null); +INSERT INTO `dt_common_district` VALUES ('619901', '3', '空港新城', '1', '6199', '00', null); +INSERT INTO `dt_common_district` VALUES ('619902', '3', '沣东新城', '2', '6199', '00', null); +INSERT INTO `dt_common_district` VALUES ('619903', '3', '秦汉新城', '3', '6199', '00', null); +INSERT INTO `dt_common_district` VALUES ('619904', '3', '沣西新城', '4', '6199', '00', null); +INSERT INTO `dt_common_district` VALUES ('619905', '3', '泾河新城', '5', '6199', '00', null); +INSERT INTO `dt_common_district` VALUES ('62', '1', '甘肃省', '28', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('6201', '2', '兰州市', '1', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('620101', '3', '市辖区', '1', '6201', '00', null); +INSERT INTO `dt_common_district` VALUES ('620102', '3', '城关区', '2', '6201', '00', null); +INSERT INTO `dt_common_district` VALUES ('620103', '3', '七里河区', '3', '6201', '00', null); +INSERT INTO `dt_common_district` VALUES ('620104', '3', '西固区', '4', '6201', '00', null); +INSERT INTO `dt_common_district` VALUES ('620105', '3', '安宁区', '5', '6201', '00', null); +INSERT INTO `dt_common_district` VALUES ('620111', '3', '红古区', '6', '6201', '00', null); +INSERT INTO `dt_common_district` VALUES ('620121', '3', '永登县', '7', '6201', '00', null); +INSERT INTO `dt_common_district` VALUES ('620122', '3', '皋兰县', '8', '6201', '00', null); +INSERT INTO `dt_common_district` VALUES ('620123', '3', '榆中县', '9', '6201', '00', null); +INSERT INTO `dt_common_district` VALUES ('620140', '3', '兰州新区', '10', '6201', '00', null); +INSERT INTO `dt_common_district` VALUES ('6202', '2', '嘉峪关市', '2', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('620201', '3', '市辖区', '1', '6202', '00', null); +INSERT INTO `dt_common_district` VALUES ('6203', '2', '金昌市', '3', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('620301', '3', '市辖区', '1', '6203', '00', null); +INSERT INTO `dt_common_district` VALUES ('620302', '3', '金川区', '2', '6203', '00', null); +INSERT INTO `dt_common_district` VALUES ('620321', '3', '永昌县', '3', '6203', '00', null); +INSERT INTO `dt_common_district` VALUES ('6204', '2', '白银市', '4', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('620401', '3', '市辖区', '1', '6204', '00', null); +INSERT INTO `dt_common_district` VALUES ('620402', '3', '白银区', '2', '6204', '00', null); +INSERT INTO `dt_common_district` VALUES ('620403', '3', '平川区', '3', '6204', '00', null); +INSERT INTO `dt_common_district` VALUES ('620421', '3', '靖远县', '4', '6204', '00', null); +INSERT INTO `dt_common_district` VALUES ('620422', '3', '会宁县', '5', '6204', '00', null); +INSERT INTO `dt_common_district` VALUES ('620423', '3', '景泰县', '6', '6204', '00', null); +INSERT INTO `dt_common_district` VALUES ('6205', '2', '天水市', '5', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('620501', '3', '市辖区', '1', '6205', '00', null); +INSERT INTO `dt_common_district` VALUES ('620502', '3', '秦州区', '2', '6205', '00', null); +INSERT INTO `dt_common_district` VALUES ('620503', '3', '麦积区', '3', '6205', '00', null); +INSERT INTO `dt_common_district` VALUES ('620521', '3', '清水县', '4', '6205', '00', null); +INSERT INTO `dt_common_district` VALUES ('620522', '3', '秦安县', '5', '6205', '00', null); +INSERT INTO `dt_common_district` VALUES ('620523', '3', '甘谷县', '6', '6205', '00', null); +INSERT INTO `dt_common_district` VALUES ('620524', '3', '武山县', '7', '6205', '00', null); +INSERT INTO `dt_common_district` VALUES ('620525', '3', '张家川回族自治县', '8', '6205', '00', null); +INSERT INTO `dt_common_district` VALUES ('6206', '2', '武威市', '6', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('620601', '3', '市辖区', '1', '6206', '00', null); +INSERT INTO `dt_common_district` VALUES ('620602', '3', '凉州区', '2', '6206', '00', null); +INSERT INTO `dt_common_district` VALUES ('620621', '3', '民勤县', '3', '6206', '00', null); +INSERT INTO `dt_common_district` VALUES ('620622', '3', '古浪县', '4', '6206', '00', null); +INSERT INTO `dt_common_district` VALUES ('620623', '3', '天祝藏族自治县', '5', '6206', '00', null); +INSERT INTO `dt_common_district` VALUES ('6207', '2', '张掖市', '7', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('620701', '3', '市辖区', '1', '6207', '00', null); +INSERT INTO `dt_common_district` VALUES ('620702', '3', '甘州区', '2', '6207', '00', null); +INSERT INTO `dt_common_district` VALUES ('620721', '3', '肃南裕固族自治县', '3', '6207', '00', null); +INSERT INTO `dt_common_district` VALUES ('620722', '3', '民乐县', '4', '6207', '00', null); +INSERT INTO `dt_common_district` VALUES ('620723', '3', '临泽县', '5', '6207', '00', null); +INSERT INTO `dt_common_district` VALUES ('620724', '3', '高台县', '6', '6207', '00', null); +INSERT INTO `dt_common_district` VALUES ('620725', '3', '山丹县', '7', '6207', '00', null); +INSERT INTO `dt_common_district` VALUES ('6208', '2', '平凉市', '8', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('620801', '3', '市辖区', '1', '6208', '00', null); +INSERT INTO `dt_common_district` VALUES ('620802', '3', '崆峒区', '2', '6208', '00', null); +INSERT INTO `dt_common_district` VALUES ('620821', '3', '泾川县', '3', '6208', '00', null); +INSERT INTO `dt_common_district` VALUES ('620822', '3', '灵台县', '4', '6208', '00', null); +INSERT INTO `dt_common_district` VALUES ('620823', '3', '崇信县', '5', '6208', '00', null); +INSERT INTO `dt_common_district` VALUES ('620824', '3', '华亭县', '6', '6208', '00', null); +INSERT INTO `dt_common_district` VALUES ('620825', '3', '庄浪县', '7', '6208', '00', null); +INSERT INTO `dt_common_district` VALUES ('620826', '3', '静宁县', '8', '6208', '00', null); +INSERT INTO `dt_common_district` VALUES ('6209', '2', '酒泉市', '9', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('620901', '3', '市辖区', '1', '6209', '00', null); +INSERT INTO `dt_common_district` VALUES ('620902', '3', '肃州区', '2', '6209', '00', null); +INSERT INTO `dt_common_district` VALUES ('620921', '3', '金塔县', '3', '6209', '00', null); +INSERT INTO `dt_common_district` VALUES ('620922', '3', '瓜州县', '4', '6209', '00', null); +INSERT INTO `dt_common_district` VALUES ('620923', '3', '肃北蒙古族自治县', '5', '6209', '00', null); +INSERT INTO `dt_common_district` VALUES ('620924', '3', '阿克塞哈萨克族自治县', '6', '6209', '00', null); +INSERT INTO `dt_common_district` VALUES ('620981', '3', '玉门市', '7', '6209', '00', null); +INSERT INTO `dt_common_district` VALUES ('620982', '3', '敦煌市', '8', '6209', '00', null); +INSERT INTO `dt_common_district` VALUES ('6210', '2', '庆阳市', '10', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('621001', '3', '市辖区', '1', '6210', '00', null); +INSERT INTO `dt_common_district` VALUES ('621002', '3', '西峰区', '2', '6210', '00', null); +INSERT INTO `dt_common_district` VALUES ('621021', '3', '庆城县', '3', '6210', '00', null); +INSERT INTO `dt_common_district` VALUES ('621022', '3', '环县', '4', '6210', '00', null); +INSERT INTO `dt_common_district` VALUES ('621023', '3', '华池县', '5', '6210', '00', null); +INSERT INTO `dt_common_district` VALUES ('621024', '3', '合水县', '6', '6210', '00', null); +INSERT INTO `dt_common_district` VALUES ('621025', '3', '正宁县', '7', '6210', '00', null); +INSERT INTO `dt_common_district` VALUES ('621026', '3', '宁县', '8', '6210', '00', null); +INSERT INTO `dt_common_district` VALUES ('621027', '3', '镇原县', '9', '6210', '00', null); +INSERT INTO `dt_common_district` VALUES ('6211', '2', '定西市', '11', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('621101', '3', '市辖区', '1', '6211', '00', null); +INSERT INTO `dt_common_district` VALUES ('621102', '3', '安定区', '2', '6211', '00', null); +INSERT INTO `dt_common_district` VALUES ('621121', '3', '通渭县', '3', '6211', '00', null); +INSERT INTO `dt_common_district` VALUES ('621122', '3', '陇西县', '4', '6211', '00', null); +INSERT INTO `dt_common_district` VALUES ('621123', '3', '渭源县', '5', '6211', '00', null); +INSERT INTO `dt_common_district` VALUES ('621124', '3', '临洮县', '6', '6211', '00', null); +INSERT INTO `dt_common_district` VALUES ('621125', '3', '漳县', '7', '6211', '00', null); +INSERT INTO `dt_common_district` VALUES ('621126', '3', '岷县', '8', '6211', '00', null); +INSERT INTO `dt_common_district` VALUES ('6212', '2', '陇南市', '12', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('621201', '3', '市辖区', '1', '6212', '00', null); +INSERT INTO `dt_common_district` VALUES ('621202', '3', '武都区', '2', '6212', '00', null); +INSERT INTO `dt_common_district` VALUES ('621221', '3', '成县', '3', '6212', '00', null); +INSERT INTO `dt_common_district` VALUES ('621222', '3', '文县', '4', '6212', '00', null); +INSERT INTO `dt_common_district` VALUES ('621223', '3', '宕昌县', '5', '6212', '00', null); +INSERT INTO `dt_common_district` VALUES ('621224', '3', '康县', '6', '6212', '00', null); +INSERT INTO `dt_common_district` VALUES ('621225', '3', '西和县', '7', '6212', '00', null); +INSERT INTO `dt_common_district` VALUES ('621226', '3', '礼县', '8', '6212', '00', null); +INSERT INTO `dt_common_district` VALUES ('621227', '3', '徽县', '9', '6212', '00', null); +INSERT INTO `dt_common_district` VALUES ('621228', '3', '两当县', '10', '6212', '00', null); +INSERT INTO `dt_common_district` VALUES ('6229', '2', '临夏回族自治州', '13', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('622901', '3', '临夏市', '1', '6229', '00', null); +INSERT INTO `dt_common_district` VALUES ('622921', '3', '临夏县', '2', '6229', '00', null); +INSERT INTO `dt_common_district` VALUES ('622922', '3', '康乐县', '3', '6229', '00', null); +INSERT INTO `dt_common_district` VALUES ('622923', '3', '永靖县', '4', '6229', '00', null); +INSERT INTO `dt_common_district` VALUES ('622924', '3', '广河县', '5', '6229', '00', null); +INSERT INTO `dt_common_district` VALUES ('622925', '3', '和政县', '6', '6229', '00', null); +INSERT INTO `dt_common_district` VALUES ('622926', '3', '东乡族自治县', '7', '6229', '00', null); +INSERT INTO `dt_common_district` VALUES ('622927', '3', '积石山保安族东乡族撒拉族自治县', '8', '6229', '00', null); +INSERT INTO `dt_common_district` VALUES ('6230', '2', '甘南藏族自治州', '14', '62', '00', null); +INSERT INTO `dt_common_district` VALUES ('623001', '3', '合作市', '1', '6230', '00', null); +INSERT INTO `dt_common_district` VALUES ('623021', '3', '临潭县', '2', '6230', '00', null); +INSERT INTO `dt_common_district` VALUES ('623022', '3', '卓尼县', '3', '6230', '00', null); +INSERT INTO `dt_common_district` VALUES ('623023', '3', '舟曲县', '4', '6230', '00', null); +INSERT INTO `dt_common_district` VALUES ('623024', '3', '迭部县', '5', '6230', '00', null); +INSERT INTO `dt_common_district` VALUES ('623025', '3', '玛曲县', '6', '6230', '00', null); +INSERT INTO `dt_common_district` VALUES ('623026', '3', '碌曲县', '7', '6230', '00', null); +INSERT INTO `dt_common_district` VALUES ('623027', '3', '夏河县', '8', '6230', '00', null); +INSERT INTO `dt_common_district` VALUES ('63', '1', '青海省', '29', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('6301', '2', '西宁市', '1', '63', '00', null); +INSERT INTO `dt_common_district` VALUES ('630102', '3', '城东区', '1', '6301', '00', null); +INSERT INTO `dt_common_district` VALUES ('630103', '3', '城中区', '2', '6301', '00', null); +INSERT INTO `dt_common_district` VALUES ('630104', '3', '城西区', '3', '6301', '00', null); +INSERT INTO `dt_common_district` VALUES ('630105', '3', '城北区', '4', '6301', '00', null); +INSERT INTO `dt_common_district` VALUES ('630121', '3', '大通回族土族自治县', '5', '6301', '00', null); +INSERT INTO `dt_common_district` VALUES ('630122', '3', '湟中县', '6', '6301', '00', null); +INSERT INTO `dt_common_district` VALUES ('630123', '3', '湟源县', '7', '6301', '00', null); +INSERT INTO `dt_common_district` VALUES ('6302', '2', '海东市', '2', '63', '00', null); +INSERT INTO `dt_common_district` VALUES ('630202', '3', '乐都区', '1', '6302', '00', null); +INSERT INTO `dt_common_district` VALUES ('630203', '3', '平安区', '2', '6302', '00', null); +INSERT INTO `dt_common_district` VALUES ('630222', '3', '民和回族土族自治县', '3', '6302', '00', null); +INSERT INTO `dt_common_district` VALUES ('630223', '3', '互助土族自治县', '4', '6302', '00', null); +INSERT INTO `dt_common_district` VALUES ('630224', '3', '化隆回族自治县', '5', '6302', '00', null); +INSERT INTO `dt_common_district` VALUES ('630225', '3', '循化撒拉族自治县', '6', '6302', '00', null); +INSERT INTO `dt_common_district` VALUES ('6322', '2', '海北藏族自治州', '3', '63', '00', null); +INSERT INTO `dt_common_district` VALUES ('632221', '3', '门源回族自治县', '1', '6322', '00', null); +INSERT INTO `dt_common_district` VALUES ('632222', '3', '祁连县', '2', '6322', '00', null); +INSERT INTO `dt_common_district` VALUES ('632223', '3', '海晏县', '3', '6322', '00', null); +INSERT INTO `dt_common_district` VALUES ('632224', '3', '刚察县', '4', '6322', '00', null); +INSERT INTO `dt_common_district` VALUES ('6323', '2', '黄南藏族自治州', '4', '63', '00', null); +INSERT INTO `dt_common_district` VALUES ('632321', '3', '同仁县', '1', '6323', '00', null); +INSERT INTO `dt_common_district` VALUES ('632322', '3', '尖扎县', '2', '6323', '00', null); +INSERT INTO `dt_common_district` VALUES ('632323', '3', '泽库县', '3', '6323', '00', null); +INSERT INTO `dt_common_district` VALUES ('632324', '3', '河南蒙古族自治县', '4', '6323', '00', null); +INSERT INTO `dt_common_district` VALUES ('6325', '2', '海南藏族自治州', '5', '63', '00', null); +INSERT INTO `dt_common_district` VALUES ('632521', '3', '共和县', '1', '6325', '00', null); +INSERT INTO `dt_common_district` VALUES ('632522', '3', '同德县', '2', '6325', '00', null); +INSERT INTO `dt_common_district` VALUES ('632523', '3', '贵德县', '3', '6325', '00', null); +INSERT INTO `dt_common_district` VALUES ('632524', '3', '兴海县', '4', '6325', '00', null); +INSERT INTO `dt_common_district` VALUES ('632525', '3', '贵南县', '5', '6325', '00', null); +INSERT INTO `dt_common_district` VALUES ('6326', '2', '果洛藏族自治州', '6', '63', '00', null); +INSERT INTO `dt_common_district` VALUES ('632621', '3', '玛沁县', '1', '6326', '00', null); +INSERT INTO `dt_common_district` VALUES ('632622', '3', '班玛县', '2', '6326', '00', null); +INSERT INTO `dt_common_district` VALUES ('632623', '3', '甘德县', '3', '6326', '00', null); +INSERT INTO `dt_common_district` VALUES ('632624', '3', '达日县', '4', '6326', '00', null); +INSERT INTO `dt_common_district` VALUES ('632625', '3', '久治县', '5', '6326', '00', null); +INSERT INTO `dt_common_district` VALUES ('632626', '3', '玛多县', '6', '6326', '00', null); +INSERT INTO `dt_common_district` VALUES ('6327', '2', '玉树藏族自治州', '7', '63', '00', null); +INSERT INTO `dt_common_district` VALUES ('632701', '3', '玉树市', '1', '6327', '00', null); +INSERT INTO `dt_common_district` VALUES ('632722', '3', '杂多县', '2', '6327', '00', null); +INSERT INTO `dt_common_district` VALUES ('632723', '3', '称多县', '3', '6327', '00', null); +INSERT INTO `dt_common_district` VALUES ('632724', '3', '治多县', '4', '6327', '00', null); +INSERT INTO `dt_common_district` VALUES ('632725', '3', '囊谦县', '5', '6327', '00', null); +INSERT INTO `dt_common_district` VALUES ('632726', '3', '曲麻莱县', '6', '6327', '00', null); +INSERT INTO `dt_common_district` VALUES ('6328', '2', '海西蒙古族藏族自治州', '8', '63', '00', null); +INSERT INTO `dt_common_district` VALUES ('632801', '3', '格尔木市', '1', '6328', '00', null); +INSERT INTO `dt_common_district` VALUES ('632802', '3', '德令哈市', '2', '6328', '00', null); +INSERT INTO `dt_common_district` VALUES ('632821', '3', '乌兰县', '3', '6328', '00', null); +INSERT INTO `dt_common_district` VALUES ('632822', '3', '都兰县', '4', '6328', '00', null); +INSERT INTO `dt_common_district` VALUES ('632823', '3', '天峻县', '5', '6328', '00', null); +INSERT INTO `dt_common_district` VALUES ('632891', '3', '茫崖行委', '6', '6328', '00', null); +INSERT INTO `dt_common_district` VALUES ('632892', '3', '大柴旦行委', '7', '6328', '00', null); +INSERT INTO `dt_common_district` VALUES ('632893', '3', '冷湖行委', '8', '6328', '00', null); +INSERT INTO `dt_common_district` VALUES ('64', '1', '宁夏回族自治区', '30', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('6401', '2', '银川市', '1', '64', '00', null); +INSERT INTO `dt_common_district` VALUES ('640101', '3', '市辖区', '1', '6401', '00', null); +INSERT INTO `dt_common_district` VALUES ('640104', '3', '兴庆区', '2', '6401', '00', null); +INSERT INTO `dt_common_district` VALUES ('640105', '3', '西夏区', '3', '6401', '00', null); +INSERT INTO `dt_common_district` VALUES ('640106', '3', '金凤区', '4', '6401', '00', null); +INSERT INTO `dt_common_district` VALUES ('640121', '3', '永宁县', '5', '6401', '00', null); +INSERT INTO `dt_common_district` VALUES ('640122', '3', '贺兰县', '6', '6401', '00', null); +INSERT INTO `dt_common_district` VALUES ('640181', '3', '灵武市', '7', '6401', '00', null); +INSERT INTO `dt_common_district` VALUES ('6402', '2', '石嘴山市', '2', '64', '00', null); +INSERT INTO `dt_common_district` VALUES ('640201', '3', '市辖区', '1', '6402', '00', null); +INSERT INTO `dt_common_district` VALUES ('640202', '3', '大武口区', '2', '6402', '00', null); +INSERT INTO `dt_common_district` VALUES ('640205', '3', '惠农区', '3', '6402', '00', null); +INSERT INTO `dt_common_district` VALUES ('640221', '3', '平罗县', '4', '6402', '00', null); +INSERT INTO `dt_common_district` VALUES ('6403', '2', '吴忠市', '3', '64', '00', null); +INSERT INTO `dt_common_district` VALUES ('640301', '3', '市辖区', '1', '6403', '00', null); +INSERT INTO `dt_common_district` VALUES ('640302', '3', '利通区', '2', '6403', '00', null); +INSERT INTO `dt_common_district` VALUES ('640303', '3', '红寺堡区', '3', '6403', '00', null); +INSERT INTO `dt_common_district` VALUES ('640323', '3', '盐池县', '4', '6403', '00', null); +INSERT INTO `dt_common_district` VALUES ('640324', '3', '同心县', '5', '6403', '00', null); +INSERT INTO `dt_common_district` VALUES ('640381', '3', '青铜峡市', '6', '6403', '00', null); +INSERT INTO `dt_common_district` VALUES ('6404', '2', '固原市', '4', '64', '00', null); +INSERT INTO `dt_common_district` VALUES ('640401', '3', '市辖区', '1', '6404', '00', null); +INSERT INTO `dt_common_district` VALUES ('640402', '3', '原州区', '2', '6404', '00', null); +INSERT INTO `dt_common_district` VALUES ('640422', '3', '西吉县', '3', '6404', '00', null); +INSERT INTO `dt_common_district` VALUES ('640423', '3', '隆德县', '4', '6404', '00', null); +INSERT INTO `dt_common_district` VALUES ('640424', '3', '泾源县', '5', '6404', '00', null); +INSERT INTO `dt_common_district` VALUES ('640425', '3', '彭阳县', '6', '6404', '00', null); +INSERT INTO `dt_common_district` VALUES ('6405', '2', '中卫市', '5', '64', '00', null); +INSERT INTO `dt_common_district` VALUES ('640502', '3', '沙坡头区', '1', '6405', '00', null); +INSERT INTO `dt_common_district` VALUES ('640521', '3', '中宁县', '2', '6405', '00', null); +INSERT INTO `dt_common_district` VALUES ('640522', '3', '海原县', '3', '6405', '00', null); +INSERT INTO `dt_common_district` VALUES ('65', '1', '新疆维吾尔自治区', '31', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('6501', '2', '乌鲁木齐市', '1', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('650101', '3', '市辖区', '1', '6501', '00', null); +INSERT INTO `dt_common_district` VALUES ('650102', '3', '天山区', '2', '6501', '00', null); +INSERT INTO `dt_common_district` VALUES ('650103', '3', '沙依巴克区', '3', '6501', '00', null); +INSERT INTO `dt_common_district` VALUES ('650104', '3', '新市区', '4', '6501', '00', null); +INSERT INTO `dt_common_district` VALUES ('650105', '3', '水磨沟区', '5', '6501', '00', null); +INSERT INTO `dt_common_district` VALUES ('650106', '3', '头屯河区', '6', '6501', '00', null); +INSERT INTO `dt_common_district` VALUES ('650107', '3', '达坂城区', '7', '6501', '00', null); +INSERT INTO `dt_common_district` VALUES ('650109', '3', '米东区', '8', '6501', '00', null); +INSERT INTO `dt_common_district` VALUES ('650121', '3', '乌鲁木齐县', '9', '6501', '00', null); +INSERT INTO `dt_common_district` VALUES ('650173', '3', '甘泉堡区', '10', '6501', '00', null); +INSERT INTO `dt_common_district` VALUES ('6502', '2', '克拉玛依市', '2', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('650201', '3', '市辖区', '1', '6502', '00', null); +INSERT INTO `dt_common_district` VALUES ('650202', '3', '独山子区', '2', '6502', '00', null); +INSERT INTO `dt_common_district` VALUES ('650203', '3', '克拉玛依区', '3', '6502', '00', null); +INSERT INTO `dt_common_district` VALUES ('650204', '3', '白碱滩区', '4', '6502', '00', null); +INSERT INTO `dt_common_district` VALUES ('650205', '3', '乌尔禾区', '5', '6502', '00', null); +INSERT INTO `dt_common_district` VALUES ('6504', '2', '吐鲁番市', '3', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('650402', '3', '高昌区', '1', '6504', '00', null); +INSERT INTO `dt_common_district` VALUES ('650421', '3', '鄯善县', '2', '6504', '00', null); +INSERT INTO `dt_common_district` VALUES ('650422', '3', '托克逊县', '3', '6504', '00', null); +INSERT INTO `dt_common_district` VALUES ('6505', '2', '哈密市', '4', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('650502', '3', '伊州区', '1', '6505', '00', null); +INSERT INTO `dt_common_district` VALUES ('650521', '3', '巴里坤哈萨克自治县', '2', '6505', '00', null); +INSERT INTO `dt_common_district` VALUES ('650522', '3', '伊吾县', '3', '6505', '00', null); +INSERT INTO `dt_common_district` VALUES ('6523', '2', '昌吉回族自治州', '5', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('652301', '3', '昌吉市', '1', '6523', '00', null); +INSERT INTO `dt_common_district` VALUES ('652302', '3', '阜康市', '2', '6523', '00', null); +INSERT INTO `dt_common_district` VALUES ('652323', '3', '呼图壁县', '3', '6523', '00', null); +INSERT INTO `dt_common_district` VALUES ('652324', '3', '玛纳斯县', '4', '6523', '00', null); +INSERT INTO `dt_common_district` VALUES ('652325', '3', '奇台县', '5', '6523', '00', null); +INSERT INTO `dt_common_district` VALUES ('652327', '3', '吉木萨尔县', '6', '6523', '00', null); +INSERT INTO `dt_common_district` VALUES ('652328', '3', '木垒哈萨克自治县', '7', '6523', '00', null); +INSERT INTO `dt_common_district` VALUES ('652371', '3', '准东公司', '8', '6523', '00', null); +INSERT INTO `dt_common_district` VALUES ('6527', '2', '博尔塔拉蒙古自治州', '6', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('652701', '3', '博乐市', '1', '6527', '00', null); +INSERT INTO `dt_common_district` VALUES ('652702', '3', '阿拉山口市', '2', '6527', '00', null); +INSERT INTO `dt_common_district` VALUES ('652722', '3', '精河县', '3', '6527', '00', null); +INSERT INTO `dt_common_district` VALUES ('652723', '3', '温泉县', '4', '6527', '00', null); +INSERT INTO `dt_common_district` VALUES ('6528', '2', '巴音郭楞蒙古自治州', '7', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('652801', '3', '库尔勒市', '1', '6528', '00', null); +INSERT INTO `dt_common_district` VALUES ('652822', '3', '轮台县', '2', '6528', '00', null); +INSERT INTO `dt_common_district` VALUES ('652823', '3', '尉犁县', '3', '6528', '00', null); +INSERT INTO `dt_common_district` VALUES ('652824', '3', '若羌县', '4', '6528', '00', null); +INSERT INTO `dt_common_district` VALUES ('652825', '3', '且末县', '5', '6528', '00', null); +INSERT INTO `dt_common_district` VALUES ('652826', '3', '焉耆回族自治县', '6', '6528', '00', null); +INSERT INTO `dt_common_district` VALUES ('652827', '3', '和静县', '7', '6528', '00', null); +INSERT INTO `dt_common_district` VALUES ('652828', '3', '和硕县', '8', '6528', '00', null); +INSERT INTO `dt_common_district` VALUES ('652829', '3', '博湖县', '9', '6528', '00', null); +INSERT INTO `dt_common_district` VALUES ('6529', '2', '阿克苏地区', '8', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('652901', '3', '阿克苏市', '1', '6529', '00', null); +INSERT INTO `dt_common_district` VALUES ('652922', '3', '温宿县', '2', '6529', '00', null); +INSERT INTO `dt_common_district` VALUES ('652923', '3', '库车县', '3', '6529', '00', null); +INSERT INTO `dt_common_district` VALUES ('652924', '3', '沙雅县', '4', '6529', '00', null); +INSERT INTO `dt_common_district` VALUES ('652925', '3', '新和县', '5', '6529', '00', null); +INSERT INTO `dt_common_district` VALUES ('652926', '3', '拜城县', '6', '6529', '00', null); +INSERT INTO `dt_common_district` VALUES ('652927', '3', '乌什县', '7', '6529', '00', null); +INSERT INTO `dt_common_district` VALUES ('652928', '3', '阿瓦提县', '8', '6529', '00', null); +INSERT INTO `dt_common_district` VALUES ('652929', '3', '柯坪县', '9', '6529', '00', null); +INSERT INTO `dt_common_district` VALUES ('6530', '2', '克孜勒苏柯尔克孜自治州', '9', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('653001', '3', '阿图什市', '1', '6530', '00', null); +INSERT INTO `dt_common_district` VALUES ('653022', '3', '阿克陶县', '2', '6530', '00', null); +INSERT INTO `dt_common_district` VALUES ('653023', '3', '阿合奇县', '3', '6530', '00', null); +INSERT INTO `dt_common_district` VALUES ('653024', '3', '乌恰县', '4', '6530', '00', null); +INSERT INTO `dt_common_district` VALUES ('6531', '2', '喀什地区', '10', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('653101', '3', '喀什市', '1', '6531', '00', null); +INSERT INTO `dt_common_district` VALUES ('653121', '3', '疏附县', '2', '6531', '00', null); +INSERT INTO `dt_common_district` VALUES ('653122', '3', '疏勒县', '3', '6531', '00', null); +INSERT INTO `dt_common_district` VALUES ('653123', '3', '英吉沙县', '4', '6531', '00', null); +INSERT INTO `dt_common_district` VALUES ('653124', '3', '泽普县', '5', '6531', '00', null); +INSERT INTO `dt_common_district` VALUES ('653125', '3', '莎车县', '6', '6531', '00', null); +INSERT INTO `dt_common_district` VALUES ('653126', '3', '叶城县', '7', '6531', '00', null); +INSERT INTO `dt_common_district` VALUES ('653127', '3', '麦盖提县', '8', '6531', '00', null); +INSERT INTO `dt_common_district` VALUES ('653128', '3', '岳普湖县', '9', '6531', '00', null); +INSERT INTO `dt_common_district` VALUES ('653129', '3', '伽师县', '10', '6531', '00', null); +INSERT INTO `dt_common_district` VALUES ('653130', '3', '巴楚县', '11', '6531', '00', null); +INSERT INTO `dt_common_district` VALUES ('653131', '3', '塔什库尔干塔吉克自治县', '12', '6531', '00', null); +INSERT INTO `dt_common_district` VALUES ('6532', '2', '和田地区', '11', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('653201', '3', '和田市', '1', '6532', '00', null); +INSERT INTO `dt_common_district` VALUES ('653221', '3', '和田县', '2', '6532', '00', null); +INSERT INTO `dt_common_district` VALUES ('653222', '3', '墨玉县', '3', '6532', '00', null); +INSERT INTO `dt_common_district` VALUES ('653223', '3', '皮山县', '4', '6532', '00', null); +INSERT INTO `dt_common_district` VALUES ('653224', '3', '洛浦县', '5', '6532', '00', null); +INSERT INTO `dt_common_district` VALUES ('653225', '3', '策勒县', '6', '6532', '00', null); +INSERT INTO `dt_common_district` VALUES ('653226', '3', '于田县', '7', '6532', '00', null); +INSERT INTO `dt_common_district` VALUES ('653227', '3', '民丰县', '8', '6532', '00', null); +INSERT INTO `dt_common_district` VALUES ('6540', '2', '伊犁哈萨克自治州', '12', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('654002', '3', '伊宁市', '1', '6540', '00', null); +INSERT INTO `dt_common_district` VALUES ('654003', '3', '奎屯市', '2', '6540', '00', null); +INSERT INTO `dt_common_district` VALUES ('654004', '3', '霍尔果斯市', '3', '6540', '00', null); +INSERT INTO `dt_common_district` VALUES ('654021', '3', '伊宁县', '4', '6540', '00', null); +INSERT INTO `dt_common_district` VALUES ('654022', '3', '察布查尔锡伯自治县', '5', '6540', '00', null); +INSERT INTO `dt_common_district` VALUES ('654023', '3', '霍城县', '6', '6540', '00', null); +INSERT INTO `dt_common_district` VALUES ('654024', '3', '巩留县', '7', '6540', '00', null); +INSERT INTO `dt_common_district` VALUES ('654025', '3', '新源县', '8', '6540', '00', null); +INSERT INTO `dt_common_district` VALUES ('654026', '3', '昭苏县', '9', '6540', '00', null); +INSERT INTO `dt_common_district` VALUES ('654027', '3', '特克斯县', '10', '6540', '00', null); +INSERT INTO `dt_common_district` VALUES ('654028', '3', '尼勒克县', '11', '6540', '00', null); +INSERT INTO `dt_common_district` VALUES ('654072', '3', '都拉塔口岸', '12', '6540', '00', null); +INSERT INTO `dt_common_district` VALUES ('6542', '2', '塔城地区', '13', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('654201', '3', '塔城市', '1', '6542', '00', null); +INSERT INTO `dt_common_district` VALUES ('654202', '3', '乌苏市', '2', '6542', '00', null); +INSERT INTO `dt_common_district` VALUES ('654221', '3', '额敏县', '3', '6542', '00', null); +INSERT INTO `dt_common_district` VALUES ('654223', '3', '沙湾县', '4', '6542', '00', null); +INSERT INTO `dt_common_district` VALUES ('654224', '3', '托里县', '5', '6542', '00', null); +INSERT INTO `dt_common_district` VALUES ('654225', '3', '裕民县', '6', '6542', '00', null); +INSERT INTO `dt_common_district` VALUES ('654226', '3', '和布克赛尔蒙古自治县', '7', '6542', '00', null); +INSERT INTO `dt_common_district` VALUES ('6543', '2', '阿勒泰地区', '14', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('654301', '3', '阿勒泰市', '1', '6543', '00', null); +INSERT INTO `dt_common_district` VALUES ('654321', '3', '布尔津县', '2', '6543', '00', null); +INSERT INTO `dt_common_district` VALUES ('654322', '3', '富蕴县', '3', '6543', '00', null); +INSERT INTO `dt_common_district` VALUES ('654323', '3', '福海县', '4', '6543', '00', null); +INSERT INTO `dt_common_district` VALUES ('654324', '3', '哈巴河县', '5', '6543', '00', null); +INSERT INTO `dt_common_district` VALUES ('654325', '3', '青河县', '6', '6543', '00', null); +INSERT INTO `dt_common_district` VALUES ('654326', '3', '吉木乃县', '7', '6543', '00', null); +INSERT INTO `dt_common_district` VALUES ('6590', '2', '自治区直辖县级行政单位', '15', '65', '00', null); +INSERT INTO `dt_common_district` VALUES ('66', '1', '新疆兵团', '32', '0', '00', null); +INSERT INTO `dt_common_district` VALUES ('6601', '2', '第一师', '1', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('660102', '3', '二团', '1', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660103', '3', '三团', '2', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660104', '3', '四团', '3', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660106', '3', '六团', '4', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660107', '3', '七团', '5', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660108', '3', '八团', '6', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660110', '3', '十团', '7', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660111', '3', '十一团', '8', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660112', '3', '十二团', '9', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660113', '3', '十三团', '10', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660114', '3', '十四团', '11', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660116', '3', '十六团', '12', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660119', '3', '沙水处', '13', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660120', '3', '托喀依乡', '14', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660126', '3', '阿拉尔市直单位', '15', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660129', '3', '农一师医院', '16', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660130', '3', '银海事务管理中心', '17', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660131', '3', '青松建化(集团)股份有限公司', '18', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660132', '3', '电力公司', '19', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660133', '3', '西工业园区', '20', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660136', '3', '幸福农场', '21', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660139', '3', '九团', '22', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660141', '3', '幸福街道办', '23', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660142', '3', '金银川街道办', '24', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660143', '3', '青松路街道办', '25', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('660190', '3', '阿拉尔经济技术开发区', '26', '6601', '00', null); +INSERT INTO `dt_common_district` VALUES ('6602', '2', '第二师', '2', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('660201', '3', '二十一团', '1', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660202', '3', '二十二团', '2', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660203', '3', '二十三团', '3', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660204', '3', '二十四团', '4', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660205', '3', '二十五团', '5', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660207', '3', '二十七团', '6', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660208', '3', '二十八团', '7', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660209', '3', '二十九团', '8', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660210', '3', '三十团', '9', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660211', '3', '三十一团', '10', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660212', '3', '三十三团', '11', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660213', '3', '三十四团', '12', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660215', '3', '二二三团', '13', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660216', '3', '师直单位', '14', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660219', '3', '三十八团', '15', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660220', '3', '明祥社区', '16', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660223', '3', '三十七团', '17', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('660224', '3', '铁门关市迎宾街道办事处', '18', '6602', '00', null); +INSERT INTO `dt_common_district` VALUES ('6603', '2', '第三师', '3', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('660301', '3', '四十一团', '1', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660302', '3', '四十二团', '2', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660304', '3', '四十四团', '3', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660305', '3', '四十五团', '4', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660306', '3', '四十六团', '5', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660307', '3', '四十八团', '6', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660308', '3', '四十九团', '7', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660310', '3', '五十一团', '8', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660312', '3', '五十三团', '9', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660313', '3', '伽师农场', '10', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660314', '3', '东风农场', '11', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660315', '3', '红旗农场', '12', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660316', '3', '叶城二牧场', '13', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660317', '3', '托云牧场', '14', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660323', '3', '齐干却勒街道办', '15', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660324', '3', '师直单位', '16', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660325', '3', '五十四团', '17', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('660326', '3', '前海街道办', '18', '6603', '00', null); +INSERT INTO `dt_common_district` VALUES ('6604', '2', '第四师', '4', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('660401', '3', '六十一团', '1', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660402', '3', '六十二团', '2', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660403', '3', '六十三团', '3', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660404', '3', '六十四团', '4', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660406', '3', '六十六团', '5', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660407', '3', '六十七团', '6', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660408', '3', '六十八团', '7', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660409', '3', '六十九团', '8', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660410', '3', '七十团', '9', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660411', '3', '七十一团', '10', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660412', '3', '七十二团', '11', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660413', '3', '七十三团', '12', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660414', '3', '七十四团', '13', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660415', '3', '七十五团', '14', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660416', '3', '七十六团', '15', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660417', '3', '七十七团', '16', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660418', '3', '七十八团', '17', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660419', '3', '七十九团', '18', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660420', '3', '师直单位', '19', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660421', '3', '伊犁青松南岗建材有限责任公司', '20', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660422', '3', '新疆南岗投资有限责任公司', '21', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660423', '3', '新疆宏远建设集团有限公司', '22', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660424', '3', '第四师公安局', '23', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('660425', '3', '三十六团', '24', '6604', '00', null); +INSERT INTO `dt_common_district` VALUES ('6605', '2', '第五师', '5', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('660501', '3', '八十一团', '1', '6605', '00', null); +INSERT INTO `dt_common_district` VALUES ('660503', '3', '八十三团', '2', '6605', '00', null); +INSERT INTO `dt_common_district` VALUES ('660504', '3', '八十四团', '3', '6605', '00', null); +INSERT INTO `dt_common_district` VALUES ('660506', '3', '八十六团', '4', '6605', '00', null); +INSERT INTO `dt_common_district` VALUES ('660507', '3', '八十七团', '5', '6605', '00', null); +INSERT INTO `dt_common_district` VALUES ('660508', '3', '八十八团', '6', '6605', '00', null); +INSERT INTO `dt_common_district` VALUES ('660509', '3', '八十九团', '7', '6605', '00', null); +INSERT INTO `dt_common_district` VALUES ('660510', '3', '九十团', '8', '6605', '00', null); +INSERT INTO `dt_common_district` VALUES ('660511', '3', '九十一团', '9', '6605', '00', null); +INSERT INTO `dt_common_district` VALUES ('660512', '3', '师直单位', '10', '6605', '00', null); +INSERT INTO `dt_common_district` VALUES ('6606', '2', '第六师', '6', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('660601', '3', '一○一团', '1', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660602', '3', '一○二团', '2', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660603', '3', '一○三团', '3', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660604', '3', '一○五团', '4', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660605', '3', '一○六团', '5', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660606', '3', '一○七团', '6', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660607', '3', '一○八团', '7', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660608', '3', '一○九团', '8', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660609', '3', '一一○团', '9', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660610', '3', '一一一团', '10', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660611', '3', '芳草湖农场', '11', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660612', '3', '新湖农场', '12', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660613', '3', '军户农场', '13', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660614', '3', '共青团农场', '14', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660615', '3', '土墩子农场', '15', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660617', '3', '红旗农场', '16', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660618', '3', '奇台农场', '17', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660619', '3', '北塔山牧场', '18', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660620', '3', '六运湖农场', '19', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660621', '3', '师直单位', '20', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660622', '3', '五家渠市', '21', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('660623', '3', '五十团', '22', '6606', '00', null); +INSERT INTO `dt_common_district` VALUES ('6607', '2', '第七师', '7', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('660701', '3', '一二三团', '1', '6607', '00', null); +INSERT INTO `dt_common_district` VALUES ('660702', '3', '一二四团', '2', '6607', '00', null); +INSERT INTO `dt_common_district` VALUES ('660703', '3', '一二五团', '3', '6607', '00', null); +INSERT INTO `dt_common_district` VALUES ('660704', '3', '一二六团', '4', '6607', '00', null); +INSERT INTO `dt_common_district` VALUES ('660705', '3', '一二七团', '5', '6607', '00', null); +INSERT INTO `dt_common_district` VALUES ('660706', '3', '一二八团', '6', '6607', '00', null); +INSERT INTO `dt_common_district` VALUES ('660707', '3', '一二九团', '7', '6607', '00', null); +INSERT INTO `dt_common_district` VALUES ('660708', '3', '一三○团', '8', '6607', '00', null); +INSERT INTO `dt_common_district` VALUES ('660709', '3', '一三一团', '9', '6607', '00', null); +INSERT INTO `dt_common_district` VALUES ('660710', '3', '一三七团', '10', '6607', '00', null); +INSERT INTO `dt_common_district` VALUES ('660711', '3', '师直单位', '11', '6607', '00', null); +INSERT INTO `dt_common_district` VALUES ('660713', '3', '一团', '12', '6607', '00', null); +INSERT INTO `dt_common_district` VALUES ('6608', '2', '第八师', '8', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('660801', '3', '一二一团', '1', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660804', '3', '一三三团', '2', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660805', '3', '一三四团', '3', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660806', '3', '一三六团', '4', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660807', '3', '一四一团', '5', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660808', '3', '一四二团', '6', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660809', '3', '一四三团', '7', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660810', '3', '一四四团', '8', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660811', '3', '一四七团', '9', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660812', '3', '一四八团', '10', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660813', '3', '一四九团', '11', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660814', '3', '一五零团', '12', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660815', '3', '一五二团', '13', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660816', '3', '石总场', '14', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660817', '3', '巴管处', '15', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660818', '3', '老街办', '16', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660819', '3', '东城办', '17', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660820', '3', '向阳办', '18', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660821', '3', '红山办', '19', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660822', '3', '玛管处', '20', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660823', '3', '新城办', '21', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660824', '3', '石河子镇', '22', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('660827', '3', '高新区管委会', '23', '6608', '00', null); +INSERT INTO `dt_common_district` VALUES ('6609', '2', '第九师', '9', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('660901', '3', '一六一团', '1', '6609', '00', null); +INSERT INTO `dt_common_district` VALUES ('660902', '3', '一六二团', '2', '6609', '00', null); +INSERT INTO `dt_common_district` VALUES ('660903', '3', '一六三团', '3', '6609', '00', null); +INSERT INTO `dt_common_district` VALUES ('660904', '3', '一六四团', '4', '6609', '00', null); +INSERT INTO `dt_common_district` VALUES ('660905', '3', '一六五团', '5', '6609', '00', null); +INSERT INTO `dt_common_district` VALUES ('660906', '3', '一六六团', '6', '6609', '00', null); +INSERT INTO `dt_common_district` VALUES ('660907', '3', '一六七团', '7', '6609', '00', null); +INSERT INTO `dt_common_district` VALUES ('660908', '3', '一六八团', '8', '6609', '00', null); +INSERT INTO `dt_common_district` VALUES ('660909', '3', '一六九团', '9', '6609', '00', null); +INSERT INTO `dt_common_district` VALUES ('660910', '3', '一七○团', '10', '6609', '00', null); +INSERT INTO `dt_common_district` VALUES ('660911', '3', '团结农场', '11', '6609', '00', null); +INSERT INTO `dt_common_district` VALUES ('660912', '3', '师直单位', '12', '6609', '00', null); +INSERT INTO `dt_common_district` VALUES ('6610', '2', '第十师', '10', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('661001', '3', '一八一团', '1', '6610', '00', null); +INSERT INTO `dt_common_district` VALUES ('661002', '3', '一八二团', '2', '6610', '00', null); +INSERT INTO `dt_common_district` VALUES ('661003', '3', '一八三团', '3', '6610', '00', null); +INSERT INTO `dt_common_district` VALUES ('661004', '3', '一八四团', '4', '6610', '00', null); +INSERT INTO `dt_common_district` VALUES ('661005', '3', '一八五团', '5', '6610', '00', null); +INSERT INTO `dt_common_district` VALUES ('661006', '3', '一八六团', '6', '6610', '00', null); +INSERT INTO `dt_common_district` VALUES ('661007', '3', '一八七团', '7', '6610', '00', null); +INSERT INTO `dt_common_district` VALUES ('661008', '3', '一八八团', '8', '6610', '00', null); +INSERT INTO `dt_common_district` VALUES ('661009', '3', '屯南社区', '9', '6610', '00', null); +INSERT INTO `dt_common_district` VALUES ('661010', '3', '幸福社区', '10', '6610', '00', null); +INSERT INTO `dt_common_district` VALUES ('661014', '3', '阳光社区', '11', '6610', '00', null); +INSERT INTO `dt_common_district` VALUES ('661015', '3', '得仁社区', '12', '6610', '00', null); +INSERT INTO `dt_common_district` VALUES ('6611', '2', '第十一师', '11', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('661101', '3', '建工集团', '1', '6611', '00', null); +INSERT INTO `dt_common_district` VALUES ('661102', '3', '建咨集团', '2', '6611', '00', null); +INSERT INTO `dt_common_district` VALUES ('661103', '3', '师直单位', '3', '6611', '00', null); +INSERT INTO `dt_common_district` VALUES ('661104', '3', '德坤建材公司', '4', '6611', '00', null); +INSERT INTO `dt_common_district` VALUES ('661121', '3', '五团', '5', '6611', '00', null); +INSERT INTO `dt_common_district` VALUES ('6612', '2', '第十二师', '12', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('661201', '3', '一0四团', '1', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661202', '3', '三坪农场', '2', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661203', '3', '五一农场', '3', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661204', '3', '头屯河农场', '4', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661205', '3', '西山农场', '5', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661206', '3', '二二一团', '6', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661207', '3', '师直单位', '7', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661208', '3', '国资(集团)公司', '8', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661209', '3', '天恒基投资(集团)有限公司', '9', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661210', '3', '新疆九鼎农业(集团)有限公司', '10', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661211', '3', '中瑞恒远商贸(集团)公司', '11', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661212', '3', '二二二团', '12', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661213', '3', '新疆仲颐凯业园林有限公司', '13', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661215', '3', '新疆恒城鼎盛建设工程有限责任公司', '14', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661216', '3', '新疆天润乳业股份有限公司', '15', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661217', '3', '新疆昌平矿业有限责任公司', '16', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('661218', '3', '四十七团', '17', '6612', '00', null); +INSERT INTO `dt_common_district` VALUES ('6613', '2', '第十三师', '13', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('661301', '3', '红星一场', '1', '6613', '00', null); +INSERT INTO `dt_common_district` VALUES ('661302', '3', '红星二场', '2', '6613', '00', null); +INSERT INTO `dt_common_district` VALUES ('661303', '3', '红星四场', '3', '6613', '00', null); +INSERT INTO `dt_common_district` VALUES ('661304', '3', '火箭农场', '4', '6613', '00', null); +INSERT INTO `dt_common_district` VALUES ('661305', '3', '黄田农场', '5', '6613', '00', null); +INSERT INTO `dt_common_district` VALUES ('661306', '3', '柳树泉农场', '6', '6613', '00', null); +INSERT INTO `dt_common_district` VALUES ('661307', '3', '红山农场', '7', '6613', '00', null); +INSERT INTO `dt_common_district` VALUES ('661308', '3', '淖毛湖农场', '8', '6613', '00', null); +INSERT INTO `dt_common_district` VALUES ('661309', '3', '师直单位', '9', '6613', '00', null); +INSERT INTO `dt_common_district` VALUES ('6614', '2', '第十四师', '14', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('661401', '3', '皮山农场', '1', '6614', '00', null); +INSERT INTO `dt_common_district` VALUES ('661403', '3', '一牧场', '2', '6614', '00', null); +INSERT INTO `dt_common_district` VALUES ('661404', '3', '二二四团', '3', '6614', '00', null); +INSERT INTO `dt_common_district` VALUES ('661405', '3', '师直单位', '4', '6614', '00', null); +INSERT INTO `dt_common_district` VALUES ('661406', '3', '二二五团', '5', '6614', '00', null); +INSERT INTO `dt_common_district` VALUES ('6615', '2', '兵直', '15', '66', '00', null); +INSERT INTO `dt_common_district` VALUES ('661502', '3', '直辖单位', '1', '6615', '00', null); + +-- ---------------------------- +-- Table structure for dt_common_file +-- ---------------------------- +DROP TABLE IF EXISTS `dt_common_file`; +CREATE TABLE `dt_common_file` ( + `id` bigint(11) NOT NULL AUTO_INCREMENT, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) NOT NULL, + `accountId` varchar(128) NOT NULL, + `accountName` varchar(128) NOT NULL, + `bizId` varchar(2) NOT NULL, + `fileName` varchar(128) NOT NULL, + `ip` varchar(50) NOT NULL, + `md5` varchar(128) NOT NULL, + `path` varchar(256) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `UK_gwmjub0yaix4av6j3guylu7qg` (`fileName`), + UNIQUE KEY `UK_fg18vy0mbgb37l8grf5fvj2tt` (`md5`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_common_file +-- ---------------------------- + +-- ---------------------------- +-- Table structure for dt_common_sms_record +-- ---------------------------- +DROP TABLE IF EXISTS `dt_common_sms_record`; +CREATE TABLE `dt_common_sms_record` ( + `id` bigint(11) NOT NULL AUTO_INCREMENT, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) NOT NULL, + `bizType` varchar(2) NOT NULL, + `messeage` varchar(255) DEFAULT NULL, + `rId` varchar(20) NOT NULL, + `rawData` varchar(128) DEFAULT NULL, + `smsId` varchar(20) NOT NULL, + `state` varchar(2) NOT NULL, + `tId` varchar(128) NOT NULL, + `validTime` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_common_sms_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for dt_enterprise +-- ---------------------------- +DROP TABLE IF EXISTS `dt_enterprise`; +CREATE TABLE `dt_enterprise` ( + `id` bigint(20) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) DEFAULT NULL, + `address` varchar(255) DEFAULT NULL, + `avatar` varchar(128) DEFAULT NULL, + `contact` varchar(50) NOT NULL, + `description` longtext, + `idPath` varchar(512) NOT NULL, + `name` varchar(50) NOT NULL, + `pId` bigint(20) NOT NULL, + `state` varchar(2) NOT NULL, + `telephone` varchar(128) NOT NULL, + `type` varchar(2) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `UK_p6qnmr2ldvjwpt86hkls1pqu` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_enterprise +-- ---------------------------- +INSERT INTO `dt_enterprise` VALUES ('0', null, '1629254706169', '楼兰网安', null, 'Z4/SwRcpMkAMFRNqFOwAgQ==', '

楼兰网安

', '0-0-0', '楼兰网安', '0', '00', 'xf0sSPFQElVxUOpbvRoqjQ==', '00'); +INSERT INTO `dt_enterprise` VALUES ('212663632381743104', '1636347229933', '1636347229933', '石家庄一江大厦', null, 'W1PoWOApCyaWLTDpvVfzNA==', '

石家庄一江大厦

', '0-0-0-212663632381743104', '楼兰网安', '0', '10', 'NMIxXZFyS5hLztyy1i+tXw==', '00'); +INSERT INTO `dt_enterprise` VALUES ('212699115577020416', '1636355689799', '1636355689799', '石家庄一江大厦', null, 'W1PoWOApCyaWLTDpvVfzNA==', '

楼兰网安

', '0-0-0-212699115577020416', '楼兰网安', '0', '00', 'NMIxXZFyS5hLztyy1i+tXw==', '00'); + +-- ---------------------------- +-- Table structure for dt_enterprise_account +-- ---------------------------- +DROP TABLE IF EXISTS `dt_enterprise_account`; +CREATE TABLE `dt_enterprise_account` ( + `id` bigint(20) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) DEFAULT NULL, + `avatar` varchar(128) DEFAULT NULL, + `departmentId` bigint(20) NOT NULL, + `didPath` varchar(512) NOT NULL, + `eidPath` varchar(512) NOT NULL, + `enterpriseId` bigint(20) NOT NULL, + `name` varchar(50) NOT NULL, + `password` varchar(128) NOT NULL, + `realName` varchar(128) DEFAULT NULL, + `roleId` bigint(20) NOT NULL, + `selfId` varchar(128) DEFAULT NULL, + `sex` varchar(1) NOT NULL, + `state` varchar(2) NOT NULL, + `telephone` varchar(128) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `UK_2hpvsommc78e2iwibr7b0jw1r` (`selfId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_enterprise_account +-- ---------------------------- +INSERT INTO `dt_enterprise_account` VALUES ('0', null, '1636356357362', null, '0', '0', '0', '0', 'kelp', 'b2f78dc033ffa81f739502e23af1e39b', 'xEhr4+y6TiLZ9V2DSnXaWw==', '175089920950538240', 'YbkMgT0+Vmau30u9NHi8VZMfeKfVthGeOxTptSGKDW8=', '0', '00', 'NMIxXZFyS5hLztyy1i+tXw=='); +INSERT INTO `dt_enterprise_account` VALUES ('212701998825476096', '1636356377214', '1636356455485', null, '0', '0', '0-0-0', '0', '王琳', 'b2f78dc033ffa81f739502e23af1e39b', 'sBwviaEdrwNnIL26u7KzpQ==', '175089920950538240', null, '0', '00', 'YwpAqODBwSDSRKI4tPIBSw=='); + +-- ---------------------------- +-- Table structure for dt_enterprise_contract +-- ---------------------------- +DROP TABLE IF EXISTS `dt_enterprise_contract`; +CREATE TABLE `dt_enterprise_contract` ( + `id` bigint(20) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) DEFAULT NULL, + `accountId` bigint(20) NOT NULL, + `accountName` varchar(128) NOT NULL, + `amount` decimal(19,2) DEFAULT NULL, + `content` varchar(1024) DEFAULT NULL, + `customerId` bigint(20) NOT NULL, + `customerName` varchar(128) NOT NULL, + `customerSignatory` varchar(128) NOT NULL, + `dso` varchar(1024) DEFAULT NULL, + `endTime` bigint(20) DEFAULT NULL, + `fapiao` varchar(1024) DEFAULT NULL, + `signTime` bigint(20) NOT NULL, + `staffName` varchar(128) NOT NULL, + `state` varchar(2) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Records of dt_enterprise_contract +-- ---------------------------- +INSERT INTO `dt_enterprise_contract` VALUES ('185906649863688192', '1629967868183', '1629967876523', '0', 'c+WTHQZntEv0PFZjyt+WEA==', '1000.80', 'a', '182993764447555584', 'Ka52VznOu+vOQdMVYYq4RQ==', 'vzEuEtyVk0ysJbOHXTVD6g==', 'a', '1629993599000', 'a', '1629907200000', 'TGqS4qONhdKGudiFX1137Q==', '00'); +INSERT INTO `dt_enterprise_contract` VALUES ('185909699818950656', '1629968595350', '1629968726252', '175649591100837888', 'iJb+sj9Z2Ql00YfTM9c9Rw==', '199.00', 'v', '182993764447555584', 'Ka52VznOu+vOQdMVYYq4RQ==', 'vzEuEtyVk0ysJbOHXTVD6g==', 'baaaa', '1629993599000', 'b cdd', '1629907200000', 'eON6HGxtv9VAykplVKRe4w==', '00'); +INSERT INTO `dt_enterprise_contract` VALUES ('185910323423875072', '1629968744035', '1629968744035', '175649591100837888', 'iJb+sj9Z2Ql00YfTM9c9Rw==', '1000.00', 'ddddd', '182993764447555584', 'Ka52VznOu+vOQdMVYYq4RQ==', 'vzEuEtyVk0ysJbOHXTVD6g==', 'aaaaa', '1629993599000', 'cccc', '1629907200000', 'eON6HGxtv9VAykplVKRe4w==', '00'); +INSERT INTO `dt_enterprise_contract` VALUES ('212748826606440448', '1636367541829', '1636368105671', '0', 'c+WTHQZntEv0PFZjyt+WEA==', '1938.12', 'sdf', '212733880761978880', 'wCJRsb4zwB38DwLrRn3xRg==', 'eON6HGxtv9VAykplVKRe4w==', 'sdf', '1636387199000', 'sa', '1636300800000', 'TGqS4qONhdKGudiFX1137Q==', '00'); + +-- ---------------------------- +-- Table structure for dt_enterprise_customer +-- ---------------------------- +DROP TABLE IF EXISTS `dt_enterprise_customer`; +CREATE TABLE `dt_enterprise_customer` ( + `id` bigint(20) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) DEFAULT NULL, + `description` varchar(256) DEFAULT NULL, + `effctiveTime` bigint(20) NOT NULL, + `expiredTime` bigint(20) NOT NULL, + `name` varchar(128) NOT NULL, + `staffName` varchar(128) NOT NULL, + `state` varchar(2) NOT NULL, + `telephone` varchar(128) NOT NULL, + `contact` varchar(128) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `UK_i0xhu4qtfyvhvl73fc61gpx9b` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_enterprise_customer +-- ---------------------------- +INSERT INTO `dt_enterprise_customer` VALUES ('212733880761978880', '1636363978465', '1636363996764', 'asdf', '1636300800000', '1636387199000', 'wCJRsb4zwB38DwLrRn3xRg==', 'eON6HGxtv9VAykplVKRe4w==', '11', 'YwpAqODBwSDSRKI4tPIBSw==', 'HTNrTXjBj/AzMYArFbYiLw=='); +INSERT INTO `dt_enterprise_customer` VALUES ('213030020032106496', '1636434583377', '1636434583377', '', '0', '0', 'NQwvlk/vS+yILM7GwcbbZg==', 'NQwvlk/vS+yILM7GwcbbZg==', '00', 'NMIxXZFyS5hLztyy1i+tXw==', 'xznLcwJFZHKnj93aqxBY5g=='); + +-- ---------------------------- +-- Table structure for dt_enterprise_customer_visit +-- ---------------------------- +DROP TABLE IF EXISTS `dt_enterprise_customer_visit`; +CREATE TABLE `dt_enterprise_customer_visit` ( + `id` bigint(20) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) DEFAULT NULL, + `accountId` bigint(20) NOT NULL, + `accountName` varchar(128) NOT NULL, + `content` varchar(1024) NOT NULL, + `customerId` bigint(20) NOT NULL, + `customerName` varchar(128) NOT NULL, + `customerTelephone` varchar(128) NOT NULL, + `staffName` varchar(128) NOT NULL, + `state` varchar(2) NOT NULL, + `visitTime` bigint(20) NOT NULL, + `visiter` varchar(128) NOT NULL, + `visiterTelephone` varchar(128) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_enterprise_customer_visit +-- ---------------------------- +INSERT INTO `dt_enterprise_customer_visit` VALUES ('185231813222993920', '1629806974590', '1629806974590', '0', 'xEhr4+y6TiLZ9V2DSnXaWw==', '17733877260', '182993764447555584', 'Ka52VznOu+vOQdMVYYq4RQ==', 'H3ral997YCAK6qCID1kX7g==', 'eON6HGxtv9VAykplVKRe4w==', '10', '1629734400000', 'vzEuEtyVk0ysJbOHXTVD6g==', 'NMIxXZFyS5hLztyy1i+tXw=='); +INSERT INTO `dt_enterprise_customer_visit` VALUES ('185620094141992960', '1629899547976', '1629899547976', '0', 'xEhr4+y6TiLZ9V2DSnXaWw==', 'asdfasd', '182993764447555584', 'Ka52VznOu+vOQdMVYYq4RQ==', 'H3ral997YCAK6qCID1kX7g==', 'eON6HGxtv9VAykplVKRe4w==', '10', '1629820800000', 'vzEuEtyVk0ysJbOHXTVD6g==', 'NMIxXZFyS5hLztyy1i+tXw=='); +INSERT INTO `dt_enterprise_customer_visit` VALUES ('185626430711926784', '1629901058729', '1629901058729', '0', 'xEhr4+y6TiLZ9V2DSnXaWw==', '12345678901234567890123456789012345678901234567890', '182993764447555584', 'Ka52VznOu+vOQdMVYYq4RQ==', 'H3ral997YCAK6qCID1kX7g==', 'eON6HGxtv9VAykplVKRe4w==', '10', '1629820800000', 'vzEuEtyVk0ysJbOHXTVD6g==', 'NMIxXZFyS5hLztyy1i+tXw=='); +INSERT INTO `dt_enterprise_customer_visit` VALUES ('185635505147351040', '1629903222243', '1629903222243', '0', 'xEhr4+y6TiLZ9V2DSnXaWw==', '你是在中国你是个屁呀你是在中国你是个屁呀你是在中国你是个屁呀你是在中国你是个屁呀你是在中国你是个屁呀', '182993764447555584', 'Ka52VznOu+vOQdMVYYq4RQ==', 'H3ral997YCAK6qCID1kX7g==', 'eON6HGxtv9VAykplVKRe4w==', '10', '1629820800000', 'vzEuEtyVk0ysJbOHXTVD6g==', 'NMIxXZFyS5hLztyy1i+tXw=='); +INSERT INTO `dt_enterprise_customer_visit` VALUES ('212741205442826240', '1636365724791', '1636366823239', '0', 'xEhr4+y6TiLZ9V2DSnXaWw==', 'asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf', '212733880761978880', 'wCJRsb4zwB38DwLrRn3xRg==', 'YwpAqODBwSDSRKI4tPIBSw==', 'eON6HGxtv9VAykplVKRe4w==', '00', '1636300800000', 'eON6HGxtv9VAykplVKRe4w==', 'sTRDQe6ErajGX09w7AdSGg=='); +INSERT INTO `dt_enterprise_customer_visit` VALUES ('212967720474513408', '1636419730187', '1636419730187', '0', 'xEhr4+y6TiLZ9V2DSnXaWw==', '客户已经签约,效果非常好客户已经签约,效果非常好客户已经签约,效果非常好客户已经签约,效果非常好客户已经签约,效果非常好', '212733880761978880', 'wCJRsb4zwB38DwLrRn3xRg==', 'YwpAqODBwSDSRKI4tPIBSw==', 'eON6HGxtv9VAykplVKRe4w==', '01', '1636387200000', 'eON6HGxtv9VAykplVKRe4w==', '3afU27DMRI9Y3BWUU7R5sg=='); + +-- ---------------------------- +-- Table structure for dt_enterprise_departmemt +-- ---------------------------- +DROP TABLE IF EXISTS `dt_enterprise_departmemt`; +CREATE TABLE `dt_enterprise_departmemt` ( + `id` bigint(20) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) DEFAULT NULL, + `eidPath` varchar(512) NOT NULL, + `enterpriseId` bigint(20) NOT NULL, + `idPath` varchar(512) NOT NULL, + `leader` varchar(50) NOT NULL, + `name` varchar(50) NOT NULL, + `orderNumber` int(11) NOT NULL, + `pId` bigint(20) NOT NULL, + `phone` varchar(128) NOT NULL, + `state` varchar(2) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_enterprise_departmemt +-- ---------------------------- +INSERT INTO `dt_enterprise_departmemt` VALUES ('0', null, null, '0', '0', '0', 'sJ85ZQbEgmSfyprMu1GJYw==', '楼兰网安', '1', '0', 'NMIxXZFyS5hLztyy1i+tXw==', '00'); +INSERT INTO `dt_enterprise_departmemt` VALUES ('1', null, null, '0', '0', '0-1', 'xEhr4+y6TiLZ9V2DSnXaWw==', '研发中心', '2', '0', 'NMIxXZFyS5hLztyy1i+tXw==', '10'); +INSERT INTO `dt_enterprise_departmemt` VALUES ('182526582664073216', '1629161997367', '1629161997367', '0', '0', '0-1-182526582664073216', 'oB/BnrOyMWJ/ALNh4ALJZg==', '研发一部', '1', '1', 'zPqwIIUQx2yLkTvGtK4S2A==', '10'); +INSERT INTO `dt_enterprise_departmemt` VALUES ('212664634963005440', '1636347468971', '1636347468971', '0-0-0', '0', '0-212664634963005440', 'W1PoWOApCyaWLTDpvVfzNA==', '研发中心', '1', '0', 'NMIxXZFyS5hLztyy1i+tXw==', '10'); +INSERT INTO `dt_enterprise_departmemt` VALUES ('212664723395710976', '1636347490061', '1636347490061', '0-0-0', '0', '0-212664634963005440-212664723395710976', 'sJ85ZQbEgmSfyprMu1GJYw==', '石家庄研发中心', '1', '212664634963005440', 'NMIxXZFyS5hLztyy1i+tXw==', '10'); +INSERT INTO `dt_enterprise_departmemt` VALUES ('212699647418961920', '1636355816597', '1636355816597', '0-0-0', '0', '0-212699647418961920', 'fmURV50Ig2qva3llvTkIMQ==', '商务部', '1', '0', 'sTRDQe6ErajGX09w7AdSGg==', '00'); + +-- ---------------------------- +-- Table structure for dt_e_rf +-- ---------------------------- +DROP TABLE IF EXISTS `dt_e_rf`; +CREATE TABLE `dt_e_rf` ( + `id` bigint(20) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) DEFAULT NULL, + `functionId` bigint(20) NOT NULL, + `roleId` bigint(20) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_e_rf +-- ---------------------------- +INSERT INTO `dt_e_rf` VALUES ('212637981381627904', '1636341114272', '1636341114272', '175091657644052480', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981415182336', '1636341114280', '1636341114280', '175091697422831616', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376640', '1636341114281', '1636341114281', '175091534318931968', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376641', '1636341114281', '1636341114281', '182644892042924032', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376642', '1636341114281', '1636341114281', '175091856026243072', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376643', '1636341114281', '1636341114281', '175091906076872704', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376644', '1636341114281', '1636341114281', '175091799575105536', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376645', '1636341114281', '1636341114281', '175091611116638208', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376646', '1636341114281', '1636341114281', '175091744612945920', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376647', '1636341114281', '1636341114281', '185903965588819968', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376648', '1636341114281', '1636341114281', '185903769383473152', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376649', '1636341114281', '1636341114281', '185904080969928704', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376650', '1636341114281', '1636341114281', '185904130534019072', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376651', '1636341114281', '1636341114281', '185903813075537920', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376652', '1636341114281', '1636341114281', '185904011399008256', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981419376653', '1636341114281', '1636341114281', '177833264822751232', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570944', '1636341114282', '1636341114282', '177833140939788288', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570945', '1636341114282', '1636341114282', '177832879315881984', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570946', '1636341114282', '1636341114282', '177833077622575104', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570947', '1636341114282', '1636341114282', '177833323664642048', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570948', '1636341114282', '1636341114282', '177832949117489152', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570949', '1636341114282', '1636341114282', '177833022119350272', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570950', '1636341114282', '1636341114282', '177833215560650752', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570951', '1636341114282', '1636341114282', '176811748039462912', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570952', '1636341114282', '1636341114282', '182605853738799104', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570953', '1636341114282', '1636341114282', '176812059256819712', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570954', '1636341114282', '1636341114282', '176811836153401344', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570955', '1636341114282', '1636341114282', '176812112847441920', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570956', '1636341114282', '1636341114282', '185261065372831744', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570957', '1636341114282', '1636341114282', '185260864918654976', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570958', '1636341114282', '1636341114282', '176812007754960896', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570959', '1636341114282', '1636341114282', '182605802778005504', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981423570960', '1636341114282', '1636341114282', '176811909645996032', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765248', '1636341114283', '1636341114283', '176812177162899456', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765249', '1636341114283', '1636341114283', '185261018623119360', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765250', '1636341114283', '1636341114283', '185260946111991808', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765251', '1636341114283', '1636341114283', '176811952482422784', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765252', '1636341114283', '1636341114283', '175115717128097792', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765253', '1636341114283', '1636341114283', '175115775256956928', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765254', '1636341114283', '1636341114283', '175092496769093632', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765255', '1636341114283', '1636341114283', '175092621490917376', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765256', '1636341114283', '1636341114283', '180469153277284352', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765257', '1636341114283', '1636341114283', '180469326585925632', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765258', '1636341114283', '1636341114283', '180469228455989248', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765259', '1636341114283', '1636341114283', '180469448912801792', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765260', '1636341114283', '1636341114283', '180469279366451200', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765261', '1636341114283', '1636341114283', '180469377920012288', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765262', '1636341114283', '1636341114283', '175093396199837696', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765263', '1636341114283', '1636341114283', '175093053105770496', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765264', '1636341114283', '1636341114283', '175093445004759040', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765265', '1636341114283', '1636341114283', '182648619684466688', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765266', '1636341114283', '1636341114283', '175093545433174016', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765267', '1636341114283', '1636341114283', '175093354411986944', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765268', '1636341114283', '1636341114283', '175093145502093312', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981427765269', '1636341114283', '1636341114283', '175092995782217728', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959552', '1636341114284', '1636341114284', '175088465879371776', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959553', '1636341114284', '1636341114284', '175088415262511104', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959554', '1636341114284', '1636341114284', '175088319317807104', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959555', '1636341114284', '1636341114284', '175088370018553856', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959556', '1636341114284', '1636341114284', '175090265881710592', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959557', '1636341114284', '1636341114284', '175090324773933056', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959558', '1636341114284', '1636341114284', '175088517129572352', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959559', '1636341114284', '1636341114284', '175088250858377216', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959560', '1636341114284', '1636341114284', '175094134699331584', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959561', '1636341114284', '1636341114284', '175094044622458880', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959562', '1636341114284', '1636341114284', '183769676176822272', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959563', '1636341114284', '1636341114284', '183769627342540800', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959564', '1636341114284', '1636341114284', '175093974128791552', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959565', '1636341114284', '1636341114284', '175094090143240192', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959566', '1636341114284', '1636341114284', '183771541878738944', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981431959567', '1636341114284', '1636341114284', '183771589848993792', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981436153856', '1636341114285', '1636341114285', '175094185311997952', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981436153857', '1636341114285', '1636341114285', '175094228597215232', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981436153858', '1636341114285', '1636341114285', '176013541403398144', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981436153859', '1636341114285', '1636341114285', '176013460369444864', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981436153860', '1636341114285', '1636341114285', '176013763164639232', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981436153861', '1636341114285', '1636341114285', '176013589675642880', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981436153862', '1636341114285', '1636341114285', '176013647473152000', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981436153863', '1636341114285', '1636341114285', '176013713931898880', '175089920950538240'); +INSERT INTO `dt_e_rf` VALUES ('212637981436153864', '1636341114285', '1636341114285', '176013413468737536', '175089920950538240'); + +-- ---------------------------- +-- Table structure for dt_e_role +-- ---------------------------- +DROP TABLE IF EXISTS `dt_e_role`; +CREATE TABLE `dt_e_role` ( + `id` bigint(20) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) DEFAULT NULL, + `description` varchar(128) DEFAULT NULL, + `level` int(11) NOT NULL, + `name` varchar(50) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_e_role +-- ---------------------------- +INSERT INTO `dt_e_role` VALUES ('175089920950538240', '1627388959048', '1627388959048', 'admin', '0', 'admin'); + +-- ---------------------------- +-- Table structure for dt_mis_account +-- ---------------------------- +DROP TABLE IF EXISTS `dt_mis_account`; +CREATE TABLE `dt_mis_account` ( + `id` bigint(11) NOT NULL AUTO_INCREMENT, + `avatar` varchar(128) DEFAULT NULL, + `name` varchar(128) NOT NULL, + `password` varchar(128) NOT NULL, + `realName` varchar(128) NOT NULL, + `roleId` bigint(11) NOT NULL, + `sex` varchar(1) NOT NULL, + `state` varchar(2) NOT NULL, + `telephone` varchar(128) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `UK_nquoh2epbqpvbt7mwpsbtd6pp` (`telephone`) +) ENGINE=InnoDB AUTO_INCREMENT=212640390149443585 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_mis_account +-- ---------------------------- +INSERT INTO `dt_mis_account` VALUES ('3', null, 'kelp', 'e10adc3949ba59abbe56e057f20f883e', 'xEhr4+y6TiLZ9V2DSnXaWw==', '1', '0', '00', 'NMIxXZFyS5hLztyy1i+tXw==', null, '1627117771183'); +INSERT INTO `dt_mis_account` VALUES ('212640390149443584', null, '王琳', '23daacbba9a70f9ab4cfa20767064a08', 'sBwviaEdrwNnIL26u7KzpQ==', '1', '0', '00', 'YwpAqODBwSDSRKI4tPIBSw==', '1636341688557', '1636341688557'); + +-- ---------------------------- +-- Table structure for dt_mis_function +-- ---------------------------- +DROP TABLE IF EXISTS `dt_mis_function`; +CREATE TABLE `dt_mis_function` ( + `id` bigint(11) NOT NULL AUTO_INCREMENT, + `description` varchar(256) DEFAULT NULL, + `isLog` varchar(255) DEFAULT NULL, + `moduleId` bigint(11) NOT NULL, + `name` varchar(50) NOT NULL, + `url` varchar(255) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `UK_rdmmhgarhg89d3cctipo29aj8` (`name`), + UNIQUE KEY `UK_esa0vt789e2fa367vmvaye0tx` (`url`) +) ENGINE=InnoDB AUTO_INCREMENT=212648787955552257 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_mis_function +-- ---------------------------- +INSERT INTO `dt_mis_function` VALUES ('1', '账号-toPage', '00', '2', '账号-toPage', '/plat/account/toPage', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('2', '账号-list', '00', '2', '账号-list', '/plat/account/list', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('3', '账号-add', '00', '2', '账号-add', '/plat/account/add', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('4', '账号-toEdit', '00', '2', '账号-toEdit', '/plat/account/toEdit', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('5', '账号-update', '00', '2', '账号-update', '/plat/account/update', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('6', '账号-delete', '00', '2', '账号-delete', '/plat/account/delete', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('7', '字典-toPage', '00', '1', '字典-toPage', '/plat/dict/toPage', null, '1636341322543'); +INSERT INTO `dt_mis_function` VALUES ('8', '字典-list', '00', '1', '字典-list', '/plat/dict/list', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('9', '字典-add', '00', '1', '字典-add', '/plat/dict/add', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('10', '字典-toEdit', '00', '1', '字典-toEdit', '/plat/dict/toEdit', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('11', '字典-update', '00', '1', '字典-update', '/plat/dict/update', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('12', '字典-delete', '00', '1', '字典-delete', '/plat/dict/delete', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('20', '功能-toPage', '00', '5', '功能-toPage', '/plat/function/toPage', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('21', '功能-list', '00', '5', '功能-list', '/plat/function/list', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('22', '功能-add', '00', '5', '功能-add', '/plat/function/add', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('23', '功能-update', '00', '5', '功能-update', '/plat/function/update', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('24', '功能-toEdit', '00', '5', '功能-toEdit', '/plat/function/toEdit', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('25', '功能-delete', '00', '5', '功能-delete', '/plat/function/delete', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('26', '菜单-toPage', '00', '6', '菜单-toPage', '/plat/menu/toPage', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('27', '菜单-list', '00', '6', '菜单-list', '/plat/menu/list', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('28', '菜单-toEdit', '00', '6', '菜单-toEdit', '/plat/menu/toEdit', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('29', '菜单-add', '00', '6', '菜单-add', '/plat/menu/add', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('30', '菜单-update', '00', '6', '菜单-update', '/plat/menu/update', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('31', '菜单-delete', '00', '6', '菜单-delete', '/plat/menu/delete', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('32', '菜单-dsubs', '00', '6', '菜单-dsubs', '/plat/menu/dsubs', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('33', '模块-toPage', '00', '7', '模块-toPage', '/plat/module/toPage', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('34', '模块-list', '00', '7', '模块-list', '/plat/module/list', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('35', '模块-add', '00', '7', '模块-add', '/plat/module/add', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('36', '模块-update', '00', '7', '模块-update', '/plat/module/update', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('37', '模块-toEdit', '00', '7', '模块-toEdit', '/plat/module/toEdit', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('38', '模块-delete', '00', '7', '模块-delete', '/plat/module/delete', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('39', '角色-toPage', '00', '8', '角色-toPage', '/plat/role/toPage', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('40', '角色-list', '00', '8', '角色-list', '/plat/role/list', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('41', '角色-add', '00', '8', '角色-add', '/plat/role/add', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('42', '角色-update', '00', '8', '角色-update', '/plat/role/update', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('43', '角色-toEdit', '00', '8', '角色-toEdit', '/plat/role/toEdit', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('44', '角色-delete', '00', '8', '角色-delete', '/plat/role/delete', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('45', '角色-toGrant', '00', '8', '角色-toGrant', '/plat/role/toGrant', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('46', '角色-grant', '00', '8', '角色-grant', '/plat/role/grant', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('54', '账号-toSelfInfo', '00', '2', '账号-toSelfInfo', '/plat/account/toSelfInfo', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('55', '账号-toPassword', '00', '2', '账号-toPassword', '/plat/account/toPassword', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('56', '登录-main', '00', '10', '登录-main', '/plat/main', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('57', '登录-logout', '00', '10', '登录-logout', '/plat/logout', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('85', '账号-password', '00', '2', '账号-password', '/plat/account/password', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('108', '平台文件-upload4layui', '00', '20', '平台文件-upload4layui', '/plat/file/upload4layui', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('109', '平台文件-upload', '00', '20', '平台文件-upload', '/plat/file/upload', null, '0'); +INSERT INTO `dt_mis_function` VALUES ('175088250858377216', 'erole-toPage', '00', '175083943517884416', 'erole-toPage', '/plat/erole/toPage', '1627388560864', '1627388560864'); +INSERT INTO `dt_mis_function` VALUES ('175088319317807104', 'erole-list', '00', '175083943517884416', 'erole-list', '/plat/erole/list', '1627388577194', '1627388577194'); +INSERT INTO `dt_mis_function` VALUES ('175088370018553856', 'erole-add', '00', '175083943517884416', 'erole-add', '/plat/erole/add', '1627388589281', '1627388589281'); +INSERT INTO `dt_mis_function` VALUES ('175088415262511104', 'erole-update', '00', '175083943517884416', 'erole-update', '/plat/erole/update', '1627388600070', '1627388600070'); +INSERT INTO `dt_mis_function` VALUES ('175088465879371776', 'erole-toEdit', '00', '175083943517884416', 'erole-toEdit', '/plat/erole/toEdit', '1627388612136', '1627388612136'); +INSERT INTO `dt_mis_function` VALUES ('175088517129572352', 'erole-delete', '00', '175083943517884416', 'erole-delete', '/plat/erole/delete', '1627388624356', '1627388624356'); +INSERT INTO `dt_mis_function` VALUES ('175090265881710592', 'erole-toGrant', '00', '175083943517884416', 'erole-toGrant', '/plat/erole/toGrant', '1627389041282', '1627389041282'); +INSERT INTO `dt_mis_function` VALUES ('175090324773933056', 'erole-grant', '00', '175083943517884416', 'erole-grant', '/plat/erole/grant', '1627389055331', '1627389055331'); +INSERT INTO `dt_mis_function` VALUES ('175091534318931968', 'enterprise-toPage', '00', '175091183687700480', 'enterprise-toPage', '/crm/enterprise/toPage', '1627389343696', '1627389343696'); +INSERT INTO `dt_mis_function` VALUES ('175091611116638208', 'enterprise-list', '00', '175091183687700480', 'enterprise-list', '/crm/enterprise/list', '1627389362020', '1627389362020'); +INSERT INTO `dt_mis_function` VALUES ('175091657644052480', 'enterprise-toEdit', '00', '175091183687700480', 'enterprise-toEdit', '/crm/enterprise/toEdit', '1627389373113', '1627389373113'); +INSERT INTO `dt_mis_function` VALUES ('175091697422831616', 'enterprise-add', '00', '175091183687700480', 'enterprise-add', '/crm/enterprise/add', '1627389382596', '1627389382596'); +INSERT INTO `dt_mis_function` VALUES ('175091744612945920', 'enterprise-update', '00', '175091183687700480', 'enterprise-update', '/crm/enterprise/update', '1627389393849', '1627389393849'); +INSERT INTO `dt_mis_function` VALUES ('175091799575105536', 'enterprise-delete', '00', '175091183687700480', 'enterprise-delete', '/crm/enterprise/delete', '1627389406953', '1627389406953'); +INSERT INTO `dt_mis_function` VALUES ('175091856026243072', 'enterprise-dsubs', '00', '175091183687700480', 'enterprise-dsubs', '/crm/enterprise/dsubs', '1627389420411', '1627389420411'); +INSERT INTO `dt_mis_function` VALUES ('175091906076872704', 'enterprise-dsubs4type', '00', '175091183687700480', 'enterprise-dsubs4type', '/crm/enterprise/dsubs4type', '1627389432344', '1627389432344'); +INSERT INTO `dt_mis_function` VALUES ('175092496769093632', 'e-main', '00', '175092315050872832', 'e-main', '/crm/main', '1627389573177', '1627389590008'); +INSERT INTO `dt_mis_function` VALUES ('175092621490917376', 'e-logout', '00', '175092315050872832', 'e-logout', '/crm/logout', '1627389602912', '1627389602912'); +INSERT INTO `dt_mis_function` VALUES ('175092995782217728', 'edepartment-toPage', '00', '175092750767755264', 'edepartment-toPage', '/crm/department/toPage', '1627389692150', '1627390051868'); +INSERT INTO `dt_mis_function` VALUES ('175093053105770496', 'edepartment-list', '00', '175092750767755264', 'edepartment-list', '/crm/department/list', '1627389705817', '1627390039626'); +INSERT INTO `dt_mis_function` VALUES ('175093145502093312', 'edepartment-toEdit', '00', '175092750767755264', 'edepartment-toEdit', '/crm/department/toEdit', '1627389727846', '1627390045498'); +INSERT INTO `dt_mis_function` VALUES ('175093354411986944', 'edepartment-add', '00', '175092750767755264', 'edepartment-add', '/crm/department/add', '1627389777654', '1627390013867'); +INSERT INTO `dt_mis_function` VALUES ('175093396199837696', 'edepartment-update', '00', '175092750767755264', 'edepartment-update', '/crm/department/update', '1627389787617', '1627390020800'); +INSERT INTO `dt_mis_function` VALUES ('175093445004759040', 'edepartment-delete', '00', '175092750767755264', 'edepartment-delete', '/crm/department/delete', '1627389799252', '1627390026899'); +INSERT INTO `dt_mis_function` VALUES ('175093545433174016', 'edepartment-dsubs', '00', '175092750767755264', 'edepartment-dsubs', '/crm/department/dsubs', '1627389823198', '1627390033749'); +INSERT INTO `dt_mis_function` VALUES ('175093974128791552', 'eaccount-toPage', '00', '175093693546631168', 'eaccount-toPage', '/crm/account/toPage', '1627389925407', '1627389925407'); +INSERT INTO `dt_mis_function` VALUES ('175094044622458880', 'eaccount-list', '00', '175093693546631168', 'eaccount-list', '/crm/account/list', '1627389942214', '1627389942214'); +INSERT INTO `dt_mis_function` VALUES ('175094090143240192', 'eaccount-toEdit', '00', '175093693546631168', 'eaccount-toEdit', '/crm/account/toEdit', '1627389953066', '1627389953066'); +INSERT INTO `dt_mis_function` VALUES ('175094134699331584', 'eaccount-add', '00', '175093693546631168', 'eaccount-add', '/crm/account/add', '1627389963688', '1627389963688'); +INSERT INTO `dt_mis_function` VALUES ('175094185311997952', 'eaccount-update', '00', '175093693546631168', 'eaccount-update', '/crm/account/update', '1627389975756', '1627389975756'); +INSERT INTO `dt_mis_function` VALUES ('175094228597215232', 'eaccount-delete', '00', '175093693546631168', 'eaccount-delete', '/crm/account/delete', '1627389986075', '1627389986075'); +INSERT INTO `dt_mis_function` VALUES ('175115717128097792', 'E文件-upload4layui', '00', '175115543450357760', 'E文件-upload4layui', '/crm/file/upload4layui', '1627395109334', '1627395109334'); +INSERT INTO `dt_mis_function` VALUES ('175115775256956928', 'E文件-upload', '00', '175115543450357760', 'E文件-upload', '/crm/file/upload', '1627395123201', '1627395123201'); +INSERT INTO `dt_mis_function` VALUES ('176013413468737536', '区划管理-toPage', '00', '176013234468425728', '区划管理-toPage', '/crm/district/toPage', '1627609136820', '1627609136820'); +INSERT INTO `dt_mis_function` VALUES ('176013460369444864', '区划管理-list', '00', '176013234468425728', '区划管理-list', '/crm/district/list', '1627609148008', '1627609148008'); +INSERT INTO `dt_mis_function` VALUES ('176013541403398144', '区划管理-toEdit', '00', '176013234468425728', '区划管理-toEdit', '/crm/district/toEdit', '1627609167323', '1627609167323'); +INSERT INTO `dt_mis_function` VALUES ('176013589675642880', '区划管理-add', '00', '176013234468425728', '区划管理-add', '/crm/district/add', '1627609178837', '1627609178837'); +INSERT INTO `dt_mis_function` VALUES ('176013647473152000', '区划管理-update', '00', '176013234468425728', '区划管理-update', '/crm/district/update', '1627609192619', '1627609192619'); +INSERT INTO `dt_mis_function` VALUES ('176013713931898880', '区划管理-delete', '00', '176013234468425728', '区划管理-delete', '/crm/district/delete', '1627609208462', '1627609208462'); +INSERT INTO `dt_mis_function` VALUES ('176013763164639232', '区划管理-dsubs', '00', '176013234468425728', '区划管理-dsubs', '/crm/district/dsubs', '1627609220202', '1627609220202'); +INSERT INTO `dt_mis_function` VALUES ('176811748039462912', '客户管理-toPage4All', '00', '176811563724967936', '客户管理-toPage4All', '/crm/customer/toPage4All', '1627799474613', '1629181414616'); +INSERT INTO `dt_mis_function` VALUES ('176811836153401344', '客户管理-list4all', '00', '176811563724967936', '客户管理-list4all', '/crm/customer/list4all', '1627799495629', '1629181381804'); +INSERT INTO `dt_mis_function` VALUES ('176812007754960896', '客户管理-toEdit', '00', '176811563724967936', '客户管理-toEdit', '/crm/customer/toEdit', '1627799536542', '1627799536542'); +INSERT INTO `dt_mis_function` VALUES ('176812059256819712', '客户管理-add', '00', '176811563724967936', '客户管理-add', '/crm/customer/add', '1627799548819', '1627799548819'); +INSERT INTO `dt_mis_function` VALUES ('176812112847441920', '客户管理-update', '00', '176811563724967936', '客户管理-update', '/crm/customer/update', '1627799561598', '1627799561598'); +INSERT INTO `dt_mis_function` VALUES ('176812177162899456', '客户管理-delete', '00', '176811563724967936', '客户管理-delete', '/crm/customer/delete', '1627799576933', '1627799576933'); +INSERT INTO `dt_mis_function` VALUES ('177832879315881984', '客户拜访-toPage', '00', '177832494178111488', '客户拜访-toPage', '/crm/customer/visit/toPage', '1628042931280', '1628042931280'); +INSERT INTO `dt_mis_function` VALUES ('177832949117489152', '客户拜访-list', '00', '177832494178111488', '客户拜访-list', '/crm/customer/visit/list', '1628042947931', '1628042947931'); +INSERT INTO `dt_mis_function` VALUES ('177833140939788288', '客户拜访-toEdit', '00', '177832494178111488', '客户拜访-toEdit', '/crm/customer/visit/toEdit', '1628042993665', '1628042993665'); +INSERT INTO `dt_mis_function` VALUES ('177833215560650752', '客户拜访-add', '00', '177832494178111488', '客户拜访-add', '/crm/customer/visit/add', '1628043011456', '1628043011456'); +INSERT INTO `dt_mis_function` VALUES ('177833264822751232', '客户拜访-update', '00', '177832494178111488', '客户拜访-update', '/crm/customer/visit/update', '1628043023201', '1628043023201'); +INSERT INTO `dt_mis_function` VALUES ('177833323664642048', '客户拜访-delete', '00', '177832494178111488', '客户拜访-delete', '/crm/customer/visit/delete', '1628043037230', '1628043037230'); +INSERT INTO `dt_mis_function` VALUES ('180469153277284352', 'meaccount-toPage', '00', '180466861522161664', 'meaccount-toPage', '/crm/maccount/toPage', '1628671467877', '1628671467877'); +INSERT INTO `dt_mis_function` VALUES ('180469228455989248', 'meaccount-list', '00', '180466861522161664', 'meaccount-list', '/crm/maccount/list', '1628671485905', '1628671485905'); +INSERT INTO `dt_mis_function` VALUES ('180469279366451200', 'meaccount-toEdit', '00', '180466861522161664', 'meaccount-toEdit', '/crm/maccount/toEdit', '1628671498044', '1628671498044'); +INSERT INTO `dt_mis_function` VALUES ('180469326585925632', 'meaccount-add', '00', '180466861522161664', 'meaccount-add', '/crm/maccount/add', '1628671509301', '1628671509301'); +INSERT INTO `dt_mis_function` VALUES ('180469377920012288', 'meaccount-update', '00', '180466861522161664', 'meaccount-update', '/crm/maccount/update', '1628671521540', '1628671521540'); +INSERT INTO `dt_mis_function` VALUES ('180469448912801792', 'meaccount-delete', '00', '180466861522161664', 'meaccount-delete', '/crm/maccount/delete', '1628671538466', '1628671538466'); +INSERT INTO `dt_mis_function` VALUES ('182644892042924032', 'enterprise-dtop', '00', '175091183687700480', 'enterprise-dtop', '/crm/enterprise/dtop', '1629190204520', '1629190204520'); +INSERT INTO `dt_mis_function` VALUES ('182648619684466688', 'edepartment-dtop', '00', '175092750767755264', 'edepartment-dtop', '/crm/department/dtop', '1629191093255', '1629191093255'); +INSERT INTO `dt_mis_function` VALUES ('183769627342540800', 'eaccount-toPassword', '00', '175093693546631168', 'eaccount-toPassword', '/crm/account/toPassword', '1629458362313', '1629458362313'); +INSERT INTO `dt_mis_function` VALUES ('183769676176822272', 'eaccount-password', '00', '175093693546631168', 'eaccount-password', '/crm/account/password', '1629458373962', '1629458373962'); +INSERT INTO `dt_mis_function` VALUES ('183771541878738944', 'eaccount-toSelfInfo', '00', '175093693546631168', 'eaccount-toSelfInfo', '/crm/account/toSelfInfo', '1629458818772', '1629458818772'); +INSERT INTO `dt_mis_function` VALUES ('183771589848993792', 'eaccount-selfInfo', '00', '175093693546631168', 'eaccount-selfInfo', '/crm/account/selfInfo', '1629458830217', '1629458830217'); +INSERT INTO `dt_mis_function` VALUES ('185260864918654976', '客户管理-toPage4NoVisit', '00', '176811563724967936', '客户管理-toPage4NoVisit', '/crm/customer/toPage4NoVisit', '1629813901045', '1629813901045'); +INSERT INTO `dt_mis_function` VALUES ('185260946111991808', '客户管理-list4Novisit', '00', '176811563724967936', '客户管理-list4Novisit', '/crm/customer/list4Novisit', '1629813920420', '1629813920420'); +INSERT INTO `dt_mis_function` VALUES ('185903769383473152', '客户合同-toPage', '00', '185903356676542464', '客户合同-toPage', '/crm/contract/toPage', '1629967181418', '1629967181418'); +INSERT INTO `dt_mis_function` VALUES ('185903813075537920', '客户合同-list', '00', '185903356676542464', '客户合同-list', '/crm/contract/list', '1629967191848', '1629967191848'); +INSERT INTO `dt_mis_function` VALUES ('185903965588819968', '客户合同-toEdit', '00', '185903356676542464', '客户合同-toEdit', '/crm/contract/toEdit', '1629967228210', '1629967228210'); +INSERT INTO `dt_mis_function` VALUES ('185904011399008256', '客户合同-add', '00', '185903356676542464', '客户合同-add', '/crm/contract/add', '1629967239132', '1629967239132'); +INSERT INTO `dt_mis_function` VALUES ('185904080969928704', '客户合同-update', '00', '185903356676542464', '客户合同-update', '/crm/contract/update', '1629967255718', '1629967255718'); +INSERT INTO `dt_mis_function` VALUES ('185904130534019072', '客户合同-delete', '00', '185903356676542464', '客户合同-delete', '/crm/contract/delete', '1629967267536', '1629967267536'); +INSERT INTO `dt_mis_function` VALUES ('212648787955552256', '账号-selfInfo', '00', '2', '账号-selfInfo', '/plat/account/selfInfo', '1636343690752', '1636343690752'); + +-- ---------------------------- +-- Table structure for dt_mis_menu +-- ---------------------------- +DROP TABLE IF EXISTS `dt_mis_menu`; +CREATE TABLE `dt_mis_menu` ( + `id` bigint(11) NOT NULL AUTO_INCREMENT, + `css` varchar(128) DEFAULT NULL, + `description` varchar(128) DEFAULT NULL, + `functionId` bigint(11) DEFAULT NULL, + `functionUrl` varchar(255) DEFAULT NULL, + `name` varchar(50) NOT NULL, + `orderNumber` int(11) NOT NULL, + `pId` bigint(11) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=185904509338390529 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_mis_menu +-- ---------------------------- +INSERT INTO `dt_mis_menu` VALUES ('1', null, null, null, null, '平台菜单', '1', '0', null, '0'); +INSERT INTO `dt_mis_menu` VALUES ('2', null, null, null, null, '公司菜单', '2', '0', '0', '0'); +INSERT INTO `dt_mis_menu` VALUES ('4', 'layui-icon-set', null, null, null, '权限设置', '9', '1', null, '0'); +INSERT INTO `dt_mis_menu` VALUES ('5', 'layui-icon-set', null, null, null, '基础设置', '10', '1', null, '0'); +INSERT INTO `dt_mis_menu` VALUES ('6', null, '菜单管理', '26', '/plat/menu/toPage', '菜单管理', '4', '4', null, '0'); +INSERT INTO `dt_mis_menu` VALUES ('7', null, '模块管理', '33', '/plat/module/toPage', '模块管理', '1', '4', null, '0'); +INSERT INTO `dt_mis_menu` VALUES ('8', null, '功能管理', '20', '/plat/function/toPage', '功能管理', '2', '4', null, '0'); +INSERT INTO `dt_mis_menu` VALUES ('9', null, '角色管理', '39', '/plat/role/toPage', '角色管理', '3', '4', null, '0'); +INSERT INTO `dt_mis_menu` VALUES ('10', null, '字典管理', '7', '/plat/dict/toPage', '字典管理', '1', '5', null, '0'); +INSERT INTO `dt_mis_menu` VALUES ('14', 'layui-icon-user', '账号设置', null, null, '账号设置', '6', '1', null, '0'); +INSERT INTO `dt_mis_menu` VALUES ('15', null, '平台账号管理', '1', '/plat/account/toPage', '账号管理', '1', '14', null, '0'); +INSERT INTO `dt_mis_menu` VALUES ('175088778132721664', null, 'E-Role管理', '175088250858377216', '/plat/erole/toPage', '角色管理-E', '5', '4', '1627388686580', '1627388851133'); +INSERT INTO `dt_mis_menu` VALUES ('175103842730512384', 'layui-icon-set', '基础设置', null, null, '基础设置', '9', '2', '1627392278261', '1627609269656'); +INSERT INTO `dt_mis_menu` VALUES ('175104035978874880', null, '公司管理', '175091534318931968', '/crm/enterprise/toPage', '公司管理', '1', '175103842730512384', '1627392324341', '1627392324341'); +INSERT INTO `dt_mis_menu` VALUES ('175104135077695488', null, '组织机构管理', '175092995782217728', '/crm/department/toPage', '组织机构管理', '2', '175103842730512384', '1627392347968', '1627392347968'); +INSERT INTO `dt_mis_menu` VALUES ('175104236164616192', null, '部门账号管理', '175093974128791552', '/crm/account/toPage', '部门账号管理', '3', '175103842730512384', '1627392372069', '1636356525852'); +INSERT INTO `dt_mis_menu` VALUES ('176014104027336704', null, '行政机构管理', '176013413468737536', '/crm/district/toPage', '行政机构管理', '5', '175103842730512384', '1627609301472', '1628671571588'); +INSERT INTO `dt_mis_menu` VALUES ('176812505551736832', 'layui-icon-user', '客户管理', null, null, '客户管理', '8', '2', '1627799655223', '1629166344589'); +INSERT INTO `dt_mis_menu` VALUES ('176812639215816704', null, '客户档案', '176811748039462912', '/crm/customer/toPage4All', '客户档案', '1', '176812505551736832', '1627799687096', '1636361981265'); +INSERT INTO `dt_mis_menu` VALUES ('177833700665462784', null, '拜访记录', '177832879315881984', '/crm/customer/visit/toPage', '拜访记录', '3', '176812505551736832', '1628043127111', '1636362085838'); +INSERT INTO `dt_mis_menu` VALUES ('180469776219508736', null, '公司账号管理', '180469153277284352', '/crm/maccount/toPage', '公司账号管理', '4', '175103842730512384', '1628671616505', '1636356535894'); +INSERT INTO `dt_mis_menu` VALUES ('185261387050782720', null, '未拜访客户', '185260864918654976', '/crm/customer/toPage4NoVisit', '未拜访客户', '2', '176812505551736832', '1629814025546', '1636362032141'); +INSERT INTO `dt_mis_menu` VALUES ('185904509338390528', null, '合同管理', '185903769383473152', '/crm/contract/toPage', '合同管理', '4', '176812505551736832', '1629967357852', '1636362121617'); + +-- ---------------------------- +-- Table structure for dt_mis_module +-- ---------------------------- +DROP TABLE IF EXISTS `dt_mis_module`; +CREATE TABLE `dt_mis_module` ( + `id` bigint(11) NOT NULL AUTO_INCREMENT, + `description` varchar(128) DEFAULT NULL, + `name` varchar(50) NOT NULL, + `state` varchar(2) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `UK_h3lh1yfwgw12u7f9u8vhphu7n` (`name`) +) ENGINE=InnoDB AUTO_INCREMENT=185903356676542465 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_mis_module +-- ---------------------------- +INSERT INTO `dt_mis_module` VALUES ('1', '字典设置', '字典设置', '00', null, '0'); +INSERT INTO `dt_mis_module` VALUES ('2', '账号管理', '账号管理', '00', null, '0'); +INSERT INTO `dt_mis_module` VALUES ('5', '功能设置', '功能设置', '00', null, '0'); +INSERT INTO `dt_mis_module` VALUES ('6', '菜单设置', '菜单设置', '00', null, '0'); +INSERT INTO `dt_mis_module` VALUES ('7', '模块设置', '模块设置', '00', null, '0'); +INSERT INTO `dt_mis_module` VALUES ('8', '角色设置', '角色设置', '00', null, '0'); +INSERT INTO `dt_mis_module` VALUES ('10', '平台登录', '平台登录', '00', null, '0'); +INSERT INTO `dt_mis_module` VALUES ('12', '会员角色', '会员角色', '10', null, '0'); +INSERT INTO `dt_mis_module` VALUES ('20', '平台文件', '平台文件', '00', null, '0'); +INSERT INTO `dt_mis_module` VALUES ('175083943517884416', 'Enterprise Role', 'E-角色管理', '00', '1627387533919', '1627389870499'); +INSERT INTO `dt_mis_module` VALUES ('175091183687700480', 'Enterprise', 'E-Enterprise', '00', '1627389260107', '1629164279874'); +INSERT INTO `dt_mis_module` VALUES ('175092315050872832', 'E-登录', 'E-登录', '00', '1627389529847', '1636341280601'); +INSERT INTO `dt_mis_module` VALUES ('175092750767755264', 'E-组织机构管理', 'E-组织机构管理', '00', '1627389633735', '1627389633735'); +INSERT INTO `dt_mis_module` VALUES ('175093693546631168', 'E-账号管理', 'E-账号管理', '00', '1627389858512', '1627389858512'); +INSERT INTO `dt_mis_module` VALUES ('175115543450357760', 'E-文件', 'E-文件', '00', '1627395067928', '1627395067928'); +INSERT INTO `dt_mis_module` VALUES ('176013234468425728', '区划管理', '区划管理', '00', '1627609094145', '1627609094145'); +INSERT INTO `dt_mis_module` VALUES ('176811563724967936', '客户管理', 'E-客户管理', '00', '1627799430673', '1629164305981'); +INSERT INTO `dt_mis_module` VALUES ('177832494178111488', '客户拜访', 'E-客户拜访', '00', '1628042839461', '1629164292070'); +INSERT INTO `dt_mis_module` VALUES ('180466861522161664', 'E-管理账号', 'E-管理账号', '00', '1628670921580', '1628670921580'); +INSERT INTO `dt_mis_module` VALUES ('185903356676542464', 'E-客户合同', 'E-客户合同', '00', '1629967083019', '1629967111415'); + +-- ---------------------------- +-- Table structure for dt_mis_rf +-- ---------------------------- +DROP TABLE IF EXISTS `dt_mis_rf`; +CREATE TABLE `dt_mis_rf` ( + `id` bigint(11) NOT NULL AUTO_INCREMENT, + `functionId` bigint(11) NOT NULL, + `roleId` bigint(11) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=212648932499656710 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_mis_rf +-- ---------------------------- +INSERT INTO `dt_mis_rf` VALUES ('212648833677660160', '175088465879371776', '1', '1636343701661', '1636343701661'); +INSERT INTO `dt_mis_rf` VALUES ('212648833677660161', '175088415262511104', '1', '1636343701661', '1636343701661'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854464', '175088319317807104', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854465', '175088370018553856', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854466', '175090265881710592', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854467', '175090324773933056', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854468', '175088517129572352', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854469', '175088250858377216', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854470', '20', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854471', '21', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854472', '22', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854473', '23', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854474', '24', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854475', '25', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833681854476', '7', '1', '1636343701662', '1636343701662'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048768', '8', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048769', '9', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048770', '10', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048771', '11', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048772', '12', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048773', '108', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048774', '109', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048775', '56', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048776', '57', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048777', '33', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048778', '34', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048779', '35', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048780', '36', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048781', '37', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048782', '38', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833686048783', '26', '1', '1636343701663', '1636343701663'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243072', '27', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243073', '28', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243074', '29', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243075', '30', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243076', '31', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243077', '32', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243078', '39', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243079', '40', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243080', '41', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243081', '42', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243082', '43', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243083', '44', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243084', '45', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243085', '46', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243086', '212648787955552256', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243087', '1', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243088', '2', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243089', '3', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833690243090', '4', '1', '1636343701664', '1636343701664'); +INSERT INTO `dt_mis_rf` VALUES ('212648833694437376', '5', '1', '1636343701665', '1636343701665'); +INSERT INTO `dt_mis_rf` VALUES ('212648833694437377', '6', '1', '1636343701665', '1636343701665'); +INSERT INTO `dt_mis_rf` VALUES ('212648833694437378', '54', '1', '1636343701665', '1636343701665'); +INSERT INTO `dt_mis_rf` VALUES ('212648833694437379', '55', '1', '1636343701665', '1636343701665'); +INSERT INTO `dt_mis_rf` VALUES ('212648833694437380', '85', '1', '1636343701665', '1636343701665'); +INSERT INTO `dt_mis_rf` VALUES ('212648932499656704', '56', '2', '1636343725222', '1636343725222'); +INSERT INTO `dt_mis_rf` VALUES ('212648932499656705', '57', '2', '1636343725222', '1636343725222'); +INSERT INTO `dt_mis_rf` VALUES ('212648932499656706', '212648787955552256', '2', '1636343725222', '1636343725222'); +INSERT INTO `dt_mis_rf` VALUES ('212648932499656707', '54', '2', '1636343725222', '1636343725222'); +INSERT INTO `dt_mis_rf` VALUES ('212648932499656708', '55', '2', '1636343725222', '1636343725222'); +INSERT INTO `dt_mis_rf` VALUES ('212648932499656709', '85', '2', '1636343725222', '1636343725222'); + +-- ---------------------------- +-- Table structure for dt_mis_role +-- ---------------------------- +DROP TABLE IF EXISTS `dt_mis_role`; +CREATE TABLE `dt_mis_role` ( + `id` bigint(11) NOT NULL AUTO_INCREMENT, + `description` varchar(128) DEFAULT NULL, + `name` varchar(50) NOT NULL, + `createTime` bigint(20) DEFAULT NULL, + `updateTime` bigint(20) NOT NULL, + `level_` int(11) NOT NULL, + `level` int(11) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `UK_guqeoa224sm9k30pbxhu1vnmg` (`name`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Records of dt_mis_role +-- ---------------------------- +INSERT INTO `dt_mis_role` VALUES ('1', 'admin', 'admin', null, '0', '0', '0'); +INSERT INTO `dt_mis_role` VALUES ('2', 'account-普通账号', 'account', null, '1627388646692', '0', '0'); diff --git a/ksafepack-admin/src/main/resources/data/protocol.txt b/ksafepack-admin/src/main/resources/data/protocol.txt new file mode 100644 index 0000000..89b8055 --- /dev/null +++ b/ksafepack-admin/src/main/resources/data/protocol.txt @@ -0,0 +1,72 @@ +一、欢迎使用 +感谢您注册krefactory平台。 +用户确认本服务协议后,本服务协议即在用户和krefactory之间产生法律效力,请用户务必在注册之前认真阅读本服务协议内容。 +无论用户事实上是否在注册之前认真阅读过本服务协议内容,只要用户点击“我已仔细阅读并接受krefactory平台用户服务条款”按钮并按照krefactory平台注册流程注册成功,其行为将被视为同意并签署本服务协议。 +krefactory平台有权根据业务需要修订“条款”,并以网站公告的形式进行更新,不再单独通知予您。经修订的“条款”一经在krefactory平台公布,即产生效力。如您不同意相关修订,请您立即停止使用krefactory平台。如您继续使用,则将视为您已接受经修订的“条款”,当您与krefactory平台发生争议时,应以最新的“条款”为准。 +注册用户须遵守《中华人民共和国保守国家秘密法》、《中华人民共和国计算机信息系统安全保护条例》、《计算机软件保护条例》等有关计算机及互联网规定的法律和法规、实施办法。在任何情况下,krefactory平台合理地认为用户的行为可能违反上述法律、法规,krefactory平台可以在任何时候不经事先通知终止向该用户提供服务,不需对用户或第三方负责。 +二、定义 +1、krefacotry平台:指krefactory网站平台,网址为www.krefactory.com。 +2、注册用户:krefactory平台注册用户。 +三、服务内容 +krefactory平台只提供一项服务,即注册用户可利用平台发布软件代码重构/优化问题寻求帮助或解答其他用户问题。 +四、用户的权利和义务 +4.1 用户权利 +4.1.1 在遵守本服务条款及各语言版块行为准则的前提下,用户有在krefactory平台发布问题或解答他人问题的权力。 +4.1.2用户同意授予krefactory平台对用户发布的问题或回复有修改、编辑的权利。 +4.2用户义务 +4.2.1用户应遵守下列规则: +(1)遵守中华人民共和国关于网络的相关法律、法规。 +(2)遵守所有使用网络服务的网络协议、规定、程序和惯例以及产品的使用说明。 +(3)不非法使用网络服务,不干扰或混乱网络服务。 +4.2.2用户在发布或回答问题时,应保证: +(1)不发布与代码重构、优化无关的帖子。 +(2)不得发布煽动抗拒、破坏宪法和法律、行政法规实施的言论,煽动颠覆国家政权,推翻社会主义制度的言论,煽动分裂国家、破坏国家统一的言论,煽动民族仇恨、民族歧视、破坏民族团结的言论或内容。 +(3)不得发布任何非法的、淫秽的、骚扰性的、中伤他人的、辱骂性的、恐吓性的、伤害性的、庸俗的、侵权等信息。 +(4)不得发布任何教唆他人可能构成犯罪行为的信息。 +(5)不得发布任何不符合国家法律及国际惯例的信息。 +(6)在讨论的时候遵守krefactory平台行为准则。 +4.2.3用户不得利用krefactory平台或其提供的服务实施下列行为: +(1)损害他人名誉或隐私权; +(2)使用自己名义、匿名或冒用他人或以krefactory平台经营者的名义散播诽谤、不实、威胁、不雅、不法、攻击性或侵害他人权利的消息或文字; +(3)传播或散布计算机病毒; +(4)发布与代码重构、优化无关的垃圾广告或信息,售卖商品; +(5)其他krefactory平台经营者认为不适当的行为。 +4.2.4用户知悉并同意 +(1)用户须依据本服务条款享有对krefactory平台账户及krefactory平台相关功能、服务的使用权,用户仅能为学习、技术交流等非营利性目的使用krefactory平台账户及krefactory平台提供的功能、服务; +(2)用户不得出于任何非法或未经krefactory平台授权的目的使用krefactory平台账户或krefactory平台提供的功能、服务,包括但不限于以营利为目的恶意注册帐号; +(3)用户不得利用krefactory平台账户或krefactory平台提供的功能、服务从事营利活动,不得以营利或非营利目的任何方式向任何第三方提供krefactory平台账户或krefactory平台提供的功能、服务或其任何部分; +(4)用户不得利用krefactory平台账户或krefactory平台提供的功能、服务从事任何违法或侵犯第三方知识产权或其他合法权益的活动。 +4.2.5用户须妥善保管krefactory平台账号及密码,任何于用户账号下发生的行为将被视为用户行为或经用户授权的行为,用户须就此承担责任。 +4.2.6用户应当对自己的言行负责,不得通过任何方式发布、散播诋毁或攻击krefactory平台或可能对krefactory平台造成任何负面、不良影响言论的信息。 +4.2.7用户违反本服务条款项下任何用户义务的,krefactory平台经营者有权不经通知用户而采取下列一项或多项措施,且无须向用户或任何第三方承担任何法律责任;因用户行为引发的风险、责任及损失由用户自行承担,造成krefactory平台或第三方损失的,用户还须赔偿全部损失: +(1)删除不符合本服务条款规定的相关信息、内容; +(2)断开相关信息、内容在krefactory平台上的链接; +(3)暂停用户对账户的使用或限制部分功能或服务; +(4)永久封禁账户并禁止任何功能或服务; +(5)将用户信息列入krefactory平台及krefactory平台经营者黑名单,不予接受以相同用户信息注册krefactory平台用户或krefactory平台经营者运营的任何其他平台的申请,不再进行任何形式的合作; +(6)向有关第三方平台投诉或举报用户的违法违规行为; +(7)向征信部门报送用户不诚信信息; +(8)向有关部门就用户的违法行为进行举报或报案,协助有关部门追究违法犯罪活动的法律责任; +(9)法律法规及本服务条款规定的其他措施。 +4.2.8用户停止对krefactory平台的使用的,用户仍须就此前已发生的使用行为承担责任。 +五、知识产权保护 +5.1 krefactory的外观设计、应用程序、源代码、商标、标示图案(LOGO)、界面设计、应用程序编程接口及相关著作权,以及与krefactory平台经营者提供的服务有关的任何著作权及其他知识产权(包括但不限于著作权、专利权、商标权、商业秘密、专有技术等,下同)均归krefactory平台经营者所有,其它本协议中未经提及的权利亦由krefactory平台经营者保留。用户不能复制、拷贝、模仿或者使用任何部分的代码和外观设计。 +5.2用户知悉,krefactory平台上存储及提供的内容、信息等由平台用户或krefactory平台经营者提供;由krefactory平台经营者提供的内容、信息等的知识产权及其相关权利归属krefactory平台经营者或相关权利人所有,由其他用户提供的内容、信息等的知识产权及其相关权利归属其他用户或相关权利人所有。未经上述内容、信息等的知识产权权利人同意,用户不得下载、转载、摘编或以其他方式使用。 +5.3用户同意,用户一旦接受本协议,即表明用户同意将其在任何时间在krefactory平台发布、存储、传播的任何形式的信息、内容无偿、无条件、无期限、无地域限制的授予krefactory经营者使用、共享及商业利用的权利,包括但不限于对信息、内容进行复制、下载、展示及其信息网络传播权等权利。当任何第三方侵犯用户权益时,用户同意授权krefactory平台采用任何合法途径进行维权,用户积极配合。 +六、有限保证及服务免责 +6.1 krefactory平台经营者保证提供的功能、服务与相应功能、服务的介绍及krefactory公布的服务承诺相符。除上述保证外,krefactory平台经营者不对krefactory平台及其功能、服务作出任何其他明示或暗示的保证。 +6.2用户在krefactory平台上进行的任何行为均是用户的个人行为。因用户行为或用户存储、发布、传播的任何信息、内容等引发的任何争议,或由此产生的任何直接、间接、偶然、特殊的损害,均由用户自行承担法律责任,krefactory平台经营者不承担任何责任;如用户行为对krefactory平台造成损失或不良影响,krefactory平台经营者保留追究相关用户法律责任的权利。 +6.3用户使用krefactory平台服务,应遵守法律、法规以及本服务条款的规范,否则krefactory平台经营者有权依照本服务条款处分或终止用户使用krefactory平台服务,由此造成的损失krefactory平台经营者不负任何责任。 +6.4 krefactory平台无法对用户传播的信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论krefactory平台经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。 +6.5用户应自行、独立对其在krefactory平台知悉的其他用户传播的任何信息、内容等进行独立判断及考虑、衡量其真实性、有效性及相关风险,用户因使用该等信息、内容等所遭受的风险及损失等,由用户与信息、内容的传播者自行处理,krefactory平台经营者不承担任何责任。其他用户在其发表的作品信息中加入宣传资料或广告信息、人才招聘需求,或以其他方式在krefactory平台上展示其产品或服务等,用户因该等信息、内容与发布用户产生的法律关系或纠纷,应由其自行解决,krefactory平台经营者不承担任何责任。 +6.6 krefactory平台经营者对用户所发布信息的删除或储存失败不承担任何法律责任。 +6.7不论在何种情况下,krefactory平台经营者均不对由于Internet连接故障,电力故障,罢工,劳动争议,暴乱,起义,骚乱,火灾,洪水,风暴,爆炸,不可抗力,战争,政府行为,国际、国内法院的命令,第三方的不作为或任何krefactory平台经营者不能合理控制的原因而造成的krefactory平台不能访问、信息及数据的延误、停滞或错误,不能提供或延迟提供服务而承担责任。 +6.8不论是否可以预见,不论是源于何种形式的行为或不作为,krefactory平台经营者不对因任何原因造成的任何特别的、间接的、惩罚性的、突发性的或其他任何损害(包括但不限于利润或其他可得利益的损失)承担责任。 +6.9基于互联网的开放性属性,用户知悉用户将信息、内容等上传到互联网上,有可能会被其他组织或个人复制、转载、擅改或做其它非法用途,用户必须充分意识到此类风险的存在。用户明确同意使用krefactory平台过程中所存在的上述风险将完全由用户自行承担,krefactory平台经营者对此不承担任何责任。 +七、服务变更、中断或终止 +7.1如因krefactory平台维护或升级的需要而暂停服务、调整服务功能的,krefactory经营者将尽可能事先在krefactory平台上进行通告。 +7.2 krefactory平台经营者有权对krefactory平台、及其提供的功能、服务等进行变更,届时krefactory经营者将通过在krefactory平台发布公告、公示或其他适当方式通知该等变更,用户有义务注意该等变更公示或通知。如果用户继续使用krefactory平台提供的服务,则视为其同意接受变更后的功能及服务。如果用户拒绝接受变更后的功能或服务,应立即停止使用krefactory平台。 +7.3 krefactory平台经营者有权终止其服务,并通过在krefactory平台发布公告、公示或其他适当方式通知该等终止。 +7.4 krefactory平台经营者无须就krefactory平台或其提供的功能、服务的变更、中断或终止向用户或任何第三方承担任何责任。 +八、解释权 +本注册协议的解释权归krefactory网站平台所有。如果其中有任何条款与国家的有关法律相抵触,则以国家法律的明文规定为准。 \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/logback-spring.xml b/ksafepack-admin/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..439233a --- /dev/null +++ b/ksafepack-admin/src/main/resources/logback-spring.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + + + + + + + ${LOG_HOME}/ksafepack.log.%d{yyyy-MM-dd}.%i.log + + 30 + + 10MB + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + + + + + + + ${LOG_HOME}/ksafepack.log.%d{yyyy-MM-dd}.%i.html + + 30 + + 10MB + + + + %p%d%msg%M%F{32}%L + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/oscache.properties b/ksafepack-admin/src/main/resources/oscache.properties new file mode 100644 index 0000000..9c41048 --- /dev/null +++ b/ksafepack-admin/src/main/resources/oscache.properties @@ -0,0 +1,140 @@ +# CACHE IN MEMORY +# +# If you want to disable memory caching, just uncomment this line. +# +# cache.memory=false + + +# CACHE KEY +# +# This is the key that will be used to store the cache in the application +# and session scope. +# +# If you want to set the cache key to anything other than the default +# uncomment this line and change the cache.key +# +# cache.key=__oscache_cache + + +# USE HOST DOMAIN NAME IN KEY +# +# Servers for multiple host domains may wish to add host name info to +# the generation of the key. If this is true, then uncomment the +# following line. +# +# cache.use.host.domain.in.key=true + + +# CACHE LISTENERS +# +# These hook OSCache events and perform various actions such as logging +# cache hits and misses, or broadcasting to other cache instances across a cluster. +# See the documentation for further information. +# +# cache.event.listeners=com.opensymphony.oscache.plugins.clustersupport.JMSBroadcastingListener, \ +# com.opensymphony.oscache.extra.CacheEntryEventListenerImpl, \ +# com.opensymphony.oscache.extra.CacheMapAccessEventListenerImpl, \ +# com.opensymphony.oscache.extra.ScopeEventListenerImpl, \ +# com.opensymphony.oscache.extra.StatisticListenerImpl + + +# CACHE PERSISTENCE CLASS +# +# Specify the class to use for persistence. If you use the supplied DiskPersistenceListener, +# don't forget to supply the cache.path property to specify the location of the cache +# directory. +# +# If a persistence class is not specified, OSCache will use memory caching only. +# +# cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener +# cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.HashDiskPersistenceListener + +# CACHE OVERFLOW PERSISTENCE +# Use persistent cache in overflow or not. The default value is false, which means +# the persistent cache will be used at all times for every entry. true is the recommended setting. +# +# cache.persistence.overflow.only=true + +# CACHE DIRECTORY +# +# This is the directory on disk where caches will be stored by the DiskPersistenceListener. +# it will be created if it doesn't already exist. Remember that OSCache must have +# write permission to this directory. +# +# Note: for Windows machines, this needs \ to be escaped +# ie Windows: +#cache.path=d:\\cache\\ +# or *ix: +cache.path=/opt/ycsafe/cache +# +# cache.path=c:\\app\\cache + + +# CACHE ALGORITHM +# +# Default cache algorithm to use. Note that in order to use an algorithm +# the cache size must also be specified. If the cache size is not specified, +# the cache algorithm will be Unlimited cache. +# +# cache.algorithm=com.opensymphony.oscache.base.algorithm.LRUCache +# cache.algorithm=com.opensymphony.oscache.base.algorithm.FIFOCache +# cache.algorithm=com.opensymphony.oscache.base.algorithm.UnlimitedCache + +# THREAD BLOCKING BEHAVIOR +# +# When a request is made for a stale cache entry, it is possible that another thread is already +# in the process of rebuilding that entry. This setting specifies how OSCache handles the +# subsequent 'non-building' threads. The default behaviour (cache.blocking=false) is to serve +# the old content to subsequent threads until the cache entry has been updated. This provides +# the best performance (at the cost of serving slightly stale data). When blocking is enabled, +# threads will instead block until the new cache entry is ready to be served. Once the new entry +# is put in the cache the blocked threads will be restarted and given the new entry. +# Note that even if blocking is disabled, when there is no stale data available to be served +# threads will block until the data is added to the cache by the thread that is responsible +# for building the data. +# +# cache.blocking=false + +# CACHE SIZE +# +# Default cache size in number of items. If a size is specified but not +# an algorithm, the cache algorithm used will be LRUCache. +# +cache.capacity=10000 + + +# CACHE UNLIMITED DISK +# Use unlimited disk cache or not. The default value is false, which means +# the disk cache will be limited in size to the value specified by cache.capacity. +# +# cache.unlimited.disk=false + + +# JMS CLUSTER PROPERTIES +# +# Configuration properties for JMS clustering. See the clustering documentation +# for more information on these settings. +# +#cache.cluster.jms.topic.factory=java:comp/env/jms/TopicConnectionFactory +#cache.cluster.jms.topic.name=java:comp/env/jms/OSCacheTopic +#cache.cluster.jms.node.name=node1 + + +# JAVAGROUPS CLUSTER PROPERTIES +# +# Configuration properites for the JavaGroups clustering. Only one of these +# should be specified. Default values (as shown below) will be used if niether +# property is set. See the clustering documentation and the JavaGroups project +# (www.javagroups.com) for more information on these settings. +# +#cache.cluster.properties=UDP(mcast_addr=231.12.21.132;mcast_port=45566;ip_ttl=32;\ +#mcast_send_buf_size=150000;mcast_recv_buf_size=80000):\ +#PING(timeout=2000;num_initial_members=3):\ +#MERGE2(min_interval=5000;max_interval=10000):\ +#FD_SOCK:VERIFY_SUSPECT(timeout=1500):\ +#pbcast.NAKACK(gc_lag=50;retransmit_timeout=300,600,1200,2400,4800;max_xmit_size=8192):\ +#UNICAST(timeout=300,600,1200,2400):\ +#pbcast.STABLE(desired_avg_gossip=20000):\ +#FRAG(frag_size=8096;down_thread=false;up_thread=false):\ +#pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;print_local_addr=true) +#cache.cluster.multicast.ip=231.12.21.132 diff --git a/ksafepack-admin/src/main/resources/readme/jasypt.txt b/ksafepack-admin/src/main/resources/readme/jasypt.txt new file mode 100644 index 0000000..8c1eaab --- /dev/null +++ b/ksafepack-admin/src/main/resources/readme/jasypt.txt @@ -0,0 +1,19 @@ +jasypt官网上有几种方式,下面使用的是最简单的一种方案: +1.添加依赖: + + com.github.ulisesbocchio + jasypt-spring-boot-starter + 3.0.3 + +2.spring启动类保证有@SpringBootApplication注解 +3.使用如下指令来得到加密串: + mvn jasypt:encrypt-value -Djasypt.encryptor.password="the salt" -Djasypt.plugin.value="theValueYouWantToEncrypt" + 或在命令行下执行: + java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=root password=kelp algorithm=PBEWithMD5AndDES +4.在使用加密串的地方加上ENC(your encypted string) + 如:spring.datasource.slave.username=ENC(aRWpysKMOtKt12BiuB6ngQ==) +5.在spring配置文件中加入: + jasypt.encryptor.password=kelp #salt + jasypt.encryptor.algorithm=PBEWithMD5AndDES + jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator +6.目前使用到的有database/redis等串 \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/readme/nginx.txt b/ksafepack-admin/src/main/resources/readme/nginx.txt new file mode 100644 index 0000000..12345ad --- /dev/null +++ b/ksafepack-admin/src/main/resources/readme/nginx.txt @@ -0,0 +1,12 @@ +1.使用nginx作为图片服务器 + 1.在server中添加location配置 + location /jpeg/ { + root d:/upload/kelp/;#实际路径,Linux可作修改 + autoindex on; #生产环境要注释这一行 + } + + 当访问如http://127.0.0.1:8082/jpeg/1.jpg时,转到访问d:/upload/kelp/jpeg/1.jpg文件 + 2.上传文件 + 上传文件时首先检查文件格式; + 然后上传到FTP服务器,虚拟目录为d:/upload/kelp + 上传时注意文件夹权限的问题,文件夹权限的读写权限一定要处理好 \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/readme/ssl.txt b/ksafepack-admin/src/main/resources/readme/ssl.txt new file mode 100644 index 0000000..2de44f3 --- /dev/null +++ b/ksafepack-admin/src/main/resources/readme/ssl.txt @@ -0,0 +1,12 @@ +1.使用HTTPS的话,需要生成证书,在本地测试时,可以使用JDK中的keytool生成证书 +2.keytool生成证书: + keytool -genkey -alias kelp -keyalg RSA -keystore /home/kelp/kelp.keystore +3.application.properties中添加配置: + #端口号 + server.port: 8443 + #你生成的证书名字 + server.ssl.key-store: /home/kelp/kelp.keystore + #密钥库密码 + server.ssl.key-store-password: kelp + server.ssl.keyStoreType: JKS + server.ssl.keyAlias: kelp \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/sensitiveword.txt b/ksafepack-admin/src/main/resources/sensitiveword.txt new file mode 100644 index 0000000..c6e58da --- /dev/null +++ b/ksafepack-admin/src/main/resources/sensitiveword.txt @@ -0,0 +1,3385 @@ +爱女人 +爱液 +按摩棒 +拔出来 +爆草 +包二奶 +暴干 +暴奸 +暴乳 +爆乳 +暴淫 +屄 +被操 +被插 +被干 +逼奸 +仓井空 +插暴 +操逼 +操黑 +操烂 +肏你 +肏死 +操死 +操我 +厕奴 +插比 +插b +插逼 +插进 +插你 +插我 +插阴 +潮吹 +潮喷 +成人dv +成人电影 +成人论坛 +成人小说 +成人电 +成人卡通 +成人聊 +成人片 +成人视 +成人图 +成人文 +成人小 +成人色情 +成人网站 +成人文学 +艳情小说 +成人游戏 +吃精 +赤裸 +抽插 +扌由插 +抽一插 +春药 +大波 +大力抽送 +大乳 +荡妇 +荡女 +盗撮 +多人轮 +发浪 +放尿 +肥逼 +粉穴 +封面女郎 +风月大陆 +干死你 +干穴 +肛交 +肛门 +龟头 +裹本 +国产av +好嫩 +豪乳 +黑逼 +后庭 +后穴 +虎骑 +花花公子 +换妻俱乐部 +黄片 +几吧 +鸡吧 +鸡巴 +鸡奸 +寂寞男 +寂寞女 +妓女 +激情 +集体淫 +奸情 +叫床 +脚交 +金鳞岂是池中物 +金麟岂是池中物 +精液 +就去日 +巨屌 +菊花洞 +菊门 +巨奶 +巨乳 +菊穴 +开苞 +口爆 +口活 +口交 +口射 +口淫 +裤袜 +狂操 +狂插 +浪逼 +浪妇 +浪叫 +浪女 +狼友 +聊性 +流淫 +铃木麻 +凌辱 +漏乳 +露b +乱交 +乱伦 +轮暴 +轮操 +轮奸 +裸陪 +买春 +美逼 +美少妇 +美乳 +美腿 +美穴 +美幼 +秘唇 +迷奸 +密穴 +蜜穴 +蜜液 +摸奶 +摸胸 +母奸 +奈美 +奶子 +男奴 +内射 +嫩逼 +嫩女 +嫩穴 +捏弄 +女优 +炮友 +砲友 +喷精 +屁眼 +品香堂 +前凸后翘 +强jian +强暴 +强奸处女 +情趣用品 +情色 +拳交 +全裸 +群交 +惹火身材 +人妻 +人兽 +日逼 +日烂 +肉棒 +肉逼 +肉唇 +肉洞 +肉缝 +肉棍 +肉茎 +肉具 +揉乳 +肉穴 +肉欲 +乳爆 +乳房 +乳沟 +乳交 +乳头 +三级片 +骚逼 +骚比 +骚女 +骚水 +骚穴 +色逼 +色界 +色猫 +色盟 +色情网站 +色区 +色色 +色诱 +色欲 +色b +少年阿宾 +少修正 +射爽 +射颜 +食精 +释欲 +兽奸 +兽交 +手淫 +兽欲 +熟妇 +熟母 +熟女 +爽片 +爽死我了 +双臀 +死逼 +丝袜 +丝诱 +松岛枫 +酥痒 +汤加丽 +套弄 +体奸 +体位 +舔脚 +舔阴 +调教 +偷欢 +偷拍 +推油 +脱内裤 +文做 +我就色 +无码 +舞女 +无修正 +吸精 +夏川纯 +相奸 +小逼 +校鸡 +小穴 +小xue +写真 +性感妖娆 +性感诱惑 +性虎 +性饥渴 +性技巧 +性交 +性奴 +性虐 +性息 +性欲 +胸推 +穴口 +学生妹 +穴图 +亚情 +颜射 +阳具 +杨思敏 +要射了 +夜勤病栋 +一本道 +一夜欢 +一夜情 +一ye情 +阴部 +淫虫 +阴唇 +淫荡 +阴道 +淫电影 +阴阜 +淫妇 +淫河 +阴核 +阴户 +淫贱 +淫叫 +淫教师 +阴茎 +阴精 +淫浪 +淫媚 +淫糜 +淫魔 +淫母 +淫女 +淫虐 +淫妻 +淫情 +淫色 +淫声浪语 +淫兽学园 +淫书 +淫术炼金士 +淫水 +淫娃 +淫威 +淫亵 +淫样 +淫液 +淫照 +阴b +应召 +幼交 +幼男 +幼女 +欲火 +欲女 +玉女心经 +玉蒲团 +玉乳 +欲仙欲死 +玉穴 +援交 +原味内衣 +援助交际 +张筱雨 +招鸡 +招妓 +中年美妇 +抓胸 +自拍 +自慰 +作爱 +18禁 +adult +a片 +fuck +gay片 +g点 +g片 +hardcore +h动画 +h动漫 +incest +porn +secom +sexinsex +sm女王 +xiao77 +xing伴侣 +tokyohot +yin荡 +贱人 +装b +大sb +傻逼 +傻b +煞逼 +煞笔 +刹笔 +傻比 +沙比 +欠干 +婊子养的 +我日你 +我操 +我草 +卧艹 +卧槽 +爆你菊 +艹你 +cao你 +你他妈 +真他妈 +别他吗 +草你吗 +草你丫 +操你妈 +擦你妈 +操你娘 +操他妈 +日你妈 +干你妈 +干你娘 +娘西皮 +狗操 +狗草 +狗杂种 +狗日的 +操你祖宗 +操你全家 +操你大爷 +妈逼 +你麻痹 +麻痹的 +妈了个逼 +马勒 +狗娘养 +贱比 +贱b +下贱 +死全家 +全家死光 +全家不得好死 +全家死绝 +白痴 +无耻 +杀b +你吗b +你妈的 +婊子 +贱货 +人渣 +混蛋 +媚外 +和弦 +兼职 +限量 +铃声 +性伴侣 +男公关 +火辣 +精子 +射精 +诱奸 +强奸 +做爱 +性爱 +发生关系 +按摩 +快感 +处男 +猛男 +少妇 +屌 +屁股 +下体 +内裤 +浑圆 +咪咪 +发情 +刺激 +白嫩 +粉嫩 +兽性 +风骚 +呻吟 +阉割 +高潮 +裸露 +不穿 +一丝不挂 +脱光 +干你 +干死 +我干 +裙中性运动 +乱奸 +乱伦类 +乱伦小 +伦理大 +伦理电影 +伦理毛 +伦理片 +裸聊 +裸聊网 +裸体写真 +裸舞视 +裸照 +美女裸体 +美女写真 +美女上门 +美艳少妇 +妹按摩 +妹上门 +迷幻药 +迷幻藥 +迷昏口 +迷昏药 +迷昏藥 +迷魂香 +迷魂药 +迷魂藥 +迷奸粉 +迷奸药 +迷情粉 +迷情水 +迷情药 +迷药 +迷藥 +谜奸药 +骚妇 +骚货 +骚浪 +骚嘴 +色电影 +色妹妹 +色情表演 +色情电影 +色情服务 +色情图片 +色情小说 +色情影片 +色情片 +色视频 +色小说 +性服务 +性福情 +性感少 +性伙伴 +性交视频 +性交图片 +性奴集中营 +阴蒂 +阴间来电 +阴茎增大 +阴茎助勃 +阴毛 +陰唇 +陰道 +陰戶 +淫荡美女 +淫荡视频 +淫荡照片 +淫乱 +淫靡 +淫魔舞 +淫情女 +淫肉 +淫騷妹 +淫兽 +淫兽学 +淫穴 +morphine +摇头丸 +乖乖粉 +narcotic +麻醉药 +精神药品 +amateur +腐败中国 +三个呆婊 +你办事我放心 +社会主义灭亡 +打倒中国 +打倒共产党 +打倒共产主义 +打倒胡锦涛 +打倒江泽民 +打倒江主席 +打倒李鹏 +打倒罗干 +打倒温家宝 +打倒中共 +打倒朱镕 +抵制共产党 +抵制共产主义 +抵制胡锦涛 +抵制江泽民 +抵制江主席 +抵制李鹏 +抵制罗干 +抵制温家宝 +抵制中共 +抵制朱镕基 +灭亡中国 +亡党亡国 +粉碎四人帮 +激流中国 +特供 +特贡 +特共 +zf大楼 +殃视 +贪污腐败 +强制拆除 +形式主义 +政治风波 +太子党 +上海帮 +北京帮 +清华帮 +红色贵族 +权贵集团 +河蟹社会 +喝血社会 +九风 +9风 +十七大 +十7大 +17da +九学 +9学 +四风 +4风 +双规 +南街村 +最淫官员 +警匪 +官匪 +独夫民贼 +官商勾结 +城管暴力执法 +强制捐款 +毒豺 +一党执政 +一党专制 +一党专政 +专制政权 +宪法法院 +胡平 +苏晓康 +贺卫方 +谭作人 +焦国标 +万润南 +张志新 +辛灝年 +高勤荣 +王炳章 +高智晟 +司马璐 +刘晓竹 +刘宾雁 +魏京生 +寻找林昭的灵魂 +别梦成灰 +谁是新中国 +讨伐中宣部 +异议人士 +民运人士 +启蒙派 +选国家主席 +民一主 +min主 +民竹 +民珠 +民猪 +chinesedemocracy +大赦国际 +国际特赦 +da选 +投公 +公头 +宪政 +平反 +党章 +维权 +昝爱宗 +宪章 +08宪 +08xz +抿主 +敏主 +人拳 +人木又 +人quan +renquan +中国人权 +中国新民党 +群体事件 +群体性事件 +上中央 +去中央 +讨说法 +请愿 +请命 +公开信 +联名上书 +万人大签名 +万人骚动 +截访 +上访 +shangfang +信访 +访民 +集合 +集会 +组织集体 +静坐 +静zuo +jing坐 +示威 +示wei +游行 +you行 +油行 +游xing +youxing +官逼民反 +反party +反共 +抗议 +亢议 +抵制 +低制 +底制 +di制 +抵zhi +boycott +血书 +焚烧中国国旗 +baoluan +流血冲突 +出现暴动 +发生暴动 +引起暴动 +baodong +灭共 +杀毙 +罢工 +霸工 +罢考 +罢餐 +霸餐 +罢参 +罢饭 +罢吃 +罢食 +罢课 +罢ke +霸课 +ba课 +罢教 +罢学 +罢运 +网特 +网评员 +网络评论员 +五毛党 +五毛们 +5毛党 +戒严 +jieyan +jie严 +戒yan +8的平方事件 +知道64 +八九年 +贰拾年 +2o年 +20和谐年 +贰拾周年 +六四 +六河蟹四 +六百度四 +六和谐四 +陆四 +陆肆 +198964 +5月35 +89年春夏之交 +64惨案 +64时期 +64运动 +4事件 +四事件 +北京风波 +学潮 +学chao +xuechao +学百度潮 +门安天 +天按门 +坦克压大学生 +民主女神 +历史的伤口 +高自联 +北高联 +血洗京城 +四二六社论 +王丹 +柴玲 +沈彤 +封从德 +王超华 +王维林 +吾尔开希 +吾尔开西 +侯德健 +阎明复 +方励之 +蒋捷连 +丁子霖 +辛灏年 +蒋彦永 +严家其 +陈一咨 +中华局域网 +党的喉舌 +互联网审查 +当局严密封锁 +新闻封锁 +封锁消息 +爱国者同盟 +关闭所有论坛 +网络封锁 +金盾工程 +gfw +无界浏览 +无界网络 +自由门 +何清涟 +中国的陷阱 +汪兆钧 +记者无疆界 +境外媒体 +维基百科 +纽约时报 +bbc中文网 +华盛顿邮报 +世界日报 +东森新闻网 +东森电视 +星岛日报 +wikipedia +youtube +googleblogger +美国广播公司 +英国金融时报 +自由亚洲 +自由时报 +中国时报 +反分裂 +威胁论 +左翼联盟 +钓鱼岛 +保钓组织 +主权 +弓单 +火乍 +木仓 +石肖 +核蛋 +步qiang +bao炸 +爆zha +baozha +zha药 +zha弹 +炸dan +炸yao +zhadan +zhayao +三硝基甲苯 +六氟化铀 +炸药配方 +弹药配方 +炸弹配方 +皮箱炸弹 +火药配方 +人体炸弹 +人肉炸弹 +解放军 +兵力部署 +军转 +军事社 +8341部队 +第21集团军 +七大军区 +7大军区 +北京军区 +沈阳军区 +济南军区 +成都军区 +广州军区 +南京军区 +兰州军区 +颜色革命 +规模冲突 +塔利班 +基地组织 +恐怖分子 +恐怖份子 +三股势力 +印尼屠华 +印尼事件 +蒋公纪念歌 +马英九 +mayingjiu +李天羽 +苏贞昌 +林文漪 +陈水扁 +陈s扁 +陈随便 +阿扁 +a扁 +告全国同胞书 +台百度湾 +台完 +台wan +taiwan +台弯 +湾台 +台湾国 +台湾共和国 +台军 +台独 +台毒 +台du +一中一台 +打台湾 +两岸战争 +攻占台湾 +支持台湾 +进攻台湾 +占领台湾 +统一台湾 +收复台湾 +登陆台湾 +解放台湾 +解放tw +解决台湾 +光复民国 +台湾独立 +台湾问题 +台海问题 +台海危机 +台海统一 +台海大战 +台海战争 +台海局势 +入联 +入耳关 +中华联邦 +国民党 +x民党 +民进党 +青天白日 +闹独立 +duli +fenlie +日本万岁 +小泽一郎 +劣等民族 +汉人 +汉维 +维汉 +维吾 +吾尔 +热比娅 +伊力哈木 +疆独 +东突厥斯坦解放组织 +东突解放组织 +蒙古分裂分子 +列确 +阿旺晋美 +藏人 +臧人 +zang人 +藏民 +藏m +达赖 +赖达 +dalai +哒赖 +dl喇嘛 +丹增嘉措 +打砸抢 +西独 +藏独 +葬独 +臧独 +藏毒 +藏du +zangdu +支持zd +藏暴乱 +藏青会 +雪山狮子旗 +拉萨 +啦萨 +啦沙 +啦撒 +拉sa +la萨 +西藏 +藏西 +藏春阁 +藏獨 +藏独立 +藏妇会 +藏字石 +xizang +xi藏 +x藏 +西z +tibet +希葬 +希藏 +硒藏 +稀藏 +西脏 +西奘 +西葬 +西臧 +援藏 +王千源 +安拉 +回教 +回族 +回回 +回民 +穆斯林 +穆罕穆德 +穆罕默德 +默罕默德 +伊斯兰 +圣战组织 +清真 +清zhen +真主 +阿拉伯 +高丽棒子 +韩国狗 +满洲第三帝国 +满狗 +鞑子 +江丑闻 +江嫡系 +江毒 +江独裁 +江蛤蟆 +江核心 +江黑心 +江胡内斗 +江祸心 +江家帮 +江绵恒 +江派和胡派 +江派人马 +江泉集团 +江人马 +江三条腿 +江氏集团 +江氏家族 +江氏政治局 +江氏政治委员 +江梳头 +江太上 +江戏子 +江系人 +江系人马 +江宰民 +江贼 +江贼民 +江主席 +麻果丸 +麻将透 +麻醉弹 +麻醉狗 +麻醉枪 +麻醉槍 +麻醉藥 +台湾版假币 +台湾应该独立 +台湾有权独立 +天灭中共 +中共帮凶 +中共保命 +中共裁 +中共党文化 +中共腐败 +中共的血旗 +中共的罪恶 +中共帝国 +中共独裁 +中共封锁 +中共封网 +中共黑 +中共黑帮 +中共解体 +中共近期权力斗争 +中共恐惧 +中共权力斗争 +中共任用 +中共退党 +中共洗脑 +中共邪教 +中共邪毒素 +中共政治游戏 +福音会 +中国教徒 +统一教 +观音法门 +清海无上师 +盘古 +李洪志 +志洪李 +李宏志 +轮功 +法轮 +轮法功 +三去车仑 +氵去车仑 +发论工 +法x功 +法o功 +法0功 +法一轮一功 +轮子功 +车仑工力 +法lun +fa轮 +法lg +fl功 +falungong +大法弟子 +大纪元 +dajiyuan +明慧网 +明慧周报 +正见网 +新唐人 +伪火 +退党 +tuidang +退dang +超越红墙 +自fen +真善忍 +九评 +9评 +9ping +九ping +集体自杀 +自sha +zi杀 +suicide +逢8必灾 +逢八必灾 +逢9必乱 +逢九必乱 +朱瑟里诺 +根达亚文明 +诺查丹玛斯 +人类灭亡进程表 +按照马雅历法 +推背图 +推bei图 +济世灵文 +诸世纪 +电狗 +电话定位器 +电话拦截器 +电话窃听 +电话监 +电话交友 +电话追杀系统 +电击枪 +电鸡 +电警棒 +枪出售 +枪的制 +枪货到 +枪决女犯 +枪模 +枪手 +枪销售 +枪械制 +枪子弹 +售步枪 +售纯度 +售单管 +售弹簧刀 +售防身 +售狗子 +售虎头 +售火药 +售假币 +售健卫 +售军用 +售猎枪 +售氯胺 +售麻醉 +售枪支 +售热武 +售三棱 +售手枪 +售五四 +售一元硬 +售子弹 +售左轮 +亚砷(酸)酐 +亚砷酸钾 +亚砷酸钠 +亚硒酸 +亚硒酸二钠 +亚硒酸镁 +亚硒酸钠 +亚硒酸氢钠 +亚硝酸乙酯 +亚硝酰乙氧 +氧化二丁基锡 +氧化汞 +氧化铊 +氧化亚铊 +氧氯化磷 +原装弹 +原子弹方法 +原子弹清单 +安眠酮 +代血浆 +普萘洛尔 +呋塞米 +西布曲明 +testosterone +胰岛素样生长因子 +促红细胞生成素 +地西泮 +尼可刹米 +甲睾酮 +adrenaline +erythropoietin +地奈德 +莫达非尼 +氯噻嗪 +苯巴比妥 +促性腺激素 +泼尼松 +麻黄草 +雄烯二醇 +地塞米松 +tamoxifen +strychnine +androst +新型毒品 +杜冷丁 +兴奋剂 +mdma +海洛因 +海luo因 +heroin +diamorphine +diacetylmorphine +鸦片 +阿芙蓉 +咖啡因 +cocain +三唑仑 +美沙酮 +麻古 +k粉 +凯他敏 +ketamine +冰毒 +苯丙胺 +cannabis +大麻 +爱他死 +氯胺酮 +benzodiazepines +甲基安非他明 +安非他命 +吗啡 +打人 +拆迁 +纠纷 +盗窃 +代药物毒品类:血浆 +专业代理 +帮忙点一下 +帮忙点下 +请点击进入 +详情请进入 +私人侦探 +私家侦探 +针孔摄象 +调查婚外情 +信用卡提现 +无抵押贷款 +广告代理 +原音铃声 +借腹生子 +找个妈妈 +找个爸爸 +代孕妈妈 +代生孩子 +代开发票 +腾讯客服电话 +销售热线 +免费订购热线 +低价出售 +款到发货 +回复可见 +连锁加盟 +加盟连锁 +免费二级域名 +免费使用 +免费索取 +蚁力神 +婴儿汤 +售肾 +刻章办 +买小车 +套牌车 +玛雅网 +电脑传讯 +视频来源 +下载速度 +高清在线 +全集在线 +在线播放 +txt下载 +六位qq +6位qq +位的qq +个qb +送qb +用刀横向切腹 +完全自杀手册 +四海帮 +足球投注 +地下钱庄 +中国复兴党 +阿波罗网 +曾道人 +六合彩 +改卷内幕 +替考试 +隐形耳机 +出售答案 +考中答案 +答an +da案 +资金周转 +救市 +股市圈钱 +崩盘 +资金短缺 +证监会 +质押贷款 +小额贷款 +周小川 +刘明康 +尚福林 +孔丹 +汉芯造假 +杨树宽 +中印边界谈判结果 +喂奶门 +摸nai门 +酒瓶门 +脱裤门 +75事件 +乌鲁木齐 +新疆骚乱 +针刺 +打针 +食堂涨价 +饭菜涨价 +瘟疫爆发 +yangjia +y佳 +yang佳 +杨佳 +杨j +袭警 +杀警 +武侯祠 +川b26931 +贺立旗 +周正毅 +px项目 +骂四川 +家l福 +家le福 +加了服 +麦当劳被砸 +豆腐渣 +这不是天灾 +龙小霞 +震其国土 +提前预测 +地震预测 +隐瞒地震 +李四光预测 +蟾蜍迁徙 +地震来得更猛烈 +八级地震毫无预报 +踩踏事故 +聂树斌 +万里大造林 +陈相贵 +张丹红 +尹方明 +李树菲 +王奉友 +零八奥运艰 +惨奥 +奥晕 +凹晕 +懊运 +懊孕 +奥孕 +奥你妈的运 +反奥 +628事件 +weng安 +wengan +翁安 +瓮安事件 +化工厂爆炸 +讨回工资 +代办发票 +代办各 +代办文 +代办学 +代办制 +代辦 +代表烦 +代開 +代考 +代理发票 +代理票据 +代您考 +代讨债 +代写毕 +代写论文 +代孕 +代追债 +考后付款 +考机构 +考考邓 +考联盟 +考前答案 +考前付 +考前密卷 +考前预测 +考试,答案 +考试,作弊器 +考试包过 +考试保 +考试答案 +考试机构 +考试联盟 +考试枪 +考试作弊 +考试作弊器 +考研考中 +透视功能 +透视镜 +透视扑 +透视器 +透视眼睛 +透视眼镜 +透视药 +透视仪 +打死经过 +打死人 +打砸办公 +KC短信 +KC嘉年华 +短信广告 +短信群发 +短信群发器 +小6灵通 +短信商务广告 +段录定 +无界浏览器 +无界 +无网界 +无网界浏览 +无帮国 +KC提示 +KC网站 +UP8新势力 +白皮书 +UP新势力 +移民 +易达网络卡 +安魂网 +纽崔莱七折 +手机复制 +手机铃声 +网关 +神通加持法 +全1球通 +如6意通 +清仓 +灵动卡 +答案卫星接收机 +高薪养廉 +佳静安定片 +航空母舰 +航空售票 +号码百事通 +考前发放 +成本价 +诚信通手机商城 +高利贷 +联4通 +黑庄 +黑手党 +黑车 +联通贵宾卡 +联总 +联总这声传单 +联总之声传单 +高息贷款 +高干子弟 +恭喜你的号码 +恭喜您的号码 +高干子女 +各个银行全称 +各种发票 +高官 +高官互调 +高官子女 +喝一送一 +卡号 +复制 +监听王 +传单 +旦科 +钓鱼台 +当官靠后台 +党校安插亲信 +传九促三 +客户端非法字符 +刻章 +大麻树脂 +大麻油 +大法 +dpp大法 +fa lun +发抡 +发抡功 +洗脑 +下法轮 +发轮 +发伦 +发伦功 +发仑 +发沦 +发纶 +发论 +发论功 +发论公 +发正念 +发囵 +发愣 +发瞟 +罚抡 +罚伦 +罚仑 +罚沦 +罚纶 +罚囵 +筏抡 +筏轮 +筏伦 +筏仑 +筏沦 +筏纶 +筏论 +筏囵 +伐抡 +伐轮 +伐伦 +伐仑 +伐沦 +伐论 +伐囵 +乏抡 +乏轮 +乏伦 +乏仑 +乏沦 +乏纶 +乏论 +乏囵 +阀抡 +阀伦 +阀仑 +阀沦 +阀纶 +阀论 +阀囵 +法 轮 功 +法*功 +法.轮.功 +法L功 +法lun功 +法功 +法会 +法抡 +法抡功 +法轮大法 +法轮佛法 +法轮功 +法伦 +法仑 +法沦 +法纶 +法论 +法十轮十功 +法西斯 +法院 +法正 +法谪 +法谪功 +法輪 +法囵 +法愣 +珐.輪功 +珐抡 +珐轮 +珐伦 +珐仑 +珐沦 +五不 +五不争鸣论坛 +五出三进 +五套功法 +邝锦文 +垡抡 +垡轮 +垡伦 +垡仑 +垡沦 +垡纶 +垡论 +垡囵 +茳澤民 +荭志 +闳志 +闵维方 +氵去 +氵去车仑工力 +转法轮 +砝抡 +砝轮 +砝伦 +砝仑 +砝沦 +砝纶 +真、善、忍 +真理教 +真善美 +砝论 +砝囵 +泓志 +屙民 +珐纶 +珐论 +珐囵 +Falundafa +弟子 +地下教会 +炼功 +梦网洪志 +轮大 +抡功 +伦功 +摩门教 +三水法轮 +天皇 +天怒 +天葬 +车臣 +功法 +讲法 +基督 +基督教 +护法 +教徒 +功友 +大师 +达赖喇嘛 +虹志 +鸿志 +洪传 +贯通两极法 +光祖 +洪吟 +洪哲胜 +洪志 +宏法 +观世音 +宏志 +弘志 +古兰经 +红志 +车库 +车仑 +经文 +腐败 +贪污 +共贪党 +gongchandang +阿共 +共一产一党 +产党共 +公产党 +工产党 +共c党 +共x党 +共铲 +供产 +共惨 +供铲党 +供铲谠 +供铲裆 +共残党 +共残主义 +共产主义的幽灵 +拱铲 +老共 +中珙 +中gong +gc党 +贡挡 +gong党 +g产 +狗产蛋 +共残裆 +恶党 +邪党 +共产专制 +共产王朝 +裆中央 +土共 +土g +共狗 +g匪 +共匪 +仇共 +共产党腐败 +共产党专制 +共产党的报应 +共产党的末日 +communistparty +症腐 +政腐 +政付 +正府 +政俯 +政f +政zhi +挡中央 +档中央 +中国zf +中央zf +国wu院 +中华帝国 +gong和 +大陆官方 +北京政权 +刘志军 +张曙 +买别墅 +玩女人 +贪20亿 +许宗衡 +贪财物 +李启红 +贪腐财富 +落马 +高官名单 +陈希同 +玩忽职守 +有期徒刑 +陈良宇 +受贿罪 +滥用职权 +没收个人财产 +成克杰 +死刑 +程维高 +严重违纪 +开除党籍 +撤销职务 +刘方仁 +无期徒刑 +倪献策 +徇私舞弊 +梁湘 +以权谋私 +撤职。 +李嘉廷 +死刑缓期 +张国光 +韩桂芝 +宋平顺 +自杀 +黄瑶 +陈绍基 +判处死刑 +剥夺政治权利终身 +没收个人全部财产 +石兆彬 +侯伍杰 +王昭耀 +剥夺政治权利 +杜世成 +沈图 +叛逃美国 +罗云光 +起诉 +张辛泰 +李效时 +边少斌 +徐鹏航 +违纪 +收受股票 +王乐毅 +李纪周 +郑光迪 +田凤山。 +邱晓华 +郑筱萸 +孙鹤龄 +蓝田造假案 +于幼军 +留党察看 +何洪达 +朱志刚 +杨汇泉 +官僚主义 +徐炳松 +托乎提沙比尔 +王宝森 +经济犯罪 +畏罪自杀。 +陈水文 +孟庆平 +胡长清 +朱川 +许运鸿 +丘广钟 +刘知炳 +丛福奎 +王怀忠 +巨额财产 +来源不明罪 +李达昌 +刘长贵 +王钟麓 +阿曼哈吉 +付晓光 +自动辞 +刘克田 +吕德彬 +刘维明 +双开 +刘志华 +孙瑜 +李堂堂 +韩福才 青海 +欧阳德 广东 +韦泽芳 海南 +铁英 北京 +辛业江 海南 +于飞 广东 +姜殿武 河北 +秦昌典 重庆 +范广举 黑龙江 +张凯广东 +王厚宏海南 +陈维席安徽 +王有杰河南 +王武龙江苏 +米凤君吉林 +宋勇辽宁 +张家盟浙江 +马烈孙宁夏 +黄纪诚北京 +常征贵州 +王式惠重庆 +周文吉 +王庆录广西 +潘广田山东 +朱作勇甘肃 +孙善武河南 +宋晨光江西 +梁春禄广西政协 +鲁家善 中国交通 +金德琴 中信 +李大强 神华 +吴文英 纺织 +查克明 华能 +朱小华光大 +高严 国家电力 +王雪冰 +林孔兴 +刘金宝 +张恩照 +陈同海 +康日新 +王益 +张春江 +洪清源 +平义杰 +李恩潮 +孙小虹 +陈忠 +慕绥新 +田凤岐 +麦崇楷 +柴王群 +吴振汉 +张秋阳 +徐衍东 +徐发 黑龙江 +张宗海 +丁鑫发 +徐国健 +李宝金 +单平 +段义和 +荆福生 +陈少勇 +黄松有 +皮黔生 +王华元 +王守业 +刘连昆 +孙晋美 +邵松高 +肖怀枢 +刘广智 空军 +姬胜德 总参 +廖伯年 北京 +《动向》 +《争鸣》 +《中国民主》 +322攻台作战计划 +38集团军 +3D轮盘 +64大屠杀 +6合彩 +70天大事记 +89学潮大屠杀 +89学潮血腥屠杀 +BB弹 +BB枪 +FL大法 +SIM卡复制器 +SM用品 +t牌车 +阿宾 +阿凡提机 +挨了一炮 +爱国运动正名 +爱国者同盟网站 +爱液横流 +安眠藥 +案的准确 +暗访包 +八九民 +八九学 +八九政治 +把病人整 +把邓小平 +把学生整 +罢工门 +白黄牙签 +白小姐 +百家乐 +百乐二呓 +败培训 +拜大哥 +斑蝥 +办本科 +办理本科 +办理各种 +办理票据 +办理文凭 +办理真实 +办理证件 +办理证书 +办理资格 +办文凭 +办怔 +办证 +半刺刀 +辦毕业 +辦證 +帮人怀孕 +谤罪获刑 +磅解码器 +磅遥控器 +包办色情娱乐服务 +包青天机 +包养 +宝在甘肃修 +保过答案 +报复执法 +报码 +暴菊 +暴力袭警 +暴力执法 +爆发骚 +爆菊 +北姑 +北京独立 +北京黑幕 +北京市委黑幕 +北京政坛清华名人 +北美巡回讲法 +北省委门 +被指抄袭 +被中共 +本无码 +避孕膜 +鞭满 +变牌 +变牌绝 +辩词与梦 +冰火毒 +冰火佳 +冰火九重 +冰火漫 +冰淫传 +冰在火上 +波胆 +波推龙 +博彩 +博彩娱 +博会暂停 +博园区伪 +不查都 +不查全 +布卖淫女 +部忙组阁 +部是这样 +才知道只生 +财众科技 +采花堂 +彩宝 +彩票 +彩票选号机 +彩票预测 +踩踏事 +苍山兰 +苍蝇水 +操了嫂 +操嫂子 +策没有不 +插屁屁 +察象蚂 +拆迁灭 +禅密功 +长狗 +车仑大法 +车牌隐 +车用电子狗 +成佛做主 +城管灭 +惩公安 +惩贪难 +持枪证 +充气娃 +冲凉死 +抽着大中 +抽着芙蓉 +出成绩付 +出售发票 +出售假币 +出售军 +出售器官 +出售肾 +穿透仪器 +传九退三 +传送答案 +吹箭 +春宫 +春宫图 +春水横溢 +纯度白 +纯度黄 +慈悲功 +次通过考 +催眠水 +催情粉 +催情药 +催情藥 +挫仑 +达毕业证 +达米宣教会 +答案包 +答案提供 +打标语 +打错门 +打飞机专 +大法轮 +大法修炼者 +大鸡巴 +大雞巴 +大妓院 +大揭露 +大奶子 +大批贪官 +大肉棒 +大学暴动 +大圆满法 +大庄 +大嘴歌 +贷借款 +贷开 +戴海静 +弹种 +当代七整 +当官要精 +当官在于 +党风日下 +党棍 +党后萎 +党禁 +党内权力 +党内权争 +党内危机 +党内言事潮 +党前干劲 +刀架保安 +导爆索 +导的情人 +导叫失 +导人的最 +导人最 +导小商 +到花心 +盗号 +盗取qq +盗取密码 +得财兼 +的同修 +灯草和 +等级證 +等人老百 +等人是老 +等人手术 +邓爷爷转 +邓颖超日记 +邓玉娇 +抵制北京奥运 +地磅解码器 +地磅遥控器 +地产之歌 +地下先烈 +帝国之梦 +递进民主 +递纸死 +第二首都 +第三次世界大战 +第五代红人 +第五代接班梯队 +颠覆,共产党 +颠覆,共产主义 +颠覆,胡锦涛 +颠覆,温家宝 +颠覆,中共 +颠覆,朱镕基 +点金商务 +点数优惠 +电子狗导航手机 +甸果敢 +蝶舞按 +丁香社 +顶花心 +顶贴机 +顶帖器 +东北独立 +东方闪电 +东复活 +东京热 +东突 +东伊运 +東京熱 +董元辰 +洞小口紧 +都当警 +都当小姐 +都进中央 +毒蛇钻 +独立台湾 +赌博机 +赌恒指 +赌具 +赌球 +赌球网 +短信截 +短信猫 +短信投票业务 +段桂清 +对共产党清算 +对日强硬 +多党执政 +多美康 +躲猫猫 +俄罗斯轮盘 +俄羅斯 +恶搞人民币 +恶警 +恶势力操 +恶势力插 +恩氟烷 +儿园惨 +儿园砍 +儿园杀 +儿园凶 +二奶大 +二十四事件 +发仑da发 +发伦工 +发轮功 +发轮功陈果 +发牌绝 +发票出 +发票代 +发票代开 +发票销 +发贴工具 +发贴机 +發票 +法O功 +法车仑 +法拉盛 +法拉盛缅街 +法力像佛 +法仑功 +法伦功 +法论功 +法能功 +法维权 +法西藏主义 +法一轮 +法院给废 +法正乾 +珐(工力)学 +反测速雷 +反对共产党 +反对共产主义 +反腐总攻 +反攻大陆 +反共传单 +反共言论 +反雷达测 +反雷达测速 +反屏蔽 +反社会主义 +反中共黑色暴力 +范燕琼 +方迷香 +芳香型智悟气功 +防电子眼 +防身枪 +防身药水 +房贷给废 +仿真枪 +仿真手枪 +仿真证 +费私服 +封锁消 +佛怀煽仇录 +佛同修 +夫妻交换 +福尔马林 +福娃的預 +福娃頭上 +福香巴 +府包庇 +府集中领 +妇销魂 +附送枪 +复印件生 +复印件制 +赴港生子 +富民穷 +富婆给废 +改号软件 +干扰器 +感扑克 +冈本真 +肛门是邻 +岡本真 +钢针狗 +钢珠枪 +港澳博球 +港馬會 +港鑫華 +高就在政 +高考,答案 +高考黑 +高莺莺 +搞媛交 +告长期 +告洋状 +格证考试 +蛤蟆转世 +个人圆满说 +个四小码 +个邪的党 +各类考试 +各类文凭 +根浴 +跟帖器 +跟踪器 +工程吞得 +工力人 +弓弩 +公安错打 +公开小姐 +攻官小姐 +供应发票 +共产主义黑皮书 +共和国2049 +共青背景 +共青团派 +共王储 +共字玄机 +狗粮 +狗娘养的 +狗屁专家 +狗友 +古方迷香 +鼓动一些 +官匪一家 +官商勾 +官也不容 +官因发帖 +光学真题 +广安事件 +广场事件 +跪真相 +滚圆大乳 +国办发 +国际投注 +国家妓 +国家软弱 +国家吞得 +国库折 +国统纲领 +国统会 +国一九五七 +國內美 +哈狗帮 +哈药直销 +海访民 +豪圈钱 +号屏蔽器 +合彩 +和狗交 +和狗性 +和狗做 +黑火药的 +黑社会 +红病历 +红床 +红客联盟 +红色恐怖 +红外,透视 +红外透视 +紅色恐 +胡的接班人 +胡江风云 +胡江关系 +胡江内斗 +胡江曾 +胡江争斗 +胡紧掏 +胡紧套 +胡锦涛,腐败 +胡錦濤 +胡进涛 +胡派军委 +胡派人马 +胡适眼 +胡下台 +胡耀邦 +湖淫娘 +虎头猎 +护卫团 +华藏功 +华国锋 +华门开 +华闻 +化学扫盲 +划老公 +话在肉身显现 +还会吹萧 +还看锦涛 +环球证件 +换妻 +皇冠投注 +皇家轮盘 +黄冰 +黄菊遗孀 +黄色,电影 +黄色电影 +黄色小电影 +回汉冲突 +回民暴动 +回民猪 +回忆六四 +昏药 +浑圆豪乳 +活不起 +活体取肾 +活摘器官 +火车也疯 +机定位器 +机号定 +机号卫 +机卡密 +机屏蔽器 +积克馆 +基本靠吼 +基督灵恩布道团 +绩过后付 +激光气 +激光汽 +激情,电影 +激情,图片 +激情电 +激情电话 +激情电影 +激情短 +激情交友 +激情妹 +激情炮 +激情视频 +激情小电影 +级办理 +级答案 +急需嫖 +疾病业债说 +集体打砸 +集体腐 +集体抗议 +挤乳汁 +擠乳汁 +记号扑克 +纪念达赖喇嘛流亡49周年 +纪念文革 +妓女的口号 +寂寞少妇 +加油机干扰器 +佳静安定 +家一样饱 +家属被打 +甲虫跳 +甲流了 +假币出售 +假发票 +假文凭 +假证件 +奸成瘾 +奸杀 +兼职上门 +监听器 +监听头 +监狱管理局 +监狱里的斗争 +简易炸 +江z民 +疆獨 +讲法传功 +叫鸡 +叫自慰 +揭贪难 +姐包夜 +姐服务 +姐兼职 +姐上门 +解码开锁 +解密软件 +解体的命运 +解体中共 +金扎金 +金钟气 +津大地震 +津地震 +津人治津 +进来的罪 +禁书 +禁网禁片 +京地震 +京夫子 +京要地震 +经典谎言 +精子射在 +警察被 +警察的幌 +警察殴打 +警察说保 +警车雷达 +警方包庇 +警匪一家 +警徽 +警民冲突 +警用品 +径步枪 +敬请忍 +靖国神社 +究生答案 +九龙论坛 +九评共 +九十三运动 +酒象喝汤 +酒像喝汤 +救度众生说 +就爱插 +就要色 +菊暴 +菊爆 +举国体 +据说全民 +绝食声 +军长发威 +军刺 +军品特 +军用手 +卡辛纳大道和三福大道交界处 +开邓选 +开平,轮奸 +开平,受辱 +开锁工具 +开天目 +開碼 +開票 +砍杀幼 +砍伤儿 +看JJ +康没有不 +康生丹 +康跳楼 +抗议磁悬浮 +抗议中共当局 +磕彰 +克分析 +克千术 +克透视 +嗑药 +空和雅典 +空中民主墙 +孔摄像 +恐共 +控诉世博 +控制媒 +口手枪 +骷髅死 +矿难不公 +昆仑女神功 +拉帮游说 +拉登说 +拉开水晶 +拉票贿选 +拉萨僧人接连抗议 +拉线飞机 +来福猎 +拦截器 +狼全部跪 +浪穴 +老虎机 +乐透码 +雷管 +雷人女官 +类准确答 +黎阳平 +李大轮子 +李红痔 +李洪X +李鹏 +李伟信的笔供 +李晓英 +李咏曰 +理各种证 +理是影帝 +理证件 +理做帐报 +力骗中央 +力月西 +丽媛离 +利他林 +连发手 +联盟党 +聯繫電 +练功群众 +炼大法 +两岸才子 +两会代 +两会又三 +聊斋艳 +了件渔袍 +猎好帮手 +猎枪 +猎枪销 +临震预报 +领导忽悠百姓叫号召 +领土拿 +流亡藏人 +流血事件 +留四进三 +六HE彩 +六代接班人 +六合采 +六死 +六四内部日记 +六四事 +六四事件 +六四受难者家属证辞 +六四信息 +六四资料馆 +六月联盟 +龙虎斗 +龙湾事件 +隆手指 +漏题 +陆封锁 +陆同修 +旅游新报 +轮手枪 +轮子小报 +论文代 +罗干 +罗斯小姐 +落霞缀 +麻果配 +麻醉乙醚 +蟆叫专家 +买断 +买官卖官 +买枪 +买肾 +买真枪 +卖QQ号码 +卖春 +卖地财政 +卖发票 +卖枪 +卖身 +卖肾 +卖血 +卖银行卡 +卖自考 +漫步丝 +忙爱国 +猫眼工具 +毛时代大饥荒揭秘 +毛一鲜 +毛泽东复活 +毛泽东侄子 +毛贼 +毛主席的嫡孙 +媒体封锁 +每周一死 +门按摩 +门保健 +门徒会 +門服務 +氓培训 +蒙古回归 +蒙汗药 +蒙汗药粉 +免电灯 +免费电影 +灭绝罪 +灭中共 +民储害 +民九亿商 +民抗议 +民殇 +民运 +民运分子 +民主不能等待 +民主还专政 +民族问题 +明hui +明镜出版社 +铭记印尼 +摩小姐 +魔难论 +末世劫难 +末世论 +牟新生 +母乳家 +母子乱伦 +木齐针 +幕没有不 +幕前戲 +内争人权 +男妓 +南充针 +嫩阴 +泥马之歌 +你的西域 +拟涛哥 +娘两腿之间 +鸟巢最少死 +妞上门 +纽扣摄像机 +浓精 +怒的志愿 +女被人家搞 +女激情 +女技师 +女奴 +女人费 +女人和狗 +女任职名 +女上门 +女神教 +女士服务 +女伟哥 +女優 +鸥之歌 +拍肩,药 +拍肩神 +拍肩神药 +拍肩型 +拍肩醉迷药 +牌技网 +派系斗争 +盘古乐队 +盘口 +炮的小蜜 +跑官要官 +泡友 +陪考枪 +陪聊 +赔率 +配有消 +喷尿 +嫖俄罗 +嫖鸡 +嫖妓 +平惨案 +平反六四 +平叫到床 +仆不怕饮 +普提功 +普通嘌 +期货配 +奇迹的黄 +奇淫散 +骑单车出 +气狗 +气枪 +汽车解码器 +汽车走表器 +汽狗 +汽枪 +氣槍 +器官贩卖 +千禧弘法 +铅弹 +钱三字经 +强权政府 +强效失忆药 +强硬发言 +抢其火炬 +切听器 +窃听 +窃听器 +亲共 +亲共分子 +亲共媒体 +侵犯国外专利 +钦点接班人 +禽流感了 +勤捞致 +沁园春血 +青海无上师 +氢弹手 +清场内幕 +清除负面 +清純壆 +清官团 +清海师父 +情聊天室 +情妹妹 +情色,论坛 +情色论坛 +情杀 +情视频 +情自拍 +氰化钾 +氰化钠 +请集会 +请示威 +琼花问 +区的雷人 +娶韩国 +全范围教会 +全真证 +全自动开锁器 +犬交 +群发广告机 +群发软件 +群奸暴 +群起抗暴 +群体灭绝 +群体性事 +群众冲击 +绕过封锁 +惹的国 +人弹 +人祸 +人类灭亡时间表 +人类罪恶论 +人民币恶搞 +人权保护 +人宇特能功 +人在云上 +人真钱 +认牌绝 +任于斯国 +日月气功 +容弹量 +柔胸粉 +如厕死 +软弱的国 +软弱外交 +瑞安事件 +萨斯病 +赛后骚 +赛克网 +三班仆人派 +三挫 +三级,电影 +三级,影片 +三级电影 +三陪 +三三九乘元功 +三网友 +三唑 +扫了爷爷 +杀害学生 +杀指南 +沙皇李长春 +山涉黑 +煽动不明 +煽动群众 +商务短信 +商务快车 +上海独立 +上门激 +上网文凭 +烧公安局 +烧瓶的 +韶关斗 +韶关玩 +韶关旭 +少妇自拍 +社会混 +射网枪 +涉台政局 +涉嫌抄袭 +身份证生成器 +深喉冰 +神的教会 +神七假 +神韵艺术 +神州忏悔录 +沈昌功 +沈昌人体科技 +肾源 +升达毕业证 +生被砍 +生踩踏 +生孩子没屁眼 +生命树的分叉 +生肖中特 +生意宝 +圣殿教 +圣火护卫 +圣灵重建教会 +圣战不息 +盛行在舞 +剩火 +尸博 +失身水 +失意药 +师涛 +狮子旗 +十八大接班人 +十八等 +十大独裁 +十大谎 +十大禁 +十个预言 +十类人不 +十七大幕 +十七大权力争霸战 +十七大人事安排 +十七位老部长 +实毕业证 +实际神 +实体娃 +实学历文 +士的年 +士的宁 +士康事件 +独裁者 +世界之门 +式粉推 +视解密 +手变牌 +手狗 +手机,定位器 +手机,窃听 +手机跟 +手机跟踪定位器 +手机监 +手机监听 +手机监听器 +手机卡复制器 +手机魔卡 +手机窃听器 +手机追 +手木仓 +手枪 +守所死法 +书办理 +术牌具 +双管立 +双管平 +双筒 +谁是胡的接班人 +谁为腐败晚餐买单 +水阎王 +税务总局致歉 +丝护士 +丝情侣 +丝袜保 +丝袜恋 +丝袜美 +丝袜妹 +丝袜网 +丝足按 +司长期有 +司法黑 +司考答案 +司马璐回忆录 +私房写真 +私服 +私家侦探服务 +死法分布 +死刑现场 +死要见毛 +四博会 +四川大地震异象揭密 +四川朱昱 +四大扯 +四六级,答案 +饲养基地 +苏家屯 +苏家屯集 +诉讼集团 +素女,自拍 +素女心 +速代办 +速取证 +酸羟亚胺 +缩阴 +蹋纳税 +太王四神 +太王四神记 +泰兴幼 +泰兴镇中 +泰州幼 +贪官也辛 +探测狗 +涛共产 +涛一样胡 +讨厌中国 +特别党费 +特工资 +特码 +特上门 +特务机构 +体透视镜 +替考 +替人体 +天安门事件 +天朝特 +天鹅之旅 +天推广歌 +天要灭 +天音功 +田罢工 +田田桑 +田停工 +铁血师 +庭审直播 +通钢总经 +同盟党 +统治术 +偷電器 +偷啪,dv +偷肃贪 +偷听器 +偷偷贪 +头双管 +投毒杀人 +投注站 +骰子 +秃鹰汽 +突破封锁 +突破网路 +屠杀学生 +土炮 +土枪 +推翻独裁 +推油按 +脱衣舞 +脱衣艳 +瓦斯手 +袜按摩 +外蒙回归 +外透视镜 +外围赌球 +万法归一功 +万能钥匙 +王立军 +王益案 +网络警察 +网民案 +网民获刑 +网民诬 +网站推广软件 +微型,监控 +微型摄像 +为党不为国 +围攻上海 +维汉员 +维权基 +维权人 +维权谈 +伪基百科 +伪政府 +委坐船 +卫星高频头 +卫星广播器材 +谓的和谐 +温加饱 +温家宝,腐败 +温家堡 +温切斯特 +温休曾退 +温影帝 +溫家寶 +瘟加饱 +瘟家宝 +瘟假饱 +文凭证 +纹了毛 +闻被控制 +闻封锁 +瓮安 +我的西域 +我搞台独 +我们自杀吧 +我虽死去 +乌蝇水 +乌云其木格 +无耻语录 +无官正 +无人性的政权 +无线,监听 +吾爾開希 +五套功 +五月天 +午夜电 +午夜极 +武警暴 +武警殴 +武警已增 +武力镇压 +武装镇压 +务员答案 +务员考试 +雾型迷 +西藏,独立 +西藏独立 +西藏国家民主党 +西藏人民大起义 +西藏限 +西藏作家组织 +西服进去 +希脏 +习进平 +习晋平 +席复活 +席临终前 +席指着护 +洗澡死 +喜贪赃 +先烈纷纷 +现大地震 +现金投注 +现在的党 +现在的公安 +现在的共产党 +现在的警察 +现在的社会 +现在的政府 +线透视镜 +限制言 +陷害案 +陷害罪 +霰弹 +香港彩 +香港独立 +香港马会 +香港一类 +香港总彩 +向巴平措 +消防灭火枪 +消防枪 +消业之说 +硝化甘 +小电影 +小活佛 +小姐按摩 +小姐上门 +肖中特 +校骚乱 +写两会 +泄漏的内 +新疆暴乱 +新疆独立 +新疆叛 +新疆限 +新金瓶 +新生网 +新搪人 +态度蛮横 +新中华战记 +信访专班 +信用卡套现 +兴华论谈 +兴中心幼 +行长王益 +形透视镜 +性推广歌 +胸主席 +修炼大法 +徐玉元 +学骚乱 +学生领袖 +学位證 +血溅人民天堂 +血染的风采 +血色京机 +血色京畿 +血腥清场 +循环轮回论 +丫与王益 +严晓玲 +言被劳教 +言论罪 +盐酸曲 +眼镜,透视 +燕玲论坛 +恙虫病 +遥控信号拦截器 +要射精了 +要泄了 +业力回报 +业力轮 +夜半加税 +夜激情 +液体炸 +一党独裁 +一党私利 +一卡多号 +一氯丙酮 +一氯乙醛 +一码中特 +一通功 +一通健康法 +一小撮别 +一肖 +一氧化二氟 +一氧化汞 +一夜激情 +伊皮恩 +遗情书 +乙酰替硫脲 +乙酰亚砷酸铜 +异硫氰酸烯丙酯 +异氰酸苯酯 +异氰酸甲酯 +因毒磷 +因毒硫磷 +银氰化钾 +银行卡复制设备 +隐蔽式摄像机 +隐形,耳机 +隐形,摄像机 +隐形耳 +隐形喷剂 +隐形摄像机 +应子弹 +婴儿命 +罂粟壳 +罂粟籽 +蝇毒 +影子政府 +雍战胜 +永伏虫 +咏妓 +用手枪 +优化官员 +幽谷三 +游精佑 +游戏机破解 +有偿服务 +有偿捐献 +有偿肾 +有码 +有奶不一 +右转是政 +幼齿类 +娱乐透视 +愚民同 +愚民政 +与狗性 +宇宙大法 +宇宙毁灭 +宇宙主佛 +育部女官 +预测答案 +冤民大 +鸳鸯洗 +渊盖苏文 +元极功 +原砷酸 +原一九五七 +袁伟民 +援藏网 +晕倒型 +韵徐娘 +赞成,西藏,独立 +脏毒 +脏独 +遭便衣 +遭到警 +遭警察 +遭武警 +择油录 +炸弹教 +炸弹遥控 +炸广州 +炸立交 +炸药的制 +炸药配 +炸药制 +粘氯酸 +张春桥 +张宏宝 +张宏堡 +张文中 +找枪手 +找援交 +找政法委副 +赵紫阳 +针刺案 +针刺伤 +针刺事 +针刺死 +针孔摄象机 +针孔摄像机 +侦探设备 +真钱,百家乐 +真钱斗地 +真钱投注 +真实文凭 +震惊一个民 +证到付款 +证件公司 +证件集团 +证生成器 +证书办 +政府无能 +政论区 +政治局十七 +政治人祸的源头 +支那 +支那猪 +植物冰 +指纹考勤 +指纹膜 +指纹套 +制服诱 +制手枪 +制证定金 +制作证件 +治疗红斑狼疮 +治疗性病 +治疗乙肝 +治疗肿瘤 +中办发 +中的班禅 +中国不强 +中国高层权力斗争 +中国共和党 +中国官场情杀案 +中国过渡政府 +中国海外腐败兵团 +中国没有自由 +中国人民党 +中国实行血腥教育 +中国贪官在海外 +中国网络审查 +中国舆论监督网周洪 +中国正义党 +中国政府封锁消息 +中国支配下的朝鲜经济 +中国猪 +中华昆仑女神功 +中华养生益智功 +中华养生益智气 +中南海的权力游戏 +中南海斗争 +中南海恩仇录 +中南海黑幕 +中南海权力斗争 +中石油国家电网倒数 +中特 +中央黑幕 +中正纪念歌 +中组部前部长直言 +种公务员 +种学历证 +众像羔 +重亚硒酸钠 +重阳兵变 +州惨案 +州大批贪 +州三箭 +宙最高法 +昼将近 +朱镕基,腐败 +主神教 +主席忏 +属灵教 +住英国房 +助考 +助考网 +转法论 +转是政府 +赚钱资料 +庄家 +装弹甲 +装枪套 +装消音 +追债公司 +追踪,定位 +梓健特药 +自动群发 +自己找枪 +自杀手册 +自杀指南 +自慰用 +自由圣 +自由西藏 +自由西藏学生运动 +总会美女 +走私车 +足交 +足球,博彩 +足球玩法 +最后圆满 +醉钢枪 +醉迷药 +醉乙醚 +尊爵粉 +左棍 +左转是政 +作弊器 +作各种证 +作硝化甘 +唑仑 \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNG06201d9688425861c7014c0131e16f1e.png b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNG06201d9688425861c7014c0131e16f1e.png new file mode 100644 index 0000000..e34666f Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNG06201d9688425861c7014c0131e16f1e.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNG2ca2b744177aa14589b1a0fa8ba0dfa4.png b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNG2ca2b744177aa14589b1a0fa8ba0dfa4.png new file mode 100644 index 0000000..6b1bc78 Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNG2ca2b744177aa14589b1a0fa8ba0dfa4.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNG862fa831923278060b0d06ec07ed8893.png b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNG862fa831923278060b0d06ec07ed8893.png new file mode 100644 index 0000000..14dee6f Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNG862fa831923278060b0d06ec07ed8893.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNGc728907396419fe135976820c812cd54.png b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNGc728907396419fe135976820c812cd54.png new file mode 100644 index 0000000..98c1dbb Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNGc728907396419fe135976820c812cd54.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNGce2a170ee4dfa655fca7a1639b442442.png b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNGce2a170ee4dfa655fca7a1639b442442.png new file mode 100644 index 0000000..70e3ec4 Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNGce2a170ee4dfa655fca7a1639b442442.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png new file mode 100644 index 0000000..be11d43 Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanfuwu/index.css b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/index.css new file mode 100644 index 0000000..6e88245 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/business/anquanfuwu/index.css @@ -0,0 +1,562 @@ +.page { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 1920px; + height: 1997px; + overflow: hidden; + margin: 0 auto; +} + +.group_1 { + box-shadow: 0px 0px 6px 0px rgba(8, 15, 53, 0.3); + background-color: rgba(255, 255, 255, 1); + width: 1920px; + height: 70px; + justify-content: flex-center; +} + +.image_1 { + width: 118px; + height: 36px; + margin: 17px 0 0 390px; +} + +.text_1 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 32px; +} + +.text_2 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_3 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_4 { + width: 73px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 22px; +} + +.text_5 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_6 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_7 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.label_1 { + width: 24px; + height: 24px; + margin: 23px 0 0 114px; +} + +.text_8 { + width: 95px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin: 26px 0 0 8px; +} + +.text-wrapper_1 { + background-color: rgba(21, 170, 125, 1); + height: 70px; + width: 120px; + margin: 0 390px 0 20px; +} + +.text_9 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin: 26px 0 0 32px; +} + +.group_5 { + position: relative; + width: 1920px; + height: 1718px; +} + +.text-wrapper_2 { + width: 1920px; + height: 300px; + background: url(./img/FigmaDDSSlicePNG2ca2b744177aa14589b1a0fa8ba0dfa4.png) + 100% no-repeat; + background-size: 100% 100%; + justify-content: flex-center; +} + +.text_10 { + width: 120px; + height: 45px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 30px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 45px; + margin: 110px 0 0 390px; +} + +.text_11 { + width: 297px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 10px 0 111px 390px; +} + +.text-wrapper_3 { + background-color: rgba(255, 255, 255, 1); + width: 1920px; + height: 70px; +} + +.text_12 { + width: 64px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 688px; +} + +.text_13 { + width: 64px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 56px; +} + +.text_14 { + width: 64px; + height: 24px; + overflow-wrap: break-word; + color: rgba(21, 170, 125, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 56px; +} + +.text_15 { + width: 64px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 56px; +} + +.text_16 { + width: 64px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 688px 0 56px; +} + +.group_6 { + width: 96px; + height: 22px; + margin: 50px 0 0 390px; +} + +.block_2 { + background-color: rgba(21, 170, 125, 1); + width: 14px; + height: 22px; +} + +.text_17 { + width: 72px; + height: 20px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 18px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 20px; +} + +.text_18 { + width: 1140px; + height: 84px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + line-height: 24px; + margin: 28px 0 0 390px; +} + +.image_2 { + width: 860px; + height: 522px; + margin: 40px 0 0 530px; +} + +.group_7 { + width: 96px; + height: 20px; + margin: 40px 0 0 390px; +} + +.group_3 { + background-color: rgba(21, 170, 125, 1); + width: 14px; + height: 20px; +} + +.text_19 { + width: 72px; + height: 20px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 18px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 20px; +} + +.text_20 { + width: 1140px; + height: 78px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + line-height: 24px; + margin: 26px 0 438px 390px; +} + +.block_4 { + position: absolute; + left: 0; + top: 1415px; + width: 1922px; + height: 302px; + background: url(./img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png) + 100% no-repeat; + background-size: 100% 100%; +} + +.text_21 { + width: 480px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 30px; + margin: 96px 0 0 410px; +} + +.text-wrapper_4 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 44px; + width: 180px; + margin: 35px 0 87px 560px; +} + +.text_22 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 13px 0 0 62px; +} + +.group_4 { + background-color: rgba(255, 255, 255, 1); + width: 1920px; + height: 210px; + margin-top: -1px; +} + +.image-text_2 { + width: 277px; + height: 129px; + margin: 35px 0 0 390px; +} + +.image_3 { + width: 167px; + height: 55px; +} + +.text-group_1 { + width: 277px; + height: 64px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + line-height: 32px; + margin-top: 10px; +} + +.block_6 { + width: 682px; + height: 103px; + margin: 62px 390px 0 0; +} + +.text-wrapper_6 { + width: 572px; + height: 18px; + margin-left: 280px; +} + +.text_23 { + width: 28px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; +} + +.text_24 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_25 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_26 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_27 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_28 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_29 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.paragraph_1 { + width: 865px; + height: 65px; + overflow-wrap: break-word; + color: rgba(146, 151, 157, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + line-height: 28px; + margin-top: 20px; +} diff --git a/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNG06201d9688425861c7014c0131e16f1e.png b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNG06201d9688425861c7014c0131e16f1e.png new file mode 100644 index 0000000..e34666f Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNG06201d9688425861c7014c0131e16f1e.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGb036e0276b958fac7a72814f195c50b0.png b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGb036e0276b958fac7a72814f195c50b0.png new file mode 100644 index 0000000..f75c414 Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGb036e0276b958fac7a72814f195c50b0.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGba1504f367f579c6504830b2cee83a77.png b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGba1504f367f579c6504830b2cee83a77.png new file mode 100644 index 0000000..6cf9289 Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGba1504f367f579c6504830b2cee83a77.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGc03eafe0f795cc82c14acfabf5aa7feb.png b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGc03eafe0f795cc82c14acfabf5aa7feb.png new file mode 100644 index 0000000..da5c202 Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGc03eafe0f795cc82c14acfabf5aa7feb.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGc728907396419fe135976820c812cd54.png b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGc728907396419fe135976820c812cd54.png new file mode 100644 index 0000000..98c1dbb Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGc728907396419fe135976820c812cd54.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGce2a170ee4dfa655fca7a1639b442442.png b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGce2a170ee4dfa655fca7a1639b442442.png new file mode 100644 index 0000000..70e3ec4 Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGce2a170ee4dfa655fca7a1639b442442.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png new file mode 100644 index 0000000..be11d43 Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png differ diff --git a/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/index.css b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/index.css new file mode 100644 index 0000000..9973e61 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/index.css @@ -0,0 +1,1889 @@ +.page { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 1280px; + height: 1808px; + overflow: hidden; + margin: 0 auto; +} + +.section_1 { + box-shadow: 0px 0px 6px 0px rgba(8, 15, 53, 0.3); + background-color: rgba(255, 255, 255, 1); + width: 1280px; + height: 70px; + justify-content: flex-center; +} + +.image_1 { + width: 118px; + height: 36px; + margin: 17px 0 0 70px; +} + +.text_1 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 32px; +} + +.text_2 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_3 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_4 { + width: 73px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 22px; +} + +.text_5 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_6 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_7 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.label_1 { + width: 24px; + height: 24px; + margin: 23px 0 0 114px; +} + +.text_8 { + width: 95px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin: 26px 0 0 8px; +} + +.text-wrapper_1 { + background-color: rgba(21, 170, 125, 1); + height: 70px; + width: 120px; + margin: 0 390px 0 20px; +} + +.text_9 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin: 26px 0 0 32px; +} + +.box_5 { + position: relative; + width: 1280px; + height: 1483px; +} + +.text-wrapper_2 { + width: 1280px; + height: 300px; + background: url(img/FigmaDDSSlicePNGc03eafe0f795cc82c14acfabf5aa7feb.png) + 100% no-repeat; + background-size: 100% 100%; +} + +.text_10 { + width: 693px; + height: 38px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 30px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 45px; + margin: 66px 0 0 70px; +} + +.text_11 { + width: 460px; + height: 30px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 20px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 36px; + margin: 14px 0 0 70px; +} + +.text_12 { + width: 628px; + height: 17px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 15px 0 0 70px; +} + +.text_13 { + width: 488px; + height: 17px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 12px 0 0 70px; +} + +.text_14 { + width: 552px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 12px 0 61px 70px; +} + +.text_15 { + width: 730px; + height: 26px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 50px 0 0 70px; +} + +.block_2 { + width: 955px; + height: 690px; + margin: 20px 0 397px 254px; +} + +.text_16 { + width: 96px; + height: 45px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 24px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: center; + white-space: nowrap; + line-height: 45px; + margin-top: 63px; +} + +.group_1 { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 570px; + height: 690px; +} + +.text-wrapper_3 { + background-color: rgba(21, 170, 125, 1); + border-radius: 0px 5px 0px 5px; + height: 80px; + width: 570px; +} + +.text_17 { + width: 80px; + height: 36px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 20px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: center; + white-space: nowrap; + line-height: 36px; + margin: 22px 0 0 240px; +} + +.box_6 { + width: 243px; + height: 24px; + margin: 20px 0 0 147px; +} + +.image-text_22 { + width: 118px; + height: 24px; +} + +.thumbnail_1 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_1 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_18 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.box_7 { + width: 342px; + height: 57px; + margin: 9px 0 0 48px; +} + +.text_19 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin-top: 18px; +} + +.block_3 { + width: 104px; + height: 57px; + margin-left: 35px; +} + +.image-text_23 { + width: 104px; + height: 24px; +} + +.thumbnail_2 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_2 { + width: 70px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.image-text_24 { + width: 104px; + height: 24px; + margin-top: 9px; +} + +.thumbnail_3 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_3 { + width: 70px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text-wrapper_11 { + width: 67px; + height: 57px; + margin-left: 72px; +} + +.text_20 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_21 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.box_8 { + width: 243px; + height: 24px; + margin: 9px 0 0 147px; +} + +.image-text_25 { + width: 118px; + height: 24px; +} + +.thumbnail_4 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_4 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_22 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.group_5 { + background-color: rgba(251, 251, 255, 1); + position: relative; + width: 570px; + height: 130px; + margin-top: 20px; +} + +.text_23 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin: 60px 0 0 48px; +} + +.image-text_26 { + width: 118px; + height: 90px; + margin: 20px 0 0 35px; +} + +.thumbnail_5 { + width: 20px; + height: 20px; + margin-top: 69px; +} + +.text-group_26 { + width: 84px; + height: 90px; +} + +.text_24 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_25 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_26 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text-group_27 { + width: 133px; + height: 90px; + margin: 20px 114px 0 58px; +} + +.text_27 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_28 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_29 { + width: 133px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.image-text_27 { + position: absolute; + left: 147px; + top: 20px; + width: 118px; + height: 90px; +} + +.thumbnail_6 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_28 { + width: 84px; + height: 90px; +} + +.text_24 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_25 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_26 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.image-text_28 { + position: absolute; + left: 147px; + top: 20px; + width: 118px; + height: 90px; +} + +.thumbnail_7 { + width: 20px; + height: 20px; + margin-top: 36px; +} + +.text-group_29 { + width: 84px; + height: 90px; +} + +.text_24 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_25 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_26 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.box_9 { + position: relative; + width: 475px; + height: 61px; + margin: 20px 0 0 48px; +} + +.text_30 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin-top: 21px; +} + +.image-text_29 { + width: 118px; + height: 59px; + margin: 2px 0 0 35px; +} + +.thumbnail_8 { + width: 20px; + height: 20px; + margin-top: 38px; +} + +.text-group_30 { + width: 84px; + height: 59px; +} + +.text_31 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_32 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 11px; +} + +.text-group_31 { + width: 200px; + height: 59px; + margin-left: 58px; +} + +.text_33 { + width: 172px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_34 { + width: 200px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 11px; +} + +.image-text_30 { + position: absolute; + left: 99px; + top: 2px; + width: 118px; + height: 59px; +} + +.thumbnail_9 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_32 { + width: 84px; + height: 59px; +} + +.text_31 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_32 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 11px; +} + +.group_7 { + background-color: rgba(251, 251, 255, 1); + width: 570px; + height: 61px; + margin-top: 20px; +} + +.text_35 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin: 19px 0 0 48px; +} + +.image-text_31 { + width: 90px; + height: 24px; + margin: 17px 333px 0 35px; +} + +.thumbnail_10 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_12 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_36 { + width: 127px; + height: 26px; + overflow-wrap: break-word; + color: rgba(255, 122, 0, 1); + font-size: 20px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: center; + white-space: nowrap; + line-height: 20px; + margin: 30px 0 0 221px; +} + +.text-wrapper_5 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 44px; + width: 230px; + margin: 20px 0 35px 170px; +} + +.text_37 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 13px 0 0 87px; +} + +.group_8 { + background-color: rgba(217, 217, 217, 0); + position: absolute; + left: 160px; + top: 602px; + width: 257px; + height: 61px; +} + +.box_3 { + background-color: rgba(255, 255, 255, 1); + position: absolute; + left: 70px; + top: 396px; + width: 570px; + height: 690px; +} + +.text-wrapper_6 { + background-color: rgba(0, 36, 25, 1); + border-radius: 5px 0px 5px 0px; + height: 80px; + width: 570px; +} + +.text_38 { + width: 80px; + height: 36px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 20px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: center; + white-space: nowrap; + line-height: 36px; + margin: 22px 0 0 240px; +} + +.block_4 { + width: 243px; + height: 24px; + margin: 20px 0 0 147px; +} + +.image-text_32 { + width: 118px; + height: 24px; +} + +.thumbnail_11 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_13 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_39 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.block_5 { + width: 342px; + height: 57px; + margin: 9px 0 0 48px; +} + +.text_40 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin-top: 18px; +} + +.group_17 { + width: 104px; + height: 57px; + margin-left: 35px; +} + +.image-text_33 { + width: 104px; + height: 24px; +} + +.thumbnail_12 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_14 { + width: 70px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.image-text_34 { + width: 104px; + height: 24px; + margin-top: 9px; +} + +.thumbnail_13 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_15 { + width: 70px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text-wrapper_12 { + width: 67px; + height: 57px; + margin-left: 72px; +} + +.text_41 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_42 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.block_6 { + width: 243px; + height: 24px; + margin: 9px 0 0 147px; +} + +.image-text_35 { + width: 118px; + height: 24px; +} + +.thumbnail_14 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_16 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_43 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.group_13 { + background-color: rgba(251, 251, 255, 1); + position: relative; + width: 570px; + height: 130px; + margin-top: 20px; +} + +.text_44 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin: 60px 0 0 48px; +} + +.image-text_36 { + width: 118px; + height: 90px; + margin: 20px 0 0 35px; +} + +.thumbnail_15 { + width: 20px; + height: 20px; + margin-top: 69px; +} + +.text-group_33 { + width: 84px; + height: 90px; +} + +.text_45 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_46 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_47 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text-group_34 { + width: 133px; + height: 90px; + margin: 20px 114px 0 58px; +} + +.text_48 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_49 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_50 { + width: 133px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.image-text_37 { + position: absolute; + left: 147px; + top: 20px; + width: 118px; + height: 90px; +} + +.thumbnail_16 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_35 { + width: 84px; + height: 90px; +} + +.text_45 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_46 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_47 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.image-text_38 { + position: absolute; + left: 147px; + top: 20px; + width: 118px; + height: 90px; +} + +.thumbnail_17 { + width: 20px; + height: 20px; + margin-top: 36px; +} + +.text-group_36 { + width: 84px; + height: 90px; +} + +.text_45 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_46 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_47 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.block_7 { + position: relative; + width: 475px; + height: 61px; + margin: 20px 0 0 48px; +} + +.text_51 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin-top: 21px; +} + +.image-text_39 { + width: 118px; + height: 59px; + margin: 2px 0 0 35px; +} + +.thumbnail_18 { + width: 20px; + height: 20px; + margin-top: 38px; +} + +.text-group_37 { + width: 84px; + height: 59px; +} + +.text_52 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_53 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 11px; +} + +.text-group_38 { + width: 200px; + height: 59px; + margin-left: 58px; +} + +.text_54 { + width: 172px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_55 { + width: 200px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 11px; +} + +.image-text_40 { + position: absolute; + left: 99px; + top: 2px; + width: 118px; + height: 59px; +} + +.thumbnail_19 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_39 { + width: 84px; + height: 59px; +} + +.text_52 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_53 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 11px; +} + +.group_15 { + background-color: rgba(251, 251, 255, 1); + width: 570px; + height: 61px; + margin-top: 20px; +} + +.text_56 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin: 19px 0 0 48px; +} + +.image-text_41 { + width: 90px; + height: 24px; + margin: 17px 333px 0 35px; +} + +.thumbnail_20 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_24 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_57 { + width: 139px; + height: 26px; + overflow-wrap: break-word; + color: rgba(255, 122, 0, 1); + font-size: 20px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: center; + white-space: nowrap; + line-height: 20px; + margin: 30px 0 0 215px; +} + +.text-wrapper_8 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 44px; + width: 230px; + margin: 20px 0 35px 170px; +} + +.text_58 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 13px 0 0 87px; +} + +.group_16 { + background-color: rgba(217, 217, 217, 0); + position: absolute; + left: 164px; + top: 602px; + width: 257px; + height: 61px; +} + +.box_4 { + position: absolute; + left: 0; + top: 1179px; + width: 1922px; + height: 302px; + background: url(img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png) + 100% no-repeat; + background-size: 100% 100%; +} + +.text_59 { + width: 480px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 30px; + margin: 96px 0 0 410px; +} + +.text-wrapper_9 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 44px; + width: 180px; + margin: 35px 0 87px 560px; +} + +.text_60 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 13px 0 0 62px; +} + +.section_3 { + background-color: rgba(255, 255, 255, 1); + width: 1280px; + height: 210px; + margin: -1px 0 46px 0; +} + +.image-text_42 { + width: 277px; + height: 129px; + margin: 35px 0 0 70px; +} + +.image_2 { + width: 167px; + height: 55px; +} + +.text-group_25 { + width: 400px; + height: 64px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + line-height: 32px; + margin-top: 10px; +} + +.group_18 { + width: 682px; + height: 103px; + margin: 62px 390px 0 0; +} + +.text-wrapper_13 { + width: 572px; + height: 18px; + margin-left: 280px; +} + +.text_61 { + width: 28px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; +} + +.text_62 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_63 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_64 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_65 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_66 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_67 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.paragraph_1 { + width: 865px; + height: 65px; + overflow-wrap: break-word; + color: rgba(146, 151, 157, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + line-height: 28px; + margin-top: 20px; +} diff --git a/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/index2.css b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/index2.css new file mode 100644 index 0000000..03ed083 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/business/anquanweifuwu/index2.css @@ -0,0 +1,1889 @@ +.page { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 1920px; + height: 1808px; + overflow: hidden; + margin: 0 auto; +} + +.section_1 { + box-shadow: 0px 0px 6px 0px rgba(8, 15, 53, 0.3); + background-color: rgba(255, 255, 255, 1); + width: 1920px; + height: 70px; + justify-content: flex-center; +} + +.image_1 { + width: 118px; + height: 36px; + margin: 17px 0 0 390px; +} + +.text_1 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 32px; +} + +.text_2 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_3 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_4 { + width: 73px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 22px; +} + +.text_5 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_6 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_7 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.label_1 { + width: 24px; + height: 24px; + margin: 23px 0 0 114px; +} + +.text_8 { + width: 95px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin: 26px 0 0 8px; +} + +.text-wrapper_1 { + background-color: rgba(21, 170, 125, 1); + height: 70px; + width: 120px; + margin: 0 390px 0 20px; +} + +.text_9 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin: 26px 0 0 32px; +} + +.box_5 { + position: relative; + width: 1920px; + height: 1483px; +} + +.text-wrapper_2 { + width: 1920px; + height: 300px; + background: url(img/FigmaDDSSlicePNGc03eafe0f795cc82c14acfabf5aa7feb.png) + 100% no-repeat; + background-size: 100% 100%; +} + +.text_10 { + width: 693px; + height: 38px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 30px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 45px; + margin: 66px 0 0 390px; +} + +.text_11 { + width: 460px; + height: 30px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 20px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 36px; + margin: 14px 0 0 390px; +} + +.text_12 { + width: 628px; + height: 17px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 15px 0 0 390px; +} + +.text_13 { + width: 488px; + height: 17px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 12px 0 0 390px; +} + +.text_14 { + width: 552px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 12px 0 61px 390px; +} + +.text_15 { + width: 730px; + height: 26px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 50px 0 0 390px; +} + +.block_2 { + width: 955px; + height: 690px; + margin: 20px 0 397px 575px; +} + +.text_16 { + width: 96px; + height: 45px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 24px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: center; + white-space: nowrap; + line-height: 45px; + margin-top: 63px; +} + +.group_1 { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 570px; + height: 690px; +} + +.text-wrapper_3 { + background-color: rgba(21, 170, 125, 1); + border-radius: 0px 5px 0px 5px; + height: 80px; + width: 570px; +} + +.text_17 { + width: 80px; + height: 36px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 20px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: center; + white-space: nowrap; + line-height: 36px; + margin: 22px 0 0 240px; +} + +.box_6 { + width: 243px; + height: 24px; + margin: 20px 0 0 147px; +} + +.image-text_22 { + width: 118px; + height: 24px; +} + +.thumbnail_1 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_1 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_18 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.box_7 { + width: 342px; + height: 57px; + margin: 9px 0 0 48px; +} + +.text_19 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin-top: 18px; +} + +.block_3 { + width: 104px; + height: 57px; + margin-left: 35px; +} + +.image-text_23 { + width: 104px; + height: 24px; +} + +.thumbnail_2 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_2 { + width: 70px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.image-text_24 { + width: 104px; + height: 24px; + margin-top: 9px; +} + +.thumbnail_3 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_3 { + width: 70px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text-wrapper_11 { + width: 67px; + height: 57px; + margin-left: 72px; +} + +.text_20 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_21 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.box_8 { + width: 243px; + height: 24px; + margin: 9px 0 0 147px; +} + +.image-text_25 { + width: 118px; + height: 24px; +} + +.thumbnail_4 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_4 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_22 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.group_5 { + background-color: rgba(251, 251, 255, 1); + position: relative; + width: 570px; + height: 130px; + margin-top: 20px; +} + +.text_23 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin: 60px 0 0 48px; +} + +.image-text_26 { + width: 118px; + height: 90px; + margin: 20px 0 0 35px; +} + +.thumbnail_5 { + width: 20px; + height: 20px; + margin-top: 69px; +} + +.text-group_26 { + width: 84px; + height: 90px; +} + +.text_24 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_25 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_26 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text-group_27 { + width: 133px; + height: 90px; + margin: 20px 114px 0 58px; +} + +.text_27 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_28 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_29 { + width: 133px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.image-text_27 { + position: absolute; + left: 147px; + top: 20px; + width: 118px; + height: 90px; +} + +.thumbnail_6 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_28 { + width: 84px; + height: 90px; +} + +.text_24 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_25 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_26 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.image-text_28 { + position: absolute; + left: 147px; + top: 20px; + width: 118px; + height: 90px; +} + +.thumbnail_7 { + width: 20px; + height: 20px; + margin-top: 36px; +} + +.text-group_29 { + width: 84px; + height: 90px; +} + +.text_24 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_25 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_26 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.box_9 { + position: relative; + width: 475px; + height: 61px; + margin: 20px 0 0 48px; +} + +.text_30 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin-top: 21px; +} + +.image-text_29 { + width: 118px; + height: 59px; + margin: 2px 0 0 35px; +} + +.thumbnail_8 { + width: 20px; + height: 20px; + margin-top: 38px; +} + +.text-group_30 { + width: 84px; + height: 59px; +} + +.text_31 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_32 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 11px; +} + +.text-group_31 { + width: 200px; + height: 59px; + margin-left: 58px; +} + +.text_33 { + width: 172px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_34 { + width: 200px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 11px; +} + +.image-text_30 { + position: absolute; + left: 99px; + top: 2px; + width: 118px; + height: 59px; +} + +.thumbnail_9 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_32 { + width: 84px; + height: 59px; +} + +.text_31 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_32 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 11px; +} + +.group_7 { + background-color: rgba(251, 251, 255, 1); + width: 570px; + height: 61px; + margin-top: 20px; +} + +.text_35 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin: 19px 0 0 48px; +} + +.image-text_31 { + width: 90px; + height: 24px; + margin: 17px 333px 0 35px; +} + +.thumbnail_10 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_12 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_36 { + width: 127px; + height: 26px; + overflow-wrap: break-word; + color: rgba(255, 122, 0, 1); + font-size: 20px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: center; + white-space: nowrap; + line-height: 20px; + margin: 30px 0 0 221px; +} + +.text-wrapper_5 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 44px; + width: 230px; + margin: 20px 0 35px 170px; +} + +.text_37 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 13px 0 0 87px; +} + +.group_8 { + background-color: rgba(217, 217, 217, 0); + position: absolute; + left: 160px; + top: 602px; + width: 257px; + height: 61px; +} + +.box_3 { + background-color: rgba(255, 255, 255, 1); + position: absolute; + left: 390px; + top: 396px; + width: 570px; + height: 690px; +} + +.text-wrapper_6 { + background-color: rgba(0, 36, 25, 1); + border-radius: 5px 0px 5px 0px; + height: 80px; + width: 570px; +} + +.text_38 { + width: 80px; + height: 36px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 20px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: center; + white-space: nowrap; + line-height: 36px; + margin: 22px 0 0 240px; +} + +.block_4 { + width: 243px; + height: 24px; + margin: 20px 0 0 147px; +} + +.image-text_32 { + width: 118px; + height: 24px; +} + +.thumbnail_11 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_13 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_39 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.block_5 { + width: 342px; + height: 57px; + margin: 9px 0 0 48px; +} + +.text_40 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin-top: 18px; +} + +.group_17 { + width: 104px; + height: 57px; + margin-left: 35px; +} + +.image-text_33 { + width: 104px; + height: 24px; +} + +.thumbnail_12 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_14 { + width: 70px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.image-text_34 { + width: 104px; + height: 24px; + margin-top: 9px; +} + +.thumbnail_13 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_15 { + width: 70px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text-wrapper_12 { + width: 67px; + height: 57px; + margin-left: 72px; +} + +.text_41 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_42 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.block_6 { + width: 243px; + height: 24px; + margin: 9px 0 0 147px; +} + +.image-text_35 { + width: 118px; + height: 24px; +} + +.thumbnail_14 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_16 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_43 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.group_13 { + background-color: rgba(251, 251, 255, 1); + position: relative; + width: 570px; + height: 130px; + margin-top: 20px; +} + +.text_44 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin: 60px 0 0 48px; +} + +.image-text_36 { + width: 118px; + height: 90px; + margin: 20px 0 0 35px; +} + +.thumbnail_15 { + width: 20px; + height: 20px; + margin-top: 69px; +} + +.text-group_33 { + width: 84px; + height: 90px; +} + +.text_45 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_46 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_47 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text-group_34 { + width: 133px; + height: 90px; + margin: 20px 114px 0 58px; +} + +.text_48 { + width: 67px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_49 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_50 { + width: 133px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.image-text_37 { + position: absolute; + left: 147px; + top: 20px; + width: 118px; + height: 90px; +} + +.thumbnail_16 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_35 { + width: 84px; + height: 90px; +} + +.text_45 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_46 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_47 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.image-text_38 { + position: absolute; + left: 147px; + top: 20px; + width: 118px; + height: 90px; +} + +.thumbnail_17 { + width: 20px; + height: 20px; + margin-top: 36px; +} + +.text-group_36 { + width: 84px; + height: 90px; +} + +.text_45 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_46 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.text_47 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 9px; +} + +.block_7 { + position: relative; + width: 475px; + height: 61px; + margin: 20px 0 0 48px; +} + +.text_51 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin-top: 21px; +} + +.image-text_39 { + width: 118px; + height: 59px; + margin: 2px 0 0 35px; +} + +.thumbnail_18 { + width: 20px; + height: 20px; + margin-top: 38px; +} + +.text-group_37 { + width: 84px; + height: 59px; +} + +.text_52 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_53 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 11px; +} + +.text-group_38 { + width: 200px; + height: 59px; + margin-left: 58px; +} + +.text_54 { + width: 172px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_55 { + width: 200px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 11px; +} + +.image-text_40 { + position: absolute; + left: 99px; + top: 2px; + width: 118px; + height: 59px; +} + +.thumbnail_19 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_39 { + width: 84px; + height: 59px; +} + +.text_52 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_53 { + width: 84px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin-top: 11px; +} + +.group_15 { + background-color: rgba(251, 251, 255, 1); + width: 570px; + height: 61px; + margin-top: 20px; +} + +.text_56 { + width: 64px; + height: 21px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 16px; + margin: 19px 0 0 48px; +} + +.image-text_41 { + width: 90px; + height: 24px; + margin: 17px 333px 0 35px; +} + +.thumbnail_20 { + width: 20px; + height: 20px; + margin-top: 3px; +} + +.text-group_24 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; +} + +.text_57 { + width: 139px; + height: 26px; + overflow-wrap: break-word; + color: rgba(255, 122, 0, 1); + font-size: 20px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: center; + white-space: nowrap; + line-height: 20px; + margin: 30px 0 0 215px; +} + +.text-wrapper_8 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 44px; + width: 230px; + margin: 20px 0 35px 170px; +} + +.text_58 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 13px 0 0 87px; +} + +.group_16 { + background-color: rgba(217, 217, 217, 0); + position: absolute; + left: 164px; + top: 602px; + width: 257px; + height: 61px; +} + +.box_4 { + position: absolute; + left: 0; + top: 1179px; + width: 1922px; + height: 302px; + background: url(img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png) + 100% no-repeat; + background-size: 100% 100%; +} + +.text_59 { + width: 480px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 30px; + margin: 96px 0 0 410px; +} + +.text-wrapper_9 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 44px; + width: 180px; + margin: 35px 0 87px 560px; +} + +.text_60 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 13px 0 0 62px; +} + +.section_3 { + background-color: rgba(255, 255, 255, 1); + width: 1920px; + height: 210px; + margin: -1px 0 46px 0; +} + +.image-text_42 { + width: 277px; + height: 129px; + margin: 35px 0 0 390px; +} + +.image_2 { + width: 167px; + height: 55px; +} + +.text-group_25 { + width: 400px; + height: 64px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + line-height: 32px; + margin-top: 10px; +} + +.group_18 { + width: 682px; + height: 103px; + margin: 62px 390px 0 0; +} + +.text-wrapper_13 { + width: 572px; + height: 18px; + margin-left: 280px; +} + +.text_61 { + width: 28px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; +} + +.text_62 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_63 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_64 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_65 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_66 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_67 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.paragraph_1 { + width: 865px; + height: 65px; + overflow-wrap: break-word; + color: rgba(146, 151, 157, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + line-height: 28px; + margin-top: 20px; +} diff --git a/ksafepack-admin/src/main/resources/static/business/app/http-vue-loader.js b/ksafepack-admin/src/main/resources/static/business/app/http-vue-loader.js new file mode 100644 index 0000000..9bb2d9f --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/business/app/http-vue-loader.js @@ -0,0 +1,478 @@ +(function umd(root,factory){ + if(typeof module==='object' && typeof exports === 'object' ) + module.exports=factory() + else if(typeof define==='function' && define.amd) + define([],factory) + else + root.httpVueLoader=factory() +})(this,function factory() { + 'use strict'; + + var scopeIndex = 0; + + StyleContext.prototype = { + + withBase: function(callback) { + + var tmpBaseElt; + if ( this.component.baseURI ) { + + // firefox and chrome need the to be set while inserting or modifying "].join("")),u=o.find("body");c.append(s),u.attr("contenteditable","true").css({"min-height":a.height}).html(i.value||""),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e("#LAY_layedit_"+t),a=i.prop("contentWindow");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on("keydown",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if("pre"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg("请暂时用shift+enter"),!1}r.execCommand("formatBlock",!1,"

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

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

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

    ','
  • ','','
    ','',"
    ","
  • ",'
  • ','','
    ','",'","
    ","
  • ",'
  • ','','',"
  • ","
"].join(""),success:function(t,n){var o="submit(layedit-link-yes)";a.render("radio"),t.find(".layui-btn-primary").on("click",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+"images/face/"+t+".gif"}),e}();return x.hide=x.hide||function(t){"face"!==e(t.target).attr("layedit-event")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('
  • '+e+'
  • ')}),'
      '+t.join("")+"
    "}(),this,{tips:1,time:0,skin:"layui-box layui-util-face",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(".layui-clear>li").on("click",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off("click",x.hide).on("click",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:"LAY_layedit_code",area:"550px",shade:.05,shadeClose:!0,moveType:1,title:"插入代码",skin:"layui-layer-msg",content:['
      ','
    • ','','
      ','","
      ","
    • ",'
    • ','','
      ','',"
      ","
    • ",'
    • ','','',"
    • ","
    "].join(""),success:function(l,n){var o="submit(layedit-code-yes)";a.render("select"),l.find(".layui-btn-primary").on("click",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'',strong:'',italic:'',underline:'',del:'',"|":'',left:'',center:'',right:'',link:'',unlink:'',face:'',image:'',code:'',help:''},w=new c;t(n,w)}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/layer.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/layer.js new file mode 100644 index 0000000..bc81661 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/layer.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if("interactive"===t[n].readyState){e=t[n].src;break}return e||t[i].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(o.getStyle(document.getElementById(f),"width"))?i():setTimeout(u,100))}()}}},r={v:"3.1.1",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("theme/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim-00","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'
    '+(f?r.title[0]:r.title)+"
    ":"";return r.zIndex=s,t([r.shade?'
    ':"",'
    '+(e&&2!=r.type?"":u)+'
    '+(0==r.type&&r.icon!==-1?'':"")+(1==r.type&&e?"":r.content||"")+'
    '+function(){var e=c?'':"";return r.closeBtn&&(e+=''),e}()+""+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t'+r.btn[t]+"";return'
    '+e+"
    "}():"")+(r.resize?'':"")+"
    "],u,i('
    ')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),i("#layui-layer-shade"+e.index).css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("isOutAnim")&&t.addClass("layer-anim "+a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),r.ie&&r.ie<10||!t.data("isOutAnim")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(t){s=t.find(".layui-layer-input"),s.val(e.value||"").focus(),"function"==typeof f&&f(t)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+"";i"+t[i].title+"";return a}(),content:'
      '+function(){var e=t.length,i=1,a="";if(e>0)for(a='
    • '+(t[0].content||"no content")+"
    • ";i'+(t[i].content||"no content")+"";return a}()+"
    ",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||
    '+(u.length>1?'':"")+'
    '+(u[d].alt||"")+""+s.imgIndex+"/"+u.length+"
    ",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
    是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/laypage.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/laypage.js new file mode 100644 index 0000000..478c11f --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/laypage.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push(''+(a.first||1)+"");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r2&&e.push('');r<=u;r++)r===a.curr?e.push('"+r+""):e.push(''+r+"");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1…'),0!==t&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'共 '+a.count+" 条",limit:function(){var e=['"}(),refresh:['','',""].join(""),skip:function(){return['到第','','页',""].join("")}()};return['
    ',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"
    "].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;oi.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/laytpl.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/laytpl.js new file mode 100644 index 0000000..dd0d567 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/laytpl.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/mobile.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/mobile.js new file mode 100644 index 0000000..bd2fe1b --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/mobile.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define(function(i){i("layui.mobile",layui.v)});layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});layui.define(function(e){"use strict";var t=(window,document),i="querySelectorAll",n="getElementsByClassName",a=function(e){return t[i](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var i in e)t[i]=e[i];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var o=0,r=["layui-m-layer"],d=function(e){var t=this;t.config=l.extend(e),t.view()};d.prototype.view=function(){var e=this,i=e.config,s=t.createElement("div");e.id=s.id=r[0]+o,s.setAttribute("class",r[0]+" "+r[0]+(i.type||0)),s.setAttribute("index",o);var l=function(){var e="object"==typeof i.title;return i.title?'

    '+(e?i.title[0]:i.title)+"

    ":""}(),d=function(){"string"==typeof i.btn&&(i.btn=[i.btn]);var e,t=(i.btn||[]).length;return 0!==t&&i.btn?(e=''+i.btn[0]+"",2===t&&(e=''+i.btn[1]+""+e),'
    '+e+"
    "):""}();if(i.fixed||(i.top=i.hasOwnProperty("top")?i.top:100,i.style=i.style||"",i.style+=" top:"+(t.body.scrollTop+i.top)+"px"),2===i.type&&(i.content='

    '+(i.content||"")+"

    "),i.skin&&(i.anim="up"),"msg"===i.skin&&(i.shade=!1),s.innerHTML=(i.shade?"
    ':"")+'
    "+l+'
    '+i.content+"
    "+d+"
    ",!i.type||2===i.type){var y=t[n](r[0]+i.type),u=y.length;u>=1&&c.close(y[0].getAttribute("index"))}document.body.appendChild(s);var m=e.elem=a("#"+e.id)[0];i.success&&i.success(m),e.index=o++,e.action(i,m)},d.prototype.action=function(e,t){var i=this;e.time&&(l.timer[i.index]=setTimeout(function(){c.close(i.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),c.close(i.index)):e.yes?e.yes(i.index):c.close(i.index)};if(e.btn)for(var s=t[n]("layui-m-layerbtn")[0].children,o=s.length,r=0;r0&&e-1 in t)}function s(t){return A.call(t,function(t){return null!=t})}function u(t){return t.length>0?T.fn.concat.apply([],t):t}function c(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function l(t){return t in F?F[t]:F[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function f(t,e){return"number"!=typeof e||k[c(t)]?e:e+"px"}function h(t){var e,n;return $[t]||(e=L.createElement(t),L.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),$[t]=n),$[t]}function p(t){return"children"in t?D.call(t.children):T.map(t.childNodes,function(t){if(1==t.nodeType)return t})}function d(t,e){var n,r=t?t.length:0;for(n=0;n]*>/,R=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Z=/^(?:body|html)$/i,q=/([A-Z])/g,H=["val","css","html","text","data","width","height","offset"],I=["after","prepend","before","append"],V=L.createElement("table"),_=L.createElement("tr"),B={tr:L.createElement("tbody"),tbody:V,thead:V,tfoot:V,td:_,th:_,"*":L.createElement("div")},U=/complete|loaded|interactive/,X=/^[\w-]*$/,J={},W=J.toString,Y={},G=L.createElement("div"),K={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},Q=Array.isArray||function(t){return t instanceof Array};return Y.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=G).appendChild(t),r=~Y.qsa(i,e).indexOf(t),o&&G.removeChild(t),r},C=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},N=function(t){return A.call(t,function(e,n){return t.indexOf(e)==n})},Y.fragment=function(t,e,n){var r,i,a;return R.test(t)&&(r=T(L.createElement(RegExp.$1))),r||(t.replace&&(t=t.replace(z,"<$1>")),e===E&&(e=M.test(t)&&RegExp.$1),e in B||(e="*"),a=B[e],a.innerHTML=""+t,r=T.each(D.call(a.childNodes),function(){a.removeChild(this)})),o(n)&&(i=T(r),T.each(n,function(t,e){H.indexOf(t)>-1?i[t](e):i.attr(t,e)})),r},Y.Z=function(t,e){return new d(t,e)},Y.isZ=function(t){return t instanceof Y.Z},Y.init=function(t,n){var r;if(!t)return Y.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&M.test(t))r=Y.fragment(t,RegExp.$1,n),t=null;else{if(n!==E)return T(n).find(t);r=Y.qsa(L,t)}else{if(e(t))return T(L).ready(t);if(Y.isZ(t))return t;if(Q(t))r=s(t);else if(i(t))r=[t],t=null;else if(M.test(t))r=Y.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==E)return T(n).find(t);r=Y.qsa(L,t)}}return Y.Z(r,t)},T=function(t,e){return Y.init(t,e)},T.extend=function(t){var e,n=D.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){m(t,n,e)}),t},Y.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,a=X.test(o);return t.getElementById&&a&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:D.call(a&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},T.contains=L.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},T.type=t,T.isFunction=e,T.isWindow=n,T.isArray=Q,T.isPlainObject=o,T.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},T.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},T.inArray=function(t,e,n){return O.indexOf.call(e,t,n)},T.camelCase=C,T.trim=function(t){return null==t?"":String.prototype.trim.call(t)},T.uuid=0,T.support={},T.expr={},T.noop=function(){},T.map=function(t,e){var n,r,i,o=[];if(a(t))for(r=0;r=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return O.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return e(t)?this.not(this.not(t)):T(A.call(this,function(e){return Y.matches(e,t)}))},add:function(t,e){return T(N(this.concat(T(t,e))))},is:function(t){return this.length>0&&Y.matches(this[0],t)},not:function(t){var n=[];if(e(t)&&t.call!==E)this.each(function(e){t.call(this,e)||n.push(this)});else{var r="string"==typeof t?this.filter(t):a(t)&&e(t.item)?D.call(t):T(t);this.forEach(function(t){r.indexOf(t)<0&&n.push(t)})}return T(n)},has:function(t){return this.filter(function(){return i(t)?T.contains(this,t):T(this).find(t).size()})},eq:function(t){return t===-1?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!i(t)?t:T(t)},last:function(){var t=this[this.length-1];return t&&!i(t)?t:T(t)},find:function(t){var e,n=this;return e=t?"object"==typeof t?T(t).filter(function(){var t=this;return O.some.call(n,function(e){return T.contains(e,t)})}):1==this.length?T(Y.qsa(this[0],t)):this.map(function(){return Y.qsa(this,t)}):T()},closest:function(t,e){var n=[],i="object"==typeof t&&T(t);return this.each(function(o,a){for(;a&&!(i?i.indexOf(a)>=0:Y.matches(a,t));)a=a!==e&&!r(a)&&a.parentNode;a&&n.indexOf(a)<0&&n.push(a)}),T(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=T.map(n,function(t){if((t=t.parentNode)&&!r(t)&&e.indexOf(t)<0)return e.push(t),t});return v(e,t)},parent:function(t){return v(N(this.pluck("parentNode")),t)},children:function(t){return v(this.map(function(){return p(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||D.call(this.childNodes)})},siblings:function(t){return v(this.map(function(t,e){return A.call(p(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return T.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=h(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var n=e(t);if(this[0]&&!n)var r=T(t).get(0),i=r.parentNode||this.length>1;return this.each(function(e){T(this).wrapAll(n?t.call(this,e):i?r.cloneNode(!0):r)})},wrapAll:function(t){if(this[0]){T(this[0]).before(t=T(t));for(var e;(e=t.children()).length;)t=e.first();T(t).append(this)}return this},wrapInner:function(t){var n=e(t);return this.each(function(e){var r=T(this),i=r.contents(),o=n?t.call(this,e):t;i.length?i.wrapAll(o):r.append(o)})},unwrap:function(){return this.parent().each(function(){T(this).replaceWith(T(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var e=T(this);(t===E?"none"==e.css("display"):t)?e.show():e.hide()})},prev:function(t){return T(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return T(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;T(this).empty().append(g(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=g(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,e){var n;return"string"!=typeof t||1 in arguments?this.each(function(n){if(1===this.nodeType)if(i(t))for(j in t)y(this,j,t[j]);else y(this,t,g(this,e,n,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(n=this[0].getAttribute(t))?n:E},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){y(this,t)},this)})},prop:function(t,e){return t=K[t]||t,1 in arguments?this.each(function(n){this[t]=g(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=K[t]||t,this.each(function(){delete this[t]})},data:function(t,e){var n="data-"+t.replace(q,"-$1").toLowerCase(),r=1 in arguments?this.attr(n,e):this.attr(n);return null!==r?b(r):E},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each(function(e){this.value=g(this,t,e,this.value)})):this[0]&&(this[0].multiple?T(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var n=T(this),r=g(this,t,e,n.offset()),i=n.offsetParent().offset(),o={top:r.top-i.top,left:r.left-i.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)});if(!this.length)return null;if(L.documentElement!==this[0]&&!T.contains(L.documentElement,this[0]))return{top:0,left:0};var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(e,n){if(arguments.length<2){var r=this[0];if("string"==typeof e){if(!r)return;return r.style[C(e)]||getComputedStyle(r,"").getPropertyValue(e)}if(Q(e)){if(!r)return;var i={},o=getComputedStyle(r,"");return T.each(e,function(t,e){i[e]=r.style[C(e)]||o.getPropertyValue(e)}),i}}var a="";if("string"==t(e))n||0===n?a=c(e)+":"+f(e,n):this.each(function(){this.style.removeProperty(c(e))});else for(j in e)e[j]||0===e[j]?a+=c(j)+":"+f(j,e[j])+";":this.each(function(){this.style.removeProperty(c(j))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(T(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&O.some.call(this,function(t){return this.test(x(t))},l(t))},addClass:function(t){return t?this.each(function(e){if("className"in this){S=[];var n=x(this),r=g(this,t,e,n);r.split(/\s+/g).forEach(function(t){T(this).hasClass(t)||S.push(t)},this),S.length&&x(this,n+(n?" ":"")+S.join(" "))}}):this},removeClass:function(t){return this.each(function(e){if("className"in this){if(t===E)return x(this,"");S=x(this),g(this,t,e,S).split(/\s+/g).forEach(function(t){S=S.replace(l(t)," ")}),x(this,S.trim())}})},toggleClass:function(t,e){return t?this.each(function(n){var r=T(this),i=g(this,t,n,x(this));i.split(/\s+/g).forEach(function(t){(e===E?!r.hasClass(t):e)?r.addClass(t):r.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var e="scrollTop"in this[0];return t===E?e?this[0].scrollTop:this[0].pageYOffset:this.each(e?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var e="scrollLeft"in this[0];return t===E?e?this[0].scrollLeft:this[0].pageXOffset:this.each(e?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),r=Z.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(T(t).css("margin-top"))||0,n.left-=parseFloat(T(t).css("margin-left"))||0,r.top+=parseFloat(T(e[0]).css("border-top-width"))||0,r.left+=parseFloat(T(e[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||L.body;t&&!Z.test(t.nodeName)&&"static"==T(t).css("position");)t=t.offsetParent;return t})}},T.fn.detach=T.fn.remove,["width","height"].forEach(function(t){var e=t.replace(/./,function(t){return t[0].toUpperCase()});T.fn[t]=function(i){var o,a=this[0];return i===E?n(a)?a["inner"+e]:r(a)?a.documentElement["scroll"+e]:(o=this.offset())&&o[t]:this.each(function(e){a=T(this),a.css(t,g(this,i,e,a[t]()))})}}),I.forEach(function(e,n){var r=n%2;T.fn[e]=function(){var e,i,o=T.map(arguments,function(n){var r=[];return e=t(n),"array"==e?(n.forEach(function(t){return t.nodeType!==E?r.push(t):T.zepto.isZ(t)?r=r.concat(t.get()):void(r=r.concat(Y.fragment(t)))}),r):"object"==e||null==n?n:Y.fragment(n)}),a=this.length>1;return o.length<1?this:this.each(function(t,e){i=r?e:e.parentNode,e=0==n?e.nextSibling:1==n?e.firstChild:2==n?e:null;var s=T.contains(L.documentElement,i);o.forEach(function(t){if(a)t=t.cloneNode(!0);else if(!i)return T(t).remove();i.insertBefore(t,e),s&&w(t,function(t){if(!(null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src)){var e=t.ownerDocument?t.ownerDocument.defaultView:window;e.eval.call(e,t.innerHTML)}})})})},T.fn[r?e+"To":"insert"+(n?"Before":"After")]=function(t){return T(t)[e](this),this}}),Y.Z.prototype=d.prototype=T.fn,Y.uniq=N,Y.deserializeValue=b,T.zepto=Y,T}();!function(t){function e(t){return t._zid||(t._zid=h++)}function n(t,n,o,a){if(n=r(n),n.ns)var s=i(n.ns);return(v[e(t)]||[]).filter(function(t){return t&&(!n.e||t.e==n.e)&&(!n.ns||s.test(t.ns))&&(!o||e(t.fn)===e(o))&&(!a||t.sel==a)})}function r(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function i(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function o(t,e){return t.del&&!y&&t.e in x||!!e}function a(t){return b[t]||y&&x[t]||t}function s(n,i,s,u,l,h,p){var d=e(n),m=v[d]||(v[d]=[]);i.split(/\s/).forEach(function(e){if("ready"==e)return t(document).ready(s);var i=r(e);i.fn=s,i.sel=l,i.e in b&&(s=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return i.fn.apply(this,arguments)}),i.del=h;var d=h||s;i.proxy=function(t){if(t=c(t),!t.isImmediatePropagationStopped()){t.data=u;var e=d.apply(n,t._args==f?[t]:[t].concat(t._args));return e===!1&&(t.preventDefault(),t.stopPropagation()),e}},i.i=m.length,m.push(i),"addEventListener"in n&&n.addEventListener(a(i.e),i.proxy,o(i,p))})}function u(t,r,i,s,u){var c=e(t);(r||"").split(/\s/).forEach(function(e){n(t,e,i,s).forEach(function(e){delete v[c][e.i],"removeEventListener"in t&&t.removeEventListener(a(e.e),e.proxy,o(e,u))})})}function c(e,n){return!n&&e.isDefaultPrevented||(n||(n=e),t.each(T,function(t,r){var i=n[t];e[t]=function(){return this[r]=w,i&&i.apply(n,arguments)},e[r]=E}),e.timeStamp||(e.timeStamp=Date.now()),(n.defaultPrevented!==f?n.defaultPrevented:"returnValue"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(e.isDefaultPrevented=w)),e}function l(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===f||(n[e]=t[e]);return c(n,t)}var f,h=1,p=Array.prototype.slice,d=t.isFunction,m=function(t){return"string"==typeof t},v={},g={},y="onfocusin"in window,x={focus:"focusin",blur:"focusout"},b={mouseenter:"mouseover",mouseleave:"mouseout"};g.click=g.mousedown=g.mouseup=g.mousemove="MouseEvents",t.event={add:s,remove:u},t.proxy=function(n,r){var i=2 in arguments&&p.call(arguments,2);if(d(n)){var o=function(){return n.apply(r,i?i.concat(p.call(arguments)):arguments)};return o._zid=e(n),o}if(m(r))return i?(i.unshift(n[r],n),t.proxy.apply(null,i)):t.proxy(n[r],n);throw new TypeError("expected function")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var w=function(){return!0},E=function(){return!1},j=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,T={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,n,r,i,o){var a,c,h=this;return e&&!m(e)?(t.each(e,function(t,e){h.on(t,n,r,e,o)}),h):(m(n)||d(i)||i===!1||(i=r,r=n,n=f),i!==f&&r!==!1||(i=r,r=f),i===!1&&(i=E),h.each(function(f,h){o&&(a=function(t){return u(h,t.type,i),i.apply(this,arguments)}),n&&(c=function(e){var r,o=t(e.target).closest(n,h).get(0);if(o&&o!==h)return r=t.extend(l(e),{currentTarget:o,liveFired:h}),(a||i).apply(o,[r].concat(p.call(arguments,1)))}),s(h,e,i,r,n,c||a)}))},t.fn.off=function(e,n,r){var i=this;return e&&!m(e)?(t.each(e,function(t,e){i.off(t,n,e)}),i):(m(n)||d(r)||r===!1||(r=n,n=f),r===!1&&(r=E),i.each(function(){u(this,e,r,n)}))},t.fn.trigger=function(e,n){return e=m(e)||t.isPlainObject(e)?t.Event(e):c(e),e._args=n,this.each(function(){e.type in x&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,r){var i,o;return this.each(function(a,s){i=l(m(e)?t.Event(e):e),i._args=r,i.target=s,t.each(n(s,e.type||e),function(t,e){if(o=e.proxy(i),i.isImmediatePropagationStopped())return!1})}),o},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(t,e){m(t)||(e=t,t=e.type);var n=document.createEvent(g[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),c(n)}}(e),function(t){function e(e,n,r){var i=t.Event(n);return t(e).trigger(i,r),!i.isDefaultPrevented()}function n(t,n,r,i){if(t.global)return e(n||x,r,i)}function r(e){e.global&&0===t.active++&&n(e,null,"ajaxStart")}function i(e){e.global&&!--t.active&&n(e,null,"ajaxStop")}function o(t,e){var r=e.context;return e.beforeSend.call(r,t,e)!==!1&&n(e,r,"ajaxBeforeSend",[t,e])!==!1&&void n(e,r,"ajaxSend",[t,e])}function a(t,e,r,i){var o=r.context,a="success";r.success.call(o,t,a,e),i&&i.resolveWith(o,[t,a,e]),n(r,o,"ajaxSuccess",[e,r,t]),u(a,e,r)}function s(t,e,r,i,o){var a=i.context;i.error.call(a,r,e,t),o&&o.rejectWith(a,[r,e,t]),n(i,a,"ajaxError",[r,i,t||e]),u(e,r,i)}function u(t,e,r){var o=r.context;r.complete.call(o,e,t),n(r,o,"ajaxComplete",[e,r]),i(r)}function c(t,e,n){if(n.dataFilter==l)return t;var r=n.context;return n.dataFilter.call(r,t,e)}function l(){}function f(t){return t&&(t=t.split(";",2)[0]),t&&(t==T?"html":t==j?"json":w.test(t)?"script":E.test(t)&&"xml")||"text"}function h(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function p(e){e.processData&&e.data&&"string"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&"GET"!=e.type.toUpperCase()&&"jsonp"!=e.dataType||(e.url=h(e.url,e.data),e.data=void 0)}function d(e,n,r,i){return t.isFunction(n)&&(i=r,r=n,n=void 0),t.isFunction(r)||(i=r,r=void 0),{url:e,data:n,success:r,dataType:i}}function m(e,n,r,i){var o,a=t.isArray(n),s=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),i&&(n=r?i:i+"["+(s||"object"==o||"array"==o?n:"")+"]"),!i&&a?e.add(u.name,u.value):"array"==o||!r&&"object"==o?m(e,u,r,n):e.add(n,u)})}var v,g,y=+new Date,x=window.document,b=/)<[^<]*)*<\/script>/gi,w=/^(?:text|application)\/javascript/i,E=/^(?:text|application)\/xml/i,j="application/json",T="text/html",S=/^\s*$/,C=x.createElement("a");C.href=window.location.href,t.active=0,t.ajaxJSONP=function(e,n){if(!("type"in e))return t.ajax(e);var r,i,u=e.jsonpCallback,c=(t.isFunction(u)?u():u)||"Zepto"+y++,l=x.createElement("script"),f=window[c],h=function(e){t(l).triggerHandler("error",e||"abort")},p={abort:h};return n&&n.promise(p),t(l).on("load error",function(o,u){clearTimeout(i),t(l).off().remove(),"error"!=o.type&&r?a(r[0],p,e,n):s(null,u||"error",p,e,n),window[c]=f,r&&t.isFunction(f)&&f(r[0]),f=r=void 0}),o(p,e)===!1?(h("abort"),p):(window[c]=function(){r=arguments},l.src=e.url.replace(/\?(.+)=\?/,"?$1="+c),x.head.appendChild(l),e.timeout>0&&(i=setTimeout(function(){h("timeout")},e.timeout)),p)},t.ajaxSettings={type:"GET",beforeSend:l,success:l,error:l,complete:l,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:j,xml:"application/xml, text/xml",html:T,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:l},t.ajax=function(e){var n,i,u=t.extend({},e||{}),d=t.Deferred&&t.Deferred();for(v in t.ajaxSettings)void 0===u[v]&&(u[v]=t.ajaxSettings[v]);r(u),u.crossDomain||(n=x.createElement("a"),n.href=u.url,n.href=n.href,u.crossDomain=C.protocol+"//"+C.host!=n.protocol+"//"+n.host),u.url||(u.url=window.location.toString()),(i=u.url.indexOf("#"))>-1&&(u.url=u.url.slice(0,i)),p(u);var m=u.dataType,y=/\?.+=\?/.test(u.url);if(y&&(m="jsonp"),u.cache!==!1&&(e&&e.cache===!0||"script"!=m&&"jsonp"!=m)||(u.url=h(u.url,"_="+Date.now())),"jsonp"==m)return y||(u.url=h(u.url,u.jsonp?u.jsonp+"=?":u.jsonp===!1?"":"callback=?")),t.ajaxJSONP(u,d);var b,w=u.accepts[m],E={},j=function(t,e){E[t.toLowerCase()]=[t,e]},T=/^([\w-]+:)\/\//.test(u.url)?RegExp.$1:window.location.protocol,N=u.xhr(),O=N.setRequestHeader;if(d&&d.promise(N),u.crossDomain||j("X-Requested-With","XMLHttpRequest"),j("Accept",w||"*/*"),(w=u.mimeType||w)&&(w.indexOf(",")>-1&&(w=w.split(",",2)[0]),N.overrideMimeType&&N.overrideMimeType(w)),(u.contentType||u.contentType!==!1&&u.data&&"GET"!=u.type.toUpperCase())&&j("Content-Type",u.contentType||"application/x-www-form-urlencoded"),u.headers)for(g in u.headers)j(g,u.headers[g]);if(N.setRequestHeader=j,N.onreadystatechange=function(){if(4==N.readyState){N.onreadystatechange=l,clearTimeout(b);var e,n=!1;if(N.status>=200&&N.status<300||304==N.status||0==N.status&&"file:"==T){if(m=m||f(u.mimeType||N.getResponseHeader("content-type")),"arraybuffer"==N.responseType||"blob"==N.responseType)e=N.response;else{e=N.responseText;try{e=c(e,m,u),"script"==m?(0,eval)(e):"xml"==m?e=N.responseXML:"json"==m&&(e=S.test(e)?null:t.parseJSON(e))}catch(r){n=r}if(n)return s(n,"parsererror",N,u,d)}a(e,N,u,d)}else s(N.statusText||null,N.status?"error":"abort",N,u,d)}},o(N,u)===!1)return N.abort(),s(null,"abort",N,u,d),N;var P=!("async"in u)||u.async;if(N.open(u.type,u.url,P,u.username,u.password),u.xhrFields)for(g in u.xhrFields)N[g]=u.xhrFields[g];for(g in E)O.apply(N,E[g]);return u.timeout>0&&(b=setTimeout(function(){N.onreadystatechange=l,N.abort(),s(null,"timeout",N,u,d)},u.timeout)),N.send(u.data?u.data:null),N},t.get=function(){return t.ajax(d.apply(null,arguments))},t.post=function(){var e=d.apply(null,arguments);return e.type="POST",t.ajax(e)},t.getJSON=function(){var e=d.apply(null,arguments);return e.dataType="json",t.ajax(e)},t.fn.load=function(e,n,r){if(!this.length)return this;var i,o=this,a=e.split(/\s/),s=d(e,n,r),u=s.success;return a.length>1&&(s.url=a[0],i=a[1]),s.success=function(e){o.html(i?t("
    ").html(e.replace(b,"")).find(i):e),u&&u.apply(o,arguments)},t.ajax(s),this};var N=encodeURIComponent;t.param=function(e,n){var r=[];return r.add=function(e,n){t.isFunction(n)&&(n=n()),null==n&&(n=""),this.push(N(e)+"="+N(n))},m(r,e,n),r.join("&").replace(/%20/g,"+")}}(e),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&"fieldset"!=o.nodeName.toLowerCase()&&!o.disabled&&"submit"!=n&&"reset"!=n&&"button"!=n&&"file"!=n&&("radio"!=n&&"checkbox"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(0 in arguments)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(e),function(){try{getComputedStyle(void 0)}catch(t){var e=getComputedStyle;window.getComputedStyle=function(t,n){try{return e(t,n)}catch(r){return null}}}}(),t("zepto",e)});layui.define(function(i){i("layim-mobile",layui.v)});layui["layui.mobile"]||layui.config({base:layui.cache.dir+"lay/modules/mobile/"}).extend({"layer-mobile":"layer-mobile",zepto:"zepto","upload-mobile":"upload-mobile","layim-mobile":"layim-mobile"}),layui.define(["layer-mobile","zepto","layim-mobile"],function(l){l("mobile",{layer:layui["layer-mobile"],layim:layui["layim-mobile"]})}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/rate.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/rate.js new file mode 100644 index 0000000..bcc103f --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/rate.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("jquery",function(e){"use strict";var a=layui.jquery,i={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,a){return layui.onevent.call(this,n,e,a)}},l=function(){var e=this,a=e.config;return{setvalue:function(a){e.setvalue.call(e,a)},config:a}},n="rate",t="layui-rate",o="layui-icon-rate",s="layui-icon-rate-solid",u="layui-icon-rate-half",r="layui-icon-rate-solid layui-icon-rate-half",c="layui-icon-rate-solid layui-icon-rate",f="layui-icon-rate layui-icon-rate-half",v=function(e){var l=this;l.index=++i.index,l.config=a.extend({},l.config,i.config,e),l.render()};v.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},v.prototype.render=function(){var e=this,i=e.config,l=i.theme?'style="color: '+i.theme+';"':"";i.elem=a(i.elem),parseInt(i.value)!==i.value&&(i.half||(i.value=Math.ceil(i.value)-i.value<.5?Math.ceil(i.value):Math.floor(i.value)));for(var n='
      ",u=1;u<=i.length;u++){var r='
    • ";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'
    • ":n+=r}n+="
    "+(i.text?''+i.value+"星":"")+"";var c=i.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next("span"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass("layui-inline"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find("i").width();l.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next("span").text(i.value+"星"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on("mousemove",function(e){if(l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+t+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(u).removeClass(s)}}),v.on("mouseleave",function(){l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+Math.floor(i.value)+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/slider.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/slider.js new file mode 100644 index 0000000..c39707d --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/slider.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("jquery",function(e){"use strict";var i=layui.jquery,t={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,n,e,i)}},a=function(){var e=this,i=e.config;return{setValue:function(i,t){return e.slide("set",i,t||0)},config:i}},n="slider",l="layui-disabled",s="layui-slider",r="layui-slider-bar",o="layui-slider-wrap",u="layui-slider-wrap-btn",d="layui-slider-tips",v="layui-slider-input",c="layui-slider-input-txt",m="layui-slider-input-btn",p="layui-slider-hover",f=function(e){var a=this;a.index=++t.index,a.config=i.extend({},a.config,t.config,e),a.render()};f.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#009688"},f.prototype.render=function(){var e=this,t=e.config;if(t.step<1&&(t.step=1),t.maxt.min?a:t.min,t.value[1]=n>t.min?n:t.min,t.value[0]=t.value[0]>t.max?t.max:t.value[0],t.value[1]=t.value[1]>t.max?t.max:t.value[1];var r=Math.floor((t.value[0]-t.min)/(t.max-t.min)*100),v=Math.floor((t.value[1]-t.min)/(t.max-t.min)*100),m=v-r+"%";r+="%",v+="%"}else{"object"==typeof t.value&&(t.value=Math.min.apply(null,t.value)),t.valuet.max&&(t.value=t.max);var m=Math.floor((t.value-t.min)/(t.max-t.min)*100)+"%"}var p=t.disabled?"#c2c2c2":t.theme,f='
    '+(t.tips?'
    ':"")+'
    '+(t.range?'
    ':"")+"
    ",h=i(t.elem),y=h.next("."+s);if(y[0]&&y.remove(),e.elemTemp=i(f),t.range?(e.elemTemp.find("."+o).eq(0).data("value",t.value[0]),e.elemTemp.find("."+o).eq(1).data("value",t.value[1])):e.elemTemp.find("."+o).data("value",t.value),h.html(e.elemTemp),"vertical"===t.type&&e.elemTemp.height(t.height+"px"),t.showstep){for(var g=(t.max-t.min)/t.step,b="",x=1;x
    ')}e.elemTemp.append(b)}if(t.input&&!t.range){var w=i('
    ');h.css("position","relative"),h.append(w),h.find("."+c).children("input").val(t.value),"vertical"===t.type?w.css({left:0,top:-48}):e.elemTemp.css("margin-right",w.outerWidth()+15)}t.disabled?(e.elemTemp.addClass(l),e.elemTemp.find("."+u).addClass(l)):e.slide(),e.elemTemp.find("."+u).on("mouseover",function(){var a="vertical"===t.type?t.height:e.elemTemp[0].offsetWidth,n=e.elemTemp.find("."+o),l="vertical"===t.type?a-i(this).parent()[0].offsetTop-n.height():i(this).parent()[0].offsetLeft,s=l/a*100,r=i(this).parent().data("value"),u=t.setTips?t.setTips(r):r;e.elemTemp.find("."+d).html(u),"vertical"===t.type?e.elemTemp.find("."+d).css({bottom:s+"%","margin-bottom":"20px",display:"inline-block"}):e.elemTemp.find("."+d).css({left:s+"%",display:"inline-block"})}).on("mouseout",function(){e.elemTemp.find("."+d).css("display","none")})},f.prototype.slide=function(e,t,a){var n=this,l=n.config,s=n.elemTemp,f=function(){return"vertical"===l.type?l.height:s[0].offsetWidth},h=s.find("."+o),y=s.next("."+v),g=y.children("."+c).children("input").val(),b=100/((l.max-l.min)/Math.ceil(l.step)),x=function(e,i){e=Math.ceil(e)*b>100?Math.ceil(e)*b:Math.round(e)*b,e=e>100?100:e,h.eq(i).css("vertical"===l.type?"bottom":"left",e+"%");var t=T(h[0].offsetLeft),a=l.range?T(h[1].offsetLeft):0;"vertical"===l.type?(s.find("."+d).css({bottom:e+"%","margin-bottom":"20px"}),t=T(f()-h[0].offsetTop-h.height()),a=l.range?T(f()-h[1].offsetTop-h.height()):0):s.find("."+d).css("left",e+"%"),t=t>100?100:t,a=a>100?100:a;var n=Math.min(t,a),o=Math.abs(t-a);"vertical"===l.type?s.find("."+r).css({height:o+"%",bottom:n+"%"}):s.find("."+r).css({width:o+"%",left:n+"%"});var u=l.min+Math.round((l.max-l.min)*e/100);if(g=u,y.children("."+c).children("input").val(g),h.eq(i).data("value",u),u=l.setTips?l.setTips(u):u,s.find("."+d).html(u),l.range){var v=[h.eq(0).data("value"),h.eq(1).data("value")];v[0]>v[1]&&v.reverse()}l.change&&l.change(l.range?v:u)},T=function(e){var i=e/f()*100/b,t=Math.round(i)*b;return e==f()&&(t=Math.ceil(i)*b),t},w=i(['
    f()&&(r=f());var o=r/f()*100/b;x(o,e),t.addClass(p),s.find("."+d).show(),i.preventDefault()},o=function(){t.removeClass(p),s.find("."+d).hide()};M(r,o)})}),s.on("click",function(e){var t=i("."+u);if(!t.is(event.target)&&0===t.has(event.target).length&&t.length){var a,n="vertical"===l.type?f()-e.clientY+i(this).offset().top:e.clientX-i(this).offset().left;n<0&&(n=0),n>f()&&(n=f());var s=n/f()*100/b;a=l.range?"vertical"===l.type?Math.abs(n-parseInt(i(h[0]).css("bottom")))>Math.abs(n-parseInt(i(h[1]).css("bottom")))?1:0:Math.abs(n-h[0].offsetLeft)>Math.abs(n-h[1].offsetLeft)?1:0:0,x(s,a),e.preventDefault()}}),y.hover(function(){var e=i(this);e.children("."+m).fadeIn("fast")},function(){var e=i(this);e.children("."+m).fadeOut("fast")}),y.children("."+m).children("i").each(function(e){i(this).on("click",function(){g=1==e?g-l.stepl.max?l.max:Number(g)+l.step;var i=(g-l.min)/(l.max-l.min)*100/b;x(i,0)})});var q=function(){var e=this.value;e=isNaN(e)?0:e,e=el.max?l.max:e,this.value=e;var i=(e-l.min)/(l.max-l.min)*100/b;x(i,0)};y.children("."+c).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),q.call(this))}).on("change",q)},f.prototype.events=function(){var e=this;e.config},t.render=function(e){var i=new f(e);return a.call(i)},e(n,t)}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/table.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/table.js new file mode 100644 index 0000000..51b697f --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/table.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define(["laytpl","laypage","layer","form","util"],function(e){"use strict";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=(layui.util,layui.hint()),r=layui.device(),d={config:{checkName:"LAY_CHECKED",indexName:"LAY_TABLE_INDEX"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,y,e,t)}},c=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(c.that[i]=e,c.config[i]=t),{config:t,reload:function(t){e.reload.call(e,t)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)}}},s=function(e){var t=c.config[e];return t||o.error("The ID option was not found in the table instance"),t||null},u=function(e,a,l,n){var o=e.templet?function(){return"function"==typeof e.templet?e.templet(l):i(t(e.templet).html()||String(a)).render(l)}():a;return n?t("
    "+o+"
    ").text():o},y="table",h=".layui-table",f="layui-hide",p="layui-none",v="layui-table-view",m=".layui-table-tool",g=".layui-table-box",b=".layui-table-init",x=".layui-table-header",k=".layui-table-body",C=".layui-table-main",w=".layui-table-fixed",T=".layui-table-fixed-l",A=".layui-table-fixed-r",L=".layui-table-total",N=".layui-table-page",S=".layui-table-sort",W="layui-table-edit",_="layui-table-hover",E=function(e){var t='{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';return e=e||{},['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',function(){return e.fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':""}(),"{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
    ','
    ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
    ","
    "].join("")},z=['',"","
    "].join(""),H=['
    ',"{{# if(d.data.toolbar){ }}",'
    ','
    ','
    ',"
    ","{{# } }}",'
    ',"{{# if(d.data.loading){ }}",'
    ','',"
    ","{{# } }}","{{# var left, right; }}",'
    ',E(),"
    ",'
    ',z,"
    ","{{# if(left){ }}",'
    ','
    ',E({fixed:!0}),"
    ",'
    ',z,"
    ","
    ","{{# }; }}","{{# if(right){ }}",'
    ','
    ',E({fixed:"right"}),'
    ',"
    ",'
    ',z,"
    ","
    ","{{# }; }}","
    ","{{# if(d.data.totalRow){ }}",'
    ','','',"
    ","
    ","{{# } }}","{{# if(d.data.page){ }}",'
    ','
    ',"
    ","{{# } }}","","
    "].join(""),R=t(window),F=t(document),j=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};j.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:["filter","exports","print"],autoSort:!0,text:{none:"无数据"}},j.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr("id")||e.index,a.request=t.extend({pageName:"page",limitName:"limit"},a.request),a.response=t.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",countName:"count"},a.response),"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split("-")[1],a.height=R.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next("."+v),o=e.elem=t(i(H).render({VIEW_CLASS:v,data:a,index:e.index}));if(a.index=e.index,e.key=a.id||a.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(m),e.layBox=o.find(g),e.layHeader=o.find(x),e.layMain=o.find(C),e.layBody=o.find(k),e.layFixed=o.find(w),e.layFixLeft=o.find(T),e.layFixRight=o.find(A),e.layTotal=o.find(L),e.layPage=o.find(N),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(x).find("th");r.height(e.layHeader.height()-1-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom")))}e.pullData(e.page),e.events()},j.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||i[e.type])},j.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l="none"===t.css("display")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),"width"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+"-"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+"-"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},j.prototype.renderToolbar=function(){var e=this,a=e.config,l=['
    ','
    ','
    '].join(""),n=e.layTool.find(".layui-table-tool-temp");if("default"===a.toolbar)n.html(l);else if("string"==typeof a.toolbar){var o=t(a.toolbar).html()||"";o&&n.html(i(o).render(a))}var r={filter:{title:"筛选列",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"导出",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"打印",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}},d=[];"object"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i="string"==typeof t?r[t]:t;i&&d.push('
    ')}),e.layTool.find(".layui-table-tool-self").html(d.join(""))},j.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key="'+a.index+"-"+t+'"]'),n=parseInt(l.attr("colspan"))||0;if(l[0]){var o=t.split("-"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr("colspan",n),l[n<1?"addClass":"removeClass"](f),r.colspan=n,r.hide=n<1;var d=l.data("parentkey");d&&i.setParentCol(e,d)}},j.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},j.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit("width");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return"line"===t.skin||"nob"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,d){var c=0,s=d.minWidth||t.cellMinWidth;return d?void(d.colGroup||d.hide||(e?l&&ln&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+"px"}):/\d+%$/.test(a.width)&&e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+"px"}))});var d=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children("table").outerWidth();if(e.autoColNums&&d>=-i&&d<=i){var c=function(t){var i;return t=t||e.layHeader.eq(0).find("thead th:last-child"),i=t.data("field"),!i&&t.prev()[0]?c(t.prev()):t},s=c(),u=s.data("key");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+d+"px",e.layMain.height()-e.layMain.prop("clientHeight")>0&&(t.style.width=parseFloat(t.style.width)-1+"px")})}e.loading(!0)},j.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},j.prototype.reload=function(e){var i=this;e=e||{},delete i.haveInit,e.data&&e.data.constructor===Array&&delete i.config.data,i.config=t.extend(!0,{},i.config,e),i.render()},j.prototype.errorView=function(e){var i=this,a=i.layMain.find("."+p),l=t('
    '+(e||"Error")+"
    ");a[0]&&(i.layNone.remove(),a.remove()),i.layFixed.addClass(f),i.layMain.find("tbody").html(""),i.layMain.append(i.layNone=l),d.cache[i.key]=[]},j.prototype.page=1,j.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){"object"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var d=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf("application/json")&&(d=JSON.stringify(d)),i.loading(),t.ajax({type:a.method||"get",url:a.url,contentType:a.contentType,data:d,dataType:"json",headers:a.headers||{},success:function(t){"function"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.errorView(t[n.msgName]||'返回的数据不符合规范,正确的成功状态码应为:"'+n.statusName+'": '+n.statusCode)):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+" ms"),i.setColsWidth(),"function"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.errorView("数据接口请求异常:"+t),i.renderForm(),i.setColsWidth()}})}else if(a.data&&a.data.constructor===Array){var c={},s=e*a.limit-a.limit;c[n.dataName]=a.data.concat().splice(s,a.limit),c[n.countName]=a.data.length,i.renderData(c,e,c[n.countName]),o(),i.setColsWidth(),"function"==typeof a.done&&a.done(c,e,c[n.countName])}},j.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},j.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,y=e[s.response.dataName]||[],h=[],v=[],m=[],g=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(y,function(a,l){var o=[],y=[],p=[],g=a+s.limit*(n-1)+1;0!==l.length&&(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var c=r.field||n,h=s.index+"-"+r.key,v=l[c];if(void 0!==v&&null!==v||(v=""),!r.colGroup){var m=['','
    '+function(){var n=t.extend(!0,{LAY_INDEX:g},l),o=d.config.checkName;switch(r.type){case"checkbox":return'";case"radio":return n[o]&&(e=a),'';case"numbers":return g}return r.toolbar?i(t(r.toolbar).html()||"").render(n):u(r,v,n)}(),"
    "].join("");o.push(m),r.fixed&&"right"!==r.fixed&&y.push(m),"right"===r.fixed&&p.push(m)}}),h.push(''+o.join("")+""),v.push(''+y.join("")+""),m.push(''+p.join("")+""))}),c.layBody.scrollTop(0),c.layMain.find("."+p).remove(),c.layMain.find("tbody").html(h.join("")),c.layFixLeft.find("tbody").html(v.join("")),c.layFixRight.find("tbody").html(m.join("")),c.renderForm(),"number"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return d.cache[c.key]=y,c.layPage[0==o||0===y.length&&1==n?"addClass":"removeClass"](f),r?g():0===y.length?(c.renderForm(),c.errorView(s.text.none)):(c.layFixed.removeClass(f),g(),c.renderTotal(y),void(s.page&&(s.page=t.extend({elem:"layui-table-page"+s.index,count:o,limit:s.limit,limits:s.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(c.page=e.curr,s.limit=e.limit,c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page))))},j.prototype.renderTotal=function(e){var t=this,i=t.config,a={};if(i.totalRow){layui.each(e,function(e,i){0!==i.length&&t.eachCols(function(e,t){var l=t.field||e,n=i[l];t.totalRow&&(a[l]=(a[l]||0)+(parseFloat(n)||0))})}),t.dataTotal={};var l=[];t.eachCols(function(e,n){var o=n.field||e,r=function(){var e=n.totalRowText||"",t=parseFloat(a[o]).toFixed(2),i={};return i[o]=t,t=u(n,t,i),n.totalRow?t||e:e}(),d=['','
    '+r,"
    "].join("");n.field&&(t.dataTotal[o]=r),l.push(d)}),t.layTotal.find("tbody").html(""+l.join("")+"")}},j.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(".laytable-cell-"+(a.index+"-"+t)+":eq(0)")},j.prototype.renderForm=function(e){n.render(e,"LAY-table-"+this.index)},j.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,"layui-table-click"),a=t.layBody.find('tr[data-index="'+e+'"]');a.addClass(i).siblings("tr").removeClass(i)},j.prototype.sort=function(e,i,a,l){var n,r,c=this,s={},u=c.config,h=u.elem.attr("lay-filter"),f=d.cache[c.key];"string"==typeof e&&c.layHeader.find("th").each(function(i,a){var l=t(this),o=l.data("field");if(o===e)return e=l,n=o,!1});try{var n=n||e.data("field"),p=e.data("key");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find("th .laytable-cell-"+p).find(S);c.layHeader.find("th").find(S).removeAttr("lay-sort"),v.attr("lay-sort",i||null),c.layFixed.find("th")}catch(m){return o.error("Table modules: Did not match to field")}c.sortKey={field:n,sort:i},u.autoSort&&("asc"===i?r=layui.sort(f,n):"desc"===i?r=layui.sort(f,n,!0):(r=layui.sort(f,d.config.indexName),delete c.sortKey)),s[u.response.dataName]=r||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,y,"sort("+h+")",{field:n,type:i})},j.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(b).remove()):(i.layInit=t(['
    ','',"
    "].join("")),i.layBox.append(i.layInit)))},j.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&l[e].constructor!==Array&&(l[e][a.checkName]=t)},j.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){"checkbox"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),e.renderForm("checkbox")),a(!0)):(i[0].checked&&(i.prop("checked",!1),e.renderForm("checkbox")),a(!1)))},j.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===".laytable-cell-"+e)return t(a),!0})},j.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=R.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css("height",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e-=t.layPage.outerHeight()||41),t.layMain.css("height",e-2))},j.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement("div"),e.style.width="100px",e.style.height="100px",e.style.overflowY="scroll",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},j.prototype.scrollPatch=function(){var e=this,i=e.layMain.children("table"),a=e.layMain.width()-e.layMain.prop("clientWidth"),l=e.layMain.height()-e.layMain.prop("clientHeight"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(".layui-table-patch")[0]){var i=t('
    ');i.find("div").css({width:a}),e.find("tr").append(i)}}else e.find(".layui-table-patch").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),d=r-l;e.layFixed.find(k).css("height",i.height()>=d?d:"auto"),e.layFixRight[n>0?"removeClass":"addClass"](f),e.layFixRight.css("right",a-1)},j.prototype.events=function(){var e,i=this,a=i.config,o=t("body"),c={},s=i.layHeader.find("th"),h=".layui-table-cell",p=a.elem.attr("lay-filter");i.layTool.on("click","*[lay-event]",function(e){var o=t(this),c=o.attr("lay-event"),s=function(e){var l=t(e.list),n=t('
      ');n.html(l),a.height&&n.css("max-height",a.height-(i.layTool.outerHeight()||50)),o.find(".layui-table-tool-panel")[0]||o.append(n),i.renderForm(),n.on("click",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),l.close(i.tipsIndex),c){case"LAYTABLE_COLS":s({list:function(){var e=[];return i.eachCols(function(t,i){i.field&&"normal"==i.type&&e.push('
    • ')}),e.join("")}(),done:function(){n.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var l=t(e.elem),n=this.checked,o=l.data("key"),r=l.data("parentkey");layui.each(a.cols,function(e,t){layui.each(t,function(t,l){if(e+"-"+t===o){var d=l.hide;l.hide=!n,i.elem.find('*[data-key="'+a.index+"-"+o+'"]')[n?"removeClass":"addClass"](f),d!=l.hide&&i.setParentCol(!n,r),i.resize()}})})})}});break;case"LAYTABLE_EXPORT":r.ie?l.tips("导出功能不支持 IE,请用 Chrome 等高级浏览器导出",this,{tips:3}):s({list:function(){return['
    • 导出到 Csv 文件
    • ','
    • 导出到 Excel 文件
    • '].join("")}(),done:function(e,l){l.on("click",function(){var e=t(this).data("type");d.exportFile.call(i,a.id,null,e)})}});break;case"LAYTABLE_PRINT":var u=window.open("打印窗口","_blank"),h=[""].join(""),v=t(i.layHeader.html());v.append(i.layMain.find("table").html()),v.append(i.layTotal.find("table").html()),v.find("th.layui-table-patch").remove(),v.find(".layui-table-col-special").remove(),u.document.write(h+v.prop("outerHTML")),u.document.close(),u.print(),u.close()}layui.event.call(this,y,"toolbar("+p+")",t.extend({event:c,config:a},{}))}),s.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||c.resizeStart||(c.allowResize=i.width()-l<=10,o.css("cursor",c.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);c.resizeStart||o.css("cursor","")}).on("mousedown",function(e){var l=t(this);if(c.allowResize){var n=l.data("key");e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],i.getCssRule(n,function(e){var t=e.style.width||l.outerWidth();c.rule=e,c.ruleWidth=parseFloat(t),c.minWidth=l.data("minwidth")||a.cellMinWidth})}}),F.on("mousemove",function(t){if(c.resizeStart){if(t.preventDefault(),c.rule){var a=c.ruleWidth+t.clientX-c.offset[0];a');return n[0].value=i.data("content")||l.text(),i.find("."+W)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on("mouseenter","td",function(){b.call(this)}).on("mouseleave","td",function(){b.call(this,"hide")});var g="layui-table-grid-down",b=function(e){var i=t(this),a=i.children(h);if(!i.data("off"))if(e)i.find(".layui-table-grid-down").remove();else if(a.prop("scrollWidth")>a.outerWidth()){if(a.find("."+g)[0])return;i.append('
      ')}};i.layBody.on("click","."+g,function(e){var n=t(this),o=n.parent(),d=o.children(h);i.tipsIndex=l.tips(['
      ',d.html(),"
      ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:r.ios||r.android?300:i.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}),layui.stope(e)}),i.layBody.on("click","*[lay-event]",function(){var e=t(this),a=e.parents("tr").eq(0).data("index");layui.event.call(this,y,"tool("+p+")",v.call(this,{event:e.attr("lay-event")})),i.setThisRowChecked(a)}),i.layMain.on("scroll",function(){var e=t(this),a=e.scrollLeft(),n=e.scrollTop();i.layHeader.scrollLeft(a),i.layTotal.scrollLeft(a),i.layFixed.find(k).scrollTop(n),l.close(i.tipsIndex)}),R.on("resize",function(){i.resize()})},function(){F.on("click",function(){F.trigger("table.remove.tool.panel")}),F.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()})}(),d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':h+"[lay-data]"),n="Table element property lay-data configuration item has a syntax error: ";return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){o.error(n+l)}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},d.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){return o.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr("colspan")||0,rowspan:a.attr("rowspan")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},c.that={},c.config={},d.eachCols=function(e,i,a){var l=c.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void("function"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return l.constructor===Array?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.exportFile=function(e,t,i){var a=this;t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var l=c.config[e]||{},n={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],s=document.createElement("a");return r.ie?o.error("IE_NOT_SUPPORT_EXPORTS"):(s.href="data:"+n+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],l=[],n=[];return layui.each(t,function(t,a){var n=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(a),function(e,t){n.push('"'+(t||"")+'"')})):d.eachCols(e,function(e,l){if(l.field&&"normal"==l.type&&!l.hide){var o=a[l.field];void 0!==o&&null!==o||(o=""),0==t&&i.push(l.title||""),n.push('"'+u(l,o,a,"text")+'"')}}),l.push(n.join(","))}),layui.each(a.dataTotal,function(e,t){n.push(t)}),i.join(",")+"\r\n"+l.join("\r\n")+"\r\n"+n.join(",")}()),s.download=(l.title||"table_"+(l.index||""))+"."+i,document.body.appendChild(s),s.click(),void document.body.removeChild(s))},d.resize=function(e){if(e){var t=s(e);if(!t)return;c.that[e].resize()}else layui.each(c.that,function(){this.resize()})},d.reload=function(e,t){var i=s(e);if(i){var a=c.that[e];return a.reload(t),c.call(a)}},d.render=function(e){var t=new j(e);return c.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},d.init(),e(y,d)}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/transfer.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/transfer.js new file mode 100644 index 0000000..6b7b677 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/transfer.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define(["laytpl","form"],function(e){"use strict";var a=layui.$,t=layui.laytpl,n=layui.form,i="transfer",l={config:{},index:layui[i]?layui[i].index+1e4:0,set:function(e){var t=this;return t.config=a.extend({},t.config,e),t},on:function(e,a){return layui.onevent.call(this,i,e,a)}},r=function(){var e=this,a=e.config,t=a.id||e.index;return r.that[t]=e,r.config[t]=a,{config:a,reload:function(a){e.reload.call(e,a)},getData:function(){return e.getData.call(e)}}},c="layui-hide",o="layui-btn-disabled",d="layui-none",s="layui-transfer-box",u="layui-transfer-header",h="layui-transfer-search",f="layui-transfer-active",y="layui-transfer-data",p=function(e){return e=e||{},['
      ','
      ','","
      ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
        ',"
        "].join("")},v=['
        ',p({index:0,checkAllName:"layTransferLeftCheckAll"}),'
        ','",'","
        ",p({index:1,checkAllName:"layTransferRightCheckAll"}),"
        "].join(""),x=function(e){var t=this;t.index=++l.index,t.config=a.extend({},t.config,l.config,e),t.render()};x.prototype.config={title:["列表一","列表二"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"无数据",searchNone:"无匹配数据"}},x.prototype.reload=function(e){var t=this;layui.each(e,function(e,a){a.constructor===Array&&delete t.config[e]}),t.config=a.extend(!0,{},t.config,e),t.render()},x.prototype.render=function(){var e=this,n=e.config,i=e.elem=a(t(v).render({data:n,index:e.index})),l=n.elem=a(n.elem);l[0]&&(n.data=n.data||[],n.value=n.value||[],e.key=n.id||e.index,l.html(e.elem),e.layBox=e.elem.find("."+s),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+h),e.layData=i.find("."+y),e.layBtn=i.find("."+f+" .layui-btn"),e.layBox.css({width:n.width,height:n.height}),e.layData.css({height:function(){return n.height-e.layHeader.outerHeight()-e.laySearch.outerHeight()-2}()}),e.renderData(),e.events())},x.prototype.renderData=function(){var e=this,a=(e.config,[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}]);e.parseData(function(e){var t=e.selected?1:0,n=["
      • ",'',"
      • "].join("");a[t].views.push(n),delete e.selected}),e.layData.eq(0).html(a[0].views.join("")),e.layData.eq(1).html(a[1].views.join("")),e.renderCheckBtn()},x.prototype.renderForm=function(e){n.render(e,"LAY-transfer-"+this.index)},x.prototype.renderCheckBtn=function(e){var t=this,n=t.config;e=e||{},t.layBox.each(function(i){var l=a(this),r=l.find("."+y),d=l.find("."+u).find('input[type="checkbox"]'),s=r.find('input[type="checkbox"]'),h=0,f=!1;if(s.each(function(){var e=a(this).data("hide");(this.checked||this.disabled||e)&&h++,this.checked&&!e&&(f=!0)}),d.prop("checked",f&&h===s.length),t.layBtn.eq(i)[f?"removeClass":"addClass"](o),!e.stopNone){var p=r.children("li:not(."+c+")").length;t.noneView(r,p?"":n.text.none)}}),t.renderForm("checkbox")},x.prototype.noneView=function(e,t){var n=a('

        '+(t||"")+"

        ");e.find("."+d)[0]&&e.find("."+d).remove(),t.replace(/\s/g,"")&&e.append(n)},x.prototype.setValue=function(){var e=this,t=e.config,n=[];return e.layBox.eq(1).find("."+y+' input[type="checkbox"]').each(function(){var e=a(this).data("hide");e||n.push(this.value)}),t.value=n,e},x.prototype.parseData=function(e){var t=this,n=t.config,i=[];return layui.each(n.data,function(t,l){l=("function"==typeof n.parseData?n.parseData(l):l)||l,i.push(l=a.extend({},l)),layui.each(n.value,function(e,a){a==l.value&&(l.selected=!0)}),e&&e(l)}),n.data=i,t},x.prototype.getData=function(e){var a=this,t=a.config,n=[];return a.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&n.push(t)})}),n},x.prototype.events=function(){var e=this,t=e.config;e.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var t=a(this).prev(),n=t[0].checked,i=t.parents("."+s).eq(0).find("."+y);t[0].disabled||("all"===t.attr("lay-type")&&i.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=n)}),e.renderCheckBtn({stopNone:!0}))}),e.layBtn.on("click",function(){var n=a(this),i=n.data("index"),l=e.layBox.eq(i),r=[];if(!n.hasClass(o)){e.layBox.eq(i).each(function(t){var n=a(this),i=n.find("."+y);i.children("li").each(function(){var t=a(this),n=t.find('input[type="checkbox"]'),i=n.data("hide");n[0].checked&&!i&&(n[0].checked=!1,l.siblings("."+s).find("."+y).append(t.clone()),t.remove(),r.push(n[0].value)),e.setValue()})}),e.renderCheckBtn();var c=l.siblings("."+s).find("."+h+" input");""===c.val()||c.trigger("keyup"),t.onchange&&t.onchange(e.getData(r),i)}}),e.laySearch.find("input").on("keyup",function(){var n=this.value,i=a(this).parents("."+h).eq(0).siblings("."+y),l=i.children("li");l.each(function(){var e=a(this),t=e.find('input[type="checkbox"]'),i=t[0].title.indexOf(n)!==-1;e[i?"removeClass":"addClass"](c),t.data("hide",!i)}),e.renderCheckBtn();var r=l.length===i.children("li."+c).length;e.noneView(i,r?t.text.searchNone:"")})},r.that={},r.config={},l.reload=function(e,a){var t=r.that[e];return t.reload(a),r.call(t)},l.getData=function(e){var a=r.that[e];return a.getData()},l.render=function(e){var a=new x(e);return r.call(a)},e(i,l)}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/tree.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/tree.js new file mode 100644 index 0000000..15fb294 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/tree.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("form",function(e){"use strict";var i=layui.$,a=layui.form,n=layui.layer,t="tree",r={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var a=this;return a.config=i.extend({},a.config,e),a},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var e=this,i=e.config,a=i.id||e.index;return l.that[a]=e,l.config[a]=i,{config:i,reload:function(i){e.reload.call(e,i)},getChecked:function(){return e.getChecked.call(e)},setChecked:function(i){return e.setChecked.call(e,i)}}},c="layui-hide",d="layui-disabled",s="layui-tree-set",o="layui-tree-iconClick",h="layui-icon-addition",u="layui-icon-subtraction",p="layui-tree-entry",f="layui-tree-main",y="layui-tree-txt",v="layui-tree-pack",C="layui-tree-spread",k="layui-tree-setLineShort",m="layui-tree-showLine",x="layui-tree-lineExtend",b=function(e){var a=this;a.index=++r.index,a.config=i.extend({},a.config,r.config,e),a.render()};b.prototype.config={data:[],showCheckbox:!1,showLine:!0,accordion:!1,onlyIconControl:!1,isJump:!1,edit:!1,text:{defaultNodeName:"未命名",none:"无数据"}},b.prototype.reload=function(e){var a=this;layui.each(e,function(e,i){i.constructor===Array&&delete a.config[e]}),a.config=i.extend(!0,{},a.config,e),a.render()},b.prototype.render=function(){var e=this,a=e.config;e.checkids=[];var n=i('
        ');e.tree(n);var t=a.elem=i(a.elem);if(t[0]){if(e.key=a.id||e.index,e.elem=n,e.elemNone=i('
        '+a.text.none+"
        "),t.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);a.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=i(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(k),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(k)}),e.events()}},b.prototype.renderForm=function(e){a.render(e,"LAY-tree-"+this.index)},b.prototype.tree=function(e,a){var n=this,t=n.config,r=a||t.data;layui.each(r,function(a,r){var l=r.children&&r.children.length>0,o=i('
        '),h=i(['
        ','
        ','
        ',function(){return t.showLine?l?'':'':''}(),function(){return t.showCheckbox?'':""}(),function(){return t.isJump&&r.href?''+(r.title||r.label||t.text.defaultNodeName)+"":''+(r.title||r.label||t.text.defaultNodeName)+""}(),"
        ",function(){if(!t.edit)return"";var e={add:'',update:'',del:''},i=['
        '];return t.edit===!0&&(t.edit=["update","del"]),"object"==typeof t.edit?(layui.each(t.edit,function(a,n){i.push(e[n]||"")}),i.join("")+"
        "):void 0}(),"
        "].join(""));l&&(h.append(o),n.tree(o,r.children)),e.append(h),h.prev("."+s)[0]&&h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),l||h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),n.spread(h,r),t.showCheckbox&&(r.checked&&n.checkids.push(r.id),n.checkClick(h,r)),t.edit&&n.operate(h,r)})},b.prototype.spread=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f),c=r.find("."+o),k=r.find("."+y),m=t.onlyIconControl?c:l,x="";m.on("click",function(i){var a=e.children("."+v),n=m.children(".layui-icon")[0]?m.children(".layui-icon"):m.find(".layui-tree-icon").children(".layui-icon");if(a[0]){if(e.hasClass(C))e.removeClass(C),a.slideUp(200),n.removeClass(u).addClass(h);else if(e.addClass(C),a.slideDown(200),n.addClass(u).removeClass(h),t.accordion){var r=e.siblings("."+s);r.removeClass(C),r.children("."+v).slideUp(200),r.find(".layui-tree-icon").children(".layui-icon").removeClass(u).addClass(h)}}else x="normal"}),k.on("click",function(){var n=i(this);n.hasClass(d)||(x=e.hasClass(C)?t.onlyIconControl?"open":"close":t.onlyIconControl?"close":"open",t.click&&t.click({elem:e,state:x,data:a}))})},b.prototype.setCheckbox=function(e,i,a){var n=this,t=(n.config,a.prop("checked"));if(!a.prop("disabled")){if("object"==typeof i.children||e.find("."+v)[0]){var r=e.find("."+v).find('input[same="layuiTreeCheck"]');r.each(function(){this.disabled||(this.checked=t)})}var l=function(e){if(e.parents("."+s)[0]){var i,a=e.parent("."+v),n=a.parent(),r=a.prev().find('input[same="layuiTreeCheck"]');t?r.prop("checked",t):(a.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||r.prop("checked",!1)),l(n)}};l(e),n.renderForm("checkbox")}},b.prototype.checkClick=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f);l.on("click",'input[same="layuiTreeCheck"]+',function(r){layui.stope(r);var l=i(this).prev(),c=l.prop("checked");l.prop("disabled")||(n.setCheckbox(e,a,l),t.oncheck&&t.oncheck({elem:e,checked:c,data:a}))})},b.prototype.operate=function(e,a){var t=this,r=t.config,l=e.children("."+p),d=l.children("."+f);l.children(".layui-tree-btnGroup").on("click",".layui-icon",function(l){layui.stope(l);var f=i(this).data("type"),b=e.children("."+v),g={data:a,type:f,elem:e};if("add"==f){b[0]||(r.showLine?(d.find("."+o).addClass("layui-tree-icon"),d.find("."+o).children(".layui-icon").addClass(h).removeClass("layui-icon-file")):d.find(".layui-tree-iconArrow").removeClass(c),e.append('
        '));var w=r.operate&&r.operate(g),N={};if(N.title=r.text.defaultNodeName,N.id=w,t.tree(e.children("."+v),[N]),r.showLine)if(b[0])b.hasClass(x)||b.addClass(x),e.find("."+v).each(function(){i(this).children("."+s).last().addClass(k)}),b.children("."+s).last().prev().hasClass(k)?b.children("."+s).last().prev().removeClass(k):b.children("."+s).last().removeClass(k),!e.parent("."+v)[0]&&e.next()[0]&&b.children("."+s).last().removeClass(k);else{var T=e.siblings("."+s),L=1,A=e.parent("."+v);layui.each(T,function(e,a){i(a).children("."+v)[0]||(L=0)}),1==L?(T.children("."+v).addClass(m),T.children("."+v).children("."+s).removeClass(k),e.children("."+v).addClass(m),A.removeClass(x),A.children("."+s).last().children("."+v).children("."+s).last().addClass(k)):e.children("."+v).children("."+s).addClass(k)}if(!r.showCheckbox)return;if(d.find('input[same="layuiTreeCheck"]')[0].checked){var I=e.children("."+v).children("."+s).last();I.find('input[same="layuiTreeCheck"]')[0].checked=!0}t.renderForm("checkbox")}else if("update"==f){var F=d.children("."+y).html();d.children("."+y).html(""),d.append(''),d.children(".layui-tree-editInput").val(F).focus();var j=function(e){var i=e.val().trim();i=i?i:r.text.defaultNodeName,e.remove(),d.children("."+y).html(i),g.data.title=i,r.operate&&r.operate(g)};d.children(".layui-tree-editInput").blur(function(){j(i(this))}),d.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),j(i(this)))})}else n.confirm('确认删除该节点 "'+(a.title||"")+'" 吗?',function(a){if(r.operate&&r.operate(g),g.status="remove",n.close(a),!e.prev("."+s)[0]&&!e.next("."+s)[0]&&!e.parent("."+v)[0])return e.remove(),void t.elem.append(t.elemNone);if(e.siblings("."+s).children("."+p)[0]){if(r.showCheckbox){var l=function(e){if(e.parents("."+s)[0]){var a=e.siblings("."+s).children("."+p),n=e.parent("."+v).prev(),r=n.find('input[same="layuiTreeCheck"]')[0],c=1,d=0;0==r.checked&&(a.each(function(e,a){var n=i(a).find('input[same="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(c=0),n.disabled||(d=1)}),1==c&&1==d&&(r.checked=!0,t.renderForm("checkbox"),l(n.parent("."+s))))}};l(e)}if(r.showLine){var d=e.siblings("."+s),h=1,f=e.parent("."+v);layui.each(d,function(e,a){i(a).children("."+v)[0]||(h=0)}),1==h?(b[0]||(f.removeClass(x),d.children("."+v).addClass(m),d.children("."+v).children("."+s).removeClass(k)),e.next()[0]?f.children("."+s).last().children("."+v).children("."+s).last().addClass(k):e.prev().children("."+v).children("."+s).last().addClass(k),e.next()[0]||e.parents("."+s)[1]||e.parents("."+s).eq(0).next()[0]||e.prev("."+s).addClass(k)):!e.next()[0]&&e.hasClass(k)&&e.prev().addClass(k)}}else{var y=e.parent("."+v).prev();if(r.showLine){y.find("."+o).removeClass("layui-tree-icon"),y.find("."+o).children(".layui-icon").removeClass(u).addClass("layui-icon-file");var w=y.parents("."+v).eq(0);w.addClass(x),w.children("."+s).each(function(){i(this).children("."+v).children("."+s).last().addClass(k)})}else y.find(".layui-tree-iconArrow").addClass(c);e.parents("."+s).eq(0).removeClass(C),e.parent("."+v).remove()}e.remove()})})},b.prototype.events=function(){var e=this,a=e.config;e.elem.find(".layui-tree-checkedFirst");e.setChecked(e.checkids),e.elem.find(".layui-tree-search").on("keyup",function(){var n=i(this),t=n.val(),r=n.nextAll(),l=[];r.find("."+y).each(function(){var e=i(this).parents("."+p);if(i(this).html().indexOf(t)!=-1){l.push(i(this).parent());var a=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+v)[0]&&a(e.parent("."+v).parent("."+s))};a(e.parent("."+s))}}),r.find("."+p).each(function(){var e=i(this).parent("."+s);e.hasClass("layui-tree-searchShow")||e.addClass(c)}),0==r.find(".layui-tree-searchShow").length&&e.elem.append(e.elemNone),a.onsearch&&a.onsearch({elem:l})}),e.elem.find(".layui-tree-search").on("keydown",function(){i(this).nextAll().find("."+p).each(function(){var e=i(this).parent("."+s);e.removeClass("layui-tree-searchShow "+c)}),i(".layui-tree-emptyText")[0]&&i(".layui-tree-emptyText").remove()})},b.prototype.getChecked=function(){var e=this,a=e.config,n=[],t=[];e.elem.find(".layui-form-checked").each(function(){n.push(i(this).prev()[0].value)});var r=function(e,a){layui.each(e,function(e,t){layui.each(n,function(e,n){if(t.id==n){var l=i.extend({},t);return delete l.children,a.push(l),t.children&&(l.children=[],r(t.children,l.children)),!0}})})};return r(i.extend({},a.data),t),t},b.prototype.setChecked=function(e){var a=this;a.config;a.elem.find("."+s).each(function(a,n){var t=i(this).data("id"),r=i(n).children("."+p).find('input[same="layuiTreeCheck"]'),l=r.next();if("number"==typeof e){if(t==e)return r[0].checked||l.click(),!1}else"object"==typeof e&&layui.each(e,function(e,i){if(i==t&&!r[0].checked)return l.click(),!0})})},l.that={},l.config={},r.reload=function(e,i){var a=l.that[e];return a.reload(i),l.call(a)},r.getChecked=function(e){var i=l.that[e];return i.getChecked()},r.setChecked=function(e,i){var a=l.that[e];return a.setChecked(i)},r.render=function(e){var i=new b(e);return l.call(i)},e(t,r)}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/upload.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/upload.js new file mode 100644 index 0000000..262b513 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/upload.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,n=layui.hint(),o=layui.device(),a={config:{},set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,r,e,t)}},l=function(){var e=this;return{upload:function(t){e.upload.call(e,t)},reload:function(t){e.reload.call(e,t)},config:e.config}},r="upload",u="layui-upload-file",c="layui-upload-form",f="layui-upload-iframe",s="layui-upload-choose",p=function(e){var i=this;i.config=t.extend({},i.config,a.config,e),i.render()};p.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var i=this,e=i.config;e.elem=t(e.elem),e.bindAction=t(e.bindAction),i.file(),i.events()},p.prototype.file=function(){var e=this,i=e.config,n=e.elemFile=t(['"].join("")),a=i.elem.next();(a.hasClass(u)||a.hasClass(c))&&a.remove(),o.ie&&o.ie<10&&i.elem.wrap('
        '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(n),o.ie&&o.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,i=e.config,n=t(''),o=t(['
        ',"
        "].join(""));t("#"+f)[0]||t("body").append(n),i.elem.next().hasClass(c)||(e.elemFile.wrap(o),i.elem.next("."+c).append(function(){var e=[];return layui.each(i.data,function(t,i){i="function"==typeof i?i():i,e.push('')}),e.join("")}()))},p.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},p.prototype.preview=function(e){var t=this;window.FileReader&&layui.each(t.chooseFiles,function(t,i){var n=new FileReader;n.readAsDataURL(i),n.onload=function(){e&&e(t,i,this.result)}})},p.prototype.upload=function(e,i){var n,a=this,l=a.config,r=a.elemFile[0],u=function(){var i=0,n=0,o=e||a.files||a.chooseFiles||r.files,u=function(){l.multiple&&i+n===a.fileLength&&"function"==typeof l.allDone&&l.allDone({total:a.fileLength,successful:i,aborted:n})};layui.each(o,function(e,o){var r=new FormData;r.append(l.field,o),layui.each(l.data,function(e,t){t="function"==typeof t?t():t,r.append(e,t)}),t.ajax({url:l.url,type:"post",data:r,contentType:!1,processData:!1,dataType:"json",headers:l.headers||{},success:function(t){i++,d(e,t),u()},error:function(){n++,a.msg("请求上传接口出现异常"),m(e),u()},xhr:function(){var e=new XMLHttpRequest;return e.upload.addEventListener("progress",function(e){if(e.lengthComputable){var t=Math.floor(e.loaded/e.total*100);"function"==typeof l.progress&&l.progress(t,e)}}),e}})})},c=function(){var e=t("#"+f);a.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var t,i=e.contents().find("body");try{t=i.text()}catch(n){a.msg("获取上传后的响应信息出现异常"),clearInterval(p.timer),m()}t&&(clearInterval(p.timer),i.html(""),d(0,t))},30)},d=function(e,t){if(a.elemFile.next("."+s).remove(),r.value="","object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},a.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(t,e||0,function(e){a.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){a.upload(e)})},h=l.exts,v=function(){var t=[];return layui.each(e||a.chooseFiles,function(e,i){t.push(i.name)}),t}(),g={preview:function(e){a.preview(e)},upload:function(e,t){var i={};i[e]=t,a.upload(i)},pushFile:function(){return a.files=a.files||{},layui.each(a.chooseFiles,function(e,t){a.files[e]=t}),a.files},resetFile:function(e,t,i){var n=new File([t],i);a.files=a.files||{},a.files[e]=n}},y=function(){if("choose"!==i&&!l.auto||(l.choose&&l.choose(g),"choose"!==i))return l.before&&l.before(g),o.ie?o.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":v,0!==v.length){switch(l.accept){case"file":if(h&&!RegExp("\\w\\.("+h+")$","i").test(escape(v)))return a.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return a.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return a.msg("选择的音频中包含不支持的格式"),r.value="";break;default:if(layui.each(v,function(e,t){RegExp("\\w\\.("+(h||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(t))||(n=!0)}),n)return a.msg("选择的图片中包含不支持的格式"),r.value=""}if(a.fileLength=function(){var t=0,i=e||a.files||a.chooseFiles||r.files;return layui.each(i,function(){t++}),t}(),l.number&&a.fileLength>l.number)return a.msg("同时最多只能上传的数量为:"+l.number);if(l.size>0&&!(o.ie&&o.ie<10)){var F;if(layui.each(a.chooseFiles,function(e,t){if(t.size>1024*l.size){var i=l.size/1024;i=i>=1?i.toFixed(2)+"MB":l.size+"KB",r.value="",F=i}}),F)return a.msg("文件不能超过"+F)}y()}},p.prototype.reload=function(e){e=e||{},delete e.elem,delete e.bindAction;var i=this,e=i.config=t.extend({},i.config,a.config,e),n=e.elem.next();n.attr({name:e.name,accept:e.acceptMime,multiple:e.multiple})},p.prototype.events=function(){var e=this,i=e.config,a=function(t){e.chooseFiles={},layui.each(t,function(t,i){var n=(new Date).getTime();e.chooseFiles[n+"-"+t]=i})},l=function(t,n){var o=e.elemFile,a=t.length>1?t.length+"个文件":(t[0]||{}).name||o[0].value.match(/[^\/\\]+\..+/g)||[]||"";o.next().hasClass(s)&&o.next().remove(),e.upload(null,"choose"),e.isFile()||i.choose||o.after(''+a+"")};i.elem.off("upload.start").on("upload.start",function(){var o=t(this),a=o.attr("lay-data");if(a)try{a=new Function("return "+a)(),e.config=t.extend({},i,a)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+a)}e.config.item=o,e.elemFile[0].click()}),o.ie&&o.ie<10||i.elem.off("upload.over").on("upload.over",function(){var e=t(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=t(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,o){var r=t(this),u=o.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),a(u),i.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var t=this.files||[];a(t),i.auto?e.upload():l(t)}),i.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),i.elem.data("haveEvents")||(e.elemFile.on("change",function(){t(this).trigger("upload.change")}),i.elem.on("click",function(){e.isFile()||t(this).trigger("upload.start")}),i.drag&&i.elem.on("dragover",function(e){e.preventDefault(),t(this).trigger("upload.over")}).on("dragleave",function(e){t(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),t(this).trigger("upload.drop",e)}),i.bindAction.on("click",function(){t(this).trigger("upload.action")}),i.elem.data("haveEvents",!0))},a.render=function(e){var t=new p(e);return l.call(t)},e(r,a)}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/util.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/util.js new file mode 100644 index 0000000..256f47a --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/lay/modules/util.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("jquery",function(t){"use strict";var e=layui.$,i={fixbar:function(t){var i,n,a="layui-fixbar",o="layui-fixbar-top",r=e(document),l=e("body");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?"":t.bar1,t.bar2=t.bar2===!0?"":t.bar2,t.bgcolor=t.bgcolor?"background-color:"+t.bgcolor:"";var c=[t.bar1,t.bar2,""],g=e(['
          ',t.bar1?'
        • '+c[0]+"
        • ":"",t.bar2?'
        • '+c[1]+"
        • ":"",'
        • '+c[2]+"
        • ","
        "].join("")),s=g.find("."+o),u=function(){var e=r.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e("."+a)[0]||("object"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find("li").on("click",function(){var i=e(this),n=i.attr("lay-type");"top"===n&&e("html,body").animate({scrollTop:0},200),t.click&&t.click.call(this,n)}),r.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var n=this,a="function"==typeof e,o=new Date(t).getTime(),r=new Date(!e||a?(new Date).getTime():e).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=e);var g=setTimeout(function(){n.countdown(t,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,n=[[],[]],a=(new Date).getTime()-new Date(t).getTime();return a>6912e5?(a=new Date(t),n[0][0]=i.digit(a.getFullYear(),4),n[0][1]=i.digit(a.getMonth()+1),n[0][2]=i.digit(a.getDate()),e||(n[1][0]=i.digit(a.getHours()),n[1][1]=i.digit(a.getMinutes()),n[1][2]=i.digit(a.getSeconds())),n[0].join("-")+" "+n[1].join(":")):a>=864e5?(a/1e3/60/60/24|0)+"天前":a>=36e5?(a/1e3/60/60|0)+"小时前":a>=12e4?(a/1e3/60|0)+"分钟前":a<0?"未来":"刚刚"},digit:function(t,e){var i="";t=String(t),e=e||2;for(var n=t.length;n/g,">").replace(/'/g,"'").replace(/"/g,""")},event:function(t,n,a){n=i.event[t]=e.extend(!0,i.event[t],n)||{},e("body").on(a||"click","*["+t+"]",function(){var i=e(this),a=i.attr(t);n[a]&&n[a].call(this,i)})}};!function(t,e,i){"$:nomunge";function n(){a=e[l](function(){o.each(function(){var e=t(this),i=e.width(),n=e.height(),a=t.data(this,g);(i!==a.w||n!==a.h)&&e.trigger(c,[a.w=i,a.h=n])}),n()},r[s])}var a,o=t([]),r=t.resize=t.extend(t.resize,{}),l="setTimeout",c="resize",g=c+"-special-event",s="delay",u="throttleWindow";r[s]=250,r[u]=!0,t.event.special[c]={setup:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===o.length&&n()},teardown:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.not(e),e.removeData(g),o.length||clearTimeout(a)},add:function(e){function n(e,n,o){var r=t(this),l=t.data(this,g)||{};l.w=n!==i?n:r.width(),l.h=o!==i?o:r.height(),a.apply(this,arguments)}if(!r[u]&&this[l])return!1;var a;return t.isFunction(e)?(a=e,n):(a=e.handler,void(e.handler=n))}}}(e,window),t("util",i)}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/layui.all.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/layui.all.js new file mode 100644 index 0000000..1d911b3 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/layui.all.js @@ -0,0 +1,5 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;!function(e){"use strict";var t=document,o={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.5.5"},r=function(){var e=t.currentScript?t.currentScript.src:function(){for(var e,o=t.scripts,n=o.length-1,r=n;r>0;r--)if("interactive"===o[r].readyState){e=o[r].src;break}return e||o[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),i=function(t){e.console&&console.error&&console.error("Layui hint: "+t)},a="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u={layer:"modules/layer",laydate:"modules/laydate",laypage:"modules/laypage",laytpl:"modules/laytpl",layim:"modules/layim",layedit:"modules/layedit",form:"modules/form",upload:"modules/upload",transfer:"modules/transfer",tree:"modules/tree",table:"modules/table",element:"modules/element",rate:"modules/rate",colorpicker:"modules/colorpicker",slider:"modules/slider",carousel:"modules/carousel",flow:"modules/flow",util:"modules/util",code:"modules/code",jquery:"modules/jquery",mobile:"modules/mobile","layui.all":"../layui.all"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r="function"==typeof e,i=function(){var e=function(e,t){layui[e]=t,o.status[e]=!0};return"function"==typeof t&&t(function(n,r){e(n,r),o.callback[n]=function(){t(e)}}),this};return r&&(t=e,e=[]),!layui["layui.all"]&&layui["layui.mobile"]?i.call(n):(n.use(e,i),n)},n.prototype.use=function(e,n,l){function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName("head")[0];e="string"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){"jquery"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===e.length||layui["layui.all"]&&u[f]||!layui["layui.all"]&&layui["layui.mobile"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void("string"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement("script"),h=(u[f]?p+"lay/":/^\{\/\}/.test(y.modules[f])?"":o.base||"")+(y.modules[f]||f)+".js";h=h.replace(/^\{\/\}/,""),v.async=!0,v.charset="utf-8",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||"";return e?"?v="+e:""}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf("[native code")<0||a?v.addEventListener("load",function(e){s(e,h)},!1):v.attachEvent("onreadystatechange",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](o)},n.prototype.link=function(e,n,r){var a=this,u=t.createElement("link"),l=t.getElementsByTagName("head")[0];"string"==typeof n&&(r=n);var s=(r||e).replace(/\.|\//g,""),c=u.id="layuicss-"+s,y=0;return u.rel="stylesheet",u.href=e+(o.debug?"?v="+(new Date).getTime():""),u.media="all",t.getElementById(c)||l.appendChild(u),"function"!=typeof n?a:(function p(){return++y>1e3*o.timeout/100?i(e+" timeout"):void(1989===parseInt(a.getStyle(t.getElementById(c),"width"))?function(){n()}():setTimeout(p,100))}(),a)},o.callback={},n.prototype.factory=function(e){if(layui[e])return"function"==typeof o.callback[e]?o.callback[e]:null},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+"css/"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,"function"==typeof t&&t(n)},void(n.onerror=function(e){n.onerror=null,"function"==typeof o&&o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?i("模块名 "+o+" 已被占用"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(e)?(e=e.replace(/^#\//,""),o.href="/"+e,e=e.replace(/([^#])(#.*$)/,"$1").split("/")||[],t.each(e,function(e,t){/^\w+=/.test(t)?function(){t=t.split("="),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o,n){if(t=t||"layui",n=n||localStorage,e.JSON&&e.JSON.parse){if(null===o)return delete n[t];o="object"==typeof o?o:{key:o};try{var r=JSON.parse(n[t])}catch(i){var r={}}return"value"in o&&(r[o.key]=o.value),o.remove&&delete r[o.key],n[t]=JSON.stringify(r),o.key?r[o.key]:r}},n.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+"/([^\\s\\_\\-]+)");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?"windows":/linux/.test(o)?"linux":/iphone|ipod|ipad|ios/.test(o)?"ios":/mac/.test(o)?"mac":void 0}(),ie:function(){return!!(e.ActiveXObject||"ActiveXObject"in e)&&((o.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:n("micromessenger")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios="ios"===r.os,r},n.prototype.hint=function(){return{error:i}},n.prototype.each=function(e,t){var o,n=this;if("function"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;oi?1:r/g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push(''+(a.first||1)+"");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r2&&e.push('');r<=u;r++)r===a.curr?e.push('"+r+""):e.push(''+r+"");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1…'),0!==t&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'共 '+a.count+" 条",limit:function(){var e=['"}(),refresh:['','',""].join(""),skip:function(){return['到第','','页',""].join("")}()};return['
        ',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"
        "].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;oi.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});!function(){"use strict";var e=window.layui&&layui.define,t={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,n=t.length-1,a=n;a>0;a--)if("interactive"===t[a].readyState){e=t[a].src;break}return e||t[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),getStyle:function(e,t){var n=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](t)},link:function(e,a,i){if(n.path){var r=document.getElementsByTagName("head")[0],o=document.createElement("link");"string"==typeof a&&(i=a);var s=(i||e).replace(/\.|\//g,""),l="layuicss-"+s,d=0;o.rel="stylesheet",o.href=n.path+e,o.id=l,document.getElementById(l)||r.appendChild(o),"function"==typeof a&&!function c(){return++d>80?window.console&&console.error("laydate.css: Invalid"):void(1989===parseInt(t.getStyle(document.getElementById(l),"width"))?a():setTimeout(c,100))}()}}},n={v:"5.0.9",config:{},index:window.laydate&&window.laydate.v?1e5:0,path:t.getPath,set:function(e){var t=this;return t.config=w.extend({},t.config,e),t},ready:function(a){var i="laydate",r="",o=(e?"modules/laydate/":"theme/")+"default/laydate.css?v="+n.v+r;return e?layui.addcss(o,a,i):t.link(o,a,i),this}},a=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i="laydate",r=".layui-laydate",o="layui-this",s="laydate-disabled",l="开始日期超出了结束日期
        建议重新选择",d=[100,2e5],c="layui-laydate-static",m="layui-laydate-list",u="laydate-selected",h="layui-laydate-hint",y="laydate-day-prev",f="laydate-day-next",p="layui-laydate-footer",g=".laydate-btns-confirm",v="laydate-time-text",D=".laydate-btns-time",T=function(e){var t=this;t.index=++n.index,t.config=w.extend({},t.config,n.config,e),n.ready(function(){t.init()})},w=function(e){return new C(e)},C=function(e){for(var t=0,n="object"==typeof e?[e]:(this.selector=e,document.querySelectorAll(e||null));t0)return n[0].getAttribute(e)}():n.each(function(n,a){a.setAttribute(e,t)})},C.prototype.removeAttr=function(e){return this.each(function(t,n){n.removeAttribute(e)})},C.prototype.html=function(e){return this.each(function(t,n){n.innerHTML=e})},C.prototype.val=function(e){return this.each(function(t,n){n.value=e})},C.prototype.append=function(e){return this.each(function(t,n){"object"==typeof e?n.appendChild(e):n.innerHTML=n.innerHTML+e})},C.prototype.remove=function(e){return this.each(function(t,n){e?n.removeChild(e):n.parentNode.removeChild(n)})},C.prototype.on=function(e,t){return this.each(function(n,a){a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1)})},C.prototype.off=function(e,t){return this.each(function(n,a){a.detachEvent?a.detachEvent("on"+e,t):a.removeEventListener(e,t,!1)})},T.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},T.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,isInitValue:!0,min:"1900-1-1",max:"2099-12-31",trigger:"focus",show:!1,showBottom:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},T.prototype.lang=function(){var e=this,t=e.config,n={cn:{weeks:["日","一","二","三","四","五","六"],time:["时","分","秒"],timeTips:"选择时间",startTime:"开始时间",endTime:"结束时间",dateTips:"返回日期",month:["一","二","三","四","五","六","七","八","九","十","十一","十二"],tools:{confirm:"确定",clear:"清空",now:"现在"}},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"}}};return n[t.lang]||n.cn},T.prototype.init=function(){var e=this,t=e.config,n="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s",a="static"===t.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};t.elem=w(t.elem),t.eventElem=w(t.eventElem),t.elem[0]&&(t.range===!0&&(t.range="-"),t.format===i.date&&(t.format=i[t.type]),e.format=t.format.match(new RegExp(n+"|.","g"))||[],e.EXP_IF="",e.EXP_SPLIT="",w.each(e.format,function(t,a){var i=new RegExp(n).test(a)?"\\d{"+function(){return new RegExp(n).test(e.format[0===t?t+1:t-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;e.EXP_IF=e.EXP_IF+i,e.EXP_SPLIT=e.EXP_SPLIT+"("+i+")"}),e.EXP_IF=new RegExp("^"+(t.range?e.EXP_IF+"\\s\\"+t.range+"\\s"+e.EXP_IF:e.EXP_IF)+"$"),e.EXP_SPLIT=new RegExp("^"+e.EXP_SPLIT+"$",""),e.isInput(t.elem[0])||"focus"===t.trigger&&(t.trigger="click"),t.elem.attr("lay-key")||(t.elem.attr("lay-key",e.index),t.eventElem.attr("lay-key",e.index)),t.mark=w.extend({},t.calendar&&"cn"===t.lang?{"0-1-1":"元旦","0-2-14":"情人","0-3-8":"妇女","0-3-12":"植树","0-4-1":"愚人","0-5-1":"劳动","0-5-4":"青年","0-6-1":"儿童","0-9-10":"教师","0-9-18":"国耻","0-10-1":"国庆","0-12-25":"圣诞"}:{},t.mark),w.each(["min","max"],function(e,n){var a=[],i=[];if("number"==typeof t[n]){var r=t[n],o=(new Date).getTime(),s=864e5,l=new Date(r?r0)return!0;var a=w.elem("div",{"class":"layui-laydate-header"}),i=[function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=w.elem("div",{"class":"laydate-set-ym"}),t=w.elem("span"),n=w.elem("span");return e.appendChild(t),e.appendChild(n),e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],d=w.elem("div",{"class":"layui-laydate-content"}),c=w.elem("table"),m=w.elem("thead"),u=w.elem("tr");w.each(i,function(e,t){a.appendChild(t)}),m.appendChild(u),w.each(new Array(6),function(e){var t=c.insertRow(0);w.each(new Array(7),function(a){if(0===e){var i=w.elem("th");i.innerHTML=n.weeks[a],u.appendChild(i)}t.insertCell(a)})}),c.insertBefore(m,c.children[0]),d.appendChild(c),r[e]=w.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),r[e].appendChild(a),r[e].appendChild(d),o.push(i),s.push(d),l.push(c)}),w(d).html(function(){var e=[],i=[];return"datetime"===t.type&&e.push(''+n.timeTips+""),w.each(t.btns,function(e,r){var o=n.tools[r]||"btn";t.range&&"now"===r||(a&&"clear"===r&&(o="cn"===t.lang?"重置":"Reset"),i.push(''+o+""))}),e.push('"),e.join("")}()),w.each(r,function(e,t){i.appendChild(t)}),t.showBottom&&i.appendChild(d),/^#/.test(t.theme)){var m=w.elem("style"),u=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);"styleSheet"in m?(m.setAttribute("type","text/css"),m.styleSheet.cssText=u):m.innerHTML=u,w(i).addClass("laydate-theme-molv"),i.appendChild(m)}e.remove(T.thisElemDate),a?t.elem.append(i):(document.body.appendChild(i),e.position()),e.checkDate().calendar(),e.changeEvent(),T.thisElemDate=e.elemID,"function"==typeof t.ready&&t.ready(w.extend({},t.dateTime,{month:t.dateTime.month+1}))},T.prototype.remove=function(e){var t=this,n=(t.config,w("#"+(e||t.elemID)));return n.hasClass(c)||t.checkDate(function(){n.remove()}),t},T.prototype.position=function(){var e=this,t=e.config,n=e.bindElem||t.elem[0],a=n.getBoundingClientRect(),i=e.elem.offsetWidth,r=e.elem.offsetHeight,o=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},s=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},l=5,d=a.left,c=a.bottom;d+i+l>s("width")&&(d=s("width")-i-l),c+r+l>s()&&(c=a.top>r?a.top-r:s()-r,c-=2*l),t.position&&(e.elem.style.position=t.position),e.elem.style.left=d+("fixed"===t.position?0:o(1))+"px",e.elem.style.top=c+("fixed"===t.position?0:o())+"px"},T.prototype.hint=function(e){var t=this,n=(t.config,w.elem("div",{"class":h}));t.elem&&(n.innerHTML=e||"",w(t.elem).find("."+h).remove(),t.elem.appendChild(n),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){w(t.elem).find("."+h).remove()},3e3))},T.prototype.getAsYM=function(e,t,n){return n?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},T.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},T.prototype.checkDate=function(e){var t,a,i=this,r=(new Date,i.config),o=r.dateTime=r.dateTime||i.systemDate(),s=i.bindElem||r.elem[0],l=(i.isInput(s)?"val":"html",i.isInput(s)?s.value:"static"===r.position?"":s.innerHTML),c=function(e){e.year>d[1]&&(e.year=d[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},m=function(e,t,n){var o=["startTime","endTime"];t=(t.match(i.EXP_SPLIT)||[]).slice(1),n=n||0,r.range&&(i[o[n]]=i[o[n]]||{}),w.each(i.format,function(s,l){var c=parseFloat(t[s]);t[s].length必须遵循下述格式:
        "+(r.range?r.format+" "+r.range+" "+r.format:r.format)+"
        已为你重置"),a=!0):l&&l.constructor===Date?r.dateTime=i.systemDate(l):(r.dateTime=i.systemDate(),delete i.startState,delete i.endState,delete i.startDate,delete i.endDate,delete i.startTime,delete i.endTime),c(o),a&&l&&i.setValue(r.range?i.endDate?i.parse():"":i.parse()),e&&e(),i)},T.prototype.mark=function(e,t){var n,a=this,i=a.config;return w.each(i.mark,function(e,a){var i=e.split("-");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(n=a||t[2])}),n&&e.html(''+n+""),a},T.prototype.limit=function(e,t,n,a){var i,r=this,o=r.config,l={},d=o[n>41?"endDate":"dateTime"],c=w.extend({},d,t||{});return w.each({now:c,min:o.min,max:o.max},function(e,t){l[e]=r.newDate(w.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return w.each(a,function(n,a){e[a]=t[a]}),e}())).getTime()}),i=l.nowl.max,e&&e[i?"addClass":"removeClass"](s),i},T.prototype.calendar=function(e){var t,a,i,r=this,s=r.config,l=e||s.dateTime,c=new Date,m=r.lang(),u="date"!==s.type&&"datetime"!==s.type,h=e?1:0,y=w(r.table[h]).find("td"),f=w(r.elemHeader[h][2]).find("span");if(l.yeard[1]&&(l.year=d[1],r.hint("最高只能支持到公元"+d[1]+"年")),r.firstDate||(r.firstDate=w.extend({},l)),c.setFullYear(l.year,l.month,1),t=c.getDay(),a=n.getEndDate(l.month||12,l.year),i=n.getEndDate(l.month+1,l.year),w.each(y,function(e,n){var d=[l.year,l.month],c=0;n=w(n),n.removeAttr("class"),e=t&&e=n.firstDate.year&&(r.month=a.max.month,r.date=a.max.date),n.limit(w(i),r,t),M++}),w(u[f?0:1]).attr("lay-ym",M-8+"-"+T[1]).html(b+p+" - "+(M-1+p))}else if("month"===e)w.each(new Array(12),function(e){var i=w.elem("li",{"lay-ym":e}),s={year:T[0],month:e};e+1==T[1]&&w(i).addClass(o),i.innerHTML=r.month[e]+(f?"月":""),d.appendChild(i),T[0]=n.firstDate.year&&(s.date=a.max.date),n.limit(w(i),s,t)}),w(u[f?0:1]).attr("lay-ym",T[0]+"-"+T[1]).html(T[0]+p);else if("time"===e){var E=function(){w(d).find("ol").each(function(e,a){w(a).find("li").each(function(a,i){n.limit(w(i),[{hours:a},{hours:n[x].hours,minutes:a},{hours:n[x].hours,minutes:n[x].minutes,seconds:a}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),a.range||n.limit(w(n.footer).find(g),n[x],0,["hours","minutes","seconds"])};a.range?n[x]||(n[x]={hours:0,minutes:0,seconds:0}):n[x]=i,w.each([24,60,60],function(e,t){var a=w.elem("li"),i=["

        "+r.time[e]+"

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

        '):g.find("."+r).remove()},"keyup"),""===t&&g.find("."+r).remove(),void T())};f&&k.on("keyup",q).on("blur",function(i){var a=p[0].selectedIndex;e=k,d=t(p[0].options[a]).html(),0===a&&d===k.attr("placeholder")&&(d=""),setTimeout(function(){$(k.val(),function(e){d||k.val("")},"blur")},200)}),x.on("click",function(){var e=t(this),a=e.attr("lay-value"),n=p.attr("lay-filter");return!e.hasClass(c)&&(e.hasClass("layui-select-tips")?k.val(""):(k.val(e.text()),e.addClass(s)),e.siblings().removeClass(s),p.val(a).removeClass("layui-form-danger"),layui.event.call(this,l,"select("+n+")",{elem:p[0],value:a,othis:i}),w(!0),!1)}),i.find("dl>dt").on("click",function(e){return!1}),t(document).off("click",v).on("click",v)}};f.each(function(e,l){var r=t(this),o=r.next("."+a),u=this.disabled,d=l.value,f=t(l.options[l.selectedIndex]),v=l.options[0];if("string"==typeof r.attr("lay-ignore"))return r.show();var h="string"==typeof r.attr("lay-search"),p=v?v.value?i:v.innerHTML||i:i,m=t(['
        ','
        ','','
        ','
        ',function(e){var t=[];return layui.each(e,function(e,a){0!==e||a.value?"optgroup"===a.tagName.toLowerCase()?t.push("
        "+a.label+"
        "):t.push('
        '+a.innerHTML+"
        "):t.push('
        '+(a.innerHTML||i)+"
        ")}),0===t.length&&t.push('
        没有选项
        '),t.join("")}(r.find("*"))+"
        ","
        "].join(""));o[0]&&o.remove(),r.after(m),y.call(this,m,u,h)})},checkbox:function(){var e={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],_switch:["layui-form-switch","layui-form-onswitch","switch"]},i=u.find("input[type=checkbox]"),a=function(e,i){var a=t(this);e.on("click",function(){var t=a.attr("lay-filter"),n=(a.attr("lay-text")||"").split("|");a[0].disabled||(a[0].checked?(a[0].checked=!1,e.removeClass(i[1]).find("em").text(n[1])):(a[0].checked=!0,e.addClass(i[1]).find("em").text(n[0])),layui.event.call(a[0],l,i[2]+"("+t+")",{elem:a[0],value:a[0].value,othis:e}))})};i.each(function(i,n){var l=t(this),r=l.attr("lay-skin"),s=(l.attr("lay-text")||"").split("|"),o=this.disabled;"switch"===r&&(r="_"+r);var u=e[r]||e.checkbox;if("string"==typeof l.attr("lay-ignore"))return l.show();var d=l.next("."+u[0]),f=t(['
        ",function(){var e=n.title.replace(/\s/g,""),t={checkbox:[e?""+n.title+"":"",''].join(""),_switch:""+((n.checked?s[0]:s[1])||"")+""};return t[r]||t.checkbox}(),"
        "].join(""));d[0]&&d.remove(),l.after(f),a.call(this,f,u)})},radio:function(){var e="layui-form-radio",i=["",""],a=u.find("input[type=radio]"),n=function(a){var n=t(this),s="layui-anim-scaleSpring";a.on("click",function(){var o=n[0].name,c=n.parents(r),u=n.attr("lay-filter"),d=c.find("input[name="+o.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(d,function(){var a=t(this).next("."+e);this.checked=!1,a.removeClass(e+"ed"),a.find(".layui-icon").removeClass(s).html(i[1])}),n[0].checked=!0,a.addClass(e+"ed"),a.find(".layui-icon").addClass(s).html(i[0]),layui.event.call(n[0],l,"radio("+u+")",{elem:n[0],value:n[0].value,othis:a}))})};a.each(function(a,l){var r=t(this),s=r.next("."+e),o=this.disabled;if("string"==typeof r.attr("lay-ignore"))return r.show();s[0]&&s.remove();var u=t(['
        ',''+i[l.checked?0:1]+"","
        "+function(){var e=l.title||"";return"string"==typeof r.next().attr("lay-radio")&&(e=r.next().html(),r.next().remove()),e}()+"
        ","
        "].join(""));r.after(u),n.call(this,u)})}};return e?d[e]?d[e]():a.error("不支持的"+e+"表单渲染"):layui.each(d,function(e,t){t()}),n};var d=function(){var e=null,a=f.config.verify,s="layui-form-danger",o={},c=t(this),u=c.parents(r),d=u.find("*[lay-verify]"),v=c.parents("form")[0],h=c.attr("lay-filter");return layui.each(d,function(l,r){var o=t(this),c=o.attr("lay-verify").split("|"),u=o.attr("lay-verType"),d=o.val();if(o.removeClass(s),layui.each(c,function(t,l){var c,f="",v="function"==typeof a[l];if(a[l]){var c=v?f=a[l](d,r):!a[l][0].test(d);if(f=f||a[l][1],"required"===l&&(f=o.attr("lay-reqText")||f),c)return"tips"===u?i.tips(f,function(){return"string"==typeof o.attr("lay-ignore")||"select"!==r.tagName.toLowerCase()&&!/^checkbox|radio$/.test(r.type)?o:o.next()}(),{tips:1}):"alert"===u?i.alert(f,{title:"提示",shadeClose:!0}):i.msg(f,{icon:5,shift:6}),n.android||n.ios||setTimeout(function(){r.focus()},7),o.addClass(s),e=!0}}),e)return e}),!e&&(o=f.getValue(null,u),layui.event.call(this,l,"submit("+h+")",{elem:this,form:v,field:o}))},f=new u,v=t(document),h=t(window);f.render(),v.on("reset",r,function(){var e=t(this).attr("lay-filter");setTimeout(function(){f.render(null,e)},50)}),v.on("submit",r,d).on("click","*[lay-submit]",d),e(l,f)});layui.define("form",function(e){"use strict";var i=layui.$,a=layui.form,n=layui.layer,t="tree",r={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var a=this;return a.config=i.extend({},a.config,e),a},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var e=this,i=e.config,a=i.id||e.index;return l.that[a]=e,l.config[a]=i,{config:i,reload:function(i){e.reload.call(e,i)},getChecked:function(){return e.getChecked.call(e)},setChecked:function(i){return e.setChecked.call(e,i)}}},c="layui-hide",d="layui-disabled",s="layui-tree-set",o="layui-tree-iconClick",h="layui-icon-addition",u="layui-icon-subtraction",p="layui-tree-entry",f="layui-tree-main",y="layui-tree-txt",v="layui-tree-pack",C="layui-tree-spread",k="layui-tree-setLineShort",m="layui-tree-showLine",x="layui-tree-lineExtend",b=function(e){var a=this;a.index=++r.index,a.config=i.extend({},a.config,r.config,e),a.render()};b.prototype.config={data:[],showCheckbox:!1,showLine:!0,accordion:!1,onlyIconControl:!1,isJump:!1,edit:!1,text:{defaultNodeName:"未命名",none:"无数据"}},b.prototype.reload=function(e){var a=this;layui.each(e,function(e,i){i.constructor===Array&&delete a.config[e]}),a.config=i.extend(!0,{},a.config,e),a.render()},b.prototype.render=function(){var e=this,a=e.config;e.checkids=[];var n=i('
        ');e.tree(n);var t=a.elem=i(a.elem);if(t[0]){if(e.key=a.id||e.index,e.elem=n,e.elemNone=i('
        '+a.text.none+"
        "),t.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);a.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=i(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(k),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(k)}),e.events()}},b.prototype.renderForm=function(e){a.render(e,"LAY-tree-"+this.index)},b.prototype.tree=function(e,a){var n=this,t=n.config,r=a||t.data;layui.each(r,function(a,r){var l=r.children&&r.children.length>0,o=i('
        '),h=i(['
        ','
        ','
        ',function(){return t.showLine?l?'':'':''}(),function(){return t.showCheckbox?'':""}(),function(){return t.isJump&&r.href?''+(r.title||r.label||t.text.defaultNodeName)+"":''+(r.title||r.label||t.text.defaultNodeName)+""}(),"
        ",function(){if(!t.edit)return"";var e={add:'',update:'',del:''},i=['
        '];return t.edit===!0&&(t.edit=["update","del"]),"object"==typeof t.edit?(layui.each(t.edit,function(a,n){i.push(e[n]||"")}),i.join("")+"
        "):void 0}(),"
        "].join(""));l&&(h.append(o),n.tree(o,r.children)),e.append(h),h.prev("."+s)[0]&&h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),l||h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),n.spread(h,r),t.showCheckbox&&(r.checked&&n.checkids.push(r.id),n.checkClick(h,r)),t.edit&&n.operate(h,r)})},b.prototype.spread=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f),c=r.find("."+o),k=r.find("."+y),m=t.onlyIconControl?c:l,x="";m.on("click",function(i){var a=e.children("."+v),n=m.children(".layui-icon")[0]?m.children(".layui-icon"):m.find(".layui-tree-icon").children(".layui-icon");if(a[0]){if(e.hasClass(C))e.removeClass(C),a.slideUp(200),n.removeClass(u).addClass(h);else if(e.addClass(C),a.slideDown(200),n.addClass(u).removeClass(h),t.accordion){var r=e.siblings("."+s);r.removeClass(C),r.children("."+v).slideUp(200),r.find(".layui-tree-icon").children(".layui-icon").removeClass(u).addClass(h)}}else x="normal"}),k.on("click",function(){var n=i(this);n.hasClass(d)||(x=e.hasClass(C)?t.onlyIconControl?"open":"close":t.onlyIconControl?"close":"open",t.click&&t.click({elem:e,state:x,data:a}))})},b.prototype.setCheckbox=function(e,i,a){var n=this,t=(n.config,a.prop("checked"));if(!a.prop("disabled")){if("object"==typeof i.children||e.find("."+v)[0]){var r=e.find("."+v).find('input[same="layuiTreeCheck"]');r.each(function(){this.disabled||(this.checked=t)})}var l=function(e){if(e.parents("."+s)[0]){var i,a=e.parent("."+v),n=a.parent(),r=a.prev().find('input[same="layuiTreeCheck"]');t?r.prop("checked",t):(a.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||r.prop("checked",!1)),l(n)}};l(e),n.renderForm("checkbox")}},b.prototype.checkClick=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f);l.on("click",'input[same="layuiTreeCheck"]+',function(r){layui.stope(r);var l=i(this).prev(),c=l.prop("checked");l.prop("disabled")||(n.setCheckbox(e,a,l),t.oncheck&&t.oncheck({elem:e,checked:c,data:a}))})},b.prototype.operate=function(e,a){var t=this,r=t.config,l=e.children("."+p),d=l.children("."+f);l.children(".layui-tree-btnGroup").on("click",".layui-icon",function(l){layui.stope(l);var f=i(this).data("type"),b=e.children("."+v),g={data:a,type:f,elem:e};if("add"==f){b[0]||(r.showLine?(d.find("."+o).addClass("layui-tree-icon"),d.find("."+o).children(".layui-icon").addClass(h).removeClass("layui-icon-file")):d.find(".layui-tree-iconArrow").removeClass(c),e.append('
        '));var w=r.operate&&r.operate(g),N={};if(N.title=r.text.defaultNodeName,N.id=w,t.tree(e.children("."+v),[N]),r.showLine)if(b[0])b.hasClass(x)||b.addClass(x),e.find("."+v).each(function(){i(this).children("."+s).last().addClass(k)}),b.children("."+s).last().prev().hasClass(k)?b.children("."+s).last().prev().removeClass(k):b.children("."+s).last().removeClass(k),!e.parent("."+v)[0]&&e.next()[0]&&b.children("."+s).last().removeClass(k);else{var T=e.siblings("."+s),L=1,A=e.parent("."+v);layui.each(T,function(e,a){i(a).children("."+v)[0]||(L=0)}),1==L?(T.children("."+v).addClass(m),T.children("."+v).children("."+s).removeClass(k),e.children("."+v).addClass(m),A.removeClass(x),A.children("."+s).last().children("."+v).children("."+s).last().addClass(k)):e.children("."+v).children("."+s).addClass(k)}if(!r.showCheckbox)return;if(d.find('input[same="layuiTreeCheck"]')[0].checked){var I=e.children("."+v).children("."+s).last();I.find('input[same="layuiTreeCheck"]')[0].checked=!0}t.renderForm("checkbox")}else if("update"==f){var F=d.children("."+y).html();d.children("."+y).html(""),d.append(''),d.children(".layui-tree-editInput").val(F).focus();var j=function(e){var i=e.val().trim();i=i?i:r.text.defaultNodeName,e.remove(),d.children("."+y).html(i),g.data.title=i,r.operate&&r.operate(g)};d.children(".layui-tree-editInput").blur(function(){j(i(this))}),d.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),j(i(this)))})}else n.confirm('确认删除该节点 "'+(a.title||"")+'" 吗?',function(a){if(r.operate&&r.operate(g),g.status="remove",n.close(a),!e.prev("."+s)[0]&&!e.next("."+s)[0]&&!e.parent("."+v)[0])return e.remove(),void t.elem.append(t.elemNone);if(e.siblings("."+s).children("."+p)[0]){if(r.showCheckbox){var l=function(e){if(e.parents("."+s)[0]){var a=e.siblings("."+s).children("."+p),n=e.parent("."+v).prev(),r=n.find('input[same="layuiTreeCheck"]')[0],c=1,d=0;0==r.checked&&(a.each(function(e,a){var n=i(a).find('input[same="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(c=0),n.disabled||(d=1)}),1==c&&1==d&&(r.checked=!0,t.renderForm("checkbox"),l(n.parent("."+s))))}};l(e)}if(r.showLine){var d=e.siblings("."+s),h=1,f=e.parent("."+v);layui.each(d,function(e,a){i(a).children("."+v)[0]||(h=0)}),1==h?(b[0]||(f.removeClass(x),d.children("."+v).addClass(m),d.children("."+v).children("."+s).removeClass(k)),e.next()[0]?f.children("."+s).last().children("."+v).children("."+s).last().addClass(k):e.prev().children("."+v).children("."+s).last().addClass(k),e.next()[0]||e.parents("."+s)[1]||e.parents("."+s).eq(0).next()[0]||e.prev("."+s).addClass(k)):!e.next()[0]&&e.hasClass(k)&&e.prev().addClass(k)}}else{var y=e.parent("."+v).prev();if(r.showLine){y.find("."+o).removeClass("layui-tree-icon"),y.find("."+o).children(".layui-icon").removeClass(u).addClass("layui-icon-file");var w=y.parents("."+v).eq(0);w.addClass(x),w.children("."+s).each(function(){i(this).children("."+v).children("."+s).last().addClass(k)})}else y.find(".layui-tree-iconArrow").addClass(c);e.parents("."+s).eq(0).removeClass(C),e.parent("."+v).remove()}e.remove()})})},b.prototype.events=function(){var e=this,a=e.config;e.elem.find(".layui-tree-checkedFirst");e.setChecked(e.checkids),e.elem.find(".layui-tree-search").on("keyup",function(){var n=i(this),t=n.val(),r=n.nextAll(),l=[];r.find("."+y).each(function(){var e=i(this).parents("."+p);if(i(this).html().indexOf(t)!=-1){l.push(i(this).parent());var a=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+v)[0]&&a(e.parent("."+v).parent("."+s))};a(e.parent("."+s))}}),r.find("."+p).each(function(){var e=i(this).parent("."+s);e.hasClass("layui-tree-searchShow")||e.addClass(c)}),0==r.find(".layui-tree-searchShow").length&&e.elem.append(e.elemNone),a.onsearch&&a.onsearch({elem:l})}),e.elem.find(".layui-tree-search").on("keydown",function(){i(this).nextAll().find("."+p).each(function(){var e=i(this).parent("."+s);e.removeClass("layui-tree-searchShow "+c)}),i(".layui-tree-emptyText")[0]&&i(".layui-tree-emptyText").remove()})},b.prototype.getChecked=function(){var e=this,a=e.config,n=[],t=[];e.elem.find(".layui-form-checked").each(function(){n.push(i(this).prev()[0].value)});var r=function(e,a){layui.each(e,function(e,t){layui.each(n,function(e,n){if(t.id==n){var l=i.extend({},t);return delete l.children,a.push(l),t.children&&(l.children=[],r(t.children,l.children)),!0}})})};return r(i.extend({},a.data),t),t},b.prototype.setChecked=function(e){var a=this;a.config;a.elem.find("."+s).each(function(a,n){var t=i(this).data("id"),r=i(n).children("."+p).find('input[same="layuiTreeCheck"]'),l=r.next();if("number"==typeof e){if(t==e)return r[0].checked||l.click(),!1}else"object"==typeof e&&layui.each(e,function(e,i){if(i==t&&!r[0].checked)return l.click(),!0})})},l.that={},l.config={},r.reload=function(e,i){var a=l.that[e];return a.reload(i),l.call(a)},r.getChecked=function(e){var i=l.that[e];return i.getChecked()},r.setChecked=function(e,i){var a=l.that[e];return a.setChecked(i)},r.render=function(e){var i=new b(e);return l.call(i)},e(t,r)});layui.define(["laytpl","form"],function(e){"use strict";var a=layui.$,t=layui.laytpl,n=layui.form,i="transfer",l={config:{},index:layui[i]?layui[i].index+1e4:0,set:function(e){var t=this;return t.config=a.extend({},t.config,e),t},on:function(e,a){return layui.onevent.call(this,i,e,a)}},r=function(){var e=this,a=e.config,t=a.id||e.index;return r.that[t]=e,r.config[t]=a,{config:a,reload:function(a){e.reload.call(e,a)},getData:function(){return e.getData.call(e)}}},c="layui-hide",o="layui-btn-disabled",d="layui-none",s="layui-transfer-box",u="layui-transfer-header",h="layui-transfer-search",f="layui-transfer-active",y="layui-transfer-data",p=function(e){return e=e||{},['
        ','
        ','","
        ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
          ',"
          "].join("")},v=['
          ',p({index:0,checkAllName:"layTransferLeftCheckAll"}),'
          ','",'","
          ",p({index:1,checkAllName:"layTransferRightCheckAll"}),"
          "].join(""),x=function(e){var t=this;t.index=++l.index,t.config=a.extend({},t.config,l.config,e),t.render()};x.prototype.config={title:["列表一","列表二"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"无数据",searchNone:"无匹配数据"}},x.prototype.reload=function(e){var t=this;layui.each(e,function(e,a){a.constructor===Array&&delete t.config[e]}),t.config=a.extend(!0,{},t.config,e),t.render()},x.prototype.render=function(){var e=this,n=e.config,i=e.elem=a(t(v).render({data:n,index:e.index})),l=n.elem=a(n.elem);l[0]&&(n.data=n.data||[],n.value=n.value||[],e.key=n.id||e.index,l.html(e.elem),e.layBox=e.elem.find("."+s),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+h),e.layData=i.find("."+y),e.layBtn=i.find("."+f+" .layui-btn"),e.layBox.css({width:n.width,height:n.height}),e.layData.css({height:function(){return n.height-e.layHeader.outerHeight()-e.laySearch.outerHeight()-2}()}),e.renderData(),e.events())},x.prototype.renderData=function(){var e=this,a=(e.config,[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}]);e.parseData(function(e){var t=e.selected?1:0,n=["
        • ",'',"
        • "].join("");a[t].views.push(n),delete e.selected}),e.layData.eq(0).html(a[0].views.join("")),e.layData.eq(1).html(a[1].views.join("")),e.renderCheckBtn()},x.prototype.renderForm=function(e){n.render(e,"LAY-transfer-"+this.index)},x.prototype.renderCheckBtn=function(e){var t=this,n=t.config;e=e||{},t.layBox.each(function(i){var l=a(this),r=l.find("."+y),d=l.find("."+u).find('input[type="checkbox"]'),s=r.find('input[type="checkbox"]'),h=0,f=!1;if(s.each(function(){var e=a(this).data("hide");(this.checked||this.disabled||e)&&h++,this.checked&&!e&&(f=!0)}),d.prop("checked",f&&h===s.length),t.layBtn.eq(i)[f?"removeClass":"addClass"](o),!e.stopNone){var p=r.children("li:not(."+c+")").length;t.noneView(r,p?"":n.text.none)}}),t.renderForm("checkbox")},x.prototype.noneView=function(e,t){var n=a('

          '+(t||"")+"

          ");e.find("."+d)[0]&&e.find("."+d).remove(),t.replace(/\s/g,"")&&e.append(n)},x.prototype.setValue=function(){var e=this,t=e.config,n=[];return e.layBox.eq(1).find("."+y+' input[type="checkbox"]').each(function(){var e=a(this).data("hide");e||n.push(this.value)}),t.value=n,e},x.prototype.parseData=function(e){var t=this,n=t.config,i=[];return layui.each(n.data,function(t,l){l=("function"==typeof n.parseData?n.parseData(l):l)||l,i.push(l=a.extend({},l)),layui.each(n.value,function(e,a){a==l.value&&(l.selected=!0)}),e&&e(l)}),n.data=i,t},x.prototype.getData=function(e){var a=this,t=a.config,n=[];return a.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&n.push(t)})}),n},x.prototype.events=function(){var e=this,t=e.config;e.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var t=a(this).prev(),n=t[0].checked,i=t.parents("."+s).eq(0).find("."+y);t[0].disabled||("all"===t.attr("lay-type")&&i.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=n)}),e.renderCheckBtn({stopNone:!0}))}),e.layBtn.on("click",function(){var n=a(this),i=n.data("index"),l=e.layBox.eq(i),r=[];if(!n.hasClass(o)){e.layBox.eq(i).each(function(t){var n=a(this),i=n.find("."+y);i.children("li").each(function(){var t=a(this),n=t.find('input[type="checkbox"]'),i=n.data("hide");n[0].checked&&!i&&(n[0].checked=!1,l.siblings("."+s).find("."+y).append(t.clone()),t.remove(),r.push(n[0].value)),e.setValue()})}),e.renderCheckBtn();var c=l.siblings("."+s).find("."+h+" input");""===c.val()||c.trigger("keyup"),t.onchange&&t.onchange(e.getData(r),i)}}),e.laySearch.find("input").on("keyup",function(){var n=this.value,i=a(this).parents("."+h).eq(0).siblings("."+y),l=i.children("li");l.each(function(){var e=a(this),t=e.find('input[type="checkbox"]'),i=t[0].title.indexOf(n)!==-1;e[i?"removeClass":"addClass"](c),t.data("hide",!i)}),e.renderCheckBtn();var r=l.length===i.children("li."+c).length;e.noneView(i,r?t.text.searchNone:"")})},r.that={},r.config={},l.reload=function(e,a){var t=r.that[e];return t.reload(a),r.call(t)},l.getData=function(e){var a=r.that[e];return a.getData()},l.render=function(e){var a=new x(e);return r.call(a)},e(i,l)});layui.define(["laytpl","laypage","layer","form","util"],function(e){"use strict";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=(layui.util,layui.hint()),r=layui.device(),d={config:{checkName:"LAY_CHECKED",indexName:"LAY_TABLE_INDEX"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,y,e,t)}},c=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(c.that[i]=e,c.config[i]=t),{config:t,reload:function(t){e.reload.call(e,t)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)}}},s=function(e){var t=c.config[e];return t||o.error("The ID option was not found in the table instance"),t||null},u=function(e,a,l,n){var o=e.templet?function(){return"function"==typeof e.templet?e.templet(l):i(t(e.templet).html()||String(a)).render(l)}():a;return n?t("
          "+o+"
          ").text():o},y="table",h=".layui-table",f="layui-hide",p="layui-none",v="layui-table-view",m=".layui-table-tool",g=".layui-table-box",b=".layui-table-init",x=".layui-table-header",k=".layui-table-body",C=".layui-table-main",w=".layui-table-fixed",T=".layui-table-fixed-l",A=".layui-table-fixed-r",L=".layui-table-total",N=".layui-table-page",S=".layui-table-sort",W="layui-table-edit",_="layui-table-hover",E=function(e){var t='{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';return e=e||{},['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',function(){return e.fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':""}(),"{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
          ','
          ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
          ","
          "].join("")},z=['',"","
          "].join(""),H=['
          ',"{{# if(d.data.toolbar){ }}",'
          ','
          ','
          ',"
          ","{{# } }}",'
          ',"{{# if(d.data.loading){ }}",'
          ','',"
          ","{{# } }}","{{# var left, right; }}",'
          ',E(),"
          ",'
          ',z,"
          ","{{# if(left){ }}",'
          ','
          ',E({fixed:!0}),"
          ",'
          ',z,"
          ","
          ","{{# }; }}","{{# if(right){ }}",'
          ','
          ',E({fixed:"right"}),'
          ',"
          ",'
          ',z,"
          ","
          ","{{# }; }}","
          ","{{# if(d.data.totalRow){ }}",'
          ','','',"
          ","
          ","{{# } }}","{{# if(d.data.page){ }}",'
          ','
          ',"
          ","{{# } }}","","
          "].join(""),R=t(window),F=t(document),j=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};j.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:["filter","exports","print"],autoSort:!0,text:{none:"无数据"}},j.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr("id")||e.index,a.request=t.extend({pageName:"page",limitName:"limit"},a.request),a.response=t.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",countName:"count"},a.response),"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split("-")[1],a.height=R.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next("."+v),o=e.elem=t(i(H).render({VIEW_CLASS:v,data:a,index:e.index}));if(a.index=e.index,e.key=a.id||a.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(m),e.layBox=o.find(g),e.layHeader=o.find(x),e.layMain=o.find(C),e.layBody=o.find(k),e.layFixed=o.find(w),e.layFixLeft=o.find(T),e.layFixRight=o.find(A),e.layTotal=o.find(L),e.layPage=o.find(N),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(x).find("th");r.height(e.layHeader.height()-1-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom")))}e.pullData(e.page),e.events()},j.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||i[e.type])},j.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l="none"===t.css("display")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),"width"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+"-"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+"-"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},j.prototype.renderToolbar=function(){var e=this,a=e.config,l=['
          ','
          ','
          '].join(""),n=e.layTool.find(".layui-table-tool-temp");if("default"===a.toolbar)n.html(l);else if("string"==typeof a.toolbar){var o=t(a.toolbar).html()||"";o&&n.html(i(o).render(a))}var r={filter:{title:"筛选列",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"导出",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"打印",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}},d=[];"object"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i="string"==typeof t?r[t]:t;i&&d.push('
          ')}),e.layTool.find(".layui-table-tool-self").html(d.join(""))},j.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key="'+a.index+"-"+t+'"]'),n=parseInt(l.attr("colspan"))||0;if(l[0]){var o=t.split("-"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr("colspan",n),l[n<1?"addClass":"removeClass"](f),r.colspan=n,r.hide=n<1;var d=l.data("parentkey");d&&i.setParentCol(e,d)}},j.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},j.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit("width");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return"line"===t.skin||"nob"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,d){var c=0,s=d.minWidth||t.cellMinWidth;return d?void(d.colGroup||d.hide||(e?l&&ln&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+"px"}):/\d+%$/.test(a.width)&&e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+"px"}))});var d=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children("table").outerWidth();if(e.autoColNums&&d>=-i&&d<=i){var c=function(t){var i;return t=t||e.layHeader.eq(0).find("thead th:last-child"),i=t.data("field"),!i&&t.prev()[0]?c(t.prev()):t},s=c(),u=s.data("key");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+d+"px",e.layMain.height()-e.layMain.prop("clientHeight")>0&&(t.style.width=parseFloat(t.style.width)-1+"px")})}e.loading(!0)},j.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},j.prototype.reload=function(e){var i=this;e=e||{},delete i.haveInit,e.data&&e.data.constructor===Array&&delete i.config.data,i.config=t.extend(!0,{},i.config,e),i.render()},j.prototype.errorView=function(e){var i=this,a=i.layMain.find("."+p),l=t('
          '+(e||"Error")+"
          ");a[0]&&(i.layNone.remove(),a.remove()),i.layFixed.addClass(f),i.layMain.find("tbody").html(""),i.layMain.append(i.layNone=l),d.cache[i.key]=[]},j.prototype.page=1,j.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){"object"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var d=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf("application/json")&&(d=JSON.stringify(d)),i.loading(),t.ajax({type:a.method||"get",url:a.url,contentType:a.contentType,data:d,dataType:"json",headers:a.headers||{},success:function(t){"function"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.errorView(t[n.msgName]||'返回的数据不符合规范,正确的成功状态码应为:"'+n.statusName+'": '+n.statusCode)):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+" ms"),i.setColsWidth(),"function"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.errorView("数据接口请求异常:"+t),i.renderForm(),i.setColsWidth()}})}else if(a.data&&a.data.constructor===Array){var c={},s=e*a.limit-a.limit;c[n.dataName]=a.data.concat().splice(s,a.limit),c[n.countName]=a.data.length,i.renderData(c,e,c[n.countName]),o(),i.setColsWidth(),"function"==typeof a.done&&a.done(c,e,c[n.countName])}},j.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},j.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,y=e[s.response.dataName]||[],h=[],v=[],m=[],g=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(y,function(a,l){var o=[],y=[],p=[],g=a+s.limit*(n-1)+1;0!==l.length&&(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var c=r.field||n,h=s.index+"-"+r.key,v=l[c];if(void 0!==v&&null!==v||(v=""),!r.colGroup){var m=['','
          '+function(){var n=t.extend(!0,{LAY_INDEX:g},l),o=d.config.checkName;switch(r.type){case"checkbox":return'";case"radio":return n[o]&&(e=a),'';case"numbers":return g}return r.toolbar?i(t(r.toolbar).html()||"").render(n):u(r,v,n)}(),"
          "].join("");o.push(m),r.fixed&&"right"!==r.fixed&&y.push(m),"right"===r.fixed&&p.push(m)}}),h.push(''+o.join("")+""),v.push(''+y.join("")+""),m.push(''+p.join("")+""))}),c.layBody.scrollTop(0),c.layMain.find("."+p).remove(),c.layMain.find("tbody").html(h.join("")),c.layFixLeft.find("tbody").html(v.join("")),c.layFixRight.find("tbody").html(m.join("")),c.renderForm(),"number"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return d.cache[c.key]=y,c.layPage[0==o||0===y.length&&1==n?"addClass":"removeClass"](f),r?g():0===y.length?(c.renderForm(),c.errorView(s.text.none)):(c.layFixed.removeClass(f),g(),c.renderTotal(y),void(s.page&&(s.page=t.extend({elem:"layui-table-page"+s.index,count:o,limit:s.limit,limits:s.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(c.page=e.curr,s.limit=e.limit,c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page))))},j.prototype.renderTotal=function(e){var t=this,i=t.config,a={};if(i.totalRow){layui.each(e,function(e,i){0!==i.length&&t.eachCols(function(e,t){var l=t.field||e,n=i[l];t.totalRow&&(a[l]=(a[l]||0)+(parseFloat(n)||0))})}),t.dataTotal={};var l=[];t.eachCols(function(e,n){var o=n.field||e,r=function(){var e=n.totalRowText||"",t=parseFloat(a[o]).toFixed(2),i={};return i[o]=t,t=u(n,t,i),n.totalRow?t||e:e}(),d=['','
          '+r,"
          "].join("");n.field&&(t.dataTotal[o]=r),l.push(d)}),t.layTotal.find("tbody").html(""+l.join("")+"")}},j.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(".laytable-cell-"+(a.index+"-"+t)+":eq(0)")},j.prototype.renderForm=function(e){n.render(e,"LAY-table-"+this.index)},j.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,"layui-table-click"),a=t.layBody.find('tr[data-index="'+e+'"]');a.addClass(i).siblings("tr").removeClass(i)},j.prototype.sort=function(e,i,a,l){var n,r,c=this,s={},u=c.config,h=u.elem.attr("lay-filter"),f=d.cache[c.key];"string"==typeof e&&c.layHeader.find("th").each(function(i,a){var l=t(this),o=l.data("field");if(o===e)return e=l,n=o,!1});try{var n=n||e.data("field"),p=e.data("key");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find("th .laytable-cell-"+p).find(S);c.layHeader.find("th").find(S).removeAttr("lay-sort"),v.attr("lay-sort",i||null),c.layFixed.find("th")}catch(m){return o.error("Table modules: Did not match to field")}c.sortKey={field:n,sort:i},u.autoSort&&("asc"===i?r=layui.sort(f,n):"desc"===i?r=layui.sort(f,n,!0):(r=layui.sort(f,d.config.indexName),delete c.sortKey)),s[u.response.dataName]=r||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,y,"sort("+h+")",{field:n,type:i})},j.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(b).remove()):(i.layInit=t(['
          ','',"
          "].join("")),i.layBox.append(i.layInit)))},j.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&l[e].constructor!==Array&&(l[e][a.checkName]=t)},j.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){"checkbox"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),e.renderForm("checkbox")),a(!0)):(i[0].checked&&(i.prop("checked",!1),e.renderForm("checkbox")),a(!1)))},j.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===".laytable-cell-"+e)return t(a),!0})},j.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=R.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css("height",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e-=t.layPage.outerHeight()||41),t.layMain.css("height",e-2))},j.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement("div"),e.style.width="100px",e.style.height="100px",e.style.overflowY="scroll",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},j.prototype.scrollPatch=function(){var e=this,i=e.layMain.children("table"),a=e.layMain.width()-e.layMain.prop("clientWidth"),l=e.layMain.height()-e.layMain.prop("clientHeight"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(".layui-table-patch")[0]){var i=t('
          ');i.find("div").css({width:a}),e.find("tr").append(i)}}else e.find(".layui-table-patch").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),d=r-l;e.layFixed.find(k).css("height",i.height()>=d?d:"auto"),e.layFixRight[n>0?"removeClass":"addClass"](f),e.layFixRight.css("right",a-1)},j.prototype.events=function(){var e,i=this,a=i.config,o=t("body"),c={},s=i.layHeader.find("th"),h=".layui-table-cell",p=a.elem.attr("lay-filter");i.layTool.on("click","*[lay-event]",function(e){var o=t(this),c=o.attr("lay-event"),s=function(e){var l=t(e.list),n=t('
            ');n.html(l),a.height&&n.css("max-height",a.height-(i.layTool.outerHeight()||50)),o.find(".layui-table-tool-panel")[0]||o.append(n),i.renderForm(),n.on("click",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),l.close(i.tipsIndex),c){case"LAYTABLE_COLS":s({list:function(){var e=[];return i.eachCols(function(t,i){i.field&&"normal"==i.type&&e.push('
          • ')}),e.join("")}(),done:function(){n.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var l=t(e.elem),n=this.checked,o=l.data("key"),r=l.data("parentkey");layui.each(a.cols,function(e,t){layui.each(t,function(t,l){if(e+"-"+t===o){var d=l.hide;l.hide=!n,i.elem.find('*[data-key="'+a.index+"-"+o+'"]')[n?"removeClass":"addClass"](f),d!=l.hide&&i.setParentCol(!n,r),i.resize()}})})})}});break;case"LAYTABLE_EXPORT":r.ie?l.tips("导出功能不支持 IE,请用 Chrome 等高级浏览器导出",this,{tips:3}):s({list:function(){return['
          • 导出到 Csv 文件
          • ','
          • 导出到 Excel 文件
          • '].join("")}(),done:function(e,l){l.on("click",function(){var e=t(this).data("type");d.exportFile.call(i,a.id,null,e)})}});break;case"LAYTABLE_PRINT":var u=window.open("打印窗口","_blank"),h=[""].join(""),v=t(i.layHeader.html());v.append(i.layMain.find("table").html()),v.append(i.layTotal.find("table").html()),v.find("th.layui-table-patch").remove(),v.find(".layui-table-col-special").remove(),u.document.write(h+v.prop("outerHTML")),u.document.close(),u.print(),u.close()}layui.event.call(this,y,"toolbar("+p+")",t.extend({event:c,config:a},{}))}),s.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||c.resizeStart||(c.allowResize=i.width()-l<=10,o.css("cursor",c.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);c.resizeStart||o.css("cursor","")}).on("mousedown",function(e){var l=t(this);if(c.allowResize){var n=l.data("key");e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],i.getCssRule(n,function(e){var t=e.style.width||l.outerWidth();c.rule=e,c.ruleWidth=parseFloat(t),c.minWidth=l.data("minwidth")||a.cellMinWidth})}}),F.on("mousemove",function(t){if(c.resizeStart){if(t.preventDefault(),c.rule){var a=c.ruleWidth+t.clientX-c.offset[0];a');return n[0].value=i.data("content")||l.text(),i.find("."+W)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on("mouseenter","td",function(){b.call(this)}).on("mouseleave","td",function(){b.call(this,"hide")});var g="layui-table-grid-down",b=function(e){var i=t(this),a=i.children(h);if(!i.data("off"))if(e)i.find(".layui-table-grid-down").remove();else if(a.prop("scrollWidth")>a.outerWidth()){if(a.find("."+g)[0])return;i.append('
            ')}};i.layBody.on("click","."+g,function(e){var n=t(this),o=n.parent(),d=o.children(h);i.tipsIndex=l.tips(['
            ',d.html(),"
            ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:r.ios||r.android?300:i.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}),layui.stope(e)}),i.layBody.on("click","*[lay-event]",function(){var e=t(this),a=e.parents("tr").eq(0).data("index");layui.event.call(this,y,"tool("+p+")",v.call(this,{event:e.attr("lay-event")})),i.setThisRowChecked(a)}),i.layMain.on("scroll",function(){var e=t(this),a=e.scrollLeft(),n=e.scrollTop();i.layHeader.scrollLeft(a),i.layTotal.scrollLeft(a),i.layFixed.find(k).scrollTop(n),l.close(i.tipsIndex)}),R.on("resize",function(){i.resize()})},function(){F.on("click",function(){F.trigger("table.remove.tool.panel")}),F.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()})}(),d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':h+"[lay-data]"),n="Table element property lay-data configuration item has a syntax error: ";return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){o.error(n+l)}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},d.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){return o.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr("colspan")||0,rowspan:a.attr("rowspan")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},c.that={},c.config={},d.eachCols=function(e,i,a){var l=c.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void("function"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return l.constructor===Array?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.exportFile=function(e,t,i){var a=this;t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var l=c.config[e]||{},n={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],s=document.createElement("a");return r.ie?o.error("IE_NOT_SUPPORT_EXPORTS"):(s.href="data:"+n+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],l=[],n=[];return layui.each(t,function(t,a){var n=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(a),function(e,t){n.push('"'+(t||"")+'"')})):d.eachCols(e,function(e,l){if(l.field&&"normal"==l.type&&!l.hide){var o=a[l.field];void 0!==o&&null!==o||(o=""),0==t&&i.push(l.title||""),n.push('"'+u(l,o,a,"text")+'"')}}),l.push(n.join(","))}),layui.each(a.dataTotal,function(e,t){n.push(t)}),i.join(",")+"\r\n"+l.join("\r\n")+"\r\n"+n.join(",")}()),s.download=(l.title||"table_"+(l.index||""))+"."+i,document.body.appendChild(s),s.click(),void document.body.removeChild(s))},d.resize=function(e){if(e){var t=s(e);if(!t)return;c.that[e].resize()}else layui.each(c.that,function(){this.resize()})},d.reload=function(e,t){var i=s(e);if(i){var a=c.that[e];return a.reload(t),c.call(a)}},d.render=function(e){var t=new j(e);return c.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},d.init(),e(y,d)});layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['",'"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['
              ',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("")}),i.join("")}(),"
            "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a",u=1;u<=i.length;u++){var r='
          • ";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'
          • ":n+=r}n+=""+(i.text?''+i.value+"星":"")+"";var c=i.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next("span"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass("layui-inline"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find("i").width();l.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next("span").text(i.value+"星"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on("mousemove",function(e){if(l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+t+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(u).removeClass(s)}}),v.on("mouseleave",function(){l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+Math.floor(i.value)+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)});layui.define("jquery",function(t){"use strict";var e=layui.$,i={fixbar:function(t){var i,n,a="layui-fixbar",o="layui-fixbar-top",r=e(document),l=e("body");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?"":t.bar1,t.bar2=t.bar2===!0?"":t.bar2,t.bgcolor=t.bgcolor?"background-color:"+t.bgcolor:"";var c=[t.bar1,t.bar2,""],g=e(['
              ',t.bar1?'
            • '+c[0]+"
            • ":"",t.bar2?'
            • '+c[1]+"
            • ":"",'
            • '+c[2]+"
            • ","
            "].join("")),s=g.find("."+o),u=function(){var e=r.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e("."+a)[0]||("object"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find("li").on("click",function(){var i=e(this),n=i.attr("lay-type");"top"===n&&e("html,body").animate({scrollTop:0},200),t.click&&t.click.call(this,n)}),r.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var n=this,a="function"==typeof e,o=new Date(t).getTime(),r=new Date(!e||a?(new Date).getTime():e).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=e);var g=setTimeout(function(){n.countdown(t,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,n=[[],[]],a=(new Date).getTime()-new Date(t).getTime();return a>6912e5?(a=new Date(t),n[0][0]=i.digit(a.getFullYear(),4),n[0][1]=i.digit(a.getMonth()+1),n[0][2]=i.digit(a.getDate()),e||(n[1][0]=i.digit(a.getHours()),n[1][1]=i.digit(a.getMinutes()),n[1][2]=i.digit(a.getSeconds())),n[0].join("-")+" "+n[1].join(":")):a>=864e5?(a/1e3/60/60/24|0)+"天前":a>=36e5?(a/1e3/60/60|0)+"小时前":a>=12e4?(a/1e3/60|0)+"分钟前":a<0?"未来":"刚刚"},digit:function(t,e){var i="";t=String(t),e=e||2;for(var n=t.length;n/g,">").replace(/'/g,"'").replace(/"/g,""")},event:function(t,n,a){n=i.event[t]=e.extend(!0,i.event[t],n)||{},e("body").on(a||"click","*["+t+"]",function(){var i=e(this),a=i.attr(t);n[a]&&n[a].call(this,i)})}};!function(t,e,i){"$:nomunge";function n(){a=e[l](function(){o.each(function(){var e=t(this),i=e.width(),n=e.height(),a=t.data(this,g);(i!==a.w||n!==a.h)&&e.trigger(c,[a.w=i,a.h=n])}),n()},r[s])}var a,o=t([]),r=t.resize=t.extend(t.resize,{}),l="setTimeout",c="resize",g=c+"-special-event",s="delay",u="throttleWindow";r[s]=250,r[u]=!0,t.event.special[c]={setup:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===o.length&&n()},teardown:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.not(e),e.removeData(g),o.length||clearTimeout(a)},add:function(e){function n(e,n,o){var r=t(this),l=t.data(this,g)||{};l.w=n!==i?n:r.width(),l.h=o!==i?o:r.height(),a.apply(this,arguments)}if(!r[u]&&this[l])return!1;var a;return t.isFunction(e)?(a=e,n):(a=e.handler,void(e.handler=n))}}}(e,window),t("util",i)});layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});layui.define(["layer","form"],function(t){"use strict";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n="layedit",o="layui-show",r="layui-disabled",c=function(){var t=this;t.index=0,t.config={tool:["strong","italic","underline","del","|","left","center","right","|","link","unlink","face","image"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r="layui-layedit",c=e("string"==typeof t?"#"+t:t),u="LAY_layedit_"+ ++a.index,d=c.next("."+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join("")}(),m=e(['
            ','
            '+f+"
            ",'
            ','',"
            ","
            "].join(""));return l.ie&&l.ie<8?c.removeClass("layui-hide").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass("layui-hide").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e("#"+i[1].attr("textarea"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find("iframe");n.css({height:a.height}).on("load",function(){var o=n.contents(),r=n.prop("contentWindow"),c=o.find("head"),s=e([""].join("")),u=o.find("body");c.append(s),u.attr("contenteditable","true").css({"min-height":a.height}).html(i.value||""),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e("#LAY_layedit_"+t),a=i.prop("contentWindow");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on("keydown",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if("pre"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg("请暂时用shift+enter"),!1}r.execCommand("formatBlock",!1,"

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

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

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

              ','
            • ','','
              ','',"
              ","
            • ",'
            • ','','
              ','",'","
              ","
            • ",'
            • ','','',"
            • ","
            "].join(""),success:function(t,n){var o="submit(layedit-link-yes)";a.render("radio"),t.find(".layui-btn-primary").on("click",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+"images/face/"+t+".gif"}),e}();return x.hide=x.hide||function(t){"face"!==e(t.target).attr("layedit-event")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('
          • '+e+'
          • ')}),'
              '+t.join("")+"
            "}(),this,{tips:1,time:0,skin:"layui-box layui-util-face",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(".layui-clear>li").on("click",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off("click",x.hide).on("click",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:"LAY_layedit_code",area:"550px",shade:.05,shadeClose:!0,moveType:1,title:"插入代码",skin:"layui-layer-msg",content:['
              ','
            • ','','
              ','","
              ","
            • ",'
            • ','','
              ','',"
              ","
            • ",'
            • ','','',"
            • ","
            "].join(""),success:function(l,n){var o="submit(layedit-code-yes)";a.render("select"),l.find(".layui-btn-primary").on("click",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'',strong:'',italic:'',underline:'',del:'',"|":'',left:'',center:'',right:'',link:'',unlink:'',face:'',image:'',code:'',help:''},w=new c;t(n,w)});layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
            1. '+o.replace(/[\r\t\n]+/g,"
            2. ")+"
            "),c.find(">.layui-code-h3")[0]||c.prepend('

            '+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

            ");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/core/layui.js b/ksafepack-admin/src/main/resources/static/plugins/layui/core/layui.js new file mode 100644 index 0000000..4615b57 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/core/layui.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;!function(e){"use strict";var t=document,o={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.5.5"},r=function(){var e=t.currentScript?t.currentScript.src:function(){for(var e,o=t.scripts,n=o.length-1,r=n;r>0;r--)if("interactive"===o[r].readyState){e=o[r].src;break}return e||o[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),i=function(t){e.console&&console.error&&console.error("Layui hint: "+t)},a="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u={layer:"modules/layer",laydate:"modules/laydate",laypage:"modules/laypage",laytpl:"modules/laytpl",layim:"modules/layim",layedit:"modules/layedit",form:"modules/form",upload:"modules/upload",transfer:"modules/transfer",tree:"modules/tree",table:"modules/table",element:"modules/element",rate:"modules/rate",colorpicker:"modules/colorpicker",slider:"modules/slider",carousel:"modules/carousel",flow:"modules/flow",util:"modules/util",code:"modules/code",jquery:"modules/jquery",mobile:"modules/mobile","layui.all":"../layui.all"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r="function"==typeof e,i=function(){var e=function(e,t){layui[e]=t,o.status[e]=!0};return"function"==typeof t&&t(function(n,r){e(n,r),o.callback[n]=function(){t(e)}}),this};return r&&(t=e,e=[]),!layui["layui.all"]&&layui["layui.mobile"]?i.call(n):(n.use(e,i),n)},n.prototype.use=function(e,n,l){function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName("head")[0];e="string"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){"jquery"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===e.length||layui["layui.all"]&&u[f]||!layui["layui.all"]&&layui["layui.mobile"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void("string"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement("script"),h=(u[f]?p+"lay/":/^\{\/\}/.test(y.modules[f])?"":o.base||"")+(y.modules[f]||f)+".js";h=h.replace(/^\{\/\}/,""),v.async=!0,v.charset="utf-8",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||"";return e?"?v="+e:""}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf("[native code")<0||a?v.addEventListener("load",function(e){s(e,h)},!1):v.attachEvent("onreadystatechange",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](o)},n.prototype.link=function(e,n,r){var a=this,u=t.createElement("link"),l=t.getElementsByTagName("head")[0];"string"==typeof n&&(r=n);var s=(r||e).replace(/\.|\//g,""),c=u.id="layuicss-"+s,y=0;return u.rel="stylesheet",u.href=e+(o.debug?"?v="+(new Date).getTime():""),u.media="all",t.getElementById(c)||l.appendChild(u),"function"!=typeof n?a:(function p(){return++y>1e3*o.timeout/100?i(e+" timeout"):void(1989===parseInt(a.getStyle(t.getElementById(c),"width"))?function(){n()}():setTimeout(p,100))}(),a)},o.callback={},n.prototype.factory=function(e){if(layui[e])return"function"==typeof o.callback[e]?o.callback[e]:null},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+"css/"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,"function"==typeof t&&t(n)},void(n.onerror=function(e){n.onerror=null,"function"==typeof o&&o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?i("模块名 "+o+" 已被占用"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(e)?(e=e.replace(/^#\//,""),o.href="/"+e,e=e.replace(/([^#])(#.*$)/,"$1").split("/")||[],t.each(e,function(e,t){/^\w+=/.test(t)?function(){t=t.split("="),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o,n){if(t=t||"layui",n=n||localStorage,e.JSON&&e.JSON.parse){if(null===o)return delete n[t];o="object"==typeof o?o:{key:o};try{var r=JSON.parse(n[t])}catch(i){var r={}}return"value"in o&&(r[o.key]=o.value),o.remove&&delete r[o.key],n[t]=JSON.stringify(r),o.key?r[o.key]:r}},n.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+"/([^\\s\\_\\-]+)");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?"windows":/linux/.test(o)?"linux":/iphone|ipod|ipad|ios/.test(o)?"ios":/mac/.test(o)?"mac":void 0}(),ie:function(){return!!(e.ActiveXObject||"ActiveXObject"in e)&&((o.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:n("micromessenger")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios="ios"===r.os,r},n.prototype.hint=function(){return{error:i}},n.prototype.each=function(e,t){var o,n=this;if("function"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;oi?1:r/g,">").replace(/'/g,"'").replace(/"/g,""")},on:function(e,a){return layui.onevent.call(this,n.MOD_NAME,e,a)},sendAuthCode:function(e){e=a.extend({seconds:60,elemPhone:"#LAY_phone",elemVercode:"#LAY_vercode"},e);var i,t=e.seconds,n=a(e.elem),l=function(a){t--,t<0?(n.removeClass(f).html("获取验证码"),t=e.seconds,clearInterval(i)):n.addClass(f).html(t+"秒后重获"),a||(i=setInterval(function(){l(!0)},1e3))};e.elemPhone=a(e.elemPhone),e.elemVercode=a(e.elemVercode),n.on("click",function(){var i=e.elemPhone,n=i.val();if(t===e.seconds&&!a(this).hasClass(f)){if(!/^1\d{10}$/.test(n))return i.focus(),layer.msg("请输入正确的手机号");if("object"==typeof e.ajax){var s=e.ajax.success;delete e.ajax.success}P.req(a.extend(!0,{url:"/auth/code",type:"get",data:{phone:n},success:function(a){layer.msg("验证码已发送至你的手机,请注意查收",{icon:1,shade:0}),e.elemVercode.focus(),l(),s&&s(a)}},e.ajax))}})},screen:function(){var e=r.width();return e>1200?3:e>992?2:e>768?1:0},sideFlexible:function(e){var i=u,t=a("#"+h),l=P.screen();"spread"===e?(t.removeClass(x).addClass(g),l<2?i.addClass(v):i.removeClass(v),i.removeClass(C)):(t.removeClass(g).addClass(x),l<2?i.removeClass(C):i.addClass(C),i.removeClass(v)),layui.event.call(this,n.MOD_NAME,"side({*})",{status:e})},popup:l.popup,popupRight:function(e){return P.popup.index=layer.open(a.extend({type:1,id:"LAY_adminPopupR",anim:-1,title:!1,closeBtn:!1,offset:"r",shade:.1,shadeClose:!0,skin:"layui-anim layui-anim-rl layui-layer-adminRight",area:"300px"},e))},theme:function(e){var t=(n.theme,layui.data(n.tableName)),l="LAY_layadmin_theme",s=document.createElement("style"),r=i([".layui-side-menu,",".layadmin-pagetabs .layui-tab-title li:after,",".layadmin-pagetabs .layui-tab-title li.layui-this:after,",".layui-layer-admin .layui-layer-title,",".layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>.layui-nav-child","{background-color:{{d.color.main}} !important;}",".layui-nav-tree .layui-this,",".layui-nav-tree .layui-this>a,",".layui-nav-tree .layui-nav-child dd.layui-this,",".layui-nav-tree .layui-nav-child dd.layui-this a","{background-color:{{d.color.selected}} !important;}",".layui-layout-admin .layui-logo{background-color:{{d.color.logo || d.color.main}} !important;}","{{# if(d.color.header){ }}",".layui-layout-admin .layui-header{background-color:{{ d.color.header }};}",".layui-layout-admin .layui-header a,",".layui-layout-admin .layui-header a cite{color: #f8f8f8;}",".layui-layout-admin .layui-header a:hover{color: #fff;}",".layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #fbfbfb;}",".layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #fbfbfb;}",".layui-layout-admin .layui-header .layui-nav .layui-this:after, .layui-layout-admin .layui-header .layui-nav-bar{background-color: #fff; background-color: rgba(255,255,255,.5);}",".layadmin-pagetabs .layui-tab-title li:after{display: none;}","{{# } }}"].join("")).render(e=a.extend({},t.theme,e)),u=document.getElementById(l);"styleSheet"in s?(s.setAttribute("type","text/css"),s.styleSheet.cssText=r):s.innerHTML=r,s.id=l,u&&o[0].removeChild(u),o[0].appendChild(s),o.attr("layadmin-themealias",e.color.alias),t.theme=t.theme||{},layui.each(e,function(e,a){t.theme[e]=a}),layui.data(n.tableName,{key:"theme",value:t.theme})},initTheme:function(e){var a=n.theme;e=e||0,a.color[e]&&(a.color[e].index=e,P.theme({color:a.color[e]}))},tabsPage:{},tabsBody:function(e){return a(m).find("."+b).eq(e||0)},tabsBodyChange:function(e,a){a=a||{},P.tabsBody(e).addClass(d).siblings().removeClass(d),F.rollPage("auto",e),layui.event.call(this,n.MOD_NAME,"tabsPage({*})",{url:a.url,text:a.text})},resize:function(e){var a=layui.router(),i=a.path.join("-");P.resizeFn[i]&&(r.off("resize",P.resizeFn[i]),delete P.resizeFn[i]),"off"!==e&&(e(),P.resizeFn[i]=e,r.on("resize",P.resizeFn[i]))},resizeFn:{},runResize:function(){var e=layui.router(),a=e.path.join("-");P.resizeFn[a]&&P.resizeFn[a]()},delResize:function(){this.resize("off")},closeThisTabs:function(){P.tabsPage.index&&a(z).eq(P.tabsPage.index).find(".layui-tab-close").trigger("click")},fullScreen:function(){var e=document.documentElement,a=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen;"undefined"!=typeof a&&a&&a.call(e)},exitScreen:function(){document.documentElement;document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen?document.webkitCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen()}},F=P.events={flexible:function(e){var a=e.find("#"+h),i=a.hasClass(x);P.sideFlexible(i?"spread":null)},refresh:function(){var e=".layadmin-iframe",i=a("."+b).length;P.tabsPage.index>=i&&(P.tabsPage.index=i-1);var t=P.tabsBody(P.tabsPage.index).find(e);t[0].contentWindow.location.reload(!0)},serach:function(e){e.off("keypress").on("keypress",function(a){if(this.value.replace(/\s/g,"")&&13===a.keyCode){var i=e.attr("lay-action"),t=e.attr("lay-text")||"搜索";i+=this.value,t=t+' '+P.escape(this.value)+"",layui.index.openTabsPage(i,t),F.serach.keys||(F.serach.keys={}),F.serach.keys[P.tabsPage.index]=this.value,this.value===F.serach.keys[P.tabsPage.index]&&F.refresh(e),this.value=""}})},message:function(e){e.find(".layui-badge-dot").remove()},theme:function(){P.popupRight({id:"LAY_adminPopupTheme",success:function(){l(this.id).render("system/theme")}})},note:function(e){var a=P.screen()<2,i=layui.data(n.tableName).note;F.note.index=P.popup({title:"便签",shade:0,offset:["41px",a?null:e.offset().left-250+"px"],anim:-1,id:"LAY_adminNote",skin:"layadmin-note layui-anim layui-anim-upbit",content:'',resize:!1,success:function(e,a){var t=e.find("textarea"),l=void 0===i?"便签中的内容会存储在本地,这样即便你关掉了浏览器,在下次打开时,依然会读取到上一次的记录。是个非常小巧实用的本地备忘录":i;t.val(l).focus().on("keyup",function(){layui.data(n.tableName,{key:"note",value:this.value})})}})},fullscreen:function(e){var a="layui-icon-screen-full",i="layui-icon-screen-restore",t=e.children("i");t.hasClass(a)?(P.fullScreen(),t.addClass(i).removeClass(a)):(P.exitScreen(),t.addClass(a).removeClass(i))},about:function(){P.popupRight({id:"LAY_adminPopupAbout",success:function(){l(this.id).render("system/about")}})},more:function(){P.popupRight({id:"LAY_adminPopupMore",success:function(){l(this.id).render("system/more")}})},back:function(){history.back()},setTheme:function(e){var a=e.data("index");e.siblings(".layui-this").data("index");e.hasClass(y)||(e.addClass(y).siblings(".layui-this").removeClass(y),P.initTheme(a))},rollPage:function(e,i){var t=a("#LAY_app_tabsheader"),n=t.children("li"),l=(t.prop("scrollWidth"),t.outerWidth()),s=parseFloat(t.css("left"));if("left"===e){if(!s&&s<=0)return;var r=-s-l;n.each(function(e,i){var n=a(i),l=n.position().left;if(l>=r)return t.css("left",-l),!1})}else"auto"===e?!function(){var e,r=n.eq(i);if(r[0]){if(e=r.position().left,e<-s)return t.css("left",-e);if(e+r.outerWidth()>=l-s){var o=e+r.outerWidth()-(l-s);n.each(function(e,i){var n=a(i),l=n.position().left;if(l+s>0&&l-s>o)return t.css("left",-l),!1})}}}():n.each(function(e,i){var n=a(i),r=n.position().left;if(r+n.outerWidth()>=l-s)return t.css("left",-r),!1})},leftPage:function(){F.rollPage("left")},rightPage:function(){F.rollPage()},closeThisTabs:function(){var e=parent===self?P:parent.layui.admin;e.closeThisTabs()},closeOtherTabs:function(e){var i="LAY-system-pagetabs-remove";"all"===e?(a(z+":gt(0)").remove(),a(m).find("."+b+":gt(0)").remove(),a(z).eq(0).trigger("click")):(a(z).each(function(e,t){e&&e!=P.tabsPage.index&&(a(t).addClass(i),P.tabsBody(e).addClass(i))}),a("."+i).remove())},closeAllTabs:function(){F.closeOtherTabs("all")},shade:function(){P.sideFlexible()},im:function(){P.popup({id:"LAY-popup-layim-demo",shade:0,area:["800px","300px"],title:"面板外的操作示例",offset:"lb",success:function(){layui.view(this.id).render("layim/demo").then(function(){layui.use("im")})}})}};!function(){var e=layui.data(n.tableName);e.theme?P.theme(e.theme):n.theme&&P.initTheme(n.theme.initColorIndex),"pageTabs"in layui.setter||(layui.setter.pageTabs=!0),n.pageTabs||(a("#LAY_app_tabs").addClass(c),u.addClass("layadmin-tabspage-none")),s.ie&&s.ie<10&&l.error("IE"+s.ie+"下访问可能不佳,推荐使用:Chrome / Firefox / Edge 等高级浏览器",{offset:"auto",id:"LAY_errorIE"})}(),t.on("tab("+p+")",function(e){P.tabsPage.index=e.index}),P.on("tabsPage(setMenustatus)",function(e){var i=e.url,t=function(e){return{list:e.children(".layui-nav-child"),a:e.children("*[lay-href]")}},n=a("#"+k),l="layui-nav-itemed",s=function(e){e.each(function(e,n){var s=a(n),r=t(s),o=r.list.children("dd"),u=i===r.a.attr("lay-href");if(o.each(function(e,n){var s=a(n),r=t(s),o=r.list.children("dd"),u=i===r.a.attr("lay-href");if(o.each(function(e,n){var s=a(n),r=t(s),o=i===r.a.attr("lay-href");if(o){var u=r.list[0]?l:y;return s.addClass(u).siblings().removeClass(u),!1}}),u){var d=r.list[0]?l:y;return s.addClass(d).siblings().removeClass(d),!1}}),u){var d=r.list[0]?l:y;return s.addClass(d).siblings().removeClass(d),!1}})};n.find("."+y).removeClass(y),P.screen()<2&&P.sideFlexible(),s(n.children("li"))}),t.on("nav(layadmin-system-side-menu)",function(e){e.siblings(".layui-nav-child")[0]&&u.hasClass(C)&&(P.sideFlexible("spread"),layer.close(e.data("index"))),P.tabsPage.type="nav"}),t.on("nav(layadmin-pagetabs-nav)",function(e){var a=e.parent();a.removeClass(y),a.parent().removeClass(d)});var A=function(e){var a=(e.attr("lay-id"),e.attr("lay-attr")),i=e.index();P.tabsBodyChange(i,{url:a})},z="#LAY_app_tabsheader>li";o.on("click",z,function(){var e=a(this),i=e.index();P.tabsPage.type="tab",P.tabsPage.index=i,A(e)}),t.on("tabDelete("+p+")",function(e){var i=a(z+".layui-this");e.index&&P.tabsBody(e.index).remove(),A(i),P.delResize()}),o.on("click","*[lay-href]",function(){var e=a(this),i=e.attr("lay-href"),t=e.attr("lay-text");layui.router();P.tabsPage.elem=e;var n=parent===self?layui:top.layui;n.index.openTabsPage(i,t||e.text())}),o.on("click","*[layadmin-event]",function(){var e=a(this),i=e.attr("layadmin-event");F[i]&&F[i].call(this,e)}),o.on("mouseenter","*[lay-tips]",function(){var e=a(this);if(!e.parent().hasClass("layui-nav-item")||u.hasClass(C)){var i=e.attr("lay-tips"),t=e.attr("lay-offset"),n=e.attr("lay-direction"),l=layer.tips(i,this,{tips:n||1,time:-1,success:function(e,a){t&&e.css("margin-left",t+"px")}});e.data("index",l)}}).on("mouseleave","*[lay-tips]",function(){layer.close(a(this).data("index"))});var _=layui.data.resizeSystem=function(){layer.closeAll("tips"),_.lock||setTimeout(function(){P.sideFlexible(P.screen()<2?"":"spread"),delete _.lock},100),_.lock=!0};r.on("resize",layui.data.resizeSystem),e("admin",P)}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/extent/lib/index.js b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/lib/index.js new file mode 100644 index 0000000..28cf52d --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/lib/index.js @@ -0,0 +1,2 @@ +/** layuiAdmin.std-v1.2.1 LPPL License By http://www.layui.com/admin/ */ + ;layui.extend({setter:"config",admin:"lib/admin",view:"lib/view"}).define(["setter","admin"],function(a){var e=layui.setter,i=layui.element,n=layui.admin,t=n.tabsPage,d=layui.view,l=function(a,d){var l,b=r("#LAY_app_tabsheader>li"),y=a.replace(/(^http(s*):)|(\?[\s\S]*$)/g,"");if(b.each(function(e){var i=r(this),n=i.attr("lay-id");n===a&&(l=!0,t.index=e)}),d=d||"新标签页",e.pageTabs)l||(r(s).append(['
            ','',"
            "].join("")),t.index=b.length,i.tabAdd(o,{title:""+d+"",id:a,attr:y}));else{var u=n.tabsBody(n.tabsPage.index).find(".layadmin-iframe");u[0].contentWindow.location.href=a}i.tabChange(o,a),n.tabsBodyChange(t.index,{url:a,text:d})},s="#LAY_app_body",o="layadmin-layout-tabs",r=layui.$;r(window);n.screen()<2&&n.sideFlexible(),layui.config({base:e.base+"modules/"}),layui.each(e.extend,function(a,i){var n={};n[i]="{/}"+e.base+"lib/extend/"+i,layui.extend(n)}),d().autoRender(),layui.use("common"),a("index",{openTabsPage:l})}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/extent/lib/view.js b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/lib/view.js new file mode 100644 index 0000000..75b222c --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/lib/view.js @@ -0,0 +1,2 @@ +/** layuiAdmin.std-v1.2.1 LPPL License By http://www.layui.com/admin/ */ + ;layui.define(["laytpl","layer"],function(e){var t=layui.jquery,a=layui.laytpl,n=layui.layer,r=layui.setter,o=(layui.device(),layui.hint()),i=function(e){return new d(e)},s="LAY_app_body",d=function(e){this.id=e,this.container=t("#"+(e||s))};i.loading=function(e){e.append(this.elemLoad=t(''))},i.removeLoad=function(){this.elemLoad&&this.elemLoad.remove()},i.exit=function(e){layui.data(r.tableName,{key:r.request.tokenName,remove:!0}),e&&e()},i.req=function(e){var a=e.success,n=(e.error,r.request),o=r.response,s=function(){return r.debug?"
            URL:"+e.url:""};if(e.data=e.data||{},e.headers=e.headers||{},n.tokenName){var d="string"==typeof e.data?JSON.parse(e.data):e.data;e.data[n.tokenName]=n.tokenName in d?e.data[n.tokenName]:layui.data(r.tableName)[n.tokenName]||"",e.headers[n.tokenName]=n.tokenName in e.headers?e.headers[n.tokenName]:layui.data(r.tableName)[n.tokenName]||""}return delete e.success,delete e.error,t.ajax(t.extend({type:"get",dataType:"json",success:function(t){var n=o.statusCode;if(t[o.statusName]==n.ok)"function"==typeof e.done&&e.done(t);else if(t[o.statusName]==n.logout)i.exit();else{var r=["Error: "+(t[o.msgName]||"返回状态码异常"),s()].join("");i.error(r)}"function"==typeof a&&a(t)},error:function(e,t){var a=["请求异常,请重试
            错误信息:"+t,s()].join("");i.error(a),"function"==typeof a&&a(res)}},e))},i.popup=function(e){var a=e.success,r=e.skin;return delete e.success,delete e.skin,n.open(t.extend({type:1,title:"提示",content:"",id:"LAY-system-view-popup",skin:"layui-layer-admin"+(r?" "+r:""),shadeClose:!0,closeBtn:!1,success:function(e,r){var o=t('');e.append(o),o.on("click",function(){n.close(r)}),"function"==typeof a&&a.apply(this,arguments)}},e))},i.error=function(e,a){return i.popup(t.extend({content:e,maxWidth:300,offset:"t",anim:6,id:"LAY_adminError"},a))},d.prototype.render=function(e,a){var n=this;layui.router();return e=r.views+e+r.engine,t("#"+s).children(".layadmin-loading").remove(),i.loading(n.container),t.ajax({url:e,type:"get",dataType:"html",data:{v:layui.cache.version},success:function(e){e="
            "+e+"
            ";var r=t(e).find("title"),o=r.text()||(e.match(/\([\s\S]*)\<\/title>/)||[])[1],s={title:o,body:e};r.remove(),n.params=a||{},n.then&&(n.then(s),delete n.then),n.parse(e),i.removeLoad(),n.done&&(n.done(s),delete n.done)},error:function(e){return i.removeLoad(),n.render.isError?i.error("请求视图文件异常,状态:"+e.status):(404===e.status?n.render("template/tips/404"):n.render("template/tips/error"),void(n.render.isError=!0))}}),n},d.prototype.parse=function(e,n,r){var s=this,d="object"==typeof e,l=d?e:t(e),u=d?e:l.find("*[template]"),c=function(e){var n=a(e.dataElem.html()),o=t.extend({params:p.params},e.res);e.dataElem.after(n.render(o)),"function"==typeof r&&r();try{e.done&&new Function("d",e.done)(o)}catch(i){console.error(e.dataElem[0],"\n存在错误回调脚本\n\n",i)}},p=layui.router();l.find("title").remove(),s.container[n?"after":"html"](l.children()),p.params=s.params||{};for(var y=u.length;y>0;y--)!function(){var e=u.eq(y-1),t=e.attr("lay-done")||e.attr("lay-then"),n=a(e.attr("lay-url")||"").render(p),r=a(e.attr("lay-data")||"").render(p),s=a(e.attr("lay-headers")||"").render(p);try{r=new Function("return "+r+";")()}catch(d){o.error("lay-data: "+d.message),r={}}try{s=new Function("return "+s+";")()}catch(d){o.error("lay-headers: "+d.message),s=s||{}}n?i.req({type:e.attr("lay-type")||"get",url:n,data:r,dataType:"json",headers:s,success:function(a){c({dataElem:e,res:a,done:t})}}):c({dataElem:e,done:t})}();return s},d.prototype.autoRender=function(e,a){var n=this;t(e||"body").find("*[template]").each(function(e,a){var r=t(this);n.container=r,n.parse(r,"refresh")})},d.prototype.send=function(e,t){var n=a(e||this.container.html()).render(t||{});return this.container.html(n),this},d.prototype.refresh=function(e){var t=this,a=t.container.next(),n=a.attr("lay-templateid");return t.id!=n?t:(t.parse(t.container,"refresh",function(){t.container.siblings('[lay-templateid="'+t.id+'"]:last').remove(),"function"==typeof e&&e()}),t)},d.prototype.then=function(e){return this.then=e,this},d.prototype.done=function(e){return this.done=e,this},e("view",i)}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/extent/modules/common.js b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/modules/common.js new file mode 100644 index 0000000..ad97ee0 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/modules/common.js @@ -0,0 +1,2 @@ +/** layuiAdmin.std-v1.2.1 LPPL License By http://www.layui.com/admin/ */ + ;layui.define(function(e){var i=(layui.$,layui.layer,layui.laytpl,layui.setter,layui.view,layui.admin);i.events.logout=function(){i.req({url:layui.setter.base+"json/user/logout.js",type:"get",data:{},done:function(e){i.exit(function(){location.href="user/login.html"})}})},e("common",{})}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/extent/modules/set.js b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/modules/set.js new file mode 100644 index 0000000..e3ad37d --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/modules/set.js @@ -0,0 +1,2 @@ +/** layuiAdmin.std-v1.2.1 LPPL License By http://www.layui.com/admin/ */ + ;layui.define(["form","upload"],function(t){var i=layui.$,e=layui.layer,a=(layui.laytpl,layui.setter,layui.view,layui.admin),n=layui.form,s=layui.upload;i("body");n.verify({nickname:function(t,i){return new RegExp("^[a-zA-Z0-9_一-龥\\s·]+$").test(t)?/(^\_)|(\__)|(\_+$)/.test(t)?"用户名首尾不能出现下划线'_'":/^\d+\d+\d$/.test(t)?"用户名不能全为数字":void 0:"用户名不能有特殊字符"},pass:[/^[\S]{6,12}$/,"密码必须6到12位,且不能出现空格"],repass:function(t){if(t!==i("#LAY_password").val())return"两次密码输入不一致"}}),n.on("submit(set_website)",function(t){return e.msg(JSON.stringify(t.field)),!1}),n.on("submit(set_system_email)",function(t){return e.msg(JSON.stringify(t.field)),!1}),n.on("submit(setmyinfo)",function(t){return e.msg(JSON.stringify(t.field)),!1});var r=i("#LAY_avatarSrc");s.render({url:"/api/upload/",elem:"#LAY_avatarUpload",done:function(t){0==t.status?r.val(t.url):e.msg(t.msg,{icon:5})}}),a.events.avartatPreview=function(t){var i=r.val();e.photos({photos:{title:"查看头像",data:[{src:i}]},shade:.01,closeBtn:1,anim:5})},n.on("submit(setmypass)",function(t){return e.msg(JSON.stringify(t.field)),!1}),t("set",{})}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/extent/style/admin.css b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/style/admin.css new file mode 100644 index 0000000..e6da917 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/style/admin.css @@ -0,0 +1,2 @@ +/** layuiAdmin.std-v1.2.1 LPPL License By http://www.layui.com/admin/ */ + html #layuicss-layuiAdmin{display:none;position:absolute;width:1989px}::-webkit-input-placeholder{color:#ccc}html{background-color:#f2f2f2;color:#666}.layadmin-tabsbody-item,[template]{display:none}[lay-href],[lay-tips],[layadmin-event]{cursor:pointer}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;width:100%;height:50px}.layui-layout-admin .layui-header .layui-nav .layui-nav-child a{color:#333}.layui-layout-admin .layui-side{width:220px;top:0;z-index:1001}.layui-layout-admin .layui-header .layui-nav .layui-nav-item,.layui-layout-admin .layui-logo{height:50px;line-height:50px}.layui-layout-admin .layui-logo{position:fixed;left:0;top:0;z-index:1002;width:220px;height:49px;padding:0 15px;box-sizing:border-box;overflow:hidden;font-weight:300;background-repeat:no-repeat;background-position:center center}.layadmin-pagetabs,.layui-layout-admin .layui-body,.layui-layout-admin .layui-footer,.layui-layout-admin .layui-layout-left{left:220px}.layadmin-pagetabs{position:fixed;top:50px;right:0;z-index:999}.layadmin-pagetabs .layui-breadcrumb{padding:0 15px}.layui-layout-admin .layui-body{position:fixed;top:90px;bottom:0}.layui-layout-admin .layui-body .layadmin-tabsbody-item{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.layui-layout-admin .layui-header .layui-nav-img{width:26px;height:26px}.layui-layout-admin .layui-header .layui-nav-child{top:55px}.layui-layout-admin .layui-header .layui-layout-right .layui-nav-child{left:auto;right:0}.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this,.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this a{background:0 0}.layadmin-pagetabs,.layui-layout-admin .layui-body,.layui-layout-admin .layui-footer,.layui-layout-admin .layui-header .layui-layout-right,.layui-layout-admin .layui-header .layui-nav .layui-nav-item,.layui-layout-admin .layui-layout-left,.layui-layout-admin .layui-logo,.layui-layout-admin .layui-side{transition:all .3s;-webkit-transition:all .3s}.layui-icon-login-qq{color:#3492ED}.layui-icon-login-wechat{color:#4DAF29}.layui-icon-login-weibo{color:#CF1900}.layui-form[wid100] .layui-form-label{width:100px}.layui-form[wid100] .layui-input-block{margin-left:130px}@media screen and (max-width:450px){.layui-form[wid100] .layui-form-item .layui-input-inline{margin-left:132px}.layui-form[wid100] .layui-form-item .layui-input-inline+.layui-form-mid{margin-left:130px}}.layui-form-item .layui-input-company{width:auto;padding-right:10px;line-height:38px}.layui-bg-white{background-color:#fff}.layadmin-loading{position:absolute;left:50%;top:50%;margin:-16px -15px;font-size:30px;color:#c2c2c2}.layadmin-fixed{position:fixed;left:0;top:0;z-index:999}.layadmin-link{color:#029789!important}.layadmin-link:hover{opacity:.8}.layui-layer-admin .layui-layer-title{height:50px;line-height:50px;border:0;background-color:#20222A;color:#fff}.layui-layer-admin i[close]{position:absolute;padding:5px;right:10px;top:12px;color:#fff;cursor:pointer}.layui-layer-admin .layui-layer-content{padding:20px;line-height:22px}.layui-layer-admin .layui-layer-content cite{font-style:normal;color:#FF5722}.layui-layer-adminRight{top:50px!important;bottom:0;box-shadow:1px 1px 10px rgba(0,0,0,.1);border-radius:0;overflow:auto}.layadmin-note .layui-layer-content{padding:0}.layadmin-note textarea{display:block;width:300px;height:132px;min-width:300px;min-height:132px;line-height:20px;padding:10px 20px;border:none;box-sizing:border-box;color:#666;word-wrap:break-word}.layui-layout-admin .layui-layout-left{padding:0 10px}.layui-layout-admin .layui-layout-left .layui-nav-item{margin:0 20px}.layui-layout-admin .layui-input-search{display:inline-block;vertical-align:middle;height:32px;border:none;cursor:text}.layui-layout-admin .layui-layout-left a,.layui-layout-admin .layui-layout-right{padding:0}.layui-header .layui-nav-item .layui-icon{position:relative;top:1px;font-size:16px}.layui-header .layui-layout-right .layui-badge-dot{margin-left:11px}.layui-header .layui-nav .layui-this:after,.layui-layout-admin .layui-header .layui-nav-bar{top:0!important;bottom:auto;height:3px;background-color:#fff;background-color:rgba(255,255,255,.3)}.layadmin-body-shade{position:fixed;display:none;left:0;right:0;top:0;bottom:0;background-color:rgba(0,0,0,.3);z-index:1000}.layui-side-menu .layui-side-scroll{width:240px}.layui-side-menu .layui-nav{width:220px;margin-top:50px;background:0 0}.layui-side-menu .layui-nav .layui-nav-item a{height:40px;line-height:40px;padding-left:45px;padding-right:30px}.layui-side-menu .layui-nav .layui-nav-item>a{padding-top:8px;padding-bottom:8px}.layui-side-menu .layui-nav .layui-nav-item a:hover{background:0 0}.layui-side-menu .layui-nav .layui-nav-itemed>.layui-nav-child{padding:5px 0}.layui-side-menu .layui-nav .layui-nav-item .layui-icon{position:absolute;top:50%;left:20px;margin-top:-19px}.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child{background:0 0!important}.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child a{padding-left:60px}.layui-side-menu .layui-nav .layui-nav-more{right:15px}@media screen and (max-width:992px){.layui-layout-admin .layui-side{transform:translate3d(-220px,0,0);-webkit-transform:translate3d(-220px,0,0);width:220px}.layadmin-pagetabs,.layui-layout-admin .layui-body,.layui-layout-admin .layui-footer,.layui-layout-admin .layui-layout-left{left:0}}.layadmin-side-shrink .layui-layout-admin .layui-logo{width:60px;background-image:url(res/logo.png)}.layadmin-side-shrink .layui-layout-admin .layui-logo span{display:none}.layadmin-side-shrink .layui-side{left:0;width:60px}.layadmin-side-shrink .layadmin-pagetabs,.layadmin-side-shrink .layui-layout-admin .layui-body,.layadmin-side-shrink .layui-layout-admin .layui-footer,.layadmin-side-shrink .layui-layout-admin .layui-layout-left{left:60px}.layadmin-side-shrink .layui-side-menu .layui-nav{position:static;width:60px}.layadmin-side-shrink .layui-side-menu .layui-nav-item{position:static}.layadmin-side-shrink .layui-side-menu .layui-nav-item>a{padding-right:0}.layadmin-side-shrink .layui-side-menu .layui-nav-item cite,.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>.layui-nav-child,.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>a .layui-nav-more{display:none;padding:8px 0;width:200px}.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-itemed>a{background:rgba(0,0,0,.3)}.layadmin-side-spread-sm .layadmin-pagetabs,.layadmin-side-spread-sm .layui-layout-admin .layui-body,.layadmin-side-spread-sm .layui-layout-admin .layui-footer,.layadmin-side-spread-sm .layui-layout-admin .layui-layout-left{left:0;transform:translate3d(220px,0,0);-webkit-transform:translate3d(220px,0,0)}.layadmin-side-spread-sm .layui-layout-admin .layui-layout-right{transform:translate3d(220px,0,0);-webkit-transform:translate3d(220px,0,0)}.layadmin-side-spread-sm .layui-side{transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0)}.layadmin-side-spread-sm .layadmin-body-shade{display:block}.layadmin-pagetabs .layui-tab-title li:first-child .layui-tab-close,.layadmin-tabs-select.layui-nav .layui-nav-bar,.layadmin-tabs-select.layui-nav .layui-nav-more{display:none}.layadmin-pagetabs{height:40px;line-height:40px;padding:0 80px 0 40px;background-color:#fff;box-sizing:border-box;box-shadow:0 1px 2px 0 rgba(0,0,0,.1)}.layadmin-pagetabs .layadmin-tabs-control{position:absolute;top:0;width:40px;height:100%;text-align:center;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box;border-left:1px solid #f6f6f6}.layadmin-pagetabs .layadmin-tabs-control:hover{background-color:#f6f6f6}.layadmin-pagetabs .layui-icon-prev{left:0;border-left:none;border-right:1px solid #f6f6f6}.layadmin-pagetabs .layui-icon-next{right:40px}.layadmin-pagetabs .layui-icon-down{right:0}.layadmin-tabs-select.layui-nav{position:absolute;left:0;top:0;width:100%;height:100%;padding:0;background:0 0}.layadmin-tabs-select.layui-nav .layui-nav-item{line-height:40px}.layadmin-tabs-select.layui-nav .layui-nav-item>a{height:40px}.layadmin-tabs-select.layui-nav .layui-nav-item a{color:#666}.layadmin-tabs-select.layui-nav .layui-nav-child{top:40px;left:auto;right:0}.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this,.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this a{background-color:#f2f2f2!important;color:#333}.layadmin-pagetabs .layui-tab{margin:0;overflow:hidden}.layadmin-pagetabs .layui-tab-title{height:40px;border:none}.layadmin-pagetabs .layui-tab-title li{min-width:0;line-height:40px;max-width:160px;text-overflow:ellipsis;padding-right:40px;overflow:hidden;border-right:1px solid #f6f6f6;vertical-align:top}.layadmin-pagetabs .layui-tab-title li:first-child{padding-right:15px}.layadmin-pagetabs .layui-tab-title li .layui-tab-close{position:absolute;right:8px;top:50%;margin:-7px 0 0;width:16px;height:16px;line-height:16px;border-radius:50%;font-size:12px}.layadmin-pagetabs .layui-tab-title li:after{content:'';position:absolute;top:0;left:0;width:0;height:2px;border-radius:0;background-color:#292B34;transition:all .3s;-webkit-transition:all .3s}.layadmin-pagetabs .layui-tab-title li:hover:after{width:100%}.layadmin-pagetabs .layui-tab-title li.layui-this,.layadmin-pagetabs .layui-tab-title li:hover{background-color:#f6f6f6}.layadmin-pagetabs .layui-tab-title li.layui-this:after{width:100%;border:none;height:2px;background-color:#292B34}.layadmin-tabspage-none .layui-layout-admin .layui-header{border-bottom:none;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layadmin-tabspage-none .layui-layout-admin .layui-body{top:50px}.layadmin-tabspage-none .layadmin-header{display:block}.layadmin-tabspage-none .layadmin-header .layui-breadcrumb{border-top:1px solid #f6f6f6}.layui-layout-admin .layui-header{border-bottom:1px solid #f6f6f6;box-sizing:border-box;background-color:#fff}.layui-layout-admin .layui-header a,.layui-layout-admin .layui-header a cite{color:#333}.layui-layout-admin .layui-header a:hover{color:#000}.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color:#666}.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color:transparent transparent #666}.layui-layout-admin .layui-header .layui-nav .layui-this:after,.layui-layout-admin .layui-header .layui-nav-bar{height:2px;background-color:#20222A}.layui-layout-admin .layui-logo{background-color:#20222A;box-shadow:0 1px 2px 0 rgba(0,0,0,.15)}.layui-layout-admin .layui-logo,.layui-layout-admin .layui-logo a{color:#fff;color:rgba(255,255,255,.8)}.layui-side-menu{box-shadow:1px 0 2px 0 rgba(0,0,0,.05)}.layui-layout-admin .layui-footer{padding:10px 0;text-align:center;box-shadow:0 -1px 2px 0 rgba(0,0,0,.05)}.layadmin-setTheme-side,.layui-side-menu{background-color:#20222A;color:#fff}.layadmin-setTheme-header,.layui-layout-admin .layui-footer{background-color:#fff}.layui-tab-admin .layui-tab-title{background-color:#393D49;color:#fff}.layui-fluid{padding:15px}.layadmin-header{display:none;height:50px;line-height:50px;margin-bottom:0;border-radius:0}.layadmin-header .layui-breadcrumb{padding:0 15px}.layui-card-header{position:relative}.layui-card-header .layui-icon{line-height:initial;position:absolute;right:15px;top:50%;margin-top:-7px}.layadmin-iframe{position:absolute;width:100%;height:100%;left:0;top:0;right:0;bottom:0}.layadmin-carousel{height:185px!important;background-color:#fff}.layadmin-carousel .layui-carousel-ind li{background-color:#e2e2e2}.layadmin-carousel .layui-carousel-ind li:hover{background-color:#c2c2c2}.layadmin-carousel .layui-carousel-ind li.layui-this{background-color:#999}.layadmin-carousel .layui-carousel,.layadmin-carousel>[carousel-item]>*{background-color:#fff}.layadmin-carousel .layui-col-space10{margin:0}.layadmin-carousel .layui-carousel-ind{position:absolute;top:-41px;text-align:right}.layadmin-carousel .layui-carousel-ind ul{background:0 0}.layui-card .layui-tab-brief .layui-tab-title{height:42px;border-bottom-color:#f6f6f6}.layui-card .layui-tab-brief .layui-tab-title li{margin:0 15px;padding:0;line-height:42px}.layui-card .layui-tab-brief .layui-tab-title li.layui-this{color:#333}.layui-card .layui-tab-brief .layui-tab-title .layui-this:after{height:43px}.layui-card .layui-tab-brief .layui-tab-content{padding:15px}.layui-card .layui-table-view{margin:0}.layadmin-shortcut li{text-align:center}.layadmin-shortcut li .layui-icon{display:inline-block;width:100%;height:60px;line-height:60px;text-align:center;border-radius:2px;font-size:30px;background-color:#F8F8F8;color:#333;transition:all .3s;-webkit-transition:all .3s}.layadmin-shortcut li cite{position:relative;top:2px;display:block;color:#666;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:14px}.layadmin-shortcut li:hover .layui-icon{background-color:#f2f2f2}.layadmin-backlog .layadmin-backlog-body{display:block;padding:10px 15px;background-color:#f8f8f8;color:#999;border-radius:2px;transition:all .3s;-webkit-transition:all .3s}.layadmin-backlog-body h3{padding-bottom:10px;font-size:12px}.layadmin-backlog-body p cite{font-style:normal;font-size:30px;font-weight:300;color:#009688}.layadmin-backlog-body:hover{background-color:#f2f2f2;color:#888}.layadmin-dataview{height:332px!important}.layadmin-dataview>[carousel-item]:before{display:none}.layadmin-dataview>[carousel-item]>div{height:332px}.layadmin-takerates{padding-top:5px}.layadmin-takerates .layui-progress{margin:50px 0 60px}.layadmin-takerates .layui-progress:last-child{margin-bottom:10px}.layadmin-takerates .layui-progress h3{position:absolute;right:0;top:-35px;color:#999;font-size:14px}.layadmin-takerates .layui-progress-bar{text-align:left}.layadmin-takerates .layui-progress-text{top:-35px;line-height:26px;font-size:26px}.layadmin-news{height:60px!important;padding:5px 0}.layadmin-news a{display:block;line-height:60px;text-align:center}.layadmin-news .layui-carousel-ind{height:45px}.layadmin-list li{margin-bottom:6px;padding-bottom:6px;border-bottom-color:#f6f6f6;list-style-position:inside;list-style-type:disc;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layadmin-list li a{color:#666}.layadmin-list li a:hover{color:#009688}.layadmin-list li:last-child{border:none;padding:0;margin:0}.layadmin-text p{margin-bottom:10px;text-indent:2em}.layadmin-text p:last-child{margin:0}.layadmin-font-em{font-size:13px;color:#758697}.layui-card-header .layui-a-tips{position:absolute;right:15px;color:#01AAED}.layuiadmin-card-text{background-color:#f8f8f8;color:#777;padding:24px}.layuiadmin-card-text .layui-text-top{padding-bottom:10px}.layuiadmin-card-text .layui-text-top i{margin-right:10px;font-size:24px;color:#009688}.layuiadmin-card-text .layui-text-top a{line-height:24px;font-size:16px;vertical-align:top}.layuiadmin-card-text .layui-text-center{height:44px;line-height:22px;margin-bottom:10px;overflow:hidden}.layuiadmin-card-text .layui-text-bottom{position:relative}.layuiadmin-card-text .layui-text-bottom a{color:#777;font-size:12px;text-overflow:ellipsis;word-break:break-all}.layuiadmin-card-text .layui-text-bottom span{color:#CCC;font-size:12px;position:absolute;right:0}.layuiadmin-badge,.layuiadmin-btn-group,.layuiadmin-span-color{position:absolute;right:15px}.layuiadmin-card-link a:hover,.layuiadmin-card-team li a:hover,.layuiadmin-card-text a:hover{color:#01AAED;transition:all .3s}.layuiadmin-card-status{padding:0 10px 10px}.layuiadmin-card-status dd{padding:15px 0;border-bottom:1px solid #EEE;display:-webkit-flex;display:flex}.layuiadmin-card-status dd:last-child{border:none}.layuiadmin-card-status dd div.layui-status-img,.layuiadmin-card-team .layui-team-img{width:32px;height:32px;border-radius:50%;background-color:#009688;margin-right:15px}.layuiadmin-card-status dd div.layui-status-img a{width:100%;height:100%;display:inline-block;text-align:center;line-height:32px}.layuiadmin-card-status dd div.layui-status-img img,.layuiadmin-card-team .layui-team-img img{width:50%;height:50%}.layuiadmin-card-status dd div a{color:#01AAED}.layuiadmin-card-status dd div span{color:#BBB}.layuiadmin-card-link{padding-left:10px;font-size:0}.layuiadmin-card-link a{display:inline-block;width:25%;color:#666;font-size:14px;margin-bottom:12px}.layuiadmin-card-link button{vertical-align:top}.layuiadmin-card-link button:hover{color:#009688}.layuiadmin-card-team li{padding:10px 0 10px 10px}.layuiadmin-card-team .layui-team-img{display:inline-block;margin-right:8px;width:24px;height:24px;text-align:center;line-height:24px}.layuiadmin-card-team span{color:#777}.layuiadmin-badge{top:50%;margin-top:-9px;color:#01AAED}.layuiadmin-card-list{padding:15px}.layuiadmin-card-list p.layuiadmin-big-font{font-size:36px;color:#666;line-height:36px;padding:5px 0 10px;overflow:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap}.layuiadmin-card-list p.layuiadmin-normal-font{padding-bottom:10px;font-size:20px;color:#666;line-height:24px}.layuiadmin-span-color{font-size:14px}.layuiadmin-span-color i{padding-left:5px}.layuiadmin-card-status li{position:relative;padding:10px 0;border-bottom:1px solid #EEE}.layuiadmin-card-status li h3{padding-bottom:5px;font-weight:700}.layuiadmin-card-status li p{padding-bottom:10px}.layuiadmin-card-status li>span{color:#999}.layuiadmin-home2-usernote .layuiadmin-reply{display:none;position:absolute;right:0;bottom:12px}.layuiadmin-home2-usernote li:hover .layuiadmin-reply{display:block}.layuiadmin-page-table td span{color:#2F4056}.layuiadmin-page-table td span.first{color:#FF5722}.layuiadmin-page-table td span.second{color:#FFB800}.layuiadmin-page-table td span.third{color:#5FB878}.layuiAdmin-msg-detail h1{font-size:16px}.layuiAdmin-msg-detail .layui-card-header{height:auto;line-height:30px;padding:15px}.layuiAdmin-msg-detail .layui-card-header span{padding:0 5px;color:#999}.layuiAdmin-msg-detail .layui-card-header span:first-child{padding-left:0}.layuiAdmin-msg-detail .layui-card-body{padding:15px}.layuiadmin-content-bread{padding-bottom:20px}.layuiadmin-order-progress{position:relative;top:12px}.layui-card-header.layuiadmin-card-header-auto{padding-top:15px;padding-bottom:15px;height:auto}.layuiadmin-card-header-auto i.layuiadmin-button-btn{position:relative;right:0;top:0;vertical-align:middle}.layuiadmin-card-header-auto .layui-form-item:last-child{margin-bottom:0}.layadmin-setTheme{padding:15px;overflow-x:hidden}.layadmin-setTheme>h5{padding:20px 0 10px;color:#000}.layadmin-setTheme>h5:first-child{padding-top:0}.layadmin-setTheme-color{width:330px;font-size:0}.layadmin-setTheme-color li{position:relative;display:inline-block;vertical-align:top;width:80px;height:50px;margin:0 15px 15px 0;background-color:#f2f2f2;cursor:pointer;font-size:12px;color:#666}.layadmin-setTheme-color li:after{content:'';position:absolute;z-index:20;top:50%;left:50%;width:1px;height:0;border:1px solid #f2f2f2;transition:all .3s;-webkit-transition:all .3s;opacity:0}.layadmin-setTheme-color li.layui-this:after,.layadmin-setTheme-color li:hover:after{width:100%;height:100%;padding:4px;top:-5px;left:-5px;border-color:#5FB878;opacity:1}.layadmin-setTheme-header{position:relative;z-index:10;height:10px;border-top:1px solid #f2f2f2;border-right:1px solid #f2f2f2}.layadmin-setTheme-side{position:absolute;left:0;top:0;width:20px;height:100%;z-index:11;box-shadow:1px 0 2px 0 rgba(0,0,0,.05)}.layadmin-setTheme-logo{position:absolute;left:0;top:0;width:100%;height:10px;box-shadow:0 1px 2px 0 rgba(0,0,0,.15)}.layadmin-form-right{text-align:right}.layadmin-about p{margin-bottom:10px}.layadmin-menu-list .layui-card-header{height:50px;line-height:50px;font-size:16px}.layadmin-menu-list .layui-card-header:active{background-color:#f2f2f2}.layadmin-menu-list .layui-card-header .layui-icon{position:relative;top:1px;left:0;display:inline-block;margin:0 10px;font-size:18px}@-webkit-keyframes layui-rl{from{-webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@keyframes layui-rl{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}.layui-anim-rl{-webkit-animation-name:layui-rl;animation-name:layui-rl}@-webkit-keyframes layui-lr{from{-webkit-transform:translate3d(0 0,0);opacity:1}to{-webkit-transform:translate3d(100%,0,0);opacity:1}}@keyframes layui-lr{from{transform:translate3d(0,0,0)}to{transform:translate3d(100%,0,0)}}.layui-anim-lr,.layui-anim-rl.layer-anim-close{-webkit-animation-name:layui-lr;animation-name:layui-lr}.layadmin-tips{margin-top:30px;text-align:center}.layadmin-tips .layui-icon[face]{display:inline-block;font-size:300px;color:#393D49}.layadmin-tips .layui-text{width:500px;margin:30px auto;padding-top:20px;border-top:5px solid #009688;font-size:16px}.layadmin-tips h1{font-size:100px;line-height:100px;color:#009688}.layadmin-tips .layui-text .layui-anim{display:inline-block}@media screen and (max-width:768px){.layadmin-panel-selection{margin:0;width:auto}.layui-body .layui-nav .layui-nav-item{display:block}.layui-layout-admin .layui-body .layadmin-tabsbody-item{-webkit-overflow-scrolling:touch;overflow:auto}} \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/extent/style/res/logo.png b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/style/res/logo.png new file mode 100644 index 0000000..ac1e00b Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/style/res/logo.png differ diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/extent/tpl/system/about.html b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/tpl/system/about.html new file mode 100644 index 0000000..42b3471 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/tpl/system/about.html @@ -0,0 +1,22 @@ + +
            版本信息
            +
            + + +
            + +
            关于版权
            +
            + +
            + layuiAdmin 受国家计算机软件著作权保护(登记号:2018SR410669),必须经官网授权才可获得源文件使用权。不得恶意分享产品源代码、二次转售等,违者将承担相应的法律责任。 +

            详见:《layui 付费产品服务条款》 +
            +

            © 2018 layui.com 版权所有

            +
            \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/layui/extent/tpl/system/theme.html b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/tpl/system/theme.html new file mode 100644 index 0000000..2d77eda --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/layui/extent/tpl/system/theme.html @@ -0,0 +1,39 @@ + + + diff --git a/ksafepack-admin/src/main/resources/static/plugins/lodop/install_lodop32.exe b/ksafepack-admin/src/main/resources/static/plugins/lodop/install_lodop32.exe new file mode 100644 index 0000000..3339100 Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/plugins/lodop/install_lodop32.exe differ diff --git a/ksafepack-admin/src/main/resources/static/plugins/lodop/install_lodop64.exe b/ksafepack-admin/src/main/resources/static/plugins/lodop/install_lodop64.exe new file mode 100644 index 0000000..139a861 Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/plugins/lodop/install_lodop64.exe differ diff --git a/ksafepack-admin/src/main/resources/static/plugins/ztree/css/zTreeStyle.css b/ksafepack-admin/src/main/resources/static/plugins/ztree/css/zTreeStyle.css new file mode 100644 index 0000000..8224044 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/ztree/css/zTreeStyle.css @@ -0,0 +1,97 @@ +/*------------------------------------- +zTree Style + +version: 3.4 +author: Hunter.z +email: hunter.z@263.net +website: http://code.google.com/p/jquerytree/ + +-------------------------------------*/ + +.ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif} +.ztree {margin:0; padding:5px; color:#333} +.ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0} +.ztree li ul{ margin:0; padding:0 0 0 18px} +.ztree li ul.line{ background:url(../images/line_conn.gif) 0 0 repeat-y;} + +.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent; + text-decoration:none; vertical-align:top; display: inline-block} +.ztree li a:hover {text-decoration:underline} +.ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;} +.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;} +.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid; + opacity:0.8; filter:alpha(opacity=80)} +.ztree li a.tmpTargetNode_prev {} +.ztree li a.tmpTargetNode_next {} +.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0; + font-size:12px; border:1px #7EC4CC solid; *border:0px} +.ztree li span {line-height:16px; margin-right:2px} +.ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle; + border:0 none; cursor: pointer;outline:none; + background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; + background-image:url("../images/zTreeStandard.png"); *background-image:url("../images/zTreeStandard.gif")} + +.ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto} +.ztree li span.button.chk.checkbox_false_full {background-position:0 0} +.ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px} +.ztree li span.button.chk.checkbox_false_part {background-position:0 -28px} +.ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px} +.ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px} +.ztree li span.button.chk.checkbox_true_full {background-position:-14px 0} +.ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px} +.ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px} +.ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px} +.ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px} +.ztree li span.button.chk.radio_false_full {background-position:-28px 0} +.ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px} +.ztree li span.button.chk.radio_false_part {background-position:-28px -28px} +.ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px} +.ztree li span.button.chk.radio_false_disable {background-position:-28px -56px} +.ztree li span.button.chk.radio_true_full {background-position:-42px 0} +.ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px} +.ztree li span.button.chk.radio_true_part {background-position:-42px -28px} +.ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px} +.ztree li span.button.chk.radio_true_disable {background-position:-42px -56px} + +.ztree li span.button.switch {width:18px; height:18px} +.ztree li span.button.root_open{background-position:-92px -54px} +.ztree li span.button.root_close{background-position:-74px -54px} +.ztree li span.button.roots_open{background-position:-92px 0} +.ztree li span.button.roots_close{background-position:-74px 0} +.ztree li span.button.center_open{background-position:-92px -18px} +.ztree li span.button.center_close{background-position:-74px -18px} +.ztree li span.button.bottom_open{background-position:-92px -36px} +.ztree li span.button.bottom_close{background-position:-74px -36px} +.ztree li span.button.noline_open{background-position:-92px -72px} +.ztree li span.button.noline_close{background-position:-74px -72px} +.ztree li span.button.root_docu{ background:none;} +.ztree li span.button.roots_docu{background-position:-56px 0} +.ztree li span.button.center_docu{background-position:-56px -18px} +.ztree li span.button.bottom_docu{background-position:-56px -36px} +.ztree li span.button.noline_docu{ background:none;} + +.ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle} +.ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle} +.ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle} +.ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle} +.ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle} + +.ztree li span.button.ico_loading{margin-right:2px; background:url(../images/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle} + +ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)} + +span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute; + background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; + background-position:-110px -80px; background-image:url("../images/zTreeStandard.png"); *background-image:url("../images/zTreeStandard.gif")} + +ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)} +.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute} + +/* level style*/ +/*.ztree li span.button.level0 { + display:none; +} +.ztree li ul.level0 { + padding:0; + background:none; +}*/ \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/static/plugins/ztree/images/line_conn.gif b/ksafepack-admin/src/main/resources/static/plugins/ztree/images/line_conn.gif new file mode 100644 index 0000000..d561d36 Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/plugins/ztree/images/line_conn.gif differ diff --git a/ksafepack-admin/src/main/resources/static/plugins/ztree/images/loading.gif b/ksafepack-admin/src/main/resources/static/plugins/ztree/images/loading.gif new file mode 100644 index 0000000..e8c2892 Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/plugins/ztree/images/loading.gif differ diff --git a/ksafepack-admin/src/main/resources/static/plugins/ztree/images/zTreeStandard.png b/ksafepack-admin/src/main/resources/static/plugins/ztree/images/zTreeStandard.png new file mode 100644 index 0000000..ffda01e Binary files /dev/null and b/ksafepack-admin/src/main/resources/static/plugins/ztree/images/zTreeStandard.png differ diff --git a/ksafepack-admin/src/main/resources/static/plugins/ztree/js/jquery.ztree.core.js b/ksafepack-admin/src/main/resources/static/plugins/ztree/js/jquery.ztree.core.js new file mode 100644 index 0000000..7dd93c6 --- /dev/null +++ b/ksafepack-admin/src/main/resources/static/plugins/ztree/js/jquery.ztree.core.js @@ -0,0 +1,1684 @@ +/* + * JQuery zTree core v3.5.16 + * http://zTree.me/ + * + * Copyright (c) 2010 Hunter.z + * + * Licensed same as jquery - MIT License + * http://www.opensource.org/licenses/mit-license.php + * + * email: hunter.z@263.net + * Date: 2014-03-09 + */ +(function($){ + var settings = {}, roots = {}, caches = {}, + //default consts of core + _consts = { + className: { + BUTTON: "button", + LEVEL: "level", + ICO_LOADING: "ico_loading", + SWITCH: "switch" + }, + event: { + NODECREATED: "ztree_nodeCreated", + CLICK: "ztree_click", + EXPAND: "ztree_expand", + COLLAPSE: "ztree_collapse", + ASYNC_SUCCESS: "ztree_async_success", + ASYNC_ERROR: "ztree_async_error", + REMOVE: "ztree_remove" + }, + id: { + A: "_a", + ICON: "_ico", + SPAN: "_span", + SWITCH: "_switch", + UL: "_ul" + }, + line: { + ROOT: "root", + ROOTS: "roots", + CENTER: "center", + BOTTOM: "bottom", + NOLINE: "noline", + LINE: "line" + }, + folder: { + OPEN: "open", + CLOSE: "close", + DOCU: "docu" + }, + node: { + CURSELECTED: "curSelectedNode" + } + }, + //default setting of core + _setting = { + treeId: "", + treeObj: null, + view: { + addDiyDom: null, + autoCancelSelected: true, + dblClickExpand: true, + expandSpeed: "fast", + fontCss: {}, + nameIsHTML: false, + selectedMulti: true, + showIcon: true, + showLine: true, + showTitle: true, + txtSelectedEnable: false + }, + data: { + key: { + children: "children", + name: "name", + title: "", + url: "url" + }, + simpleData: { + enable: false, + idKey: "id", + pIdKey: "pId", + rootPId: null + }, + keep: { + parent: false, + leaf: false + } + }, + async: { + enable: false, + contentType: "application/x-www-form-urlencoded", + type: "post", + dataType: "text", + url: "", + autoParam: [], + otherParam: [], + dataFilter: null + }, + callback: { + beforeAsync:null, + beforeClick:null, + beforeDblClick:null, + beforeRightClick:null, + beforeMouseDown:null, + beforeMouseUp:null, + beforeExpand:null, + beforeCollapse:null, + beforeRemove:null, + + onAsyncError:null, + onAsyncSuccess:null, + onNodeCreated:null, + onClick:null, + onDblClick:null, + onRightClick:null, + onMouseDown:null, + onMouseUp:null, + onExpand:null, + onCollapse:null, + onRemove:null + } + }, + //default root of core + //zTree use root to save full data + _initRoot = function (setting) { + var r = data.getRoot(setting); + if (!r) { + r = {}; + data.setRoot(setting, r); + } + r[setting.data.key.children] = []; + r.expandTriggerFlag = false; + r.curSelectedList = []; + r.noSelection = true; + r.createdNodes = []; + r.zId = 0; + r._ver = (new Date()).getTime(); + }, + //default cache of core + _initCache = function(setting) { + var c = data.getCache(setting); + if (!c) { + c = {}; + data.setCache(setting, c); + } + c.nodes = []; + c.doms = []; + }, + //default bindEvent of core + _bindEvent = function(setting) { + var o = setting.treeObj, + c = consts.event; + o.bind(c.NODECREATED, function (event, treeId, node) { + tools.apply(setting.callback.onNodeCreated, [event, treeId, node]); + }); + + o.bind(c.CLICK, function (event, srcEvent, treeId, node, clickFlag) { + tools.apply(setting.callback.onClick, [srcEvent, treeId, node, clickFlag]); + }); + + o.bind(c.EXPAND, function (event, treeId, node) { + tools.apply(setting.callback.onExpand, [event, treeId, node]); + }); + + o.bind(c.COLLAPSE, function (event, treeId, node) { + tools.apply(setting.callback.onCollapse, [event, treeId, node]); + }); + + o.bind(c.ASYNC_SUCCESS, function (event, treeId, node, msg) { + tools.apply(setting.callback.onAsyncSuccess, [event, treeId, node, msg]); + }); + + o.bind(c.ASYNC_ERROR, function (event, treeId, node, XMLHttpRequest, textStatus, errorThrown) { + tools.apply(setting.callback.onAsyncError, [event, treeId, node, XMLHttpRequest, textStatus, errorThrown]); + }); + + o.bind(c.REMOVE, function (event, treeId, treeNode) { + tools.apply(setting.callback.onRemove, [event, treeId, treeNode]); + }); + }, + _unbindEvent = function(setting) { + var o = setting.treeObj, + c = consts.event; + o.unbind(c.NODECREATED) + .unbind(c.CLICK) + .unbind(c.EXPAND) + .unbind(c.COLLAPSE) + .unbind(c.ASYNC_SUCCESS) + .unbind(c.ASYNC_ERROR) + .unbind(c.REMOVE); + }, + //default event proxy of core + _eventProxy = function(event) { + var target = event.target, + setting = data.getSetting(event.data.treeId), + tId = "", node = null, + nodeEventType = "", treeEventType = "", + nodeEventCallback = null, treeEventCallback = null, + tmp = null; + + if (tools.eqs(event.type, "mousedown")) { + treeEventType = "mousedown"; + } else if (tools.eqs(event.type, "mouseup")) { + treeEventType = "mouseup"; + } else if (tools.eqs(event.type, "contextmenu")) { + treeEventType = "contextmenu"; + } else if (tools.eqs(event.type, "click")) { + if (tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.SWITCH) !== null) { + tId = tools.getNodeMainDom(target).id; + nodeEventType = "switchNode"; + } else { + tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]); + if (tmp) { + tId = tools.getNodeMainDom(tmp).id; + nodeEventType = "clickNode"; + } + } + } else if (tools.eqs(event.type, "dblclick")) { + treeEventType = "dblclick"; + tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]); + if (tmp) { + tId = tools.getNodeMainDom(tmp).id; + nodeEventType = "switchNode"; + } + } + if (treeEventType.length > 0 && tId.length == 0) { + tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]); + if (tmp) {tId = tools.getNodeMainDom(tmp).id;} + } + // event to node + if (tId.length>0) { + node = data.getNodeCache(setting, tId); + switch (nodeEventType) { + case "switchNode" : + if (!node.isParent) { + nodeEventType = ""; + } else if (tools.eqs(event.type, "click") + || (tools.eqs(event.type, "dblclick") && tools.apply(setting.view.dblClickExpand, [setting.treeId, node], setting.view.dblClickExpand))) { + nodeEventCallback = handler.onSwitchNode; + } else { + nodeEventType = ""; + } + break; + case "clickNode" : + nodeEventCallback = handler.onClickNode; + break; + } + } + // event to zTree + switch (treeEventType) { + case "mousedown" : + treeEventCallback = handler.onZTreeMousedown; + break; + case "mouseup" : + treeEventCallback = handler.onZTreeMouseup; + break; + case "dblclick" : + treeEventCallback = handler.onZTreeDblclick; + break; + case "contextmenu" : + treeEventCallback = handler.onZTreeContextmenu; + break; + } + var proxyResult = { + stop: false, + node: node, + nodeEventType: nodeEventType, + nodeEventCallback: nodeEventCallback, + treeEventType: treeEventType, + treeEventCallback: treeEventCallback + }; + return proxyResult + }, + //default init node of core + _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { + if (!n) return; + var r = data.getRoot(setting), + childKey = setting.data.key.children; + n.level = level; + n.tId = setting.treeId + "_" + (++r.zId); + n.parentTId = parentNode ? parentNode.tId : null; + n.open = (typeof n.open == "string") ? tools.eqs(n.open, "true") : !!n.open; + if (n[childKey] && n[childKey].length > 0) { + n.isParent = true; + n.zAsync = true; + } else { + n.isParent = (typeof n.isParent == "string") ? tools.eqs(n.isParent, "true") : !!n.isParent; + n.open = (n.isParent && !setting.async.enable) ? n.open : false; + n.zAsync = !n.isParent; + } + n.isFirstNode = isFirstNode; + n.isLastNode = isLastNode; + n.getParentNode = function() {return data.getNodeCache(setting, n.parentTId);}; + n.getPreNode = function() {return data.getPreNode(setting, n);}; + n.getNextNode = function() {return data.getNextNode(setting, n);}; + n.isAjaxing = false; + data.fixPIdKeyValue(setting, n); + }, + _init = { + bind: [_bindEvent], + unbind: [_unbindEvent], + caches: [_initCache], + nodes: [_initNode], + proxys: [_eventProxy], + roots: [_initRoot], + beforeA: [], + afterA: [], + innerBeforeA: [], + innerAfterA: [], + zTreeTools: [] + }, + //method of operate data + data = { + addNodeCache: function(setting, node) { + data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = node; + }, + getNodeCacheId: function(tId) { + return tId.substring(tId.lastIndexOf("_")+1); + }, + addAfterA: function(afterA) { + _init.afterA.push(afterA); + }, + addBeforeA: function(beforeA) { + _init.beforeA.push(beforeA); + }, + addInnerAfterA: function(innerAfterA) { + _init.innerAfterA.push(innerAfterA); + }, + addInnerBeforeA: function(innerBeforeA) { + _init.innerBeforeA.push(innerBeforeA); + }, + addInitBind: function(bindEvent) { + _init.bind.push(bindEvent); + }, + addInitUnBind: function(unbindEvent) { + _init.unbind.push(unbindEvent); + }, + addInitCache: function(initCache) { + _init.caches.push(initCache); + }, + addInitNode: function(initNode) { + _init.nodes.push(initNode); + }, + addInitProxy: function(initProxy, isFirst) { + if (!!isFirst) { + _init.proxys.splice(0,0,initProxy); + } else { + _init.proxys.push(initProxy); + } + }, + addInitRoot: function(initRoot) { + _init.roots.push(initRoot); + }, + addNodesData: function(setting, parentNode, nodes) { + var childKey = setting.data.key.children; + if (!parentNode[childKey]) parentNode[childKey] = []; + if (parentNode[childKey].length > 0) { + parentNode[childKey][parentNode[childKey].length - 1].isLastNode = false; + view.setNodeLineIcos(setting, parentNode[childKey][parentNode[childKey].length - 1]); + } + parentNode.isParent = true; + parentNode[childKey] = parentNode[childKey].concat(nodes); + }, + addSelectedNode: function(setting, node) { + var root = data.getRoot(setting); + if (!data.isSelectedNode(setting, node)) { + root.curSelectedList.push(node); + } + }, + addCreatedNode: function(setting, node) { + if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) { + var root = data.getRoot(setting); + root.createdNodes.push(node); + } + }, + addZTreeTools: function(zTreeTools) { + _init.zTreeTools.push(zTreeTools); + }, + exSetting: function(s) { + $.extend(true, _setting, s); + }, + fixPIdKeyValue: function(setting, node) { + if (setting.data.simpleData.enable) { + node[setting.data.simpleData.pIdKey] = node.parentTId ? node.getParentNode()[setting.data.simpleData.idKey] : setting.data.simpleData.rootPId; + } + }, + getAfterA: function(setting, node, array) { + for (var i=0, j=_init.afterA.length; i-1) { + result.push(nodes[i]); + } + result = result.concat(data.getNodesByParamFuzzy(setting, nodes[i][childKey], key, value)); + } + return result; + }, + getNodesByFilter: function(setting, nodes, filter, isSingle, invokeParam) { + if (!nodes) return (isSingle ? null : []); + var childKey = setting.data.key.children, + result = isSingle ? null : []; + for (var i = 0, l = nodes.length; i < l; i++) { + if (tools.apply(filter, [nodes[i], invokeParam], false)) { + if (isSingle) {return nodes[i];} + result.push(nodes[i]); + } + var tmpResult = data.getNodesByFilter(setting, nodes[i][childKey], filter, isSingle, invokeParam); + if (isSingle && !!tmpResult) {return tmpResult;} + result = isSingle ? tmpResult : result.concat(tmpResult); + } + return result; + }, + getPreNode: function(setting, node) { + if (!node) return null; + var childKey = setting.data.key.children, + p = node.parentTId ? node.getParentNode() : data.getRoot(setting); + for (var i=0, l=p[childKey].length; i 0))); + }, + clone: function (obj){ + if (obj === null) return null; + var o = tools.isArray(obj) ? [] : {}; + for(var i in obj){ + o[i] = (obj[i] instanceof Date) ? new Date(obj[i].getTime()) : (typeof obj[i] === "object" ? arguments.callee(obj[i]) : obj[i]); + } + return o; + }, + eqs: function(str1, str2) { + return str1.toLowerCase() === str2.toLowerCase(); + }, + isArray: function(arr) { + return Object.prototype.toString.apply(arr) === "[object Array]"; + }, + $: function(node, exp, setting) { + if (!!exp && typeof exp != "string") { + setting = exp; + exp = ""; + } + if (typeof node == "string") { + return $(node, setting ? setting.treeObj.get(0).ownerDocument : null); + } else { + return $("#" + node.tId + exp, setting ? setting.treeObj : null); + } + }, + getMDom: function (setting, curDom, targetExpr) { + if (!curDom) return null; + while (curDom && curDom.id !== setting.treeId) { + for (var i=0, l=targetExpr.length; curDom.tagName && i 0 ); + }, + uCanDo: function(setting, e) { + return true; + } + }, + //method of operate ztree dom + view = { + addNodes: function(setting, parentNode, newNodes, isSilent) { + if (setting.data.keep.leaf && parentNode && !parentNode.isParent) { + return; + } + if (!tools.isArray(newNodes)) { + newNodes = [newNodes]; + } + if (setting.data.simpleData.enable) { + newNodes = data.transformTozTreeFormat(setting, newNodes); + } + if (parentNode) { + var target_switchObj = $$(parentNode, consts.id.SWITCH, setting), + target_icoObj = $$(parentNode, consts.id.ICON, setting), + target_ulObj = $$(parentNode, consts.id.UL, setting); + + if (!parentNode.open) { + view.replaceSwitchClass(parentNode, target_switchObj, consts.folder.CLOSE); + view.replaceIcoClass(parentNode, target_icoObj, consts.folder.CLOSE); + parentNode.open = false; + target_ulObj.css({ + "display": "none" + }); + } + + data.addNodesData(setting, parentNode, newNodes); + view.createNodes(setting, parentNode.level + 1, newNodes, parentNode); + if (!isSilent) { + view.expandCollapseParentNode(setting, parentNode, true); + } + } else { + data.addNodesData(setting, data.getRoot(setting), newNodes); + view.createNodes(setting, 0, newNodes, null); + } + }, + appendNodes: function(setting, level, nodes, parentNode, initFlag, openFlag) { + if (!nodes) return []; + var html = [], + childKey = setting.data.key.children; + for (var i = 0, l = nodes.length; i < l; i++) { + var node = nodes[i]; + if (initFlag) { + var tmpPNode = (parentNode) ? parentNode: data.getRoot(setting), + tmpPChild = tmpPNode[childKey], + isFirstNode = ((tmpPChild.length == nodes.length) && (i == 0)), + isLastNode = (i == (nodes.length - 1)); + data.initNode(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag); + data.addNodeCache(setting, node); + } + + var childHtml = []; + if (node[childKey] && node[childKey].length > 0) { + //make child html first, because checkType + childHtml = view.appendNodes(setting, level + 1, node[childKey], node, initFlag, openFlag && node.open); + } + if (openFlag) { + + view.makeDOMNodeMainBefore(html, setting, node); + view.makeDOMNodeLine(html, setting, node); + data.getBeforeA(setting, node, html); + view.makeDOMNodeNameBefore(html, setting, node); + data.getInnerBeforeA(setting, node, html); + view.makeDOMNodeIcon(html, setting, node); + data.getInnerAfterA(setting, node, html); + view.makeDOMNodeNameAfter(html, setting, node); + data.getAfterA(setting, node, html); + if (node.isParent && node.open) { + view.makeUlHtml(setting, node, html, childHtml.join('')); + } + view.makeDOMNodeMainAfter(html, setting, node); + data.addCreatedNode(setting, node); + } + } + return html; + }, + appendParentULDom: function(setting, node) { + var html = [], + nObj = $$(node, setting); + if (!nObj.get(0) && !!node.parentTId) { + view.appendParentULDom(setting, node.getParentNode()); + nObj = $$(node, setting); + } + var ulObj = $$(node, consts.id.UL, setting); + if (ulObj.get(0)) { + ulObj.remove(); + } + var childKey = setting.data.key.children, + childHtml = view.appendNodes(setting, node.level+1, node[childKey], node, false, true); + view.makeUlHtml(setting, node, html, childHtml.join('')); + nObj.append(html.join('')); + }, + asyncNode: function(setting, node, isSilent, callback) { + var i, l; + if (node && !node.isParent) { + tools.apply(callback); + return false; + } else if (node && node.isAjaxing) { + return false; + } else if (tools.apply(setting.callback.beforeAsync, [setting.treeId, node], true) == false) { + tools.apply(callback); + return false; + } + if (node) { + node.isAjaxing = true; + var icoObj = $$(node, consts.id.ICON, setting); + icoObj.attr({"style":"", "class":consts.className.BUTTON + " " + consts.className.ICO_LOADING}); + } + + var tmpParam = {}; + for (i = 0, l = setting.async.autoParam.length; node && i < l; i++) { + var pKey = setting.async.autoParam[i].split("="), spKey = pKey; + if (pKey.length>1) { + spKey = pKey[1]; + pKey = pKey[0]; + } + tmpParam[spKey] = node[pKey]; + } + if (tools.isArray(setting.async.otherParam)) { + for (i = 0, l = setting.async.otherParam.length; i < l; i += 2) { + tmpParam[setting.async.otherParam[i]] = setting.async.otherParam[i + 1]; + } + } else { + for (var p in setting.async.otherParam) { + tmpParam[p] = setting.async.otherParam[p]; + } + } + + var _tmpV = data.getRoot(setting)._ver; + $.ajax({ + contentType: setting.async.contentType, + type: setting.async.type, + url: tools.apply(setting.async.url, [setting.treeId, node], setting.async.url), + data: tmpParam, + dataType: setting.async.dataType, + success: function(msg) { + if (_tmpV != data.getRoot(setting)._ver) { + return; + } + var newNodes = []; + try { + if (!msg || msg.length == 0) { + newNodes = []; + } else if (typeof msg == "string") { + newNodes = eval("(" + msg + ")"); + } else { + newNodes = msg; + } + } catch(err) { + newNodes = msg; + } + + if (node) { + node.isAjaxing = null; + node.zAsync = true; + } + view.setNodeLineIcos(setting, node); + if (newNodes && newNodes !== "") { + newNodes = tools.apply(setting.async.dataFilter, [setting.treeId, node, newNodes], newNodes); + view.addNodes(setting, node, !!newNodes ? tools.clone(newNodes) : [], !!isSilent); + } else { + view.addNodes(setting, node, [], !!isSilent); + } + setting.treeObj.trigger(consts.event.ASYNC_SUCCESS, [setting.treeId, node, msg]); + tools.apply(callback); + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + if (_tmpV != data.getRoot(setting)._ver) { + return; + } + if (node) node.isAjaxing = null; + view.setNodeLineIcos(setting, node); + setting.treeObj.trigger(consts.event.ASYNC_ERROR, [setting.treeId, node, XMLHttpRequest, textStatus, errorThrown]); + } + }); + return true; + }, + cancelPreSelectedNode: function (setting, node) { + var list = data.getRoot(setting).curSelectedList; + for (var i=0, j=list.length-1; j>=i; j--) { + if (!node || node === list[j]) { + $$(list[j], consts.id.A, setting).removeClass(consts.node.CURSELECTED); + if (node) { + data.removeSelectedNode(setting, node); + break; + } + } + } + if (!node) data.getRoot(setting).curSelectedList = []; + }, + createNodeCallback: function(setting) { + if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) { + var root = data.getRoot(setting); + while (root.createdNodes.length>0) { + var node = root.createdNodes.shift(); + tools.apply(setting.view.addDiyDom, [setting.treeId, node]); + if (!!setting.callback.onNodeCreated) { + setting.treeObj.trigger(consts.event.NODECREATED, [setting.treeId, node]); + } + } + } + }, + createNodes: function(setting, level, nodes, parentNode) { + if (!nodes || nodes.length == 0) return; + var root = data.getRoot(setting), + childKey = setting.data.key.children, + openFlag = !parentNode || parentNode.open || !!$$(parentNode[childKey][0], setting).get(0); + root.createdNodes = []; + var zTreeHtml = view.appendNodes(setting, level, nodes, parentNode, true, openFlag); + if (!parentNode) { + setting.treeObj.append(zTreeHtml.join('')); + } else { + var ulObj = $$(parentNode, consts.id.UL, setting); + if (ulObj.get(0)) { + ulObj.append(zTreeHtml.join('')); + } + } + view.createNodeCallback(setting); + }, + destroy: function(setting) { + if (!setting) return; + data.initCache(setting); + data.initRoot(setting); + event.unbindTree(setting); + event.unbindEvent(setting); + setting.treeObj.empty(); + delete settings[setting.treeId]; + }, + expandCollapseNode: function(setting, node, expandFlag, animateFlag, callback) { + var root = data.getRoot(setting), + childKey = setting.data.key.children; + if (!node) { + tools.apply(callback, []); + return; + } + if (root.expandTriggerFlag) { + var _callback = callback; + callback = function(){ + if (_callback) _callback(); + if (node.open) { + setting.treeObj.trigger(consts.event.EXPAND, [setting.treeId, node]); + } else { + setting.treeObj.trigger(consts.event.COLLAPSE, [setting.treeId, node]); + } + }; + root.expandTriggerFlag = false; + } + if (!node.open && node.isParent && ((!$$(node, consts.id.UL, setting).get(0)) || (node[childKey] && node[childKey].length>0 && !$$(node[childKey][0], setting).get(0)))) { + view.appendParentULDom(setting, node); + view.createNodeCallback(setting); + } + if (node.open == expandFlag) { + tools.apply(callback, []); + return; + } + var ulObj = $$(node, consts.id.UL, setting), + switchObj = $$(node, consts.id.SWITCH, setting), + icoObj = $$(node, consts.id.ICON, setting); + + if (node.isParent) { + node.open = !node.open; + if (node.iconOpen && node.iconClose) { + icoObj.attr("style", view.makeNodeIcoStyle(setting, node)); + } + + if (node.open) { + view.replaceSwitchClass(node, switchObj, consts.folder.OPEN); + view.replaceIcoClass(node, icoObj, consts.folder.OPEN); + if (animateFlag == false || setting.view.expandSpeed == "") { + ulObj.show(); + tools.apply(callback, []); + } else { + if (node[childKey] && node[childKey].length > 0) { + ulObj.slideDown(setting.view.expandSpeed, callback); + } else { + ulObj.show(); + tools.apply(callback, []); + } + } + } else { + view.replaceSwitchClass(node, switchObj, consts.folder.CLOSE); + view.replaceIcoClass(node, icoObj, consts.folder.CLOSE); + if (animateFlag == false || setting.view.expandSpeed == "" || !(node[childKey] && node[childKey].length > 0)) { + ulObj.hide(); + tools.apply(callback, []); + } else { + ulObj.slideUp(setting.view.expandSpeed, callback); + } + } + } else { + tools.apply(callback, []); + } + }, + expandCollapseParentNode: function(setting, node, expandFlag, animateFlag, callback) { + if (!node) return; + if (!node.parentTId) { + view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback); + return; + } else { + view.expandCollapseNode(setting, node, expandFlag, animateFlag); + } + if (node.parentTId) { + view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, animateFlag, callback); + } + }, + expandCollapseSonNode: function(setting, node, expandFlag, animateFlag, callback) { + var root = data.getRoot(setting), + childKey = setting.data.key.children, + treeNodes = (node) ? node[childKey]: root[childKey], + selfAnimateSign = (node) ? false : animateFlag, + expandTriggerFlag = data.getRoot(setting).expandTriggerFlag; + data.getRoot(setting).expandTriggerFlag = false; + if (treeNodes) { + for (var i = 0, l = treeNodes.length; i < l; i++) { + if (treeNodes[i]) view.expandCollapseSonNode(setting, treeNodes[i], expandFlag, selfAnimateSign); + } + } + data.getRoot(setting).expandTriggerFlag = expandTriggerFlag; + view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback ); + }, + makeDOMNodeIcon: function(html, setting, node) { + var nameStr = data.getNodeName(setting, node), + name = setting.view.nameIsHTML ? nameStr : nameStr.replace(/&/g,'&').replace(//g,'>'); + html.push("",name,""); + }, + makeDOMNodeLine: function(html, setting, node) { + html.push(""); + }, + makeDOMNodeMainAfter: function(html, setting, node) { + html.push(""); + }, + makeDOMNodeMainBefore: function(html, setting, node) { + html.push("
          • "); + }, + makeDOMNodeNameAfter: function(html, setting, node) { + html.push(""); + }, + makeDOMNodeNameBefore: function(html, setting, node) { + var title = data.getNodeTitle(setting, node), + url = view.makeNodeUrl(setting, node), + fontcss = view.makeNodeFontCss(setting, node), + fontStyle = []; + for (var f in fontcss) { + fontStyle.push(f, ":", fontcss[f], ";"); + } + html.push(" 0) ? "href='" + url + "'" : ""), " target='",view.makeNodeTarget(node),"' style='", fontStyle.join(''), + "'"); + if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle) && title) {html.push("title='", title.replace(/'/g,"'").replace(//g,'>'),"'");} + html.push(">"); + }, + makeNodeFontCss: function(setting, node) { + var fontCss = tools.apply(setting.view.fontCss, [setting.treeId, node], setting.view.fontCss); + return (fontCss && ((typeof fontCss) != "function")) ? fontCss : {}; + }, + makeNodeIcoClass: function(setting, node) { + var icoCss = ["ico"]; + if (!node.isAjaxing) { + icoCss[0] = (node.iconSkin ? node.iconSkin + "_" : "") + icoCss[0]; + if (node.isParent) { + icoCss.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE); + } else { + icoCss.push(consts.folder.DOCU); + } + } + return consts.className.BUTTON + " " + icoCss.join('_'); + }, + makeNodeIcoStyle: function(setting, node) { + var icoStyle = []; + if (!node.isAjaxing) { + var icon = (node.isParent && node.iconOpen && node.iconClose) ? (node.open ? node.iconOpen : node.iconClose) : node.icon; + if (icon) icoStyle.push("background:url(", icon, ") 0 0 no-repeat;"); + if (setting.view.showIcon == false || !tools.apply(setting.view.showIcon, [setting.treeId, node], true)) { + icoStyle.push("width:0px;height:0px;"); + } + } + return icoStyle.join(''); + }, + makeNodeLineClass: function(setting, node) { + var lineClass = []; + if (setting.view.showLine) { + if (node.level == 0 && node.isFirstNode && node.isLastNode) { + lineClass.push(consts.line.ROOT); + } else if (node.level == 0 && node.isFirstNode) { + lineClass.push(consts.line.ROOTS); + } else if (node.isLastNode) { + lineClass.push(consts.line.BOTTOM); + } else { + lineClass.push(consts.line.CENTER); + } + } else { + lineClass.push(consts.line.NOLINE); + } + if (node.isParent) { + lineClass.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE); + } else { + lineClass.push(consts.folder.DOCU); + } + return view.makeNodeLineClassEx(node) + lineClass.join('_'); + }, + makeNodeLineClassEx: function(node) { + return consts.className.BUTTON + " " + consts.className.LEVEL + node.level + " " + consts.className.SWITCH + " "; + }, + makeNodeTarget: function(node) { + return (node.target || "_blank"); + }, + makeNodeUrl: function(setting, node) { + var urlKey = setting.data.key.url; + return node[urlKey] ? node[urlKey] : null; + }, + makeUlHtml: function(setting, node, html, content) { + html.push("
              "); + html.push(content); + html.push("
            "); + }, + makeUlLineClass: function(setting, node) { + return ((setting.view.showLine && !node.isLastNode) ? consts.line.LINE : ""); + }, + removeChildNodes: function(setting, node) { + if (!node) return; + var childKey = setting.data.key.children, + nodes = node[childKey]; + if (!nodes) return; + + for (var i = 0, l = nodes.length; i < l; i++) { + data.removeNodeCache(setting, nodes[i]); + } + data.removeSelectedNode(setting); + delete node[childKey]; + + if (!setting.data.keep.parent) { + node.isParent = false; + node.open = false; + var tmp_switchObj = $$(node, consts.id.SWITCH, setting), + tmp_icoObj = $$(node, consts.id.ICON, setting); + view.replaceSwitchClass(node, tmp_switchObj, consts.folder.DOCU); + view.replaceIcoClass(node, tmp_icoObj, consts.folder.DOCU); + $$(node, consts.id.UL, setting).remove(); + } else { + $$(node, consts.id.UL, setting).empty(); + } + }, + setFirstNode: function(setting, parentNode) { + var childKey = setting.data.key.children, childLength = parentNode[childKey].length; + if ( childLength > 0) { + parentNode[childKey][0].isFirstNode = true; + } + }, + setLastNode: function(setting, parentNode) { + var childKey = setting.data.key.children, childLength = parentNode[childKey].length; + if ( childLength > 0) { + parentNode[childKey][childLength - 1].isLastNode = true; + } + }, + removeNode: function(setting, node) { + var root = data.getRoot(setting), + childKey = setting.data.key.children, + parentNode = (node.parentTId) ? node.getParentNode() : root; + + node.isFirstNode = false; + node.isLastNode = false; + node.getPreNode = function() {return null;}; + node.getNextNode = function() {return null;}; + + if (!data.getNodeCache(setting, node.tId)) { + return; + } + + $$(node, setting).remove(); + data.removeNodeCache(setting, node); + data.removeSelectedNode(setting, node); + + for (var i = 0, l = parentNode[childKey].length; i < l; i++) { + if (parentNode[childKey][i].tId == node.tId) { + parentNode[childKey].splice(i, 1); + break; + } + } + view.setFirstNode(setting, parentNode); + view.setLastNode(setting, parentNode); + + var tmp_ulObj,tmp_switchObj,tmp_icoObj, + childLength = parentNode[childKey].length; + + //repair nodes old parent + if (!setting.data.keep.parent && childLength == 0) { + //old parentNode has no child nodes + parentNode.isParent = false; + parentNode.open = false; + tmp_ulObj = $$(parentNode, consts.id.UL, setting); + tmp_switchObj = $$(parentNode, consts.id.SWITCH, setting); + tmp_icoObj = $$(parentNode, consts.id.ICON, setting); + view.replaceSwitchClass(parentNode, tmp_switchObj, consts.folder.DOCU); + view.replaceIcoClass(parentNode, tmp_icoObj, consts.folder.DOCU); + tmp_ulObj.css("display", "none"); + + } else if (setting.view.showLine && childLength > 0) { + //old parentNode has child nodes + var newLast = parentNode[childKey][childLength - 1]; + tmp_ulObj = $$(newLast, consts.id.UL, setting); + tmp_switchObj = $$(newLast, consts.id.SWITCH, setting); + tmp_icoObj = $$(newLast, consts.id.ICON, setting); + if (parentNode == root) { + if (parentNode[childKey].length == 1) { + //node was root, and ztree has only one root after move node + view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.ROOT); + } else { + var tmp_first_switchObj = $$(parentNode[childKey][0], consts.id.SWITCH, setting); + view.replaceSwitchClass(parentNode[childKey][0], tmp_first_switchObj, consts.line.ROOTS); + view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM); + } + } else { + view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM); + } + tmp_ulObj.removeClass(consts.line.LINE); + } + }, + replaceIcoClass: function(node, obj, newName) { + if (!obj || node.isAjaxing) return; + var tmpName = obj.attr("class"); + if (tmpName == undefined) return; + var tmpList = tmpName.split("_"); + switch (newName) { + case consts.folder.OPEN: + case consts.folder.CLOSE: + case consts.folder.DOCU: + tmpList[tmpList.length-1] = newName; + break; + } + obj.attr("class", tmpList.join("_")); + }, + replaceSwitchClass: function(node, obj, newName) { + if (!obj) return; + var tmpName = obj.attr("class"); + if (tmpName == undefined) return; + var tmpList = tmpName.split("_"); + switch (newName) { + case consts.line.ROOT: + case consts.line.ROOTS: + case consts.line.CENTER: + case consts.line.BOTTOM: + case consts.line.NOLINE: + tmpList[0] = view.makeNodeLineClassEx(node) + newName; + break; + case consts.folder.OPEN: + case consts.folder.CLOSE: + case consts.folder.DOCU: + tmpList[1] = newName; + break; + } + obj.attr("class", tmpList.join("_")); + if (newName !== consts.folder.DOCU) { + obj.removeAttr("disabled"); + } else { + obj.attr("disabled", "disabled"); + } + }, + selectNode: function(setting, node, addFlag) { + if (!addFlag) { + view.cancelPreSelectedNode(setting); + } + $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED); + data.addSelectedNode(setting, node); + }, + setNodeFontCss: function(setting, treeNode) { + var aObj = $$(treeNode, consts.id.A, setting), + fontCss = view.makeNodeFontCss(setting, treeNode); + if (fontCss) { + aObj.css(fontCss); + } + }, + setNodeLineIcos: function(setting, node) { + if (!node) return; + var switchObj = $$(node, consts.id.SWITCH, setting), + ulObj = $$(node, consts.id.UL, setting), + icoObj = $$(node, consts.id.ICON, setting), + ulLine = view.makeUlLineClass(setting, node); + if (ulLine.length==0) { + ulObj.removeClass(consts.line.LINE); + } else { + ulObj.addClass(ulLine); + } + switchObj.attr("class", view.makeNodeLineClass(setting, node)); + if (node.isParent) { + switchObj.removeAttr("disabled"); + } else { + switchObj.attr("disabled", "disabled"); + } + icoObj.removeAttr("style"); + icoObj.attr("style", view.makeNodeIcoStyle(setting, node)); + icoObj.attr("class", view.makeNodeIcoClass(setting, node)); + }, + setNodeName: function(setting, node) { + var title = data.getNodeTitle(setting, node), + nObj = $$(node, consts.id.SPAN, setting); + nObj.empty(); + if (setting.view.nameIsHTML) { + nObj.html(data.getNodeName(setting, node)); + } else { + nObj.text(data.getNodeName(setting, node)); + } + if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle)) { + var aObj = $$(node, consts.id.A, setting); + aObj.attr("title", !title ? "" : title); + } + }, + setNodeTarget: function(setting, node) { + var aObj = $$(node, consts.id.A, setting); + aObj.attr("target", view.makeNodeTarget(node)); + }, + setNodeUrl: function(setting, node) { + var aObj = $$(node, consts.id.A, setting), + url = view.makeNodeUrl(setting, node); + if (url == null || url.length == 0) { + aObj.removeAttr("href"); + } else { + aObj.attr("href", url); + } + }, + switchNode: function(setting, node) { + if (node.open || !tools.canAsync(setting, node)) { + view.expandCollapseNode(setting, node, !node.open); + } else if (setting.async.enable) { + if (!view.asyncNode(setting, node)) { + view.expandCollapseNode(setting, node, !node.open); + return; + } + } else if (node) { + view.expandCollapseNode(setting, node, !node.open); + } + } + }; + // zTree defind + $.fn.zTree = { + consts : _consts, + _z : { + tools: tools, + view: view, + event: event, + data: data + }, + getZTreeObj: function(treeId) { + var o = data.getZTreeTools(treeId); + return o ? o : null; + }, + destroy: function(treeId) { + if (!!treeId && treeId.length > 0) { + view.destroy(data.getSetting(treeId)); + } else { + for(var s in settings) { + view.destroy(settings[s]); + } + } + }, + init: function(obj, zSetting, zNodes) { + var setting = tools.clone(_setting); + $.extend(true, setting, zSetting); + setting.treeId = obj.attr("id"); + setting.treeObj = obj; + setting.treeObj.empty(); + settings[setting.treeId] = setting; + //For some older browser,(e.g., ie6) + if(typeof document.body.style.maxHeight === "undefined") { + setting.view.expandSpeed = ""; + } + data.initRoot(setting); + var root = data.getRoot(setting), + childKey = setting.data.key.children; + zNodes = zNodes ? tools.clone(tools.isArray(zNodes)? zNodes : [zNodes]) : []; + if (setting.data.simpleData.enable) { + root[childKey] = data.transformTozTreeFormat(setting, zNodes); + } else { + root[childKey] = zNodes; + } + + data.initCache(setting); + event.unbindTree(setting); + event.bindTree(setting); + event.unbindEvent(setting); + event.bindEvent(setting); + + var zTreeTools = { + setting : setting, + addNodes : function(parentNode, newNodes, isSilent) { + if (!newNodes) return null; + if (!parentNode) parentNode = null; + if (parentNode && !parentNode.isParent && setting.data.keep.leaf) return null; + var xNewNodes = tools.clone(tools.isArray(newNodes)? newNodes: [newNodes]); + function addCallback() { + view.addNodes(setting, parentNode, xNewNodes, (isSilent==true)); + } + + if (tools.canAsync(setting, parentNode)) { + view.asyncNode(setting, parentNode, isSilent, addCallback); + } else { + addCallback(); + } + return xNewNodes; + }, + cancelSelectedNode : function(node) { + view.cancelPreSelectedNode(setting, node); + }, + destroy : function() { + view.destroy(setting); + }, + expandAll : function(expandFlag) { + expandFlag = !!expandFlag; + view.expandCollapseSonNode(setting, null, expandFlag, true); + return expandFlag; + }, + expandNode : function(node, expandFlag, sonSign, focus, callbackFlag) { + if (!node || !node.isParent) return null; + if (expandFlag !== true && expandFlag !== false) { + expandFlag = !node.open; + } + callbackFlag = !!callbackFlag; + + if (callbackFlag && expandFlag && (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false)) { + return null; + } else if (callbackFlag && !expandFlag && (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false)) { + return null; + } + if (expandFlag && node.parentTId) { + view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, false); + } + if (expandFlag === node.open && !sonSign) { + return null; + } + + data.getRoot(setting).expandTriggerFlag = callbackFlag; + if (!tools.canAsync(setting, node) && sonSign) { + view.expandCollapseSonNode(setting, node, expandFlag, true, function() { + if (focus !== false) {try{$$(node, setting).focus().blur();}catch(e){}} + }); + } else { + node.open = !expandFlag; + view.switchNode(this.setting, node); + if (focus !== false) {try{$$(node, setting).focus().blur();}catch(e){}} + } + return expandFlag; + }, + getNodes : function() { + return data.getNodes(setting); + }, + getNodeByParam : function(key, value, parentNode) { + if (!key) return null; + return data.getNodeByParam(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value); + }, + getNodeByTId : function(tId) { + return data.getNodeCache(setting, tId); + }, + getNodesByParam : function(key, value, parentNode) { + if (!key) return null; + return data.getNodesByParam(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value); + }, + getNodesByParamFuzzy : function(key, value, parentNode) { + if (!key) return null; + return data.getNodesByParamFuzzy(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value); + }, + getNodesByFilter: function(filter, isSingle, parentNode, invokeParam) { + isSingle = !!isSingle; + if (!filter || (typeof filter != "function")) return (isSingle ? null : []); + return data.getNodesByFilter(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), filter, isSingle, invokeParam); + }, + getNodeIndex : function(node) { + if (!node) return null; + var childKey = setting.data.key.children, + parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting); + for (var i=0, l = parentNode[childKey].length; i < l; i++) { + if (parentNode[childKey][i] == node) return i; + } + return -1; + }, + getSelectedNodes : function() { + var r = [], list = data.getRoot(setting).curSelectedList; + for (var i=0, l=list.length; i 0) { + view.createNodes(setting, 0, root[childKey]); + } else if (setting.async.enable && setting.async.url && setting.async.url !== '') { + view.asyncNode(setting); + } + return zTreeTools; + } + }; + + var zt = $.fn.zTree, + $$ = tools.$, + consts = zt.consts; +})(jQuery); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/business/anquanfuwu/index.html b/ksafepack-admin/src/main/resources/templates/business/anquanfuwu/index.html new file mode 100644 index 0000000..c231b67 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/anquanfuwu/index.html @@ -0,0 +1,152 @@ + + + + +
            + + + + + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/business/anquanweifuwu/index.html b/ksafepack-admin/src/main/resources/templates/business/anquanweifuwu/index.html new file mode 100644 index 0000000..2468e45 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/anquanweifuwu/index.html @@ -0,0 +1,444 @@ + + + + +
            + +
            +
            + 安全微服务套餐 + 标准套餐+自由选择搭配套餐 + + 基础防护(操作系统防护、中间件防护、数据库防护、服务应用防护) + + + 专业防护(漏洞防护、木马防护、数据安全防护) + + + 业务防护(业务逻辑防护、攻击路径防护)、应急处理 + +
            + + 我们提供标准套餐,您也可以自由选择项目,我们推荐您选择部分基础防护项目+部分专业防护项目+全部业务防护: + +
            + 标准套餐 +
            +
            + 自选套餐 +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            基础防护 操作系统防护巡检+加固300
            中间件防护巡检+加固300
            服务应用防护巡检+加固300
            专业防护 漏洞防护巡检+加固700
            木马防护实时巡检+加固500
            业务逻辑防护实时巡检+加固+合规600
            数据防护 数据库防护巡检+加固400
            数据安全防护数据安全审计/跨境数据合规检查/整改800
            应急处理 应急处理3000
            + 计:0元/月 +
            + +
            +
            +
            +
            +
            + 标准套餐 +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            基础防护 操作系统防护巡检+加固300
            中间件防护巡检+加固300
            服务应用防护巡检+加固300
            专业防护 漏洞防护巡检+加固700
            木马防护实时巡检+加固500
            业务逻辑防护实时巡检+加固+合规600
            数据防护 数据库防护巡检+加固400
            数据安全防护数据安全审计/跨境数据合规检查/整改800
            应急处理 应急处理3000
            + 优惠后计:1999元/月 +
            + +
            +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + +
            +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            + + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/business/app/index.html b/ksafepack-admin/src/main/resources/templates/business/app/index.html new file mode 100644 index 0000000..8f25cda --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/app/index.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + 安全微服务 + + +
            +
            + +

            楼兰安全

            +
            +
            + +

            独立站拥有20多种模板,且符合GDPR及中国相关法规等标准,结合安全微服务套餐,共同协助外贸企业安全商务运营。

            +
            + +
            +
            + {{question.title}} +
            +
            +
            + +
            +
            +

            {{item.title}}

            +

            + {{item.content}} +

            +
            +
            +
            + +
            +
            + 留下您的联系方式 +
            +
            +
            +

            *您的称呼

            + +
            +
            +

            *联系电话

            + +
            +
            +

            公司名称

            + +
            +
            +
            +
            + +
            +
            + 提交 +
            +
            + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxun/common.css b/ksafepack-admin/src/main/resources/templates/business/chaxun/common.css new file mode 100644 index 0000000..551bcdd --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/chaxun/common.css @@ -0,0 +1,68 @@ +body * { + box-sizing: border-box; + flex-shrink: 0; +} +body { + font-family: PingFangSC-Regular, Roboto, Helvetica Neue, Helvetica, Tahoma, + Arial, PingFang SC-Light, Microsoft YaHei; +} +input { + background-color: transparent; + border: 0; +} +button { + margin: 0; + padding: 0; + border: 1px solid transparent; + outline: none; + background-color: transparent; +} + +button:active { + opacity: 0.6; +} +.flex-col { + display: flex; + flex-direction: column; +} +.flex-row { + display: flex; + flex-direction: row; +} +.justify-start { + display: flex; + justify-content: flex-start; +} +.justify-center { + display: flex; + justify-content: center; +} + +.justify-end { + display: flex; + justify-content: flex-end; +} +.justify-evenly { + display: flex; + justify-content: space-evenly; +} +.justify-around { + display: flex; + justify-content: space-around; +} +.justify-between { + display: flex; + justify-content: space-between; +} +.align-start { + display: flex; + align-items: flex-start; +} +.align-center { + display: flex; + align-items: center; +} +.align-end { + display: flex; + align-items: flex-end; +} diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxun/flexible.js b/ksafepack-admin/src/main/resources/templates/business/chaxun/flexible.js new file mode 100644 index 0000000..b817872 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/chaxun/flexible.js @@ -0,0 +1,10 @@ +(function flexible(window, document) { + function resetFontSize() { + const size = (document.documentElement.clientWidth / 1920) * 37.5; + document.documentElement.style.fontSize = size + 'px'; + } + + // reset root font size on page show or resize + window.addEventListener('pageshow', resetFontSize); + window.addEventListener('resize', resetFontSize); +})(window, document); diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNG06201d9688425861c7014c0131e16f1e.png b/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNG06201d9688425861c7014c0131e16f1e.png new file mode 100644 index 0000000..e34666f Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNG06201d9688425861c7014c0131e16f1e.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGb61ff640081d0e16bd512f0ccde4cd73.png b/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGb61ff640081d0e16bd512f0ccde4cd73.png new file mode 100644 index 0000000..12d3d9b Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGb61ff640081d0e16bd512f0ccde4cd73.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGb7f9af4e909b19bda16bfc86e557e3ca.png b/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGb7f9af4e909b19bda16bfc86e557e3ca.png new file mode 100644 index 0000000..ebc15ef Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGb7f9af4e909b19bda16bfc86e557e3ca.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGc728907396419fe135976820c812cd54.png b/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGc728907396419fe135976820c812cd54.png new file mode 100644 index 0000000..98c1dbb Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGc728907396419fe135976820c812cd54.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGce2a170ee4dfa655fca7a1639b442442.png b/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGce2a170ee4dfa655fca7a1639b442442.png new file mode 100644 index 0000000..70e3ec4 Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGce2a170ee4dfa655fca7a1639b442442.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png b/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png new file mode 100644 index 0000000..be11d43 Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/chaxun/img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxun/index.css b/ksafepack-admin/src/main/resources/templates/business/chaxun/index.css new file mode 100644 index 0000000..03e4e94 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/chaxun/index.css @@ -0,0 +1,518 @@ +.page { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 1920px; + height: 1345px; + overflow: hidden; +} + +.box_1 { + box-shadow: 0px 0px 6px 0px rgba(8, 15, 53, 0.3); + background-color: rgba(255, 255, 255, 1); + width: 1920px; + height: 70px; + justify-content: flex-center; +} + +.image_1 { + width: 118px; + height: 36px; + margin: 17px 0 0 390px; +} + +.text_1 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 32px; +} + +.text_2 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_3 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_4 { + width: 73px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 22px; +} + +.text_5 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_6 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_7 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.label_1 { + width: 24px; + height: 24px; + margin: 23px 0 0 114px; +} + +.text_8 { + width: 95px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin: 26px 0 0 8px; +} + +.text-wrapper_1 { + background-color: rgba(21, 170, 125, 1); + height: 70px; + width: 120px; + margin: 0 390px 0 20px; +} + +.text_9 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin: 26px 0 0 32px; +} + +.box_2 { + position: relative; + width: 1920px; + height: 1066px; +} + +.text-wrapper_2 { + width: 1920px; + height: 300px; + background: url(./img/FigmaDDSSlicePNGb61ff640081d0e16bd512f0ccde4cd73.png) + 100% no-repeat; + background-size: 100% 100%; + justify-content: flex-center; +} + +.text_10 { + width: 240px; + height: 45px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 30px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 45px; + margin: 110px 0 0 390px; +} + +.text_11 { + width: 117px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 10px 0 111px 390px; +} + +.text_12 { + width: 120px; + height: 36px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 36px; + margin: 78px 0 0 899px; +} + +.text_13 { + width: 927px; + height: 32px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + line-height: 24px; + margin: 20px 0 0 496px; +} + +.box_3 { + width: 767px; + height: 44px; + margin: 55px 0 0 583px; +} + +.text-wrapper_3 { + background-color: rgba(255, 255, 255, 1); + border-radius: 5px; + height: 44px; + border: 1px solid rgba(94, 94, 97, 1); + width: 360px; +} + +.text_14 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 10px 0 0 15px; +} + +.text-wrapper_4 { + background-color: rgba(255, 255, 255, 1); + border-radius: 5px; + height: 44px; + border: 1px solid rgba(94, 94, 97, 1); + margin-left: 32px; + width: 200px; +} + +.text_15 { + width: 64px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 10px 0 0 15px; +} + +.image_2 { + width: 160px; + height: 44px; + margin-left: 15px; +} + +.text-wrapper_5 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 44px; + width: 430px; + margin: 36px 0 421px 745px; +} + +.text_16 { + width: 96px; + height: 24px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 10px 0 0 167px; +} + +.box_4 { + background-color: rgba(255, 255, 255, 1); + position: absolute; + left: -2px; + top: 765px; + width: 1920px; + height: 300px; +} + +.box_5 { + position: absolute; + left: -2px; + top: 765px; + width: 1922px; + height: 302px; + background: url(./img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png) + 100% no-repeat; + background-size: 100% 100%; +} + +.text_17 { + width: 480px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 30px; + margin: 96px 0 0 410px; +} + +.text-wrapper_6 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 44px; + width: 180px; + margin: 35px 0 87px 560px; +} + +.text_18 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 13px 0 0 62px; +} + +.box_6 { + background-color: rgba(255, 255, 255, 1); + width: 1920px; + height: 210px; + margin-top: -1px; +} + +.image-text_1 { + width: 277px; + height: 129px; + margin: 35px 0 0 390px; +} + +.image_3 { + width: 167px; + height: 55px; +} + +.text-group_1 { + width: 277px; + height: 64px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + line-height: 32px; + margin-top: 10px; +} + +.section_1 { + width: 865px; + height: 103px; + margin: 62px 390px 0 0; +} + +.text-wrapper_7 { + width: 572px; + height: 18px; + margin-left: 280px; +} + +.text_19 { + width: 28px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; +} + +.text_20 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_21 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_22 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_23 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_24 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_25 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.paragraph_1 { + width: 865px; + height: 65px; + overflow-wrap: break-word; + color: rgba(146, 151, 157, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + line-height: 28px; + margin-top: 20px; +} diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxun/index.html b/ksafepack-admin/src/main/resources/templates/business/chaxun/index.html new file mode 100644 index 0000000..2aaa08c --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/chaxun/index.html @@ -0,0 +1,95 @@ + + + + + + 楼兰安全 + + + + + +
            +
            + + 安全微服务 + 独立站安全 + 新闻中心 + 关于我们 + + 400-0311-867 +
            + 联系我们 +
            +
            +
            +
            + 查询您的现有服务 + 客户至上 服务优先 +
            + 服务查询 + 请输入您的手机号,查询服务情况 +
            +
            + 手机号: +
            +
            + 验证码: +
            + +
            +
            + 查询服务信息 +
            +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + 联系我们 +
            +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            +
            + 首页 + 安全微服务 + 独立站安全 + 新闻中心 + 关于我们 +
            + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxun/index.rem.css b/ksafepack-admin/src/main/resources/templates/business/chaxun/index.rem.css new file mode 100644 index 0000000..1f6c1e1 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/chaxun/index.rem.css @@ -0,0 +1,522 @@ +html { + font-size: 37.5px; +} + +.page { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 51.2rem; + height: 35.867rem; + overflow: hidden; +} + +.box_1 { + box-shadow: 0px 0px 6px 0px rgba(8, 15, 53, 0.3); + background-color: rgba(255, 255, 255, 1); + width: 51.2rem; + height: 1.867rem; + justify-content: flex-center; +} + +.image_1 { + width: 3.147rem; + height: 0.96rem; + margin: 0.454rem 0 0 10.4rem; +} + +.text_1 { + width: 1.867rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.854rem; +} + +.text_2 { + width: 1.867rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.8rem; +} + +.text_3 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.8rem; +} + +.text_4 { + width: 1.947rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.587rem; +} + +.text_5 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.8rem; +} + +.text_6 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.8rem; +} + +.text_7 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.8rem; +} + +.label_1 { + width: 0.64rem; + height: 0.64rem; + margin: 0.614rem 0 0 3.04rem; +} + +.text_8 { + width: 2.534rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.694rem 0 0 0.214rem; +} + +.text-wrapper_1 { + background-color: rgba(21, 170, 125, 1); + height: 1.867rem; + width: 3.2rem; + margin: 0 10.4rem 0 0.534rem; +} + +.text_9 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.694rem 0 0 0.854rem; +} + +.box_2 { + position: relative; + width: 51.2rem; + height: 28.427rem; +} + +.text-wrapper_2 { + width: 51.2rem; + height: 8rem; + background: url(./img/FigmaDDSSlicePNGb61ff640081d0e16bd512f0ccde4cd73.png) + 100% no-repeat; + background-size: 100% 100%; + justify-content: flex-center; +} + +.text_10 { + width: 6.4rem; + height: 1.2rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 1.2rem; + margin: 2.934rem 0 0 10.4rem; +} + +.text_11 { + width: 3.12rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.267rem 0 2.96rem 10.4rem; +} + +.text_12 { + width: 3.2rem; + height: 0.96rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.96rem; + margin: 2.08rem 0 0 23.974rem; +} + +.text_13 { + width: 24.72rem; + height: 0.854rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + line-height: 0.64rem; + margin: 0.534rem 0 0 13.227rem; +} + +.box_3 { + width: 20.454rem; + height: 1.174rem; + margin: 1.467rem 0 0 15.547rem; +} + +.text-wrapper_3 { + background-color: rgba(255, 255, 255, 1); + border-radius: 5px; + height: 1.174rem; + border: 1px solid rgba(94, 94, 97, 1); + width: 9.6rem; +} + +.text_14 { + width: 1.494rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.267rem 0 0 0.4rem; +} + +.text-wrapper_4 { + background-color: rgba(255, 255, 255, 1); + border-radius: 5px; + height: 1.174rem; + border: 1px solid rgba(94, 94, 97, 1); + margin-left: 0.854rem; + width: 5.334rem; +} + +.text_15 { + width: 1.707rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.267rem 0 0 0.4rem; +} + +.image_2 { + width: 4.267rem; + height: 1.174rem; + margin-left: 0.4rem; +} + +.text-wrapper_5 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 1.174rem; + width: 11.467rem; + margin: 0.96rem 0 11.227rem 19.867rem; +} + +.text_16 { + width: 2.56rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.267rem 0 0 4.454rem; +} + +.box_4 { + background-color: rgba(255, 255, 255, 1); + position: absolute; + left: -0.053rem; + top: 20.4rem; + width: 51.2rem; + height: 8rem; +} + +.box_5 { + position: absolute; + left: -0.053rem; + top: 20.4rem; + width: 51.254rem; + height: 8.054rem; + background: url(./img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png) + 100% no-repeat; + background-size: 100% 100%; +} + +.text_17 { + width: 12.8rem; + height: 1.067rem; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.8rem; + margin: 2.56rem 0 0 19.2rem; +} + +.text-wrapper_6 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 1.174rem; + width: 4.8rem; + margin: 0.934rem 0 2.32rem 23.227rem; +} + +.text_18 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.347rem 0 0 1.654rem; +} + +.box_6 { + background-color: rgba(255, 255, 255, 1); + width: 51.2rem; + height: 5.6rem; + margin-top: -0.026rem; +} + +.image-text_1 { + width: 7.387rem; + height: 3.44rem; + margin: 0.934rem 0 0 10.4rem; +} + +.image_3 { + width: 4.454rem; + height: 1.467rem; +} + +.text-group_1 { + width: 7.387rem; + height: 1.707rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + line-height: 0.854rem; + margin-top: 0.267rem; +} + +.section_1 { + width: 18.187rem; + height: 2.747rem; + margin: 1.654rem 10.4rem 0 0; +} + +.text-wrapper_7 { + width: 15.254rem; + height: 0.48rem; + margin-left: 2.934rem; +} + +.text_19 { + width: 0.747rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; +} + +.text_20 { + width: 1.867rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin-left: 0.8rem; +} + +.text_21 { + width: 1.867rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin-left: 0.8rem; +} + +.text_22 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin-left: 0.8rem; +} + +.text_23 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin-left: 0.8rem; +} + +.text_24 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin-left: 0.8rem; +} + +.text_25 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin-left: 0.8rem; +} + +.paragraph_1 { + width: 18.187rem; + height: 1.734rem; + overflow-wrap: break-word; + color: rgba(146, 151, 157, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + line-height: 0.747rem; + margin-top: 0.534rem; +} diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxun/index.response.css b/ksafepack-admin/src/main/resources/templates/business/chaxun/index.response.css new file mode 100644 index 0000000..e526154 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/chaxun/index.response.css @@ -0,0 +1,518 @@ +.page { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 100vw; + height: 70.06vw; + overflow: hidden; +} + +.box_1 { + box-shadow: 0px 0px 6px 0px rgba(8, 15, 53, 0.3); + background-color: rgba(255, 255, 255, 1); + width: 100vw; + height: 3.65vw; + justify-content: flex-center; +} + +.image_1 { + width: 6.15vw; + height: 1.88vw; + margin: 0.88vw 0 0 20.31vw; +} + +.text_1 { + width: 3.65vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.66vw; +} + +.text_2 { + width: 3.65vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.56vw; +} + +.text_3 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.56vw; +} + +.text_4 { + width: 3.81vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.14vw; +} + +.text_5 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.56vw; +} + +.text_6 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.56vw; +} + +.text_7 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.56vw; +} + +.label_1 { + width: 1.25vw; + height: 1.25vw; + margin: 1.19vw 0 0 5.93vw; +} + +.text_8 { + width: 4.95vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.35vw 0 0 0.41vw; +} + +.text-wrapper_1 { + background-color: rgba(21, 170, 125, 1); + height: 3.65vw; + width: 6.25vw; + margin: 0 20.31vw 0 1.04vw; +} + +.text_9 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.35vw 0 0 1.66vw; +} + +.box_2 { + position: relative; + width: 100vw; + height: 55.53vw; +} + +.text-wrapper_2 { + width: 100vw; + height: 15.63vw; + background: url(./img/FigmaDDSSlicePNGb61ff640081d0e16bd512f0ccde4cd73.png) + 100% no-repeat; + background-size: 100% 100%; + justify-content: flex-center; +} + +.text_10 { + width: 12.5vw; + height: 2.35vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 1.56vw; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 2.35vw; + margin: 5.72vw 0 0 20.31vw; +} + +.text_11 { + width: 6.1vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.52vw 0 5.78vw 20.31vw; +} + +.text_12 { + width: 6.25vw; + height: 1.88vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 1.56vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.88vw; + margin: 4.06vw 0 0 46.82vw; +} + +.text_13 { + width: 48.29vw; + height: 1.67vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + line-height: 1.25vw; + margin: 1.04vw 0 0 25.83vw; +} + +.box_3 { + width: 39.95vw; + height: 2.3vw; + margin: 2.86vw 0 0 30.36vw; +} + +.text-wrapper_3 { + background-color: rgba(255, 255, 255, 1); + border-radius: 5px; + height: 2.3vw; + border: 1px solid rgba(94, 94, 97, 1); + width: 18.75vw; +} + +.text_14 { + width: 2.92vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.52vw 0 0 0.78vw; +} + +.text-wrapper_4 { + background-color: rgba(255, 255, 255, 1); + border-radius: 5px; + height: 2.3vw; + border: 1px solid rgba(94, 94, 97, 1); + margin-left: 1.67vw; + width: 10.42vw; +} + +.text_15 { + width: 3.34vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.52vw 0 0 0.78vw; +} + +.image_2 { + width: 8.34vw; + height: 2.3vw; + margin-left: 0.79vw; +} + +.text-wrapper_5 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 2.3vw; + width: 22.4vw; + margin: 1.87vw 0 21.92vw 38.8vw; +} + +.text_16 { + width: 5vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.52vw 0 0 8.69vw; +} + +.box_4 { + background-color: rgba(255, 255, 255, 1); + position: absolute; + left: -0.1vw; + top: 39.85vw; + width: 100vw; + height: 15.63vw; +} + +.box_5 { + position: absolute; + left: -0.1vw; + top: 39.85vw; + width: 100.11vw; + height: 15.73vw; + background: url(./img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png) + 100% no-repeat; + background-size: 100% 100%; +} + +.text_17 { + width: 25vw; + height: 2.09vw; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 1.56vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.57vw; + margin: 5vw 0 0 37.5vw; +} + +.text-wrapper_6 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 2.3vw; + width: 9.38vw; + margin: 1.82vw 0 4.53vw 45.36vw; +} + +.text_18 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 0.67vw 0 0 3.22vw; +} + +.box_6 { + background-color: rgba(255, 255, 255, 1); + width: 100vw; + height: 10.94vw; + margin-top: -0.05vw; +} + +.image-text_1 { + width: 14.43vw; + height: 6.72vw; + margin: 1.82vw 0 0 20.31vw; +} + +.image_3 { + width: 8.7vw; + height: 2.87vw; +} + +.text-group_1 { + width: 14.43vw; + height: 3.34vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + line-height: 1.67vw; + margin-top: 0.53vw; +} + +.section_1 { + width: 35.53vw; + height: 5.37vw; + margin: 3.22vw 20.31vw 0 0; +} + +.text-wrapper_7 { + width: 29.8vw; + height: 0.94vw; + margin-left: 5.73vw; +} + +.text_19 { + width: 1.46vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; +} + +.text_20 { + width: 3.65vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin-left: 1.57vw; +} + +.text_21 { + width: 3.65vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin-left: 1.57vw; +} + +.text_22 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin-left: 1.57vw; +} + +.text_23 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin-left: 1.57vw; +} + +.text_24 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin-left: 1.57vw; +} + +.text_25 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin-left: 1.57vw; +} + +.paragraph_1 { + width: 35.53vw; + height: 3.39vw; + overflow-wrap: break-word; + color: rgba(146, 151, 157, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + line-height: 1.46vw; + margin-top: 1.05vw; +} diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/common.css b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/common.css new file mode 100644 index 0000000..551bcdd --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/common.css @@ -0,0 +1,68 @@ +body * { + box-sizing: border-box; + flex-shrink: 0; +} +body { + font-family: PingFangSC-Regular, Roboto, Helvetica Neue, Helvetica, Tahoma, + Arial, PingFang SC-Light, Microsoft YaHei; +} +input { + background-color: transparent; + border: 0; +} +button { + margin: 0; + padding: 0; + border: 1px solid transparent; + outline: none; + background-color: transparent; +} + +button:active { + opacity: 0.6; +} +.flex-col { + display: flex; + flex-direction: column; +} +.flex-row { + display: flex; + flex-direction: row; +} +.justify-start { + display: flex; + justify-content: flex-start; +} +.justify-center { + display: flex; + justify-content: center; +} + +.justify-end { + display: flex; + justify-content: flex-end; +} +.justify-evenly { + display: flex; + justify-content: space-evenly; +} +.justify-around { + display: flex; + justify-content: space-around; +} +.justify-between { + display: flex; + justify-content: space-between; +} +.align-start { + display: flex; + align-items: flex-start; +} +.align-center { + display: flex; + align-items: center; +} +.align-end { + display: flex; + align-items: flex-end; +} diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/flexible.js b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/flexible.js new file mode 100644 index 0000000..b817872 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/flexible.js @@ -0,0 +1,10 @@ +(function flexible(window, document) { + function resetFontSize() { + const size = (document.documentElement.clientWidth / 1920) * 37.5; + document.documentElement.style.fontSize = size + 'px'; + } + + // reset root font size on page show or resize + window.addEventListener('pageshow', resetFontSize); + window.addEventListener('resize', resetFontSize); +})(window, document); diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNG06201d9688425861c7014c0131e16f1e.png b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNG06201d9688425861c7014c0131e16f1e.png new file mode 100644 index 0000000..e34666f Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNG06201d9688425861c7014c0131e16f1e.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGb61ff640081d0e16bd512f0ccde4cd73.png b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGb61ff640081d0e16bd512f0ccde4cd73.png new file mode 100644 index 0000000..12d3d9b Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGb61ff640081d0e16bd512f0ccde4cd73.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGb7f9af4e909b19bda16bfc86e557e3ca.png b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGb7f9af4e909b19bda16bfc86e557e3ca.png new file mode 100644 index 0000000..ebc15ef Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGb7f9af4e909b19bda16bfc86e557e3ca.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGc728907396419fe135976820c812cd54.png b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGc728907396419fe135976820c812cd54.png new file mode 100644 index 0000000..98c1dbb Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGc728907396419fe135976820c812cd54.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGce2a170ee4dfa655fca7a1639b442442.png b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGce2a170ee4dfa655fca7a1639b442442.png new file mode 100644 index 0000000..70e3ec4 Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGce2a170ee4dfa655fca7a1639b442442.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png new file mode 100644 index 0000000..be11d43 Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/index.css b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/index.css new file mode 100644 index 0000000..cbe4a30 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/index.css @@ -0,0 +1,933 @@ +.page { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 1920px; + height: 1786px; + overflow: hidden; +} + +.box_1 { + box-shadow: 0px 0px 6px 0px rgba(8, 15, 53, 0.3); + background-color: rgba(255, 255, 255, 1); + width: 1920px; + height: 70px; + justify-content: flex-center; +} + +.image_1 { + width: 118px; + height: 36px; + margin: 17px 0 0 390px; +} + +.text_1 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 32px; +} + +.text_2 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_3 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_4 { + width: 73px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 22px; +} + +.text_5 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_6 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.text_7 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 27px 0 0 30px; +} + +.label_1 { + width: 24px; + height: 24px; + margin: 23px 0 0 114px; +} + +.text_8 { + width: 95px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin: 26px 0 0 8px; +} + +.text-wrapper_1 { + background-color: rgba(21, 170, 125, 1); + height: 70px; + width: 120px; + margin: 0 390px 0 20px; +} + +.text_9 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin: 26px 0 0 32px; +} + +.box_2 { + position: relative; + width: 1920px; + height: 1507px; +} + +.text-wrapper_2 { + width: 1920px; + height: 300px; + background: url(./img/FigmaDDSSlicePNGb61ff640081d0e16bd512f0ccde4cd73.png) + 100% no-repeat; + background-size: 100% 100%; + justify-content: flex-center; +} + +.text_10 { + width: 240px; + height: 45px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 30px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 45px; + margin: 110px 0 0 390px; +} + +.text_11 { + width: 117px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 10px 0 111px 390px; +} + +.text_12 { + width: 120px; + height: 36px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 36px; + margin: 80px 0 0 899px; +} + +.text_13 { + width: 927px; + height: 32px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + line-height: 24px; + margin: 20px 0 0 496px; +} + +.box_3 { + width: 767px; + height: 44px; + margin: 55px 0 0 583px; +} + +.text-wrapper_3 { + background-color: rgba(255, 255, 255, 1); + border-radius: 5px; + height: 44px; + border: 1px solid rgba(94, 94, 97, 1); + width: 360px; +} + +.text_14 { + width: 56px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 10px 0 0 15px; +} + +.text-wrapper_4 { + background-color: rgba(255, 255, 255, 1); + height: 44px; + border: 1px solid rgba(94, 94, 97, 1); + margin-left: 32px; + width: 200px; +} + +.text_15 { + width: 64px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 10px 0 0 15px; +} + +.image_2 { + width: 160px; + height: 44px; + margin-left: 15px; +} + +.text-wrapper_5 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 44px; + width: 430px; + margin: 36px 0 0 745px; +} + +.text_16 { + width: 96px; + height: 24px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 10px 0 0 167px; +} + +.text_17 { + width: 927px; + height: 23px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 18px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 106px 0 0 497px; +} + +.text-wrapper_6 { + background-color: rgba(251, 251, 255, 1); + width: 1140px; + height: 60px; + margin: 40px 0 0 390px; +} + +.text_18 { + width: 36px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 18px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 18px 0 0 94px; +} + +.text_19 { + width: 72px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 18px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 18px 0 0 160px; +} + +.text_20 { + width: 72px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 18px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 18px 0 0 191px; +} + +.text_21 { + width: 36px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 18px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 18px 0 0 129px; +} + +.text_22 { + width: 72px; + height: 24px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 18px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 18px 132px 0 146px; +} + +.box_4 { + background-color: rgba(255, 255, 255, 1); + width: 1140px; + height: 70px; + border: 1px solid rgba(221, 221, 221, 1); + margin-left: 390px; +} + +.text-wrapper_7 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + font-size: 0; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 62px; +} + +.text_23 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; +} + +.text_24 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + color: rgba(102, 102, 102, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; +} + +.text_25 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; +} + +.text_26 { + width: 192px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 73px; +} + +.text_27 { + width: 176px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 80px; +} + +.text_28 { + width: 38px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 75px; +} + +.text_29 { + width: 173px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 81px 0 95px; +} + +.box_5 { + background-color: rgba(255, 255, 255, 1); + width: 1140px; + height: 70px; + border: 1px solid rgba(221, 221, 221, 1); + margin: 1px 0 0 390px; +} + +.text-wrapper_8 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + font-size: 0; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 62px; +} + +.text_30 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; +} + +.text_31 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + color: rgba(102, 102, 102, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; +} + +.text_32 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; +} + +.text_33 { + width: 192px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 73px; +} + +.text_34 { + width: 176px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 80px; +} + +.text_35 { + width: 38px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 75px; +} + +.text_36 { + width: 173px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 81px 0 95px; +} + +.text-wrapper_9 { + background-color: rgba(255, 255, 255, 1); + width: 1140px; + height: 70px; + border: 1px solid rgba(221, 221, 221, 1); + margin: 0 0 420px 390px; +} + +.text_37 { + width: 95px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 62px; +} + +.text_38 { + width: 192px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 73px; +} + +.text_39 { + width: 64px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 136px; +} + +.text_40 { + width: 38px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 0 0 131px; +} + +.text_41 { + width: 173px; + height: 24px; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 16px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 24px; + margin: 23px 81px 0 95px; +} + +.box_6 { + position: absolute; + left: 0; + top: 1206px; + width: 1922px; + height: 302px; + background: url(./img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png) + 100% no-repeat; + background-size: 100% 100%; +} + +.text_42 { + width: 480px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 30px; + margin: 96px 0 0 410px; +} + +.text-wrapper_10 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 44px; + width: 180px; + margin: 35px 0 87px 560px; +} + +.text_43 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 13px 0 0 62px; +} + +.text-wrapper_11 { + border-radius: 5px; + height: 44px; + border: 1px solid rgba(21, 170, 125, 1); + width: 120px; + position: absolute; + left: 1410px; + top: 743px; +} + +.text_44 { + width: 28px; + height: 18px; + overflow-wrap: break-word; + color: rgba(21, 170, 125, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 13px 0 0 46px; +} + +.box_7 { + background-color: rgba(255, 255, 255, 1); + width: 1920px; + height: 210px; + margin-top: -1px; +} + +.image-text_1 { + width: 277px; + height: 129px; + margin: 35px 0 0 390px; +} + +.image_3 { + width: 167px; + height: 55px; +} + +.text-group_1 { + width: 277px; + height: 64px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + line-height: 32px; + margin-top: 10px; +} + +.box_8 { + width: 682px; + height: 103px; + margin: 62px 390px 0 0; +} + +.text-wrapper_12 { + width: 572px; + height: 18px; + margin-left: 280px; +} + +.text_45 { + width: 28px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; +} + +.text_46 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_47 { + width: 70px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_48 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_49 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_50 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.text_51 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 14px; + margin-left: 30px; +} + +.paragraph_1 { + width: 865px; + height: 65px; + overflow-wrap: break-word; + color: rgba(146, 151, 157, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + line-height: 28px; + margin-top: 20px; +} diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/index.html b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/index.html new file mode 100644 index 0000000..88abca6 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/index.html @@ -0,0 +1,134 @@ + + + + + + 楼兰安全 + + + + + +
            +
            + + 安全微服务 + 独立站安全 + 新闻中心 + 关于我们 + + 400-0311-867 +
            + 联系我们 +
            +
            +
            +
            + 查询您的现有服务 + 客户至上 服务优先 +
            + 服务查询 + 请输入您的手机号,查询服务情况 +
            +
            + 手机号: +
            +
            + 验证码: +
            + +
            +
            + 查询服务信息 +
            + 您购买的服务情况如下 : +
            + 账号 + 公司名称 + 服务类型 + 费用 + 服务期限 +
            +
            +
            + 150**** + 0 + 989 +
            + 河北天英软件科技有限公司 + 自有网站,购买安全服务 + 2385 + 2022.12.01-2023.12.01 +
            +
            +
            + 150 + **** + 0989 +
            + 河北天英软件科技有限公司 + 购买安全服务,赠送网站 + 2385 + 2022.12.01-2023.12.01 +
            +
            + 150****0989 + 河北天英软件科技有限公司 + 买断网站 + 2385 + 2022.12.01-2023.12.01 +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + 联系我们 +
            +
            +
            + 续费 +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            +
            + 首页 + 安全微服务 + 独立站安全 + 新闻中心 + 关于我们 +
            + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/index.rem.css b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/index.rem.css new file mode 100644 index 0000000..08c5b4f --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/index.rem.css @@ -0,0 +1,937 @@ +html { + font-size: 37.5px; +} + +.page { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 51.2rem; + height: 47.627rem; + overflow: hidden; +} + +.box_1 { + box-shadow: 0px 0px 6px 0px rgba(8, 15, 53, 0.3); + background-color: rgba(255, 255, 255, 1); + width: 51.2rem; + height: 1.867rem; + justify-content: flex-center; +} + +.image_1 { + width: 3.147rem; + height: 0.96rem; + margin: 0.454rem 0 0 10.4rem; +} + +.text_1 { + width: 1.867rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.854rem; +} + +.text_2 { + width: 1.867rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.8rem; +} + +.text_3 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.8rem; +} + +.text_4 { + width: 1.947rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.587rem; +} + +.text_5 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.8rem; +} + +.text_6 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.8rem; +} + +.text_7 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.72rem 0 0 0.8rem; +} + +.label_1 { + width: 0.64rem; + height: 0.64rem; + margin: 0.614rem 0 0 3.04rem; +} + +.text_8 { + width: 2.534rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.694rem 0 0 0.214rem; +} + +.text-wrapper_1 { + background-color: rgba(21, 170, 125, 1); + height: 1.867rem; + width: 3.2rem; + margin: 0 10.4rem 0 0.534rem; +} + +.text_9 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.694rem 0 0 0.854rem; +} + +.box_2 { + position: relative; + width: 51.2rem; + height: 40.187rem; +} + +.text-wrapper_2 { + width: 51.2rem; + height: 8rem; + background: url(./img/FigmaDDSSlicePNGb61ff640081d0e16bd512f0ccde4cd73.png) + 100% no-repeat; + background-size: 100% 100%; + justify-content: flex-center; +} + +.text_10 { + width: 6.4rem; + height: 1.2rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 1.2rem; + margin: 2.934rem 0 0 10.4rem; +} + +.text_11 { + width: 3.12rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.267rem 0 2.96rem 10.4rem; +} + +.text_12 { + width: 3.2rem; + height: 0.96rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.96rem; + margin: 2.134rem 0 0 23.974rem; +} + +.text_13 { + width: 24.72rem; + height: 0.854rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + line-height: 0.64rem; + margin: 0.534rem 0 0 13.227rem; +} + +.box_3 { + width: 20.454rem; + height: 1.174rem; + margin: 1.467rem 0 0 15.547rem; +} + +.text-wrapper_3 { + background-color: rgba(255, 255, 255, 1); + border-radius: 5px; + height: 1.174rem; + border: 1px solid rgba(94, 94, 97, 1); + width: 9.6rem; +} + +.text_14 { + width: 1.494rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.267rem 0 0 0.4rem; +} + +.text-wrapper_4 { + background-color: rgba(255, 255, 255, 1); + height: 1.174rem; + border: 1px solid rgba(94, 94, 97, 1); + margin-left: 0.854rem; + width: 5.334rem; +} + +.text_15 { + width: 1.707rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.267rem 0 0 0.4rem; +} + +.image_2 { + width: 4.267rem; + height: 1.174rem; + margin-left: 0.4rem; +} + +.text-wrapper_5 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 1.174rem; + width: 11.467rem; + margin: 0.96rem 0 0 19.867rem; +} + +.text_16 { + width: 2.56rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.267rem 0 0 4.454rem; +} + +.text_17 { + width: 24.72rem; + height: 0.614rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.48rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 2.827rem 0 0 13.254rem; +} + +.text-wrapper_6 { + background-color: rgba(251, 251, 255, 1); + width: 30.4rem; + height: 1.6rem; + margin: 1.067rem 0 0 10.4rem; +} + +.text_18 { + width: 0.96rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.48rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.48rem 0 0 2.507rem; +} + +.text_19 { + width: 1.92rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.48rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.48rem 0 0 4.267rem; +} + +.text_20 { + width: 1.92rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.48rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.48rem 0 0 5.094rem; +} + +.text_21 { + width: 0.96rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.48rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.48rem 0 0 3.44rem; +} + +.text_22 { + width: 1.92rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.48rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.48rem 3.52rem 0 3.894rem; +} + +.box_4 { + background-color: rgba(255, 255, 255, 1); + width: 30.4rem; + height: 1.867rem; + border: 1px solid rgba(221, 221, 221, 1); + margin-left: 10.4rem; +} + +.text-wrapper_7 { + width: 2.534rem; + height: 0.64rem; + overflow-wrap: break-word; + font-size: 0; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 0 0 1.654rem; +} + +.text_23 { + width: 2.534rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; +} + +.text_24 { + width: 2.534rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(102, 102, 102, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; +} + +.text_25 { + width: 2.534rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; +} + +.text_26 { + width: 5.12rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 0 0 1.947rem; +} + +.text_27 { + width: 4.694rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 0 0 2.134rem; +} + +.text_28 { + width: 1.014rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 0 0 2rem; +} + +.text_29 { + width: 4.614rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 2.16rem 0 2.534rem; +} + +.box_5 { + background-color: rgba(255, 255, 255, 1); + width: 30.4rem; + height: 1.867rem; + border: 1px solid rgba(221, 221, 221, 1); + margin: 0.027rem 0 0 10.4rem; +} + +.text-wrapper_8 { + width: 2.534rem; + height: 0.64rem; + overflow-wrap: break-word; + font-size: 0; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 0 0 1.654rem; +} + +.text_30 { + width: 2.534rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; +} + +.text_31 { + width: 2.534rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(102, 102, 102, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; +} + +.text_32 { + width: 2.534rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; +} + +.text_33 { + width: 5.12rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 0 0 1.947rem; +} + +.text_34 { + width: 4.694rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 0 0 2.134rem; +} + +.text_35 { + width: 1.014rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 0 0 2rem; +} + +.text_36 { + width: 4.614rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 2.16rem 0 2.534rem; +} + +.text-wrapper_9 { + background-color: rgba(255, 255, 255, 1); + width: 30.4rem; + height: 1.867rem; + border: 1px solid rgba(221, 221, 221, 1); + margin: 0 0 11.2rem 10.4rem; +} + +.text_37 { + width: 2.534rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 0 0 1.654rem; +} + +.text_38 { + width: 5.12rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 0 0 1.947rem; +} + +.text_39 { + width: 1.707rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 0 0 3.627rem; +} + +.text_40 { + width: 1.014rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 0 0 3.494rem; +} + +.text_41 { + width: 4.614rem; + height: 0.64rem; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.426rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.614rem 2.16rem 0 2.534rem; +} + +.box_6 { + position: absolute; + left: 0; + top: 32.16rem; + width: 51.254rem; + height: 8.054rem; + background: url(./img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png) + 100% no-repeat; + background-size: 100% 100%; +} + +.text_42 { + width: 12.8rem; + height: 1.067rem; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.8rem; + margin: 2.56rem 0 0 19.2rem; +} + +.text-wrapper_10 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 1.174rem; + width: 4.8rem; + margin: 0.934rem 0 2.32rem 23.227rem; +} + +.text_43 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.347rem 0 0 1.654rem; +} + +.text-wrapper_11 { + border-radius: 5px; + height: 1.174rem; + border: 1px solid rgba(21, 170, 125, 1); + width: 3.2rem; + position: absolute; + left: 37.6rem; + top: 19.814rem; +} + +.text_44 { + width: 0.747rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(21, 170, 125, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.347rem 0 0 1.227rem; +} + +.box_7 { + background-color: rgba(255, 255, 255, 1); + width: 51.2rem; + height: 5.6rem; + margin-top: -0.026rem; +} + +.image-text_1 { + width: 7.387rem; + height: 3.44rem; + margin: 0.934rem 0 0 10.4rem; +} + +.image_3 { + width: 4.454rem; + height: 1.467rem; +} + +.text-group_1 { + width: 7.387rem; + height: 1.707rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + line-height: 0.854rem; + margin-top: 0.267rem; +} + +.box_8 { + width: 18.187rem; + height: 2.747rem; + margin: 1.654rem 10.4rem 0 0; +} + +.text-wrapper_12 { + width: 15.254rem; + height: 0.48rem; + margin-left: 2.934rem; +} + +.text_45 { + width: 0.747rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; +} + +.text_46 { + width: 1.867rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin-left: 0.8rem; +} + +.text_47 { + width: 1.867rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin-left: 0.8rem; +} + +.text_48 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin-left: 0.8rem; +} + +.text_49 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin-left: 0.8rem; +} + +.text_50 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin-left: 0.8rem; +} + +.text_51 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.374rem; + margin-left: 0.8rem; +} + +.paragraph_1 { + width: 18.187rem; + height: 1.734rem; + overflow-wrap: break-word; + color: rgba(146, 151, 157, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + line-height: 0.747rem; + margin-top: 0.534rem; +} diff --git a/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/index.response.css b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/index.response.css new file mode 100644 index 0000000..2641e88 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/chaxunjieguo/index.response.css @@ -0,0 +1,933 @@ +.page { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 100vw; + height: 93.03vw; + overflow: hidden; +} + +.box_1 { + box-shadow: 0px 0px 6px 0px rgba(8, 15, 53, 0.3); + background-color: rgba(255, 255, 255, 1); + width: 100vw; + height: 3.65vw; + justify-content: flex-center; +} + +.image_1 { + width: 6.15vw; + height: 1.88vw; + margin: 0.88vw 0 0 20.31vw; +} + +.text_1 { + width: 3.65vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.66vw; +} + +.text_2 { + width: 3.65vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.56vw; +} + +.text_3 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.56vw; +} + +.text_4 { + width: 3.81vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.14vw; +} + +.text_5 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.56vw; +} + +.text_6 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.56vw; +} + +.text_7 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.4vw 0 0 1.56vw; +} + +.label_1 { + width: 1.25vw; + height: 1.25vw; + margin: 1.19vw 0 0 5.93vw; +} + +.text_8 { + width: 4.95vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.35vw 0 0 0.41vw; +} + +.text-wrapper_1 { + background-color: rgba(21, 170, 125, 1); + height: 3.65vw; + width: 6.25vw; + margin: 0 20.31vw 0 1.04vw; +} + +.text_9 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin: 1.35vw 0 0 1.66vw; +} + +.box_2 { + position: relative; + width: 100vw; + height: 78.49vw; +} + +.text-wrapper_2 { + width: 100vw; + height: 15.63vw; + background: url(./img/FigmaDDSSlicePNGb61ff640081d0e16bd512f0ccde4cd73.png) + 100% no-repeat; + background-size: 100% 100%; + justify-content: flex-center; +} + +.text_10 { + width: 12.5vw; + height: 2.35vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 1.56vw; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 2.35vw; + margin: 5.72vw 0 0 20.31vw; +} + +.text_11 { + width: 6.1vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.52vw 0 5.78vw 20.31vw; +} + +.text_12 { + width: 6.25vw; + height: 1.88vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 1.56vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.88vw; + margin: 4.16vw 0 0 46.82vw; +} + +.text_13 { + width: 48.29vw; + height: 1.67vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + line-height: 1.25vw; + margin: 1.04vw 0 0 25.83vw; +} + +.box_3 { + width: 39.95vw; + height: 2.3vw; + margin: 2.86vw 0 0 30.36vw; +} + +.text-wrapper_3 { + background-color: rgba(255, 255, 255, 1); + border-radius: 5px; + height: 2.3vw; + border: 1px solid rgba(94, 94, 97, 1); + width: 18.75vw; +} + +.text_14 { + width: 2.92vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.52vw 0 0 0.78vw; +} + +.text-wrapper_4 { + background-color: rgba(255, 255, 255, 1); + height: 2.3vw; + border: 1px solid rgba(94, 94, 97, 1); + margin-left: 1.67vw; + width: 10.42vw; +} + +.text_15 { + width: 3.34vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.52vw 0 0 0.78vw; +} + +.image_2 { + width: 8.34vw; + height: 2.3vw; + margin-left: 0.79vw; +} + +.text-wrapper_5 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 2.3vw; + width: 22.4vw; + margin: 1.87vw 0 0 38.8vw; +} + +.text_16 { + width: 5vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.52vw 0 0 8.69vw; +} + +.text_17 { + width: 48.29vw; + height: 1.2vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.93vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 5.52vw 0 0 25.88vw; +} + +.text-wrapper_6 { + background-color: rgba(251, 251, 255, 1); + width: 59.38vw; + height: 3.13vw; + margin: 2.08vw 0 0 20.31vw; +} + +.text_18 { + width: 1.88vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.93vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.93vw 0 0 4.89vw; +} + +.text_19 { + width: 3.75vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.93vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.93vw 0 0 8.33vw; +} + +.text_20 { + width: 3.75vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.93vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.93vw 0 0 9.94vw; +} + +.text_21 { + width: 1.88vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.93vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.93vw 0 0 6.71vw; +} + +.text_22 { + width: 3.75vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.93vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 0.93vw 6.87vw 0 7.6vw; +} + +.box_4 { + background-color: rgba(255, 255, 255, 1); + width: 59.38vw; + height: 3.65vw; + border: 1px solid rgba(221, 221, 221, 1); + margin-left: 20.32vw; +} + +.text-wrapper_7 { + width: 4.95vw; + height: 1.25vw; + overflow-wrap: break-word; + font-size: 0; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 0 0 3.22vw; +} + +.text_23 { + width: 4.95vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; +} + +.text_24 { + width: 4.95vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(102, 102, 102, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; +} + +.text_25 { + width: 4.95vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; +} + +.text_26 { + width: 10vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 0 0 3.8vw; +} + +.text_27 { + width: 9.17vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 0 0 4.16vw; +} + +.text_28 { + width: 1.98vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 0 0 3.9vw; +} + +.text_29 { + width: 9.02vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 4.21vw 0 4.94vw; +} + +.box_5 { + background-color: rgba(255, 255, 255, 1); + width: 59.38vw; + height: 3.65vw; + border: 1px solid rgba(221, 221, 221, 1); + margin: 0.05vw 0 0 20.31vw; +} + +.text-wrapper_8 { + width: 4.95vw; + height: 1.25vw; + overflow-wrap: break-word; + font-size: 0; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 0 0 3.22vw; +} + +.text_30 { + width: 4.95vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; +} + +.text_31 { + width: 4.95vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(102, 102, 102, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; +} + +.text_32 { + width: 4.95vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; +} + +.text_33 { + width: 10vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 0 0 3.8vw; +} + +.text_34 { + width: 9.17vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 0 0 4.16vw; +} + +.text_35 { + width: 1.98vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 0 0 3.9vw; +} + +.text_36 { + width: 9.02vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 4.21vw 0 4.94vw; +} + +.text-wrapper_9 { + background-color: rgba(255, 255, 255, 1); + width: 59.38vw; + height: 3.65vw; + border: 1px solid rgba(221, 221, 221, 1); + margin: 0 0 21.87vw 20.31vw; +} + +.text_37 { + width: 4.95vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 0 0 3.22vw; +} + +.text_38 { + width: 10vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 0 0 3.8vw; +} + +.text_39 { + width: 3.34vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 0 0 7.08vw; +} + +.text_40 { + width: 1.98vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 0 0 6.82vw; +} + +.text_41 { + width: 9.02vw; + height: 1.25vw; + overflow-wrap: break-word; + color: rgba(94, 94, 97, 1); + font-size: 0.83vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.25vw; + margin: 1.19vw 4.21vw 0 4.94vw; +} + +.box_6 { + position: absolute; + left: 0; + top: 62.82vw; + width: 100.11vw; + height: 15.73vw; + background: url(./img/FigmaDDSSlicePNGddc8cdd4c8327ecd775806c103060d4e.png) + 100% no-repeat; + background-size: 100% 100%; +} + +.text_42 { + width: 25vw; + height: 2.09vw; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 1.56vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 1.57vw; + margin: 5vw 0 0 37.5vw; +} + +.text-wrapper_10 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 2.3vw; + width: 9.38vw; + margin: 1.82vw 0 4.53vw 45.36vw; +} + +.text_43 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 0.67vw 0 0 3.22vw; +} + +.text-wrapper_11 { + border-radius: 5px; + height: 2.3vw; + border: 1px solid rgba(21, 170, 125, 1); + width: 6.25vw; + position: absolute; + left: 73.44vw; + top: 38.7vw; +} + +.text_44 { + width: 1.46vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(21, 170, 125, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.73vw; + margin: 0.67vw 0 0 2.39vw; +} + +.box_7 { + background-color: rgba(255, 255, 255, 1); + width: 100vw; + height: 10.94vw; + margin-top: -0.05vw; +} + +.image-text_1 { + width: 14.43vw; + height: 6.72vw; + margin: 1.82vw 0 0 20.31vw; +} + +.image_3 { + width: 8.7vw; + height: 2.87vw; +} + +.text-group_1 { + width: 14.43vw; + height: 3.34vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + line-height: 1.67vw; + margin-top: 0.53vw; +} + +.box_8 { + width: 35.53vw; + height: 5.37vw; + margin: 3.22vw 20.31vw 0 0; +} + +.text-wrapper_12 { + width: 29.8vw; + height: 0.94vw; + margin-left: 5.73vw; +} + +.text_45 { + width: 1.46vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; +} + +.text_46 { + width: 3.65vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin-left: 1.57vw; +} + +.text_47 { + width: 3.65vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin-left: 1.57vw; +} + +.text_48 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin-left: 1.57vw; +} + +.text_49 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin-left: 1.57vw; +} + +.text_50 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin-left: 1.57vw; +} + +.text_51 { + width: 2.92vw; + height: 0.94vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.73vw; + margin-left: 1.57vw; +} + +.paragraph_1 { + width: 35.53vw; + height: 3.39vw; + overflow-wrap: break-word; + color: rgba(146, 151, 157, 1); + font-size: 0.72vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + line-height: 1.46vw; + margin-top: 1.05vw; +} diff --git a/ksafepack-admin/src/main/resources/templates/business/dulizhananquan/index.html b/ksafepack-admin/src/main/resources/templates/business/dulizhananquan/index.html new file mode 100644 index 0000000..4a082ec --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/dulizhananquan/index.html @@ -0,0 +1,288 @@ + + + + +
            + +
            +
            + 独立站安全 + + 独立站拥有20多种模板,且符合GDPR及中国相关法规等标准,结合 +
            + 安全微服务套餐,共同助力外贸企业安全商务运营。 +
            +
            +
            +
            +
            + +
            + 我们送您独立站 + + 您购买安全微服务套餐,我们送您独立站且永久免费升级 + +
            +
            + +
            +
            +
            +
            + + 如果您有独立站 +
            + 您可以选择安全微服务套餐 +
            +
            + 您可以购买应急处理服务 + +
            +
            +
            + +
            +
            +
            + +
            + 您单独购买独立站 + + 您可以买断独立站,但以后升级需要您另外支付费用 + +
            +
            + +
            +
            +
            +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + +
            +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            + + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + + + + + + + + + + + + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/business/guanyuwomen/index.html b/ksafepack-admin/src/main/resources/templates/business/guanyuwomen/index.html new file mode 100644 index 0000000..e666304 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/guanyuwomen/index.html @@ -0,0 +1,197 @@ + + + + +
            + +
            +
            + 关于我们 + 关注网络安全 提供安全服务 +
            + +
            +
            + 北京楼兰网安科技有限公司 + 专注于云服务器信息安全服务 +
            +
            +
            + + 北京楼兰网安科技有限公司(简称:楼兰网安)是专注于云服务器信息安全服务的高科技技术企业。 +
            + 楼兰网安深耕政务云及私有云安全防护多年,尤其在政务云安全领域有着大量的客户经验,沉淀出有效、规范、完整的政务云安全防护体系,推出套餐式安全微服务,旨在让客户以最小的成本享受到为其量身打造的安全服务。 +
            +
            +
            +
            + + + 主要成员曾多次参与国家测评中心国家信息安全服务 + +
            +
            +
            +
            + + + 主要成员主导国家测评中心研究课题漏洞扫描产品研发 + +
            +
            +
            +
            +
            +
            + + + 主要成员主导国家测评中心研究课题基线扫描产品研发 + +
            +
            +
            +
            + + + 主要成员曾参与多省电信、部队等部门渗透测试 + +
            +
            +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + +
            +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            + + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + + + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/business/guanyuwomenlianxi/index.html b/ksafepack-admin/src/main/resources/templates/business/guanyuwomenlianxi/index.html new file mode 100644 index 0000000..2221e94 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/guanyuwomenlianxi/index.html @@ -0,0 +1,154 @@ + + + + +
            + +
            +
            + 关于我们 + 关注网络安全 提供安全服务 +
            + +
            +
            + 期待与您合作 + 客户至上 真诚服务 +
            +
            +
            +
            +
            + 联系方式 +
            + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + +
            +
            +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            + + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + + + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/business/guanyuwomenyoushi/index.html b/ksafepack-admin/src/main/resources/templates/business/guanyuwomenyoushi/index.html new file mode 100644 index 0000000..29bf68c --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/guanyuwomenyoushi/index.html @@ -0,0 +1,195 @@ + + + + +
            + +
            +
            + 关于我们 + 关注网络安全 提供安全服务 +
            + +
            +
            + 深耕多年 技术精湛 + 您的满意是我们不懈的追求 +
            +
            +
            + + 楼兰网安深耕政务云、私有云安全防护多年,尤其是在政务云领域,通过大量的客户积累发现安全微服务套餐包非常符合政务云服务器的需求。 + +
            +
            + 与其他安全厂商的区别 +
            + + 安全微服务是一种线上安全运维服务,并不是工具类产品;安全微服务不提供通用的、统一的云防护,而是专注于业务逻辑漏洞防护,注重业务逻辑攻击防护。 + +
            +
            +
            + + 量身定制 +
            + + 楼兰网安屏蔽评估、检测、代码审计、加固等环节,将安全服务进行合理分类拆分,客户可按需选择安全服务项目,量身定制自己的安全微服务套餐。 + +
            +
            +
            + + 提前预知 +
            + + 安全微服务团队拥有全球情报网络,通过对全球威胁态势的监测、分析可提前预知风险并进行加固处理,避免客户遭受损失。 + +
            +
            +
            + + 价格优势 +
            + + 安全微服务可帮客户节省一次安全检测/评估/加固几万甚至十几万的费用,节省招聘1名安全运维人员一年20-30万的费用,安全微服务每台服务器每月只需6000-7000元,相当于用极低的价格雇佣了一个专业团队来保证自己的安全。 + +
            +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + +
            +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            + + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + + + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/business/guanyuwomenzhaopin/index.html b/ksafepack-admin/src/main/resources/templates/business/guanyuwomenzhaopin/index.html new file mode 100644 index 0000000..39b605a --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/guanyuwomenzhaopin/index.html @@ -0,0 +1,204 @@ + + + + +
            + +
            +
            + 关于我们 + 关注网络安全 提供安全服务 +
            + +
            +
            + 期待与您合作 + 客户至上 真诚服务 +
            +
            +
            +
            +
            + C/C++资深研发工程师 +
            + + 岗位职责:  +
            +  1、基于Linux操作系统的网络安全产品架构设计和研发; +
            +  2、根据软件需求说明书,进行需求评审和软件设计; +
            +  3、根据软件设计文档,编写高质量的程序,完成单元测试、集成测试和版本提交; +
            +  4、熟悉网络协议和报文分析; +
            +  5、产品核心问题公关,分析和解决产品复杂技术问题;  +
            + 任职资格:  +
            +  1、本科或本科以上学历; +
            +  2、从事过防火墙、路由器、DPI等产品的开发工作优先录用; +
            +  3、精通Linux环境下C/C++网络编程; +
            +  4、精通tcp/ip等网络协议栈的分析和编程;  +
            +  5、有扎实的产品开发和软件工程的基础知识和经验; +
            +  6、有较好的沟通交流能力,能够迅速融入团队。 +
            +
            +
            + Web研发工程师 +
            + + 岗位职责:  +
            +  1、基于Linux操作系统的网络安全产品架构设计和研发; +
            +  2、根据软件需求说明书,进行需求评审和软件设计; +
            +  3、根据软件设计文档,编写高质量的程序,完成单元测试、集成测试和版本提交; +
            +  4、熟悉网络协议和报文分析; +
            +  5、产品核心问题公关,分析和解决产品复杂技术问题;  +
            + 任职资格:  +
            +  1、本科或本科以上学历; +
            +  2、从事过防火墙、路由器、DPI等产品的开发工作优先录用; +
            +  3、精通Linux环境下C/C++网络编程; +
            +  4、精通tcp/ip等网络协议栈的分析和编程;  +
            +  5、有扎实的产品开发和软件工程的基础知识和经验; +
            +  6、有较好的沟通交流能力,能够迅速融入团队。 +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + +
            +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            + + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + + + + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/business/include.html b/ksafepack-admin/src/main/resources/templates/business/include.html new file mode 100644 index 0000000..e482e00 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/include.html @@ -0,0 +1,59 @@ + + + + + + 楼兰安全 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/business/index.html b/ksafepack-admin/src/main/resources/templates/business/index.html new file mode 100644 index 0000000..c150a14 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/index.html @@ -0,0 +1,717 @@ + + + + +
            + + + + + + +
            +
            + + + + +
            +
            + + + +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            + 安全微服务 + 每月2000元即可享受专业、定制化安全防护 +
            + 更多>> +
            +
            +
            + + 我们提供标准套餐,您也可以自由选择项目,我们推荐您选择部分基础防护项目+部分专业防护项目+全部业务防护: +
            +
            +
            + 标准套餐 +
            +
            + 自选套餐 +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            基础防护 操作系统防护巡检+加固300
            中间件防护巡检+加固300
            服务应用防护巡检+加固300
            专业防护 漏洞防护巡检+加固700
            木马防护实时巡检+加固500
            业务逻辑防护实时巡检+加固+合规600
            数据防护 数据库防护巡检+加固400
            数据安全防护数据安全审计/跨境数据合规检查/整改800
            应急处理 应急处理3000
            + + 计:0元/月 +
            + +
            +
            +
            +
            +
            + 独立站安全 +
            + 更多>> +
            +
            +
            +
            +
            +
            + +
            + 我们送您独立站 + + 您购买安全微服务套餐,我们送您独立站且永久免费升级 + +
            +
            + +
            +
            +
            +
            +
            +
            + +
            + 您单独购买独立站 + + 您可以买断独立站,但以后升级需要您另外支付费用 + +
            +
            + +
            +
            +
            +
            + + 如果您有独立站 +
            + 您可以选择安全微服务套餐 +
            +
            + 您可以购买应急处理服务 + +
            +
            +
            + +
            +
            +
            +
            + 标准套餐 +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            基础防护 操作系统防护巡检+加固300
            中间件防护巡检+加固300
            服务应用防护巡检+加固300
            专业防护 漏洞防护巡检+加固700
            木马防护实时巡检+加固500
            业务逻辑防护实时巡检+加固+合规600
            数据防护 数据库防护巡检+加固400
            数据安全防护数据安全审计/跨境数据合规检查/整改800
            应急处理 应急处理3000
            + 优惠后计:1999元/月 +
            + +
            + +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + +
            +
            +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            + + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/business/qita/common.css b/ksafepack-admin/src/main/resources/templates/business/qita/common.css new file mode 100644 index 0000000..551bcdd --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/qita/common.css @@ -0,0 +1,68 @@ +body * { + box-sizing: border-box; + flex-shrink: 0; +} +body { + font-family: PingFangSC-Regular, Roboto, Helvetica Neue, Helvetica, Tahoma, + Arial, PingFang SC-Light, Microsoft YaHei; +} +input { + background-color: transparent; + border: 0; +} +button { + margin: 0; + padding: 0; + border: 1px solid transparent; + outline: none; + background-color: transparent; +} + +button:active { + opacity: 0.6; +} +.flex-col { + display: flex; + flex-direction: column; +} +.flex-row { + display: flex; + flex-direction: row; +} +.justify-start { + display: flex; + justify-content: flex-start; +} +.justify-center { + display: flex; + justify-content: center; +} + +.justify-end { + display: flex; + justify-content: flex-end; +} +.justify-evenly { + display: flex; + justify-content: space-evenly; +} +.justify-around { + display: flex; + justify-content: space-around; +} +.justify-between { + display: flex; + justify-content: space-between; +} +.align-start { + display: flex; + align-items: flex-start; +} +.align-center { + display: flex; + align-items: center; +} +.align-end { + display: flex; + align-items: flex-end; +} diff --git a/ksafepack-admin/src/main/resources/templates/business/qita/flexible.js b/ksafepack-admin/src/main/resources/templates/business/qita/flexible.js new file mode 100644 index 0000000..b817872 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/qita/flexible.js @@ -0,0 +1,10 @@ +(function flexible(window, document) { + function resetFontSize() { + const size = (document.documentElement.clientWidth / 1920) * 37.5; + document.documentElement.style.fontSize = size + 'px'; + } + + // reset root font size on page show or resize + window.addEventListener('pageshow', resetFontSize); + window.addEventListener('resize', resetFontSize); +})(window, document); diff --git a/ksafepack-admin/src/main/resources/templates/business/qita/img/FigmaDDSSlicePNGb1e15bf5d87217556d227e0364bb489e.png b/ksafepack-admin/src/main/resources/templates/business/qita/img/FigmaDDSSlicePNGb1e15bf5d87217556d227e0364bb489e.png new file mode 100644 index 0000000..203d29b Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/qita/img/FigmaDDSSlicePNGb1e15bf5d87217556d227e0364bb489e.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/qita/img/FigmaDDSSlicePNGee7b7639eec5c4c2bd5459cbb800714e.png b/ksafepack-admin/src/main/resources/templates/business/qita/img/FigmaDDSSlicePNGee7b7639eec5c4c2bd5459cbb800714e.png new file mode 100644 index 0000000..5b11956 Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/qita/img/FigmaDDSSlicePNGee7b7639eec5c4c2bd5459cbb800714e.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/qita/img/FigmaDDSSlicePNGf270361600174578121453e22a56f3c4.png b/ksafepack-admin/src/main/resources/templates/business/qita/img/FigmaDDSSlicePNGf270361600174578121453e22a56f3c4.png new file mode 100644 index 0000000..f465b58 Binary files /dev/null and b/ksafepack-admin/src/main/resources/templates/business/qita/img/FigmaDDSSlicePNGf270361600174578121453e22a56f3c4.png differ diff --git a/ksafepack-admin/src/main/resources/templates/business/qita/index.css b/ksafepack-admin/src/main/resources/templates/business/qita/index.css new file mode 100644 index 0000000..156b007 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/qita/index.css @@ -0,0 +1,514 @@ +.page { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 3149px; + height: 2743px; + overflow: hidden; +} + +.text-wrapper_1 { + width: 927px; + height: 40px; + margin: 134px 0 0 197px; +} + +.text_1 { + width: 120px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: right; + white-space: nowrap; + line-height: 30px; +} + +.text_2 { + width: 227px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: right; + white-space: nowrap; + line-height: 30px; +} + +.box_1 { + width: 2637px; + height: 2071px; + margin: 66px 0 432px 221px; +} + +.text-wrapper_2 { + width: 150px; + height: 534px; + margin-top: 2px; +} + +.text_3 { + width: 60px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 30px; + margin-left: 90px; +} + +.text_4 { + width: 90px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 30px; + margin: 35px 0 0 60px; +} + +.text_5 { + width: 120px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 30px; + margin: 46px 0 0 30px; +} + +.text_6 { + width: 120px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 30px; + margin: 46px 0 0 30px; +} + +.text_7 { + width: 120px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 30px; + margin: 46px 0 0 30px; +} + +.text_8 { + width: 90px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 30px; + margin: 46px 0 0 60px; +} + +.text_9 { + width: 150px; + height: 40px; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 30px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 30px; + margin-top: 35px; +} + +.box_2 { + width: 160px; + height: 545px; + margin: 2px 0 0 36px; +} + +.box_3 { + background-color: rgba(21, 170, 125, 1); + width: 160px; + height: 51px; +} + +.box_4 { + background-color: rgba(255, 122, 0, 1); + width: 160px; + height: 51px; + margin-top: 24px; +} + +.box_5 { + background-color: rgba(26, 27, 28, 1); + width: 160px; + height: 51px; + margin-top: 35px; +} + +.box_6 { + background-color: rgba(94, 94, 97, 1); + width: 160px; + height: 51px; + margin-top: 35px; +} + +.box_7 { + background-color: rgba(146, 151, 157, 1); + width: 160px; + height: 51px; + margin-top: 35px; +} + +.box_8 { + background-color: rgba(221, 221, 221, 1); + width: 160px; + height: 51px; + margin-top: 35px; +} + +.box_9 { + background-color: rgba(251, 251, 255, 1); + width: 160px; + height: 51px; + margin-top: 24px; +} + +.box_10 { + border-radius: 5px; + width: 1960px; + height: 2071px; + border: 1px solid rgba(151, 71, 255, 1); + margin-left: 331px; +} + +.box_11 { + width: 1920px; + height: 500px; + background: url(./img/FigmaDDSSlicePNGee7b7639eec5c4c2bd5459cbb800714e.png) + 100% no-repeat; + background-size: 100% 100%; + margin: 20px 0 0 20px; +} + +.text_10 { + width: 693px; + height: 38px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 30px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 45px; + margin: 120px 0 0 390px; +} + +.text_11 { + width: 460px; + height: 30px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 20px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 36px; + margin: 14px 0 0 390px; +} + +.text_12 { + width: 628px; + height: 17px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 15px 0 0 390px; +} + +.text_13 { + width: 488px; + height: 17px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 12px 0 0 390px; +} + +.text_14 { + width: 552px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 12px 0 0 390px; +} + +.text-wrapper_3 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 40px; + width: 180px; + margin: 50px 0 117px 390px; +} + +.text_15 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 12px 0 0 62px; +} + +.box_12 { + width: 1920px; + height: 500px; + background: url(./img/FigmaDDSSlicePNGb1e15bf5d87217556d227e0364bb489e.png) + 100% no-repeat; + background-size: 100% 100%; + margin: 202px 0 0 20px; +} + +.text_16 { + width: 693px; + height: 38px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 30px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 45px; + margin: 120px 0 0 390px; +} + +.text_17 { + width: 460px; + height: 30px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 20px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 36px; + margin: 14px 0 0 390px; +} + +.text_18 { + width: 628px; + height: 17px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 15px 0 0 390px; +} + +.text_19 { + width: 488px; + height: 17px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 12px 0 0 390px; +} + +.text_20 { + width: 552px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 12px 0 0 390px; +} + +.text-wrapper_4 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 40px; + width: 180px; + margin: 50px 0 117px 390px; +} + +.text_21 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 12px 0 0 62px; +} + +.box_13 { + width: 1920px; + height: 500px; + background: url(./img/FigmaDDSSlicePNGf270361600174578121453e22a56f3c4.png) + 100% no-repeat; + background-size: 100% 100%; + margin: 202px 0 147px 18px; +} + +.text_22 { + width: 693px; + height: 38px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 30px; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 45px; + margin: 100px 0 0 390px; +} + +.text_23 { + width: 460px; + height: 30px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 20px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 36px; + margin: 14px 0 0 390px; +} + +.text_24 { + width: 628px; + height: 17px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 15px 0 0 390px; +} + +.text_25 { + width: 488px; + height: 17px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 12px 0 0 390px; +} + +.text_26 { + width: 552px; + height: 18px; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 24px; + margin: 12px 0 0 390px; +} + +.text-wrapper_5 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 40px; + width: 180px; + margin: 50px 0 137px 390px; +} + +.text_27 { + width: 56px; + height: 18px; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 14px; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 14px; + margin: 12px 0 0 62px; +} diff --git a/ksafepack-admin/src/main/resources/templates/business/qita/index.html b/ksafepack-admin/src/main/resources/templates/business/qita/index.html new file mode 100644 index 0000000..8a17d4e --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/qita/index.html @@ -0,0 +1,89 @@ + + + + + + 楼兰安全 + + + + + +
            +
            + 网站配色 + 首页三个banner +
            +
            +
            + 主色 + 辅助色 + 主要文本 + 次级文本 + 三级文本 + 分隔线 + 大面积背景 +
            +
            +
            +
            +
            +
            +
            +
            +
            +
            +
            +
            + 保证小企业马奇诺防线内的最后一公里安全 + 您是不是遇到这样的问题? + + 网站平台风险(由安全漏洞导致的病毒木马植入,造成服务宕机,网页被篡改或用户数据丢失) + + + 云防护下的风险(购买云防护后问题依然出现) + + + 法规风险(由网络安全、数据安全问题受到相关部门通报、处罚) + +
            + 了解详情 +
            +
            +
            + 独立站安全 + 多情景解决方案 总有一款适合您 + + 如果您有独立站(您可以选择安全微服务套餐或购买应急处理服务) + + + 我们送您独立站(您购买安全微服务套餐,我们送您独立站且永久免费升级) + + + 您单独购买独立站(您可以买断独立站,但以后升级需要您另外支付费用) + +
            + 了解详情 +
            +
            +
            + 安全微服务套餐 + 标准套餐+自由选择搭配套餐 + + 基础防护(操作系统防护、中间件防护、数据库防护、服务应用防护) + + + 专业防护(漏洞防护、木马防护、数据安全防护) + + + 业务防护(业务逻辑防护、攻击路径防护)、应急处理 + +
            + 了解详情 +
            +
            +
            +
            +
            + + diff --git a/ksafepack-admin/src/main/resources/templates/business/qita/index.rem.css b/ksafepack-admin/src/main/resources/templates/business/qita/index.rem.css new file mode 100644 index 0000000..a001c74 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/qita/index.rem.css @@ -0,0 +1,518 @@ +html { + font-size: 37.5px; +} + +.page { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 83.974rem; + height: 73.147rem; + overflow: hidden; +} + +.text-wrapper_1 { + width: 24.72rem; + height: 1.067rem; + margin: 3.574rem 0 0 5.254rem; +} + +.text_1 { + width: 3.2rem; + height: 1.067rem; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: right; + white-space: nowrap; + line-height: 0.8rem; +} + +.text_2 { + width: 6.054rem; + height: 1.067rem; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: right; + white-space: nowrap; + line-height: 0.8rem; +} + +.box_1 { + width: 70.32rem; + height: 55.227rem; + margin: 1.76rem 0 11.52rem 5.894rem; +} + +.text-wrapper_2 { + width: 4rem; + height: 14.24rem; + margin-top: 0.054rem; +} + +.text_3 { + width: 1.6rem; + height: 1.067rem; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.8rem; + margin-left: 2.4rem; +} + +.text_4 { + width: 2.4rem; + height: 1.067rem; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.8rem; + margin: 0.934rem 0 0 1.6rem; +} + +.text_5 { + width: 3.2rem; + height: 1.067rem; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.8rem; + margin: 1.227rem 0 0 0.8rem; +} + +.text_6 { + width: 3.2rem; + height: 1.067rem; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.8rem; + margin: 1.227rem 0 0 0.8rem; +} + +.text_7 { + width: 3.2rem; + height: 1.067rem; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.8rem; + margin: 1.227rem 0 0 0.8rem; +} + +.text_8 { + width: 2.4rem; + height: 1.067rem; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.8rem; + margin: 1.227rem 0 0 1.6rem; +} + +.text_9 { + width: 4rem; + height: 1.067rem; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.8rem; + margin-top: 0.934rem; +} + +.box_2 { + width: 4.267rem; + height: 14.534rem; + margin: 0.054rem 0 0 0.96rem; +} + +.box_3 { + background-color: rgba(21, 170, 125, 1); + width: 4.267rem; + height: 1.36rem; +} + +.box_4 { + background-color: rgba(255, 122, 0, 1); + width: 4.267rem; + height: 1.36rem; + margin-top: 0.64rem; +} + +.box_5 { + background-color: rgba(26, 27, 28, 1); + width: 4.267rem; + height: 1.36rem; + margin-top: 0.934rem; +} + +.box_6 { + background-color: rgba(94, 94, 97, 1); + width: 4.267rem; + height: 1.36rem; + margin-top: 0.934rem; +} + +.box_7 { + background-color: rgba(146, 151, 157, 1); + width: 4.267rem; + height: 1.36rem; + margin-top: 0.934rem; +} + +.box_8 { + background-color: rgba(221, 221, 221, 1); + width: 4.267rem; + height: 1.36rem; + margin-top: 0.934rem; +} + +.box_9 { + background-color: rgba(251, 251, 255, 1); + width: 4.267rem; + height: 1.36rem; + margin-top: 0.64rem; +} + +.box_10 { + border-radius: 5px; + width: 52.267rem; + height: 55.227rem; + border: 1px solid rgba(151, 71, 255, 1); + margin-left: 8.827rem; +} + +.box_11 { + width: 51.2rem; + height: 13.334rem; + background: url(./img/FigmaDDSSlicePNGee7b7639eec5c4c2bd5459cbb800714e.png) + 100% no-repeat; + background-size: 100% 100%; + margin: 0.534rem 0 0 0.534rem; +} + +.text_10 { + width: 18.48rem; + height: 1.014rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 1.2rem; + margin: 3.2rem 0 0 10.4rem; +} + +.text_11 { + width: 12.267rem; + height: 0.8rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.533rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.96rem; + margin: 0.374rem 0 0 10.4rem; +} + +.text_12 { + width: 16.747rem; + height: 0.454rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.4rem 0 0 10.4rem; +} + +.text_13 { + width: 13.014rem; + height: 0.454rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.32rem 0 0 10.4rem; +} + +.text_14 { + width: 14.72rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.32rem 0 0 10.4rem; +} + +.text-wrapper_3 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 1.067rem; + width: 4.8rem; + margin: 1.334rem 0 3.12rem 10.4rem; +} + +.text_15 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.32rem 0 0 1.654rem; +} + +.box_12 { + width: 51.2rem; + height: 13.334rem; + background: url(./img/FigmaDDSSlicePNGb1e15bf5d87217556d227e0364bb489e.png) + 100% no-repeat; + background-size: 100% 100%; + margin: 5.387rem 0 0 0.534rem; +} + +.text_16 { + width: 18.48rem; + height: 1.014rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 1.2rem; + margin: 3.2rem 0 0 10.4rem; +} + +.text_17 { + width: 12.267rem; + height: 0.8rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.533rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.96rem; + margin: 0.374rem 0 0 10.4rem; +} + +.text_18 { + width: 16.747rem; + height: 0.454rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.4rem 0 0 10.4rem; +} + +.text_19 { + width: 13.014rem; + height: 0.454rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.32rem 0 0 10.4rem; +} + +.text_20 { + width: 14.72rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.32rem 0 0 10.4rem; +} + +.text-wrapper_4 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 1.067rem; + width: 4.8rem; + margin: 1.334rem 0 3.12rem 10.4rem; +} + +.text_21 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.32rem 0 0 1.654rem; +} + +.box_13 { + width: 51.2rem; + height: 13.334rem; + background: url(./img/FigmaDDSSlicePNGf270361600174578121453e22a56f3c4.png) + 100% no-repeat; + background-size: 100% 100%; + margin: 5.387rem 0 3.92rem 0.48rem; +} + +.text_22 { + width: 18.48rem; + height: 1.014rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.8rem; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 1.2rem; + margin: 2.667rem 0 0 10.4rem; +} + +.text_23 { + width: 12.267rem; + height: 0.8rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.533rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.96rem; + margin: 0.374rem 0 0 10.4rem; +} + +.text_24 { + width: 16.747rem; + height: 0.454rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.4rem 0 0 10.4rem; +} + +.text_25 { + width: 13.014rem; + height: 0.454rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.32rem 0 0 10.4rem; +} + +.text_26 { + width: 14.72rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.64rem; + margin: 0.32rem 0 0 10.4rem; +} + +.text-wrapper_5 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 1.067rem; + width: 4.8rem; + margin: 1.334rem 0 3.654rem 10.4rem; +} + +.text_27 { + width: 1.494rem; + height: 0.48rem; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.373rem; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.374rem; + margin: 0.32rem 0 0 1.654rem; +} diff --git a/ksafepack-admin/src/main/resources/templates/business/qita/index.response.css b/ksafepack-admin/src/main/resources/templates/business/qita/index.response.css new file mode 100644 index 0000000..e8a6555 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/qita/index.response.css @@ -0,0 +1,514 @@ +.page { + background-color: rgba(255, 255, 255, 1); + position: relative; + width: 100vw; + height: 87.11vw; + overflow: hidden; +} + +.text-wrapper_1 { + width: 29.44vw; + height: 1.28vw; + margin: 4.25vw 0 0 6.25vw; +} + +.text_1 { + width: 3.82vw; + height: 1.28vw; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.95vw; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: right; + white-space: nowrap; + line-height: 0.96vw; +} + +.text_2 { + width: 7.21vw; + height: 1.28vw; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.95vw; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: right; + white-space: nowrap; + line-height: 0.96vw; +} + +.box_1 { + width: 83.75vw; + height: 65.77vw; + margin: 2.09vw 0 13.71vw 7.01vw; +} + +.text-wrapper_2 { + width: 4.77vw; + height: 16.96vw; + margin-top: 0.07vw; +} + +.text_3 { + width: 1.91vw; + height: 1.28vw; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.95vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.96vw; + margin-left: 2.86vw; +} + +.text_4 { + width: 2.86vw; + height: 1.28vw; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.95vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.96vw; + margin: 1.11vw 0 0 1.9vw; +} + +.text_5 { + width: 3.82vw; + height: 1.28vw; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.95vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.96vw; + margin: 1.46vw 0 0 0.95vw; +} + +.text_6 { + width: 3.82vw; + height: 1.28vw; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.95vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.96vw; + margin: 1.46vw 0 0 0.95vw; +} + +.text_7 { + width: 3.82vw; + height: 1.28vw; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.95vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.96vw; + margin: 1.46vw 0 0 0.95vw; +} + +.text_8 { + width: 2.86vw; + height: 1.28vw; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.95vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.96vw; + margin: 1.46vw 0 0 1.9vw; +} + +.text_9 { + width: 4.77vw; + height: 1.28vw; + overflow-wrap: break-word; + color: rgba(0, 0, 0, 1); + font-size: 0.95vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: right; + white-space: nowrap; + line-height: 0.96vw; + margin-top: 1.12vw; +} + +.box_2 { + width: 5.09vw; + height: 17.31vw; + margin: 0.06vw 0 0 1.14vw; +} + +.box_3 { + background-color: rgba(21, 170, 125, 1); + width: 5.09vw; + height: 1.62vw; +} + +.box_4 { + background-color: rgba(255, 122, 0, 1); + width: 5.09vw; + height: 1.62vw; + margin-top: 0.77vw; +} + +.box_5 { + background-color: rgba(26, 27, 28, 1); + width: 5.09vw; + height: 1.62vw; + margin-top: 1.12vw; +} + +.box_6 { + background-color: rgba(94, 94, 97, 1); + width: 5.09vw; + height: 1.62vw; + margin-top: 1.12vw; +} + +.box_7 { + background-color: rgba(146, 151, 157, 1); + width: 5.09vw; + height: 1.62vw; + margin-top: 1.12vw; +} + +.box_8 { + background-color: rgba(221, 221, 221, 1); + width: 5.09vw; + height: 1.62vw; + margin-top: 1.12vw; +} + +.box_9 { + background-color: rgba(251, 251, 255, 1); + width: 5.09vw; + height: 1.62vw; + margin-top: 0.77vw; +} + +.box_10 { + border-radius: 5px; + width: 62.25vw; + height: 65.77vw; + border: 1px solid rgba(151, 71, 255, 1); + margin-left: 10.52vw; +} + +.box_11 { + width: 60.98vw; + height: 15.88vw; + background: url(./img/FigmaDDSSlicePNGee7b7639eec5c4c2bd5459cbb800714e.png) + 100% no-repeat; + background-size: 100% 100%; + margin: 0.63vw 0 0 0.63vw; +} + +.text_10 { + width: 22.01vw; + height: 1.21vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.95vw; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 1.43vw; + margin: 3.81vw 0 0 12.38vw; +} + +.text_11 { + width: 14.61vw; + height: 0.96vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.63vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 1.15vw; + margin: 0.44vw 0 0 12.38vw; +} + +.text_12 { + width: 19.95vw; + height: 0.54vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.44vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.77vw; + margin: 0.47vw 0 0 12.38vw; +} + +.text_13 { + width: 15.5vw; + height: 0.54vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.44vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.77vw; + margin: 0.38vw 0 0 12.38vw; +} + +.text_14 { + width: 17.53vw; + height: 0.58vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.44vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.77vw; + margin: 0.38vw 0 0 12.38vw; +} + +.text-wrapper_3 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 1.28vw; + width: 5.72vw; + margin: 1.58vw 0 3.71vw 12.38vw; +} + +.text_15 { + width: 1.78vw; + height: 0.58vw; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.44vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.45vw; + margin: 0.38vw 0 0 1.96vw; +} + +.box_12 { + width: 60.98vw; + height: 15.88vw; + background: url(./img/FigmaDDSSlicePNGb1e15bf5d87217556d227e0364bb489e.png) + 100% no-repeat; + background-size: 100% 100%; + margin: 6.41vw 0 0 0.63vw; +} + +.text_16 { + width: 22.01vw; + height: 1.21vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.95vw; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 1.43vw; + margin: 3.81vw 0 0 12.38vw; +} + +.text_17 { + width: 14.61vw; + height: 0.96vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.63vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 1.15vw; + margin: 0.44vw 0 0 12.38vw; +} + +.text_18 { + width: 19.95vw; + height: 0.54vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.44vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.77vw; + margin: 0.47vw 0 0 12.38vw; +} + +.text_19 { + width: 15.5vw; + height: 0.54vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.44vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.77vw; + margin: 0.38vw 0 0 12.38vw; +} + +.text_20 { + width: 17.53vw; + height: 0.58vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.44vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.77vw; + margin: 0.38vw 0 0 12.38vw; +} + +.text-wrapper_4 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 1.28vw; + width: 5.72vw; + margin: 1.58vw 0 3.71vw 12.38vw; +} + +.text_21 { + width: 1.78vw; + height: 0.58vw; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.44vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.45vw; + margin: 0.38vw 0 0 1.96vw; +} + +.box_13 { + width: 60.98vw; + height: 15.88vw; + background: url(./img/FigmaDDSSlicePNGf270361600174578121453e22a56f3c4.png) + 100% no-repeat; + background-size: 100% 100%; + margin: 6.41vw 0 4.66vw 0.57vw; +} + +.text_22 { + width: 22.01vw; + height: 1.21vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.95vw; + font-family: Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + white-space: nowrap; + line-height: 1.43vw; + margin: 3.17vw 0 0 12.38vw; +} + +.text_23 { + width: 14.61vw; + height: 0.96vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.63vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 1.15vw; + margin: 0.44vw 0 0 12.38vw; +} + +.text_24 { + width: 19.95vw; + height: 0.54vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.44vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.77vw; + margin: 0.47vw 0 0 12.38vw; +} + +.text_25 { + width: 15.5vw; + height: 0.54vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.44vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.77vw; + margin: 0.38vw 0 0 12.38vw; +} + +.text_26 { + width: 17.53vw; + height: 0.58vw; + overflow-wrap: break-word; + color: rgba(26, 27, 28, 1); + font-size: 0.44vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: left; + white-space: nowrap; + line-height: 0.77vw; + margin: 0.38vw 0 0 12.38vw; +} + +.text-wrapper_5 { + background-color: rgba(21, 170, 125, 1); + border-radius: 5px; + height: 1.28vw; + width: 5.72vw; + margin: 1.58vw 0 4.35vw 12.38vw; +} + +.text_27 { + width: 1.78vw; + height: 0.58vw; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 0.44vw; + font-family: Microsoft YaHei-Regular; + font-weight: NaN; + text-align: center; + white-space: nowrap; + line-height: 0.45vw; + margin: 0.38vw 0 0 1.96vw; +} diff --git a/ksafepack-admin/src/main/resources/templates/business/xinwenxiangqing/index.html b/ksafepack-admin/src/main/resources/templates/business/xinwenxiangqing/index.html new file mode 100644 index 0000000..f2f1d16 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/xinwenxiangqing/index.html @@ -0,0 +1,159 @@ + + + + +
            + +
            +
            +
            + [[${news.title}]] + 发布时间:[[${#dates.format(news.createTime,'yyyy-MM-dd')}]] +
            + [[${news.content}]] +
            +
            +
            +
            +
            + + 相关新闻 +
            + +
            + +
            + 北京楼兰网安科技有限公司 + + 地址:北京市东城区桃杨路11号9号楼510室
            +
            +
            +
            +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + +
            +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            + + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + + + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/business/xinwenzhongxin/index.html b/ksafepack-admin/src/main/resources/templates/business/xinwenzhongxin/index.html new file mode 100644 index 0000000..360941d --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/xinwenzhongxin/index.html @@ -0,0 +1,161 @@ + + + + +
            + +
            +
            + 新闻中心 + 法律法规 +
            + +
            + +
            + + + [[${news.title}]] + + + + [[${news.subTitle}]] + +
            + [[${#dates.format(news.createTime,'yyyy-MM-dd')}]] +
            + +
            +
            + < +
            + + + +
            +  > +
            +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + +
            +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            + + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + + + + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/business/xinwenzhongxin2/index.html b/ksafepack-admin/src/main/resources/templates/business/xinwenzhongxin2/index.html new file mode 100644 index 0000000..83ccd22 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/xinwenzhongxin2/index.html @@ -0,0 +1,159 @@ + + + + +
            + +
            +
            + 新闻中心 + 安全微服务 +
            + +
            + +
            + + + [[${news.title}]] + + + + [[${news.subTitle}]] + +
            + [[${#dates.format(news.createTime,'yyyy-MM-dd')}]] +
            + +
            +
            + < +
            + + + +
            +  > +
            +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + +
            +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            + + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + + + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/business/yiyuan5s/index.html b/ksafepack-admin/src/main/resources/templates/business/yiyuan5s/index.html new file mode 100644 index 0000000..7373c09 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/business/yiyuan5s/index.html @@ -0,0 +1,361 @@ + + + + +
            + +
            +
            + “5S”医院 + + 网络安全  数据安全  上线安全  运维安全  安全培训 + +
            +
            +
            +
            +
            + “5S”医院 +
            + + 楼兰网安致力于信息安全、网络安全、数据安全多年,尤其在医院领域,有着大量的客户沉淀。 +
            + 楼兰提出“5S”医院理念,即从网络安全、数据安全、上线安全、运维安全、安全培训五个方面协助医院建立全方位的安全体系。 +
            +
            + +
            +
            +
            + 我们的优势 +
            +
            + 提前预知 + 团队实力 +
            +
            +
            + 安全服务 +
            +
            + 网络安全 +  数据安全 + 上线安全 + 运维安全 + 安全培训 +
            +
            +
            + 医院收益 +
            +
            +
            +
            + +
            + 保证关键业务连续性 + + 通过技术手段及时发现网络安全风险,消除安全隐患,包括发现内部人员的不规范操作行为,发掘系统内部安全漏洞、阻止不法分子继续实施有预谋的网络犯罪行为等,保证关键业务的连续运行,避免出现重大的政治影响或经济损失。 + +
            +
            +
            +
            +
            + +
            + 保证信息、数据安全 + + 安全微服务团队拥有全球情报网络,通过对全球威胁态势的监测、分析可提前预知风险并进行加固处理,避免客户遭受损失。 + +
            +
            +
            +
            +
            + +
            + 推进内部管理安全有序 + + 协助医院建立安全制度,全面监测网络、系统运行情况,通过安全管理规划咨询和人员网络安全意识培训等服务帮助医院发现内部管理问题,提出解决方案,建立有序的内部网络安全管理秩序。 + +
            +
            +
            +
            +
            +
            + 法律依据 +
            +
            +
            +
            + 《网络安全法》 +
            +
            +
            + 《数据安全法》 +
            +
            +
            + 《个人信息保护法》 +
            +
            +
            +
            +
            + 《关键信息基础设施安全保护条例》 +
            +
            +
            + 《网络安全审查办法》 +
            +
            +
            + 《医疗卫生机构网络安全管理办法》 +
            +
            +
            +
            +
            + + 《信息安全技术 健康医疗数据安全指南》 +
            + (GB/T 39725-2020) +
            +
            +
            +
            + + 《信息安全技术 数据安全能力成熟度模型》 +
            + (GB/T 37988-2019) +
            +
            +
            +
            + 联系我们,获得专属方案咨询与报价 +
            + +
            +
            +
            + + + 我们拥有全球情报网络,通过对全球威胁态势的监测、分析及CVE/CNVD/CNNVD等漏洞库的实时跟踪可提前预知风险,协助医院及时处理避免损失。 + +
            +
            + + + 资产核查 +
            + 网络规划 +
            + 技术检测 +
            + 安全通告 +
            +
            +
            + + + 数据合规检测 +
            + 数据安全评估(DSMM) +
            + APP合规检测 +
            +
            +
            + + + 合规检测 +
            + 代码审计 +
            + 部署安全评估 +
            + 安全检测 +
            +
            +
            + + + 安全巡检 +
            + 安全审计 +
            + 安全监测 +
            + 应急处置 +
            +
            +
            + + + 办公安全 +
            + 法律法规 +
            + 攻击手段 +
            + 数据安全 +
            +
            +
            + + + 楼兰网安安全服务团队曾多次参与国家互联网应急中心安全支撑服务,多次参与多省政府、电信、部队等部门安全评估、护网行动,曾主导国家测评中心研究课题基线扫描产品、漏洞扫描产品研发。 + +
            +
            +
            +
            + + + 地址:北京市东城区桃杨路11号9号楼510室 +
            + +
            +
            +
            + + + 北京楼兰网安科技有限公司 版权所有 Copyright © 2017-2023 www.ycsafe.net All rights reserved. +
            + 网站备案/许可证号京ICP备2021035069号-1 +
            +
            +
            +
            +
            + + + + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/common/include.ftl b/ksafepack-admin/src/main/resources/templates/common/include.ftl new file mode 100644 index 0000000..93e992c --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/common/include.ftl @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/common/kelp.ftl b/ksafepack-admin/src/main/resources/templates/common/kelp.ftl new file mode 100644 index 0000000..2f2dd0b --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/common/kelp.ftl @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/common/plugins.ftl b/ksafepack-admin/src/main/resources/templates/common/plugins.ftl new file mode 100644 index 0000000..aa179f0 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/common/plugins.ftl @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/common/spring.ftl b/ksafepack-admin/src/main/resources/templates/common/spring.ftl new file mode 100644 index 0000000..4bd0de2 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/common/spring.ftl @@ -0,0 +1,383 @@ +<#ftl strip_whitespace=true> +<#-- + * spring.ftl + * + * This file consists of a collection of FreeMarker macros aimed at easing + * some of the common requirements of web applications - in particular + * handling of forms. + * + * Spring's FreeMarker support will automatically make this file and therefore + * all macros within it available to any application using Spring's + * FreeMarkerConfigurer. + * + * To take advantage of these macros, the "exposeSpringMacroHelpers" property + * of the FreeMarker class needs to be set to "true". This will expose a + * RequestContext under the name "springMacroRequestContext", as needed by + * the macros in this library. + * + * @author Darren Davison + * @author Juergen Hoeller + * @since 1.1 + --> + +<#-- + * message + * + * Macro to translate a message code into a message. + --> +<#macro message code>${springMacroRequestContext.getMessage(code)} + +<#-- + * messageText + * + * Macro to translate a message code into a message, + * using the given default text if no message found. + --> +<#macro messageText code, text>${springMacroRequestContext.getMessage(code, text)} + +<#-- + * messageArgs + * + * Macro to translate a message code with arguments into a message. + --> +<#macro messageArgs code, args>${springMacroRequestContext.getMessage(code, args)} + +<#-- + * messageArgsText + * + * Macro to translate a message code with arguments into a message, + * using the given default text if no message found. + --> +<#macro messageArgsText code, args, text>${springMacroRequestContext.getMessage(code, args, text)} + +<#-- + * theme + * + * Macro to translate a theme message code into a message. + --> +<#macro theme code>${springMacroRequestContext.getThemeMessage(code)} + +<#-- + * themeText + * + * Macro to translate a theme message code into a message, + * using the given default text if no message found. + --> +<#macro themeText code, text>${springMacroRequestContext.getThemeMessage(code, text)} + +<#-- + * themeArgs + * + * Macro to translate a theme message code with arguments into a message. + --> +<#macro themeArgs code, args>${springMacroRequestContext.getThemeMessage(code, args)} + +<#-- + * themeArgsText + * + * Macro to translate a theme message code with arguments into a message, + * using the given default text if no message found. + --> +<#macro themeArgsText code, args, text>${springMacroRequestContext.getThemeMessage(code, args, text)} + +<#-- + * url + * + * Takes a relative URL and makes it absolute from the server root by + * adding the context root for the web application. + --> +<#macro url relativeUrl>${springMacroRequestContext.getContextUrl(relativeUrl)} + +<#-- + * bind + * + * Exposes a BindStatus object for the given bind path, which can be + * a bean (e.g. "person") to get global errors, or a bean property + * (e.g. "person.name") to get field errors. Can be called multiple times + * within a form to bind to multiple command objects and/or field names. + * + * This macro will participate in the default HTML escape setting for the given + * RequestContext. This can be customized by calling "setDefaultHtmlEscape" + * on the "springMacroRequestContext" context variable, or via the + * "defaultHtmlEscape" context-param in web.xml (same as for the JSP bind tag). + * Also regards a "htmlEscape" variable in the namespace of this library. + * + * Producing no output, the following context variable will be available + * each time this macro is referenced (assuming you import this library in + * your templates with the namespace 'spring'): + * + * spring.status : a BindStatus instance holding the command object name, + * expression, value, and error messages and codes for the path supplied + * + * @param path : the path (string value) of the value required to bind to. + * Spring defaults to a command name of "command" but this can be overridden + * by user config. + --> +<#macro bind path> + <#if htmlEscape?exists> + <#assign status = springMacroRequestContext.getBindStatus(path, htmlEscape)> + <#else> + <#assign status = springMacroRequestContext.getBindStatus(path)> + + <#-- assign a temporary value, forcing a string representation for any + kind of variable. This temp value is only used in this macro lib --> + <#if status.value?exists && status.value?is_boolean> + <#assign stringStatusValue=status.value?string> + <#else> + <#assign stringStatusValue=status.value?default("")> + + + +<#-- + * bindEscaped + * + * Similar to spring:bind, but takes an explicit HTML escape flag rather + * than relying on the default HTML escape setting. + --> +<#macro bindEscaped path, htmlEscape> + <#assign status = springMacroRequestContext.getBindStatus(path, htmlEscape)> + <#-- assign a temporary value, forcing a string representation for any + kind of variable. This temp value is only used in this macro lib --> + <#if status.value?exists && status.value?is_boolean> + <#assign stringStatusValue=status.value?string> + <#else> + <#assign stringStatusValue=status.value?default("")> + + + +<#-- + * formInput + * + * Display a form input field of type 'text' and bind it to an attribute + * of a command or bean. + * + * @param path the name of the field to bind to + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size + --> +<#macro formInput path attributes="" fieldType="text"> + <@bind path/> + ${stringStatusValue}" ${attributes}<@closeTag/> + + +<#-- + * formPasswordInput + * + * Display a form input field of type 'password' and bind it to an attribute + * of a command or bean. No value will ever be displayed. This functionality + * can also be obtained by calling the formInput macro with a 'type' parameter + * of 'password'. + * + * @param path the name of the field to bind to + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size + --> +<#macro formPasswordInput path attributes=""> + <@formInput path, attributes, "password"/> + + +<#-- + * formHiddenInput + * + * Generate a form input field of type 'hidden' and bind it to an attribute + * of a command or bean. This functionality can also be obtained by calling + * the formInput macro with a 'type' parameter of 'hidden'. + * + * @param path the name of the field to bind to + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size + --> +<#macro formHiddenInput path attributes=""> + <@formInput path, attributes, "hidden"/> + + +<#-- + * formTextarea + * + * Display a text area and bind it to an attribute of a command or bean. + * + * @param path the name of the field to bind to + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size + --> +<#macro formTextarea path attributes=""> + <@bind path/> + + + +<#-- + * formSingleSelect + * + * Show a selectbox (dropdown) input element allowing a single value to be chosen + * from a list of options. + * + * @param path the name of the field to bind to + * @param options a map (value=label) of all the available options + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +--> +<#macro formSingleSelect path options attributes=""> + <@bind path/> + + + +<#-- + * formMultiSelect + * + * Show a listbox of options allowing the user to make 0 or more choices from + * the list of options. + * + * @param path the name of the field to bind to + * @param options a map (value=label) of all the available options + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +--> +<#macro formMultiSelect path options attributes=""> + <@bind path/> + + + +<#-- + * formRadioButtons + * + * Show radio buttons. + * + * @param path the name of the field to bind to + * @param options a map (value=label) of all the available options + * @param separator the html tag or other character list that should be used to + * separate each option. Typically ' ' or '
            ' + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +--> +<#macro formRadioButtons path options separator attributes=""> + <@bind path/> + <#list options?keys as value> + <#assign id="${status.expression}${value_index}"> + checked="checked" ${attributes}<@closeTag/> + ${separator} + + + +<#-- + * formCheckboxes + * + * Show checkboxes. + * + * @param path the name of the field to bind to + * @param options a map (value=label) of all the available options + * @param separator the html tag or other character list that should be used to + * separate each option. Typically ' ' or '
            ' + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +--> +<#macro formCheckboxes path options separator attributes=""> + <@bind path/> + <#list options?keys as value> + <#assign id="${status.expression}${value_index}"> + <#assign isSelected = contains(status.value?default([""]), value)> + checked="checked" ${attributes}<@closeTag/> + ${separator} + + + + +<#-- + * formCheckbox + * + * Show a single checkbox. + * + * @param path the name of the field to bind to + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +--> +<#macro formCheckbox path attributes=""> + <@bind path /> + <#assign id="${status.expression}"> + <#assign isSelected = status.value?? && status.value?string=="true"> + + checked="checked" ${attributes}/> + + +<#-- + * showErrors + * + * Show validation errors for the currently bound field, with + * optional style attributes. + * + * @param separator the html tag or other character list that should be used to + * separate each option. Typically '
            '. + * @param classOrStyle either the name of a CSS class element (which is defined in + * the template or an external CSS file) or an inline style. If the value passed in here + * contains a colon (:) then a 'style=' attribute will be used, else a 'class=' attribute + * will be used. +--> +<#macro showErrors separator classOrStyle=""> + <#list status.errorMessages as error> + <#if classOrStyle == ""> + ${error} + <#else> + <#if classOrStyle?index_of(":") == -1><#assign attr="class"><#else><#assign attr="style"> + ${error} + + <#if error_has_next>${separator} + + + +<#-- + * checkSelected + * + * Check a value in a list to see if it is the currently selected value. + * If so, add the 'selected="selected"' text to the output. + * Handles values of numeric and string types. + * This function is used internally but can be accessed by user code if required. + * + * @param value the current value in a list iteration +--> +<#macro checkSelected value> + <#if stringStatusValue?is_number && stringStatusValue == value?number>selected="selected" + <#if stringStatusValue?is_string && stringStatusValue == value>selected="selected" + + +<#-- + * contains + * + * Macro to return true if the list contains the scalar, false if not. + * Surprisingly not a FreeMarker builtin. + * This function is used internally but can be accessed by user code if required. + * + * @param list the list to search for the item + * @param item the item to search for in the list + * @return true if item is found in the list, false otherwise +--> +<#function contains list item> + <#list list as nextInList> + <#if nextInList == item><#return true> + + <#return false> + + +<#-- + * closeTag + * + * Simple macro to close an HTML tag that has no body with '>' or '/>', + * depending on the value of a 'xhtmlCompliant' variable in the namespace + * of this library. +--> +<#macro closeTag> + <#if xhtmlCompliant?exists && xhtmlCompliant>/><#else>> + diff --git a/ksafepack-admin/src/main/resources/templates/crm/account.ftl b/ksafepack-admin/src/main/resources/templates/crm/account.ftl new file mode 100644 index 0000000..75356ae --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/account.ftl @@ -0,0 +1,219 @@ + + + + + + + + + 账号管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + +
            +
              +
            +
            + + +
            + + + + + +
            + + + + + + + + + + +
            + + + + + + + +
            + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/crm/contract4all.ftl b/ksafepack-admin/src/main/resources/templates/crm/contract4all.ftl new file mode 100644 index 0000000..26207dc --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/contract4all.ftl @@ -0,0 +1,203 @@ + + + + + + + + + 合同管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + + + + + +
            + + + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/crm/customer4all.ftl b/ksafepack-admin/src/main/resources/templates/crm/customer4all.ftl new file mode 100644 index 0000000..f8c3a2c --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/customer4all.ftl @@ -0,0 +1,200 @@ + + + + + + + + + 客户管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + + + + + +
            + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/crm/customer4novisit.ftl b/ksafepack-admin/src/main/resources/templates/crm/customer4novisit.ftl new file mode 100644 index 0000000..4cff508 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/customer4novisit.ftl @@ -0,0 +1,187 @@ + + + + + + + + + 未拜访客户 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + + +
          • + + + +
            + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/crm/customervisit.ftl b/ksafepack-admin/src/main/resources/templates/crm/customervisit.ftl new file mode 100644 index 0000000..65221d2 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/customervisit.ftl @@ -0,0 +1,208 @@ + + + + + + + + + 客户拜访记录 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + + + + + +
            + + + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/crm/department.ftl b/ksafepack-admin/src/main/resources/templates/crm/department.ftl new file mode 100644 index 0000000..1399280 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/department.ftl @@ -0,0 +1,171 @@ + + + + + + + + + 部门管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + +
            +
              +
            +
            + + +
            + + + + + +
            + + + + + + + + + + + + + +
            + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/crm/district.ftl b/ksafepack-admin/src/main/resources/templates/crm/district.ftl new file mode 100644 index 0000000..4285fc9 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/district.ftl @@ -0,0 +1,179 @@ + + + + + + + + + 区划管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + +
            +
              +
            +
            + + +
            + + + + + +
            + + + + + + + + + + + + +
            + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/crm/enterprise.ftl b/ksafepack-admin/src/main/resources/templates/crm/enterprise.ftl new file mode 100644 index 0000000..9eabfcc --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/enterprise.ftl @@ -0,0 +1,202 @@ + + + + + + + + + 企业管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + +
            +
              +
            +
            + + +
            + + + + + +
            + + + + + + + + + + + + + + + +
            + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/crm/index.ftl b/ksafepack-admin/src/main/resources/templates/crm/index.ftl new file mode 100644 index 0000000..863fd0d --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/index.ftl @@ -0,0 +1,174 @@ + + + + + kelp + + + + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + + + + +
            +
            +
            + + + +
            + + +
            +
            + + + +
            +
            + + +
            +
            +
            + +
            +
              +
            • +
            +
            +
            + + +
            +
            + +
            +
            + + +
            +
            +
            + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/crm/login.ftl b/ksafepack-admin/src/main/resources/templates/crm/login.ftl new file mode 100644 index 0000000..20a4ede --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/login.ftl @@ -0,0 +1,109 @@ + + + + + + 登录 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + + + + + + + +
            +
            +
            +
            安全微服务管理平台
            +
            +
            +
            + + + +
            +
            + +
            +
            + + + +
            +
            + © 2021 - 楼兰网安 | KELP版权所有 +
            +
            + + + +
            +
            + 欢迎登陆 - 安全微服务管理平台 +
            +
            +
            +
            +
            + + +
            +
            +
            +
            + + +
            +
            +
            +
            +
            +
            + + +
            +
            +
            +
            + +
            +
            +
            +
            +
            + +
            +
            +
            +
            + + + diff --git a/ksafepack-admin/src/main/resources/templates/crm/maccount.ftl b/ksafepack-admin/src/main/resources/templates/crm/maccount.ftl new file mode 100644 index 0000000..39876ce --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/maccount.ftl @@ -0,0 +1,219 @@ + + + + + + + + + 账号管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + +
            +
              +
            +
            + + +
            + + + + + +
            + + + + + + + + + + +
            + + + + + + + +
            + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/crm/password.ftl b/ksafepack-admin/src/main/resources/templates/crm/password.ftl new file mode 100644 index 0000000..7dc81bc --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/password.ftl @@ -0,0 +1,56 @@ + + + + + 修改我的密码 + + + + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + +
            +
            +
            +
            +
            修改密码
            +
            + +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            6到16个字符
            +
            +
            + +
            + +
            +
            +
            +
            + +
            +
            +
            + +
            +
            +
            +
            +
            + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/crm/self_info.ftl b/ksafepack-admin/src/main/resources/templates/crm/self_info.ftl new file mode 100644 index 0000000..6af646c --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/crm/self_info.ftl @@ -0,0 +1,115 @@ + + + + + 设置我的资料 + + + + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + +
            + +
            + +
            + 基本信息 +
            + +
            + +
            + +
            + +
            +
            + +
            + +
            + +
            +
            + +
            + +
            + +
            +
            + +
            + +
            + 其他信息 +
            + +
            +
            + +
            + +
            +
            + +
            + +
            + +
            +
            + +
            + +
            + +
            +
            + +
            + +
            + +
            +
            + +
            + +
            + +
            + +
            +
            + +
            +
            +
            + +
            + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/error.ftl b/ksafepack-admin/src/main/resources/templates/error.ftl new file mode 100644 index 0000000..4bf6c83 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/error.ftl @@ -0,0 +1,12 @@ + + + + + + +错误 + + + ${msg!'出错啦,嘿嘿!'} + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/ip/index.ftl b/ksafepack-admin/src/main/resources/templates/ip/index.ftl new file mode 100644 index 0000000..5936d34 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/ip/index.ftl @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + 安全微服务 + + +
            +
            + +

            楼兰网安

            +
            +
            + +

            保证小企业马奇诺防线内的最后一公里安全

            +
            +
            + 每月2000元即可享受专业、定制化安全防护 +
            +
            +
            + {{question.title}} +
            +
            + + +
            + + +
            +
            +

            {{item.title}}

            +

            + {{item.content}} +

            +
            +
            +
            +
            +
            + {{sort.title}} +
            + + + + + + + + + + + + + + + +
            类别项目
            {{item.sort}}
            {{project}}
            +
            + +
            +
            + {{combo.title}} +
            +
            + {{combo.con}} +
            +
            +
            +

            {{item.title}}

            +
              +
            • + {{items.text}} +
            • +
            +

            {{item.price}}

            +
            +
            +
            +
            +
            + 留下您的联系方式 +
            +
            +
            +

            *您的称呼

            + +
            +
            +

            *联系电话

            + +
            +
            +

            *公司名称

            + +
            +
            +
            +
            + +
            +
            + 提交 +
            +
            + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/plat/account.ftl b/ksafepack-admin/src/main/resources/templates/plat/account.ftl new file mode 100644 index 0000000..99caf49 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/plat/account.ftl @@ -0,0 +1,193 @@ + + + + + + + + + 账号管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + + + +
            + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/plat/dict.ftl b/ksafepack-admin/src/main/resources/templates/plat/dict.ftl new file mode 100644 index 0000000..e06e6df --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/plat/dict.ftl @@ -0,0 +1,148 @@ + + + + + + + + + 公共字典 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + + + +
            + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/plat/erole.ftl b/ksafepack-admin/src/main/resources/templates/plat/erole.ftl new file mode 100644 index 0000000..4bb9f98 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/plat/erole.ftl @@ -0,0 +1,149 @@ + + + + + + + + + 企业角色管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + + + +
            + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/plat/function.ftl b/ksafepack-admin/src/main/resources/templates/plat/function.ftl new file mode 100644 index 0000000..b2015fc --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/plat/function.ftl @@ -0,0 +1,152 @@ + + + + + + + + + 功能管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + + + +
            + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/plat/index.ftl b/ksafepack-admin/src/main/resources/templates/plat/index.ftl new file mode 100644 index 0000000..ebbe3e9 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/plat/index.ftl @@ -0,0 +1,145 @@ + + + + + kelp + + + + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + + + + +
            +
            + + + +
            +
            + + + +
            +
            + + +
            +
            +
            + +
            +
              +
            • +
            +
            +
            + + +
            +
            + +
            +
            + + +
            +
            +
            + + + + + + diff --git a/ksafepack-admin/src/main/resources/templates/plat/login.ftl b/ksafepack-admin/src/main/resources/templates/plat/login.ftl new file mode 100644 index 0000000..2984447 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/plat/login.ftl @@ -0,0 +1,109 @@ + + + + + + 登录 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + + + + + + + +
            +
            +
            +
            安全微服务管理平台
            +
            +
            +
            + + + +
            +
            + +
            +
            + + + +
            +
            + © 2021 - 楼兰网安 | KELP版权所有 +
            +
            + + + +
            +
            + 欢迎登陆 - 安全微服务管理平台 +
            +
            +
            +
            +
            + + +
            +
            +
            +
            + + +
            +
            +
            +
            +
            +
            + + +
            +
            +
            +
            + +
            +
            +
            +
            +
            + +
            +
            +
            +
            + + + diff --git a/ksafepack-admin/src/main/resources/templates/plat/menu.ftl b/ksafepack-admin/src/main/resources/templates/plat/menu.ftl new file mode 100644 index 0000000..3bd0253 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/plat/menu.ftl @@ -0,0 +1,154 @@ + + + + + + + + + 菜单管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + +
            + +
            + + +
            + + + + + +
            + + + + + + + + + + + + + +
            + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/plat/module.ftl b/ksafepack-admin/src/main/resources/templates/plat/module.ftl new file mode 100644 index 0000000..a4e7c2b --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/plat/module.ftl @@ -0,0 +1,122 @@ + + + + + + + + + 模块管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + + + +
            + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/plat/password.ftl b/ksafepack-admin/src/main/resources/templates/plat/password.ftl new file mode 100644 index 0000000..a5a5adc --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/plat/password.ftl @@ -0,0 +1,64 @@ + + + + + 修改我的密码 + + + + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + +
            +
            +
            +
            +
            修改密码
            +
            + +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            6到16个字符
            +
            +
            + +
            + +
            +
            +
            +
            + +
            +
            +
            + +
            +
            +
            +
            +
            + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/plat/role.ftl b/ksafepack-admin/src/main/resources/templates/plat/role.ftl new file mode 100644 index 0000000..4c7d21b --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/plat/role.ftl @@ -0,0 +1,149 @@ + + + + + + + + + 角色管理 + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + + + + + + +
            + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/plat/self_info.ftl b/ksafepack-admin/src/main/resources/templates/plat/self_info.ftl new file mode 100644 index 0000000..74f0610 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/plat/self_info.ftl @@ -0,0 +1,108 @@ + + + + + 设置我的资料 + + + + <#include "/common/include.ftl"/> + <#include "/common/plugins.ftl"/> + <#include "/common/kelp.ftl"/> + + + + +
            + +
            + +
            + 基本信息 +
            + +
            + +
            + +
            + +
            +
            + +
            + +
            + +
            +
            + +
            + +
            + +
            +
            + +
            + +
            + 其他信息 +
            + +
            +
            + +
            + +
            +
            + +
            + +
            + +
            +
            + +
            + +
            + +
            +
            + +
            + +
            + +
            + +
            +
            + +
            +
            +
            + +
            + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/template/base.ftl b/ksafepack-admin/src/main/resources/templates/template/base.ftl new file mode 100644 index 0000000..06699a3 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/template/base.ftl @@ -0,0 +1,31 @@ +var basePath = "${base}"; + +//全局变量 +var system_config = +{ + base: "${base}" +}; + +//左填充0 +function padLeft(s, n) { + var len = s.toString().length; + while(len < n) { + s = "0" + s; + len++; + } + return s; +} + +//左填充0 +function padRight(s, n) { + var len = s.toString().length; + while(len < n) { + s = s + "0"; + len++; + } + return s; +} + +$().ready( function() { + +}); \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/template/dict_js.ftl b/ksafepack-admin/src/main/resources/templates/template/dict_js.ftl new file mode 100644 index 0000000..e69de29 diff --git a/ksafepack-admin/src/main/resources/templates/template/error_page.ftl b/ksafepack-admin/src/main/resources/templates/template/error_page.ftl new file mode 100644 index 0000000..63d46c5 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/template/error_page.ftl @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/templates/template/regex_js.ftl b/ksafepack-admin/src/main/resources/templates/template/regex_js.ftl new file mode 100644 index 0000000..b732653 --- /dev/null +++ b/ksafepack-admin/src/main/resources/templates/template/regex_js.ftl @@ -0,0 +1,3 @@ +var regexEnum = {}; + +regexEnum["number"] = /^\+?[1-9][0-9]*$/; \ No newline at end of file diff --git a/ksafepack-admin/src/main/resources/urlrewrite.xml b/ksafepack-admin/src/main/resources/urlrewrite.xml new file mode 100644 index 0000000..8d7897a --- /dev/null +++ b/ksafepack-admin/src/main/resources/urlrewrite.xml @@ -0,0 +1,209 @@ + + + + + + + ip index + /html/ip/index.html + /api/customer/index + + + + + captcha + /api/captcha.html + /captcha/captchaImage + + + + + register + /api/register.html + /api/m/n/register + + + + + login + /api/login.html + /api/m/n/login + + + + + logout + /api/logout.html + /api/m/logout + + + + + password + /api/password.html + /api/m/password + + + + + list noitce 4 tourist + /api/noitce/list.html + /api/m/n/es/listNotice + + + + + list issue 4 tourist + /api/issue/list4tourist.html + /api/m/n/es/list4Tourist + + + + + list issue 4 member + /api/issue/list4member.html + /api/m/n/es/list4Member + + + + + get Issue + /api/issue/get.html + /api/m/n/es/getIssue + + + + + list Issue + /api/issue/list4mine.html + /api/m/es/issue/list4Mine + + + + + list Issue + /api/issue/list4favorite.html + /api/m/es/issue/listFavorite + + + + + list Issue + /api/issue/list4reply.html + /api/m/es/issue/listReply + + + + + add Issue + /api/issue/add.html + /api/m/es/issue/add + + + + + update Issue + /api/issue/update.html + /api/m/es/issue/update + + + + + get Issue + /api/issue/get4member.html + /api/m/es/issue/get + + + + + delete Issue + /api/issue/delete.html + /api/m/es/issue/delete + + + + + do favorite Issue + /api/issue/favorite.html + /api/m/es/issue/doFavorite + + + + + un favorite Issue + /api/issue/unfavorite.html + /api/m/es/issue/unFavorite + + + + + list issue reply + /api/issue/reply/list.html + /api/m/n/es/listReply + + + + + list issue reply + /api/issue/reply/list4up.html + /api/m/es/reply/listReply4Up + + + + + list issue reply + /api/issue/reply/list4member.html + /api/m/es/reply/listReply4Member + + + + + list issue reply + /api/issue/reply/list4memberup.html + /api/m/es/reply/listReply4MemberUp + + + + + add issue reply + /api/issue/reply/add.html + /api/m/es/reply/add + + + + + update issue reply + /api/issue/reply/update.html + /api/m/es/reply/update + + + + + get issue reply + /api/issue/reply/get.html + /api/m/es/reply/get + + + + + delete issue reply + /api/issue/reply/delete.html + /api/m/es/reply/delete + + + + + up issue reply + /api/issue/reply/up.html + /api/m/es/reply/doUp + + + + + un up issue reply + /api/issue/reply/unup.html + /api/m/es/reply/unUp + + + \ No newline at end of file diff --git a/ksafepack-admin/src/test/java/com/kelp/TTest.java b/ksafepack-admin/src/test/java/com/kelp/TTest.java new file mode 100644 index 0000000..f03a0aa --- /dev/null +++ b/ksafepack-admin/src/test/java/com/kelp/TTest.java @@ -0,0 +1,12 @@ +package com.kelp; + +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; + +public class TTest { + public static void main(String[] args) { + String telephone = "17733877260"; + String encrypt = AESUtil.encrypt(telephone, KeyConstant.TELEPHONE); + System.out.println(encrypt); + } +} diff --git a/ksafepack-common/pom.xml b/ksafepack-common/pom.xml new file mode 100644 index 0000000..48fd4c4 --- /dev/null +++ b/ksafepack-common/pom.xml @@ -0,0 +1,120 @@ + + + + com.kelp + ksafepack + 1.0.1 + + 4.0.0 + + ksafepack-common + + + common通用工具 + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + com.github.ulisesbocchio + jasypt-spring-boot-starter + + + + + org.springframework.boot + spring-boot-starter-freemarker + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + + javax.validation + validation-api + + + + + org.apache.commons + commons-lang3 + + + + + commons-net + commons-net + 3.6 + + + + + javax.servlet + javax.servlet-api + + + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + + + com.auth0 + java-jwt + 3.8.0 + + + + + org.freemarker + freemarker + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + + commons-io + commons-io + + + + com.alibaba + fastjson + + + + + com.aliyun + aliyun-java-sdk-core + 4.0.6 + + + + + com.aliyun + aliyun-java-sdk-dysmsapi + 1.1.0 + + + + + \ No newline at end of file diff --git a/ksafepack-common/src/main/java/com/kelp/common/annotation/DataSource.java b/ksafepack-common/src/main/java/com/kelp/common/annotation/DataSource.java new file mode 100644 index 0000000..95ad9d2 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/annotation/DataSource.java @@ -0,0 +1,25 @@ +package com.kelp.common.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import com.kelp.common.enums.DataSourceType; + +/** + * 自定义多数据源切换注解 + * + * @author kelp + */ +@Target({ ElementType.METHOD, ElementType.TYPE }) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Inherited +public @interface DataSource { + /** + * 切换数据源名称 + */ + public DataSourceType value() default DataSourceType.MASTER; +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/base/RichFreeMarkerView.java b/ksafepack-common/src/main/java/com/kelp/common/base/RichFreeMarkerView.java new file mode 100644 index 0000000..fe29156 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/base/RichFreeMarkerView.java @@ -0,0 +1,22 @@ +package com.kelp.common.base; + +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.web.servlet.view.freemarker.FreeMarkerView; + +public class RichFreeMarkerView extends FreeMarkerView { + + @Override + protected void exposeHelpers(Map model, HttpServletRequest request) + throws Exception { + + model.put("contextPath", request.getContextPath()); + model.put("base", request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath()); + //model.put("base", "//" + request.getRemoteHost() + request.getContextPath()); + + super.exposeHelpers(model, request); + } + +} \ No newline at end of file diff --git a/ksafepack-common/src/main/java/com/kelp/common/config/AliSMSBean.java b/ksafepack-common/src/main/java/com/kelp/common/config/AliSMSBean.java new file mode 100644 index 0000000..e46a90a --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/config/AliSMSBean.java @@ -0,0 +1,93 @@ +package com.kelp.common.config; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.IAcsClient; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; +import com.aliyuncs.http.MethodType; +import com.aliyuncs.profile.DefaultProfile; +import com.aliyuncs.profile.IClientProfile; + +@Component +public class AliSMSBean { + + @Value("${sms.ali.accessKeyId}") + private String accessKeyId; + + @Value("${sms.ali.accessKeySecret}") + private String accessKeySecret; + + @Value("${sms.ali.signName}") + private String signName; + + @Value("${sms.ali.product}") + private String product; + + @Value("${sms.ali.domain}") + private String domain; + + @Value("${sms.ali.region}") + private String region; + + @Value("${sms.ali.connect.timeout}") + private String connectTimeout; + + @Value("${sms.ali.read.timeout}") + private String readTimeout; + + @Value("${sms.ali.template.code}") + private String templateCode; + + private static Logger log = LoggerFactory.getLogger(AliSMSBean.class); + + public SendSmsResponse send(String telephone,String rawData) { + + // 设置超时时间-可自行调整 + System.setProperty("sun.net.client.defaultConnectTimeout", connectTimeout); + System.setProperty("sun.net.client.defaultReadTimeout", readTimeout); + + // 初始化ascClient,暂时不支持多region(请勿修改) + IClientProfile profile = DefaultProfile.getProfile(region, accessKeyId, accessKeySecret); + try { + DefaultProfile.addEndpoint(region, region, product, domain); + IAcsClient acsClient = new DefaultAcsClient(profile); + // 组装请求对象 + SendSmsRequest request = new SendSmsRequest(); + // 使用post提交 + request.setMethod(MethodType.POST); + // 必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为国际区号+号码,如“85200000000” + request.setPhoneNumbers(telephone); + + // 必填:短信签名-可在短信控制台中找到 + request.setSignName(new String(signName.getBytes("ISO-8859-1"),"utf-8")); + + // 必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版 + request.setTemplateCode(templateCode); + // 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 + // 友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败 + request.setTemplateParam("{\"rawData\":\"" + rawData + "\"}"); + + // 可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段) + // request.setSmsUpExtendCode("90997"); + // 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 + // request.setOutId("yourOutId"); + // 请求失败这里会抛ClientException异常 + SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); + + if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) { + return sendSmsResponse; + } + log.error("短信发送失败,错误码为:" + sendSmsResponse.getCode()); + return null; + } catch (Exception e) { + log.error(e.getMessage()); + return null; + } + + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/config/FtpBean.java b/ksafepack-common/src/main/java/com/kelp/common/config/FtpBean.java new file mode 100644 index 0000000..c90ce15 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/config/FtpBean.java @@ -0,0 +1,138 @@ +package com.kelp.common.config; + +import java.io.IOException; +import java.io.InputStream; + +import org.apache.commons.net.ftp.FTP; +import org.apache.commons.net.ftp.FTPClient; +import org.apache.commons.net.ftp.FTPReply; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Component +public class FtpBean { + + private static Logger log = LoggerFactory.getLogger(FtpBean.class); + + /** + * ftp服务器地址 + */ + @Value("${ftp.server}") + private String hostname; + + /** + * ftp服务器端口 + */ + @Value("${ftp.port}") + private int port; + + /** + * ftp登录账号 + */ + @Value("${ftp.userName}") + private String username; + + /** + * ftp登录密码 + */ + @Value("${ftp.userPassword}") + private String password; + + /** + * ftp保存目录 + */ + @Value("${ftp.basePath}") + private String basePath; + + /** + * 图片的http地址 + */ + @Value("${ftp.baseUrl}") + private String baseUrl; + + /** + * 初始化ftp服务器 + */ + private FTPClient getFtpClient() { + FTPClient ftpClient = new FTPClient(); + ftpClient.setControlEncoding("utf-8"); + + try { + log.info("connecting to ftp server: " + hostname + ":" + port); + // 连接ftp服务器 + ftpClient.connect(hostname, port); + // 登录ftp服务器 + ftpClient.login(username, password); + // 是否成功登录服务器 + if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { + log.error("connect to ftp server: " + hostname + ":" + port + " failed."); + return null; + } + + // 开启服务器对UTF-8的支持 + FTPReply.isPositiveCompletion(ftpClient.sendCommand("OPTS UTF8", "ON")); + + log.info("connect to ftp server: " + hostname + ":" + port + " successful."); + } catch (Exception e) { + log.error(e.getMessage(), e); + return null; + } + return ftpClient; + } + + /** + * 上传文件 + * + * @param targetDir ftp服务保存地址 + * @param fileName 上传到ftp的文件名 + * @param inputStream 输入文件流 + * @return 上传路径 + */ + public String uploadFileToFtp(String targetDir, String fileName, InputStream inputStream) { + FTPClient ftpClient = getFtpClient(); + try { + + if(ftpClient == null || !ftpClient.isConnected()) { + log.error("connected to FTP server failed."); + return null; + } + + String serverPath = String.format("%s%s%s", basePath, "/", targetDir); + + log.info("starting transform file : " + fileName + " to ftp server"); + // 设置上传文件类型为二进制 + ftpClient.setFileType(FTP.BINARY_FILE_TYPE); + ftpClient.makeDirectory(serverPath); + ftpClient.changeWorkingDirectory(serverPath); + // 设置被动模式 + ftpClient.enterLocalPassiveMode(); + ftpClient.storeFile(fileName, inputStream); + inputStream.close(); + ftpClient.logout(); + log.info(fileName + " transform to FTP server successful."); + + return baseUrl + targetDir + "/" + fileName; + + } catch (Exception e) { + log.error(fileName + " transform to FTP server failed."); + log.error(e.getMessage(), e); + + return null; + } finally { + try { + ftpClient.disconnect(); + } catch (IOException e) { + log.error(e.getMessage()); + } + + try { + inputStream.close(); + } catch (IOException e) { + log.error(e.getMessage()); + } + } + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/config/RedisBean.java b/ksafepack-common/src/main/java/com/kelp/common/config/RedisBean.java new file mode 100644 index 0000000..a5e821f --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/config/RedisBean.java @@ -0,0 +1,139 @@ +package com.kelp.common.config; + +import java.util.Date; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +import com.kelp.common.utils.DateUtils; + +/** + * 操作 hash 的基本操作 + * + * @author kelp + */ +@Component +public class RedisBean { + + public static final Logger log = LoggerFactory.getLogger(RedisBean.class); + + @Autowired + private RedisTemplate redisTemplate; + + /** + * 存放从现在起几分钟内有效的东西,如验证码 + * + * @param key + * @param field + * @param value + * @param minute + */ + public void hset(String key, String field, String value, int minute) { + if (key == null || "".equals(key)) { + return; + } + redisTemplate.opsForHash().put(key, field, value); + redisTemplate.expireAt(key, DateUtils.addMinute(new Date(), minute)); + } + + /** + * 向Hash中添加值 + * + * @param key 可以对应数据库中的表名 + * @param field 可以对应数据库表中的唯一索引 + * @param value 存入redis中的值 + */ + public void hset(String key, String field, String value) { + if (key == null || "".equals(key)) { + return; + } + redisTemplate.opsForHash().put(key, field, value); + } + + /** + * 从redis中取出值 + * + * @param key + * @param field + * @return + */ + public String hget(String key, String field) { + if (key == null || "".equals(key)) { + return null; + } + Object o = redisTemplate.opsForHash().get(key, field); + if (null != o) { + return (String) redisTemplate.opsForHash().get(key, field); + } + return null; + } + + /** + * 判断 是否存在 key 以及 hash key + * + * @param key + * @param field + * @return + */ + public boolean hexists(String key, String field) { + if (key == null || "".equals(key)) { + return false; + } + return redisTemplate.opsForHash().hasKey(key, field); + } + + /** + * 查询 key中对应多少条数据 + * + * @param key + * @return + */ + public long hsize(String key) { + if (key == null || "".equals(key)) { + return 0L; + } + return redisTemplate.opsForHash().size(key); + } + + /** + * 删除 + * + * @param key + * @param field + */ + public void hdel(String key, String field) { + if (key == null || "".equals(key)) { + return; + } + redisTemplate.opsForHash().delete(key, field); + } + + public boolean lock(String key, String value) { + if (redisTemplate.opsForValue().setIfAbsent(key, value)) { + return true; + } + String currentValue = redisTemplate.opsForValue().get(key); + // 如果锁过期 + if (!StringUtils.isEmpty(currentValue) && Long.parseLong(currentValue) < System.currentTimeMillis()) { + String oldValue = redisTemplate.opsForValue().getAndSet(key, value); + // 是否已被别人抢占 + return StringUtils.isNotEmpty(oldValue) && oldValue.equals(currentValue); + } + return false; + } + + public void unlock(String key, String value) { + try { + String currentValue = redisTemplate.opsForValue().get(key); + if (!StringUtils.isEmpty(currentValue) && currentValue.equals(value)) { + redisTemplate.opsForValue().getOperations().delete(key); + } + } catch (Exception e) { + log.error("redis unlock error : " + e.getMessage()); + } + } +} \ No newline at end of file diff --git a/ksafepack-common/src/main/java/com/kelp/common/config/SignBean.java b/ksafepack-common/src/main/java/com/kelp/common/config/SignBean.java new file mode 100644 index 0000000..b901ce2 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/config/SignBean.java @@ -0,0 +1,157 @@ +package com.kelp.common.config; + +import java.io.UnsupportedEncodingException; +import java.util.Base64; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import com.kelp.common.utils.DateUtils; +import com.kelp.common.utils.security.Md5Utils; + +/** + * 外部接口调用 签名工具类 + */ +@Component +public class SignBean { + private static Logger log = LoggerFactory.getLogger(SignBean.class); + + @Value("${api.appid}") + private String appid; + + @Value("${api.secret}") + private String secret; + + /** + * API签名生成 + * @param params,params中必须含有timestamp + * @return + */ + public String sign(Map params) { + + // 1、将所有业务请求参数按字母先后顺序排序. + // 2、参数名称和参数值链接成一个字符串A + StringBuilder stringA = new StringBuilder(); + Set keySet = new TreeSet<>(params.keySet()); + + for (String key : keySet) { + String value = params.get(key); + if (value == null) { + continue; + } + stringA.append(key); + stringA.append("="); + stringA.append(params.get(key)); + stringA.append("&"); + } + // trim the last "&" + stringA.setLength(stringA.length() - 1); + + String sign = null; + // 3、在字符串A的首尾加上apiid secret组成一个新字符串B + StringBuilder stringB = new StringBuilder(); + stringB.append(appid).append(stringA).append(secret); + + try { + + // 4、对字符串进行MD5散列运算得到签名sign,然后再进行Base64编码 + byte[] bytes = Base64.getEncoder().encode(Md5Utils.hash(stringB.toString()).getBytes("UTF-8")); + + sign = new String(bytes, "UTF-8"); + + } catch (Exception e) { + log.error("sign failed : ", e); + } + + return sign; + + } + + /** + * 检查API签名是否合法 + * (1)客户端请求里面会携带签名(客户端利用apiSecret和给定的算法产生签名) + * (2)服务器端会使用存在服务器端的apiSecret和相同的算法产生一个签名。 + * (3)服务器端对这两个签名进行校验,得出签名的有效性。如果有效,则正常走业务流程,否则拒绝请求。 + * @param params,params中必须含有sign/timestamp + * @return + */ + public boolean checkSign(Map params) { + + String sign = null; + String timestamp = null; + + StringBuilder stringA = new StringBuilder(); + Set keySet = new TreeSet<>(params.keySet()); + + for (String key : keySet) { + + String value = params.get(key); + if (value == null) { + continue; + } + + if(key.equals("sign")) { + sign = value; + continue; + } + + if(key.equals("timestamp")) { + timestamp = value; + //5分钟内签名有效 + Long time = (System.currentTimeMillis() - Long.valueOf(timestamp))/6000; + if(time < -5 || time > 5 ) { + return false; + } + } + + stringA.append(key); + stringA.append("="); + stringA.append(value); + stringA.append("&"); + } + // trim the last "&" + stringA.setLength(stringA.length() - 1); + + // Base64解码客户端的签名 + try { + sign = new String(Base64.getDecoder().decode(sign), "UTF-8"); + } catch (UnsupportedEncodingException e) { + log.error("validate sign failed : " + e); + } + + String sign_ = null; + StringBuilder stringB = new StringBuilder(); + stringB.append(appid).append(stringA).append(secret); + + // 对新字符串B进行MD5散列运算生成服务器端的API签名,将客户端的API签名进行Base64解码,然后开始验证签名。 + // 如果服务器端生成的API签名与客户端请求的API签名是一致的,则请求是可信的,否则就是不可信的。 + sign_ = Md5Utils.hash(stringB.toString()); + + return sign != null && sign_ != null && sign.equals(sign_); + + } + + public static void main(String[] args) { + Map params = new HashMap(); + params.put("startTime", DateUtils.date2string(new Date())); + params.put("endTime", DateUtils.date2string(DateUtils.addMinute(new Date(), -5))); + params.put("timestamp", String.valueOf(System.currentTimeMillis())); + + SignBean signBean = new SignBean(); + String sign = signBean.sign(params); + System.out.println("sign === " + sign); + + params.put("sign", sign); + + System.out.println("validate === " + signBean.checkSign(params)); + + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/config/datasource/DynamicDataSourceContextHolder.java b/ksafepack-common/src/main/java/com/kelp/common/config/datasource/DynamicDataSourceContextHolder.java new file mode 100644 index 0000000..de94445 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/config/datasource/DynamicDataSourceContextHolder.java @@ -0,0 +1,41 @@ +package com.kelp.common.config.datasource; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * 数据源切换处理 + * + * @author kelp + */ +public class DynamicDataSourceContextHolder { + public static final Logger log = LoggerFactory.getLogger(DynamicDataSourceContextHolder.class); + + /** + * 使用ThreadLocal维护变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本, + * 所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 + */ + private static final ThreadLocal CONTEXT_HOLDER = new ThreadLocal<>(); + + /** + * 设置数据源的变量 + */ + public static void setDataSourceType(String dsType) { + log.info("切换到{}数据源", dsType); + CONTEXT_HOLDER.set(dsType); + } + + /** + * 获得数据源的变量 + */ + public static String getDataSourceType() { + return CONTEXT_HOLDER.get(); + } + + /** + * 清空数据源变量 + */ + public static void clearDataSourceType() { + CONTEXT_HOLDER.remove(); + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/constant/CommonConstants.java b/ksafepack-common/src/main/java/com/kelp/common/constant/CommonConstants.java new file mode 100644 index 0000000..3d86131 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/constant/CommonConstants.java @@ -0,0 +1,21 @@ +package com.kelp.common.constant; + +/** + * 常量信息 + * + * @author kelp + */ +public class CommonConstants { + + /** + * 用户名长度限制 + */ + public static final int USERNAME_MIN_LENGTH = 6; + public static final int USERNAME_MAX_LENGTH = 20; + + /** + * 密码长度限制 + */ + public static final int PASSWORD_MIN_LENGTH = 6; + public static final int PASSWORD_MAX_LENGTH = 20; +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/constant/GeneratorConstants.java b/ksafepack-common/src/main/java/com/kelp/common/constant/GeneratorConstants.java new file mode 100644 index 0000000..4578106 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/constant/GeneratorConstants.java @@ -0,0 +1,93 @@ +package com.kelp.common.constant; + +/** + * 代码生成通用常量 + * + * @author kelp + */ +public class GeneratorConstants { + /** 单表(增删改查) */ + public static final String TPL_CRUD = "crud"; + + /** 树表(增删改查) */ + public static final String TPL_TREE = "tree"; + + /** 树编码字段 */ + public static final String TREE_CODE = "treeCode"; + + /** 树父编码字段 */ + public static final String TREE_PARENT_CODE = "treeParentCode"; + + /** 树名称字段 */ + public static final String TREE_NAME = "treeName"; + + /** 数据库字符串类型 */ + public static final String[] COLUMNTYPE_STR = { "char", "varchar", "narchar", "varchar2", "tinytext", "text", + "mediumtext", "longtext" }; + + /** 数据库时间类型 */ + public static final String[] COLUMNTYPE_TIME = { "datetime", "time", "date", "timestamp" }; + + /** 数据库数字类型 */ + public static final String[] COLUMNTYPE_NUMBER = { "tinyint", "smallint", "mediumint", "int", "number", "integer", + "bigint", "float", "float", "double", "decimal" }; + + /** 页面不需要编辑字段 */ + public static final String[] COLUMNNAME_NOT_EDIT = { "id", "create_by", "create_time", "del_flag" }; + + /** 页面不需要显示的列表字段 */ + public static final String[] COLUMNNAME_NOT_LIST = { "id", "create_by", "create_time", "del_flag", "update_by", + "update_time" }; + + /** 页面不需要查询字段 */ + public static final String[] COLUMNNAME_NOT_QUERY = { "id", "create_by", "create_time", "del_flag", "update_by", + "update_time", "remark" }; + + /** Entity基类字段 */ + public static final String[] BASE_ENTITY = { "createBy", "createTime", "updateBy", "updateTime", "remark" }; + + /** Tree基类字段 */ + public static final String[] TREE_ENTITY = { "parentName", "parentId", "orderNum", "ancestors" }; + + /** 文本框 */ + public static final String HTML_INPUT = "input"; + + /** 文本域 */ + public static final String HTML_TEXTAREA = "textarea"; + + /** 下拉框 */ + public static final String HTML_SELECT = "select"; + + /** 单选框 */ + public static final String HTML_RADIO = "radio"; + + /** 复选框 */ + public static final String HTML_CHECKBOX = "checkbox"; + + /** 日期控件 */ + public static final String HTML_DATETIME = "datetime"; + + /** 字符串类型 */ + public static final String TYPE_STRING = "String"; + + /** 整型 */ + public static final String TYPE_INTEGER = "Integer"; + + /** 长整型 */ + public static final String TYPE_LONG = "Long"; + + /** 浮点型 */ + public static final String TYPE_DOUBLE = "Double"; + + /** 高精度计算类型 */ + public static final String TYPE_BIGDECIMAL = "BigDecimal"; + + /** 时间类型 */ + public static final String TYPE_DATE = "Date"; + + /** 模糊查询 */ + public static final String QUERY_LIKE = "LIKE"; + + /** 需要 */ + public static final String REQUIRE = "1"; +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/constant/KeyConstant.java b/ksafepack-common/src/main/java/com/kelp/common/constant/KeyConstant.java new file mode 100644 index 0000000..3f6b900 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/constant/KeyConstant.java @@ -0,0 +1,15 @@ +package com.kelp.common.constant; + +public class KeyConstant { + + public static final String KEY = "无意苦争春"; + public static final String NAME = "千里杀一人"; + public static final String REALNAME = "人闲桂花落"; + public static final String TELEPHONE = "二月春风似剪刀"; + public static final String SELFID = "何似在人间"; + + public static final String JWTKEY = "一任群芳妒"; + + public static final String ZERO_KEY = "aPU4Be0sgGQ5Wmh2wwGxoQ=="; + public static final String ONE_KEY = "SfRmdiUdQkPpmCfyRcqYUw=="; +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/constant/RegexConstants.java b/ksafepack-common/src/main/java/com/kelp/common/constant/RegexConstants.java new file mode 100644 index 0000000..6d274c1 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/constant/RegexConstants.java @@ -0,0 +1,29 @@ +package com.kelp.common.constant; + +/** + * 正则常量 + * + * @author kelp + */ +public class RegexConstants { + + /** + * 身份证号格式限制 + */ + public static final String ID_PATTERN = "(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)"; + + /** + * 手机号码格式限制 + */ + public static final String MOBILE_PHONE_NUMBER_PATTERN = "^[1][3,4,5,6,7,8,9][0-9]{9}$"; + + /** + * 邮箱格式限制 + */ + public static final String EMAIL_PATTERN = "^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?"; + + /** + * 必须包含数字和字母,如密码 + */ + public static final String LETTER_DIGIT_PATTERN = "^[a-z0-9A-Z]+$"; +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/enums/DataSourceType.java b/ksafepack-common/src/main/java/com/kelp/common/enums/DataSourceType.java new file mode 100644 index 0000000..7d66a5a --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/enums/DataSourceType.java @@ -0,0 +1,18 @@ +package com.kelp.common.enums; + +/** + * 数据源 + * + * @author kelp + */ +public enum DataSourceType { + /** + * 主库 + */ + MASTER, + + /** + * 从库 + */ + SLAVE +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/exception/BaseException.java b/ksafepack-common/src/main/java/com/kelp/common/exception/BaseException.java new file mode 100644 index 0000000..6065e5f --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/exception/BaseException.java @@ -0,0 +1,30 @@ +package com.kelp.common.exception; + +public class BaseException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + /** + * 错误码 + */ + private String code; + + /** + * 错误消息 + */ + private String msg; + + public BaseException(String code, String msg) { + this.code = code; + this.msg = msg; + } + + public String getCode() { + return code; + } + + @Override + public String getMessage() { + return msg; + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/message/Message.java b/ksafepack-common/src/main/java/com/kelp/common/message/Message.java new file mode 100644 index 0000000..f5cbb48 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/message/Message.java @@ -0,0 +1,156 @@ +package com.kelp.common.message; + +import java.io.Serializable; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializerFeature; + +/** + * 封装消费者调用接口返回信息
            + * 如果不够用自己添加 Created by ADon on 2016/7/22. + */ +public class Message implements Serializable { + + private static final long serialVersionUID = 403590390097622048L; + + // 是否成功 + private boolean success; + + // 消息 返回MessageCode中的说明 + private String msg; + + // 消息状态码 返回MessageCode中的状态码 + private String code; + + // 数据 + private T data; + + public Message setResultData(T data) { + this.data = data; + return this; + } + + public Message SetMessageCode(MessageCode messageCode) { + this.msg = messageCode.getMsg(); + this.code = messageCode.getCode(); + return this; + } + + /** + * 生产成功信息 + * + * @return Message + */ + @SuppressWarnings("rawtypes") + public static Message fireSuccess() { + Message message = new Message(); + message.setSuccess(true); + message.setCode(MessageCode.SUCCESS.getCode()); + message.setMsg(MessageCode.SUCCESS.getMsg()); + return message; + } + + /** + * 生产失败信息 + * + * @return + */ + @SuppressWarnings("rawtypes") + public static Message fireFail() { + Message message = new Message(); + message.setSuccess(false); + message.setCode(MessageCode.FAIL.getCode()); + message.setMsg(MessageCode.FAIL.getMsg()); + message.setData(null); + return message; + } + /** + * 生产404信息 + * + * @return + */ + @SuppressWarnings("rawtypes") + public static Message fireFail404() { + Message message = new Message(); + message.setSuccess(false); + message.setCode(MessageCode.FAIL404.getCode()); + message.setMsg(MessageCode.FAIL404.getMsg()); + message.setData(null); + return message; + } + public boolean getSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public static String jsonSuccess() { + return JSON.toJSONString(fireSuccess()); + } + + public static String jsonFail() { + return JSON.toJSONString(fireFail()); + } + + public static String json(Message mess) { + return JSON.toJSONStringWithDateFormat(mess, "yyyy-MM-dd hh:mm:ss", SerializerFeature.WriteMapNullValue, + SerializerFeature.WriteNonStringValueAsString); + } + + public static String jsonData(Message mess) { + return JSON.toJSONStringWithDateFormat(mess.getData(), "yyyy-MM-dd hh:mm:ss", + SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNonStringValueAsString); + } + + public static String jsonObj(Object obj) { + return JSON.toJSONStringWithDateFormat(obj, "yyyy-MM-dd hh:mm:ss", SerializerFeature.WriteMapNullValue, + SerializerFeature.WriteNonStringValueAsString); + } + + public static String jsonObjDate(Object obj) { + return JSON.toJSONStringWithDateFormat(obj, "yyyy-MM-dd", SerializerFeature.WriteMapNullValue, + SerializerFeature.WriteNonStringValueAsString); + } + + @SuppressWarnings("unchecked") + public static String jsonMessage(Object obj) { + Message mess = fireSuccess(); + mess.setData(obj); + return json(mess); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static Message fail(Message mess, String code, String msg) { + mess.setSuccess(false); + mess.setCode(code); + mess.setMsg(msg); + mess.setData(null); + return mess; + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/message/MessageCode.java b/ksafepack-common/src/main/java/com/kelp/common/message/MessageCode.java new file mode 100644 index 0000000..c1b1b98 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/message/MessageCode.java @@ -0,0 +1,61 @@ +package com.kelp.common.message; + +/** + * 封装消费者调用接口返回信息状态码
            + * 不够用请自己添加,注意命名规范 + * Created by ADon on 2016/7/22. + */ +public enum MessageCode { + //成功状态码 + SUCCESS("0", "成功"), + FAIL("002", "失败"), + FAIL404("404", "没有权限"), + ENTITY_ID_IS_EMPTY("002001", "传入的ID为空"), + UserLoginInfo_VeCode_NOT_EXIST("010","用户不存在或密码错误"), + UserLoginInfo_Password_NOT_EQUAL("011","用户不存在或密码错误"), + UserLoginInfo_VeCode_IS_Login("012","登录成功"), + UserLoginInfo_VeCode_NOT_Login("013","登录失败"), + UserData_VeCode_NOT_EXIST("010","用户数据不存在"), + UserData_VeCode_NOT_ERROR("011","发生错误"), + UserData_Level_NOT_AUTH("010","尚未进行实名认证"), + UserData_Pwd_NOT_LEGAL("010","密码只能为6位数字"), + UserAccount_VeCode_NOT_ERROR("010","发生错误"), + Manager_Delete_Error1("020","对不起,剩余管理员不能少于1位"), + Manager_Delete_Error2("021","对不起,不能删除自己"), + Group_Delete_Error("021","对不起,不能删除自己的角色"), + + Dxx_Verification_Code_Error("101","验证码不正确"), + Dxx_Verification_Code_Null("102","获取验证码失败,请重新获取。"), + Dxx_Invitation_Code_Error("103","邀请码不正确"), + Dxx_Invitation_Code_Null("104","获取邀请码失败,请重新获取。"), + Dxx_Mycard_isNUll("105","未开卡"), + Dxx_MyClub_isNUll("106","没有俱乐部信息。"), + Dxx_MyGym_isNUll("107","没有场馆信息。"), + Dxx_MyShop_isNUll("108","没有商城信息。"), + Dxx_Entity_Empty("201","实体对象为空"); + + /* + 命名规范说明: + 实体名_属性_是否_错误信息 + TASKINFO_ID_IS_EMPTY("010", "任务ID为空") + TASKINFO_ID_NOT_EXIST("011", "任务ID不存在") + TASKINFO_ID_IS_EXIST("012", "任务ID已存在") + */ + + private String code; + private String msg; + + MessageCode(String code, String msg) { + this.code = code; + this.msg = msg; + } + + public String getCode() { + return this.code; + } + + public String getMsg() { + return this.msg; + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/AESUtil.java b/ksafepack-common/src/main/java/com/kelp/common/utils/AESUtil.java new file mode 100644 index 0000000..0e46a9b --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/AESUtil.java @@ -0,0 +1,123 @@ +package com.kelp.common.utils; + +import java.security.SecureRandom; +import java.util.Base64; + +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.kelp.common.constant.KeyConstant; + + +public class AESUtil { + private static Logger log = LoggerFactory.getLogger(AESUtil.class); + + private static final String KEY_ALGORITHM = "AES"; + private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";// 默认的加密算法 + + /** + * AES 加密操作 + * + * @param content 待加密内容 + * @param password 加密密码 + * @return 返回Base64转码后的加密数据 + */ + public static String encrypt(String content, String password) { + try { + Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);// 创建密码器 + + byte[] byteContent = content.getBytes("utf-8"); + + cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(password));// 初始化为加密模式的密码器 + + byte[] result = cipher.doFinal(byteContent);// 加密 + + return Base64.getEncoder().encodeToString(result);// 通过Base64转码返回 + } catch (Exception ex) { + log.error("AESUtil: encrypt failed - " + ex.getMessage()); + } + return null; + } + + /** + * AES 解密操作 + * + * @param content + * @param password + * @return + */ + public static String decrypt(String content, String password) { + + try { + // 实例化 + Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); + + // 使用密钥初始化,设置为解密模式 + cipher.init(Cipher.DECRYPT_MODE, getSecretKey(password)); + + // 执行操作 + byte[] result = cipher.doFinal(Base64.getDecoder().decode(content)); + + return new String(result, "utf-8"); + } catch (Exception ex) { + log.error("AESUtil: decrypt failed - " + ex.getMessage()); + } + return null; + } + + /** + * 生成加密秘钥 + * + * @return + */ + private static SecretKeySpec getSecretKey(final String password) { + // 返回生成指定算法密钥生成器的 KeyGenerator 对象 + KeyGenerator kg = null; + + try { + kg = KeyGenerator.getInstance(KEY_ALGORITHM); + SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); + random.setSeed(password.getBytes("utf-8")); + // AES 要求密钥长度为 128 + kg.init(128, random); + + // 生成一个密钥 + SecretKey secretKey = kg.generateKey(); + + return new SecretKeySpec(secretKey.getEncoded(), KEY_ALGORITHM);// 转换为AES专用密钥 + } catch (Exception ex) { + log.error("AESUtil: getSecretKey failed - " + ex.getMessage()); + } + return null; + } + + /** + * 测试Main方法 + * + * @param args + */ + public static void main(String[] args) { + + String sss = AESUtil.encrypt("17733877260", KeyConstant.TELEPHONE); + System.err.println("加密后数据:" + sss); + sss = AESUtil.decrypt(sss, KeyConstant.TELEPHONE); + System.err.println("解密后数据:" + sss); + + sss = AESUtil.encrypt("张晓", KeyConstant.NAME); + System.err.println("加密后数据:" + sss); + sss = AESUtil.decrypt(sss, KeyConstant.NAME); + System.err.println("解密后数据:" + sss); + + sss = AESUtil.encrypt("张晓", KeyConstant.REALNAME); + System.err.println("加密后数据:" + sss); + sss = AESUtil.decrypt(sss, KeyConstant.REALNAME); + System.err.println("解密后数据:" + sss); + + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/Arith.java b/ksafepack-common/src/main/java/com/kelp/common/utils/Arith.java new file mode 100644 index 0000000..99f0e91 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/Arith.java @@ -0,0 +1,105 @@ +package com.kelp.common.utils; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +/** + * 精确的浮点数运算 + * + * @author kelp + */ +public class Arith { + + /** 默认除法运算精度 */ + private static final int DEF_DIV_SCALE = 10; + + /** 这个类不能实例化 */ + private Arith() { + } + + /** + * 提供精确的加法运算。 + * + * @param v1 被加数 + * @param v2 加数 + * @return 两个参数的和 + */ + public static double add(double v1, double v2) { + BigDecimal b1 = new BigDecimal(Double.toString(v1)); + BigDecimal b2 = new BigDecimal(Double.toString(v2)); + return b1.add(b2).doubleValue(); + } + + /** + * 提供精确的减法运算。 + * + * @param v1 被减数 + * @param v2 减数 + * @return 两个参数的差 + */ + public static double sub(double v1, double v2) { + BigDecimal b1 = new BigDecimal(Double.toString(v1)); + BigDecimal b2 = new BigDecimal(Double.toString(v2)); + return b1.subtract(b2).doubleValue(); + } + + /** + * 提供精确的乘法运算。 + * + * @param v1 被乘数 + * @param v2 乘数 + * @return 两个参数的积 + */ + public static double mul(double v1, double v2) { + BigDecimal b1 = new BigDecimal(Double.toString(v1)); + BigDecimal b2 = new BigDecimal(Double.toString(v2)); + return b1.multiply(b2).doubleValue(); + } + + /** + * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后10位,以后的数字四舍五入。 + * + * @param v1 被除数 + * @param v2 除数 + * @return 两个参数的商 + */ + public static double div(double v1, double v2) { + return div(v1, v2, DEF_DIV_SCALE); + } + + /** + * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。 + * + * @param v1 被除数 + * @param v2 除数 + * @param scale 表示表示需要精确到小数点以后几位。 + * @return 两个参数的商 + */ + public static double div(double v1, double v2, int scale) { + if (scale < 0) { + throw new IllegalArgumentException("The scale must be a positive integer or zero"); + } + BigDecimal b1 = new BigDecimal(Double.toString(v1)); + BigDecimal b2 = new BigDecimal(Double.toString(v2)); + if (b1.compareTo(BigDecimal.ZERO) == 0) { + return BigDecimal.ZERO.doubleValue(); + } + return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue(); + } + + /** + * 提供精确的小数位四舍五入处理。 + * + * @param v 需要四舍五入的数字 + * @param scale 小数点后保留几位 + * @return 四舍五入后的结果 + */ + public static double round(double v, int scale) { + if (scale < 0) { + throw new IllegalArgumentException("The scale must be a positive integer or zero"); + } + BigDecimal b = new BigDecimal(Double.toString(v)); + BigDecimal one = new BigDecimal("1"); + return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue(); + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/AuthenticationBean.java b/ksafepack-common/src/main/java/com/kelp/common/utils/AuthenticationBean.java new file mode 100644 index 0000000..4f971a0 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/AuthenticationBean.java @@ -0,0 +1,30 @@ +package com.kelp.common.utils; + +import java.util.HashMap; +import java.util.Map; + +public class AuthenticationBean { + + /** + * role/ + */ + //plat + private static HashMap> prfMap = new HashMap>(); + //enterprise + private static HashMap> erfMap = new HashMap>(); + + public static HashMap> getPRfMap() { + return prfMap; + } + public static void setPRfMap(HashMap> prfMap) { + AuthenticationBean.prfMap = prfMap; + } + + public static HashMap> getERfMap() { + return erfMap; + } + public static void setERfMap(HashMap> erfMap) { + AuthenticationBean.erfMap = erfMap; + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/Converter4Number.java b/ksafepack-common/src/main/java/com/kelp/common/utils/Converter4Number.java new file mode 100644 index 0000000..924f1d7 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/Converter4Number.java @@ -0,0 +1,22 @@ +package com.kelp.common.utils; + +public class Converter4Number { + + public static Integer string2integer(String number) { + try { + return Integer.valueOf(number); + }catch(Exception e) { + return null; + } + } + + /** + * 测试Main方法 + * + * @param args + */ + public static void main(String[] args) { + + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/CookieUtil.java b/ksafepack-common/src/main/java/com/kelp/common/utils/CookieUtil.java new file mode 100644 index 0000000..6cd215d --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/CookieUtil.java @@ -0,0 +1,85 @@ +package com.kelp.common.utils; + +import java.net.URLDecoder; +import java.net.URLEncoder; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class CookieUtil { + + private static Logger log = LoggerFactory.getLogger(CookieUtil.class); + + public static String getCookie(HttpServletRequest request, String name){ + Cookie[] cookies = request.getCookies();//根据请求数据,找到cookie数组 + + try { + if (null != cookies) { + for (Cookie cookie : cookies) { + if (cookie.getName().equals(name)) { + return URLDecoder.decode(cookie.getValue(), "UTF-8"); + } + } + } + } catch (Exception ex) { + log.error(ex.getMessage()); + } + + return null; + } + + public static void addCookie(HttpServletResponse response, String name, + String value) { + try { + Cookie cookie = new Cookie(name, URLEncoder.encode(value, "utf-8")); + + cookie.setMaxAge(3600); + cookie.setPath("/"); + + response.addCookie(cookie); + } catch (Exception ex) { + log.error(ex.getMessage()); + } + } + + public static void editCookie(HttpServletRequest request, + HttpServletResponse response, String name, String nvalue) { + Cookie[] cookies = request.getCookies(); + if (null != cookies) { + for (Cookie cookie : cookies) { + if (cookie.getName().equals(name)) { + try { + cookie.setValue(URLEncoder.encode(nvalue, "utf-8")); + cookie.setPath("/"); + cookie.setMaxAge(3600); + response.addCookie(cookie); + } catch (Exception ex) { + log.error(ex.getMessage()); + } + break; + } + } + } + } + + // 删除cookie + public static void delCookie(HttpServletRequest request, + HttpServletResponse response, String name) { + Cookie[] cookies = request.getCookies(); + if (null != cookies) { + for (Cookie cookie : cookies) { + if (cookie.getName().equals(name)) { + cookie.setValue(null); + cookie.setMaxAge(0); + cookie.setPath("/"); + response.addCookie(cookie); + break; + } + } + } + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/DateUtils.java b/ksafepack-common/src/main/java/com/kelp/common/utils/DateUtils.java new file mode 100644 index 0000000..d30a629 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/DateUtils.java @@ -0,0 +1,315 @@ +package com.kelp.common.utils; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +import org.apache.commons.lang3.time.DateFormatUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class DateUtils extends org.apache.commons.lang3.time.DateUtils { + + private static Logger log = LoggerFactory.getLogger(DateUtils.class); + + private static final String DATE_FORMAT_DEFAULT = "yyyy-MM-dd HH:mm:ss"; + private static final String DATE_FORMAT_MINUTE = "yyyy-MM-dd HH:mm"; + private static final String DATE_FORMAT_DAY_DEFAULT = "yyyy-MM-dd"; + private static final String DATE_FORMAT_MONTH = "yyyy-MM"; + private static final String DATE_FORMAT_DAY_YYYYMMDD = "yyyyMMdd"; + private static final String DATE_FORMAT_DAY_YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; + + private static String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", + "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", + "yyyy.MM.dd HH:mm", "yyyy.MM" }; + + public static Date addMonth(Date date, int monty) { + if (date == null) + return null; + GregorianCalendar calendar = new GregorianCalendar(); + calendar.setTime(date); + calendar.add(GregorianCalendar.MONTH, monty); + date = calendar.getTime(); + return date; + } + + public static Date addDay(Date date, int day) { + if (date == null) + return null; + GregorianCalendar calendar = new GregorianCalendar(); + calendar.setTime(date); + calendar.add(GregorianCalendar.DATE, day); + date = calendar.getTime(); + return date; + } + + public static Date addHour(Date date, int hour) { + if (date == null) { + return null; + } + GregorianCalendar calendar = new GregorianCalendar(); + calendar.setTime(date); + calendar.add(GregorianCalendar.HOUR, hour); + date = calendar.getTime(); + return date; + } + + public static Date addMinute(Date date, int minute) { + if (date == null) { + return null; + } + GregorianCalendar calendar = new GregorianCalendar(); + calendar.setTime(date); + calendar.add(GregorianCalendar.MINUTE, minute); + date = calendar.getTime(); + return date; + } + + public static Date addSecond(Date date, int second) { + if (date == null) { + return null; + } + GregorianCalendar calendar = new GregorianCalendar(); + calendar.setTime(date); + calendar.add(GregorianCalendar.SECOND, second); + date = calendar.getTime(); + return date; + } + + public static Date string2date(String s) { + if (s == null || s.trim().length() == 0) { + return null; + } + try { + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_DEFAULT); + return sdf.parse(s); + } catch (ParseException e) { + log.error(e.getMessage()); + return null; + } + } + + public static String date2string(Date d, String format_) { + SimpleDateFormat format = new SimpleDateFormat(format_); + String s = format.format(d); + return s; + } + + public static String date2string(Date d) { + SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT_DEFAULT); + String s = format.format(d); + return s; + } + + public static String date2Day(Date d) { + SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT_DAY_DEFAULT); + String s = format.format(d); + return s; + } + + public static String date2MothFristDay(Date d) { + SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT_MONTH); + String s = format.format(d); + return s + "-01"; + } + + public static Date string2MothDate(String s) { + if (s == null || s.trim().length() == 0) { + return null; + } + try { + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_MONTH); + return sdf.parse(s); + } catch (ParseException e) { + log.error(e.getMessage()); + return null; + } + } + + public static String date2YYYYMMDD(Date d) { + SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT_DAY_YYYYMMDD); + String s = format.format(d); + return s; + } + + public static String date2YYYYMMDDHHMMSS(Date date) { + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_DAY_YYYYMMDDHHMMSS); + return sdf.format(date); + } + + public static Date string2day(String s) { + if (s == null || s.trim().length() == 0) { + return null; + } + try { + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_DAY_DEFAULT); + return sdf.parse(s); + } catch (ParseException e) { + log.error(e.getMessage()); + return null; + } + } + + public static String day2string(Date d) { + SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT_DAY_DEFAULT); + String s = format.format(d); + return s; + } + + public static Date long2date(Long l) { + return new Date(l); + } + + /** + * 两个日期的天数差 + * + * @param date1 + * @param date2 + * @return + */ + public static int dayDValue(Date date1, Date date2) { + Calendar cal = Calendar.getInstance(); + cal.setTime(date1); + long time1 = cal.getTimeInMillis(); + cal.setTime(date2); + long time2 = cal.getTimeInMillis(); + long between_days = (time2 - time1) / (1000 * 3600 * 24); + + return Integer.parseInt(String.valueOf(between_days)); + } + + public static long timeDValue(Date date1, Date date2) { + Calendar cal = Calendar.getInstance(); + cal.setTime(date1); + long time1 = cal.getTimeInMillis(); + cal.setTime(date2); + long time2 = cal.getTimeInMillis(); + return (time2 - time1) / 1000; + } + + /** + * 日期相减,得到时分秒 + * + * @param d1 + * @param d2 + * @return + */ + public static String dateSub2Time(Date d1, Date d2) { + long s = (d1.getTime() - d2.getTime()) / 1000; + + long hour = s % (24 * 3600) / 3600; + long minute = s % 3600 / 60; + long second = s % 60; + + return String.format("%02d", hour) + ":" + String.format("%02d", minute) + ":" + String.format("%02d", second); + } + + public static String dateSubDate(Date d1, Date d2) { + long s = (d1.getTime() - d2.getTime()) / 1000; + + long day = s / (3600 * 24); + long hour = s % (24 * 3600) / 3600; + long minute = s % 3600 / 60; + + return day + "天" + String.format("%02d", hour) + "小时" + String.format("%02d", minute) + "分钟"; + } + + public static Date getThisMonday() { + Calendar calendar = Calendar.getInstance(); + if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + calendar.add(Calendar.DAY_OF_WEEK, 1); + return calendar.getTime(); + } + + while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { + calendar.add(Calendar.DAY_OF_WEEK, -1); + } + return calendar.getTime(); + } + + public static Date getNextMonday() { + Calendar calendar = Calendar.getInstance(); + if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + calendar.add(Calendar.DAY_OF_WEEK, 8); + return calendar.getTime(); + } + + if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) { + calendar.add(Calendar.DAY_OF_WEEK, 7); + return calendar.getTime(); + } + + while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { + calendar.add(Calendar.DAY_OF_WEEK, 1); + } + return calendar.getTime(); + } + + public static Date string2date2minute(String s) { + if (s == null || s.trim().length() == 0) { + return null; + } + try { + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_MINUTE); + return sdf.parse(s); + } catch (ParseException e) { + log.error(e.getMessage()); + return null; + } + } + + /** + * 根据Date ,日期格式 : yyyy-MM-dd 返回周几 + * + * @param args + */ + public static String date2week(Date date) { + String[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; + + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + System.out.println(cal.get(Calendar.DAY_OF_WEEK)); + int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1; + if (week_index < 0) { + week_index = 0; + } + + return weeks[week_index]; + } + + /** + * 日期路径 即年/月/日 如2018/08/08 + */ + public static final String datePath() { + Date now = new Date(); + return DateFormatUtils.format(now, "yyyy/MM/dd"); + } + + /** + * 日期型字符串转化为日期 格式 + */ + public static Date parseDate(Object str) { + if (str == null) { + return null; + } + try { + return parseDate(str.toString(), parsePatterns); + } catch (ParseException e) { + return null; + } + } + + public static void main(String[] args) { +// Date sDate = DateUtil.string2MothDate("2019-03-08 00:00:00"); +// Date eDate = DateUtil.string2MothDate("2019-03-08 00:00:00"); +// System.out.println(sDate.before(eDate)); + + Date date = string2day("2019-09-05"); + System.out.println(date); + + System.out.println(date2week(date)); + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/GZIPUtils.java b/ksafepack-common/src/main/java/com/kelp/common/utils/GZIPUtils.java new file mode 100644 index 0000000..f5a0cda --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/GZIPUtils.java @@ -0,0 +1,112 @@ +package com.kelp.common.utils; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; + +import org.apache.tomcat.util.codec.binary.Base64; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * 压缩工具类 + */ +public class GZIPUtils { + + private static Logger log = LoggerFactory.getLogger(GZIPUtils.class); + + public static final String GZIP_ENCODE_UTF_8 = "UTF-8"; + + public static final String GZIP_ENCODE_ISO_8859_1 = "ISO-8859-1"; + + /** + * 压缩GZip + * + * @return String + */ + public static String gZip(String input) { + byte[] bytes = null; + GZIPOutputStream gzip = null; + ByteArrayOutputStream bos = null; + try { + bos = new ByteArrayOutputStream(); + gzip = new GZIPOutputStream(bos); + gzip.write(input.getBytes(GZIP_ENCODE_UTF_8)); + gzip.finish(); + gzip.close(); + bytes = bos.toByteArray(); + bos.close(); + } catch (Exception e) { + log.error("zip error: ", e); + } finally { + try { + if (gzip != null) + gzip.close(); + if (bos != null) + bos.close(); + } catch (final IOException ioe) { + log.error("zip error: ", ioe); + } + } + return Base64.encodeBase64String(bytes); + } + + /** + * 解压GZip + * + * @return String + */ + public static String unGZip(String input) { + byte[] bytes; + String out = input; + GZIPInputStream gzip = null; + ByteArrayInputStream bis; + ByteArrayOutputStream bos = null; + try { + bis = new ByteArrayInputStream(Base64.decodeBase64(input)); + gzip = new GZIPInputStream(bis); + byte[] buf = new byte[1024]; + int num; + bos = new ByteArrayOutputStream(); + while ((num = gzip.read(buf, 0, buf.length)) != -1) { + bos.write(buf, 0, num); + } + bytes = bos.toByteArray(); + out = new String(bytes, GZIP_ENCODE_UTF_8); + gzip.close(); + bis.close(); + bos.flush(); + bos.close(); + } catch (Exception e) { + log.error("unzip error: ", e); + } finally { + try { + if (gzip != null) + gzip.close(); + if (bos != null) + bos.close(); + } catch (final IOException ioe) { + log.error("unzip error: ", ioe); + } + } + return out; + } + + + public static void main(String[] args) throws UnsupportedEncodingException { +// String json="H4sIAAAAAAAAA+1cWXPbOBL+Lfugmt2HuHhTfJTkOEmVc1Ti3ezbFESCEtYQqSKh2MqvH/AAiIYk8zDjkbKOKioTR7MvfN0NkJr484ll/cBZTtKE/zWxZ/zbNK+MK6O4tBb8O19jzPK6t5wweetO5v5k5k7eOpP59SRYTN5OJzNzMpua6rgEbbCk2japvFeEY7Sj8G5hSt9jFOHsa/rwHpPVmlW9llHNyYrmon+R0u8kYuuq21G7lVnmlW1XPSEYbxrGxL+WcxbpLhFTLDl+t0mUDrPuQCEjPzBnT1BSmzlXNZmqla2x1Mqhlj7HMQmx1Ec5mFNIs64zlii8X2WcxwiYAtU8uG4toXa90q6XzbVQSkPZ6kLZNiFl24CU7UbdDD+yLtwagCKkB6l14dCbAnJTB9AzDU9SRGGIk04cBlBoU1enaWtEu6nSh1QtSNUJNKJ2B6KmBy0vr5fNNaTqDPAnM7BOWKmi6fa3k2lqhgp0Q3ldxBdrV1D1bUDVNyXR9X6LM0qS+w5kofRBoHHaWD9OKU0fcPS+B3HTCQB5XyPPFcPJS7Y5JpJkdZMKtOLf1zhZ/ZcgDvXGrYDEikQa7U+MtCTFCDGksllc36ElBWhmnrz4gehOCQfWzefZNWL4n47tBP6/+LXkJmd72oz888/ljlD2IflWNFsqR9YJ+mY7HbOmc5RUR75dyx2Xb8vuz7g9hHHXG5fxAXw7Q/iejsy3OcBT3AGMe+bYHt6BkM64N4RxZ2zGB7iKP4Rxfzoy405/xqcDGPeNYGTG3f6MB0MYt8dm3OvPuGmoxNpUEqfZZkeRpL0wjTcKRRn4qqqEy4k+pREIdypvZUORJSsJe7KjVN4LZPKWdccTVR6J+Q2Nptr6MaNkVddilpipBGbT2z7yCWp8bioFEMLnPKbL7mWa8QrpFsdM56vquUu3xzu+NqWT3jVPGUs3eh9Nw3scVa0sKzQukvIPSYQFf3Xy/sAJfc9Qfe8Y0RxrupfV3bWeffQwymnlwJvJUvMlbpZjinmFmCag2gX+m+klJSxMTck18Bd+DQaJG1LuM7LaVRUsGHDnwoyVZOSnyEvE8Itud4WV1yhjjcwn9iqC+WT+Vm5RVOu0VvBjNdAzp1deXZrthZ1qzHpoNhZcx7vyPJGUKzsRU+/KCpp/ogBlvCT4pHJjyRuXnH/bohA4XFmT42iRZgnOcnUpNZOAgxIGPTb9wWsQtD+YmW+/gH0HmqhXSXpDKFUWuvCokx3sEdIrqg7Ykm/DG5Ll7Bbl7AvKkA4jnFH2mX/FVK6MpgMii0SVegRKwrUAX9C0YNkRXreaf2iq4IDwVWP9Z027cYrlgUbJQcsOcJ2zjNxj0HSPs1rtZhknKsOEYAxFjADbbAkL1zdoQ+geDCx8IccQPgp/ixuXKnxtvkneUDZRYjRGI5OvCErgzUcmXxGUUJtSEjVOWRssLDfXKLAiTxIAebrbfEwj6Quea3AbCCDhnZ/jWHbaotO/1qAeJ1HhzcBjZB/lXCQqHlUUXEAB7Vh6V6zbaz6eifiq+NGWpmyWQTOVK/8dh4etjnZlzx1XXY1kIiJl2jjeQnDeDKwNQaJHcF2mA9CRh0HHAEM5mq5JUmDBh/gTXqFi//UQDxFAw2S3+YpjtUVcWNYfT21a//GPieXw8U41uPzTbBI5TneBOOeAMs83EVs0GYRlbTabN/sj2YGUbwwuFw2Xi0FcvsM8tFQcaUnMGgnfsNQYix4/NKsmMHzDdPwivnlu4NpF8S8GLlF2TSAsF5vMW5KsYCPaKpv1lhkINWX7Mqs+jHtVVKtx/A0vIgF7WF8S6JEojm7qYigylC6JqOSwDqJ8pSQMMXmS0qRYUblmDxhEj1/SHKyaDfpfmt2R8P4jyuodwbpc3pBE7xGJP2+8XVJJyuqyAGHwDIWWRJqx2UaAL0RFSSLzUJ5yKOt3XJQ1n0LZ6QHKviYdcjvol2UcrxnG75phVHJnaZ7PRF0jMLrpEmgpfJhnI/oqoUvKWW2UJzxniXJ8Rzb43wmBeuWh52YDQnFbeCynzThOlzkNMNwMoLc4ZjoC7LYO7FDasYHdVID9XUYiThwDT/w/wmnFXY8EOuuXBLrXIvU1XrzGi18bL2BqfCxelG1zzB4whvjUKQbA4qNzEAB7fhTt0x240QYlO0RvD9ofP8p712T3By2i+r0yXJPHD8/zXcd0XfEMwV52F4HFdV3LswPLtWsNPYjuaTC1HcO2+Zip49ST16LXmwa+NzVdO5gavgtOOUbEPAklNGX/IfnnRHh4g2cRybdzipL7fAbNmq/Th2sOyXmBdh/Rowod3Vj9reLb0JsbGgk9AvVE+fFW+TYjCfuGGYfyFYDDdXlIcpOmDANWUHF29Z2wNQ/eKyIONmDIQisMeusoK7zer4/mqGyoLa1dM31CxZNorRdTrLBYNKpccMEEftR6RVucfZOHBrVPxEWo/8LHf9ptlhjG5oPUUOS8FIX3syT6viZH0sMoQ+IYTg2zOb45ditlCM8DyM+U35Beb+s47YmAW+QWJDzWE6Zb0uCxGgmEZ5MkwnJDT62p0QZH5TGrvlminXIW2Fs+elUfZ/rl+XFtgU7HnuCMMyliAHcAQ/5hOlf+oHNPcKxTHK5xbzHe8P+z5pk+pVZ4Qi7rkuSyustlX5Jcdne5nEuSy+kul3tJcrnd5fIuSS6vu1wFv+55yuU8Fw8vRq6eeHgxcvXEw4uRqyceXoxcPfHwYuTqiYf2U3LN5Xsmf4903nNR8cKk64mNFyZdT4S8MOl64uSFSdcTLS9Mup6YaZyxcINg8vwF6omM5y9QTzA8f4F64t/5C9QT8s5foHaUm1h2HIe+8g7zoSx8TBAahuG9rAhzFHVi3yo+T7MfIz9qtcAypdFzmNff8qgf9tR58ePiI2cpbzA0jzZor4U8m5LyHsmzaakvnjyDGDD1AtFwR+VWfpvJkVt8xlx9L2R7Oy4+xxTj9bR9d0rttu9Oq4PtuxCDtl/j8J6rfIGpcsp8zPjNa06QQLrZoOfMNCbuvDppHEJjl2U4CffPnNyXh6Mwp6074OqEIUrC8VH67eOWogSxNCukqLZF2ldw6OG4LebwgGO+dNh8l6YtQafDO4V6fv0E4FjGWb5QeGxtn6iHlAXuHl/g76vfQpjUL3G9lGpN/8q+TOU6wSDtthRMI2t3rEj54tq1j2rXatNuS/V2Jto9wXx7pVbVAWHw1C5OHd39X18HvKbSg1PpD8l21xKCW7KITsXS+DZ+CSAovXxqKG8Tt+entyQpX6nvkKCKO+BlED69joKweHT0l+sYCPIJ7xh4kvMpEQow6Lscl1bxGWM5dqfUvhy70+rgPV2IQaWn1TNoY+xiaKXVmVayfW3dndJzKtkBtu5CDP4Y4I71wF4w9QvOwvrnOV6s9HA0/9B+lezQT+p8Ij8OL3fihw2eJcDfsVlzMvIMK4OecNvxa64TQesuZW1I35YFxIbx0hHqO8qSKmFt30fo7Utr5bd96geU237u54icv/0PAB0LYZXwr9Y4B2sc/wWu38Es1ctHzUsN6vunv5vdrNpu5fsefwHEztjVCVoAAA=="; +// System.out.println(URLDecoder.decode(unGZip(json), "utf-8")); + + String aa = "sdfsdfasdfsdfasdf"; + String gZip = gZip(aa); + System.err.println("加密后: " + gZip); + + String unGZip = unGZip(gZip); + + System.err.println("解密后: " + unGZip); + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/IdWorker.java b/ksafepack-common/src/main/java/com/kelp/common/utils/IdWorker.java new file mode 100644 index 0000000..7dc8ef4 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/IdWorker.java @@ -0,0 +1,119 @@ +package com.kelp.common.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class IdWorker { + + private static Logger log = LoggerFactory.getLogger(IdWorker.class); + + //工作id + private long workerId; + //数据id + private long datacenterId; + //12位的序列号 + private long sequence; + + //初始时间戳 + private long twepoch = 1585644268888L; + + //5位的机器id + private long workerIdBits = 5L; + //5位的机房id + private long datacenterIdBits = 5L; + //每毫秒内产生的id数 2 的 12次方 + private long sequenceBits = 12L; + + //最大值 + private long maxWorkerId = -1L ^ (-1L << workerIdBits); + private long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); + private long sequenceMask = -1L ^ (-1L << sequenceBits); + + //工作id需要左移的位数,12位 + private long workerIdShift = sequenceBits; + //数据id需要左移位数 12+5=17位 + private long datacenterIdShift = sequenceBits + workerIdBits; + //时间戳需要左移位数 12+5+5=22位 + private long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; + + //上次时间戳,初始值为负数 + private long lastTimestamp = -1L; + + public IdWorker(long workerId, long datacenterId, long sequence){ + if (workerId > maxWorkerId || workerId < 0) { + + log.error(String.format("worker Id can't be greater than %d or less than 0",maxWorkerId)); + throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0",maxWorkerId)); + } + if (datacenterId > maxDatacenterId || datacenterId < 0) { + log.error(String.format("datacenter Id can't be greater than %d or less than 0",maxDatacenterId)); + throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0",maxDatacenterId)); + } + + this.workerId = workerId; + this.datacenterId = datacenterId; + this.sequence = sequence; + } + + public long getWorkerId(){ + return workerId; + } + + public long getDatacenterId(){ + return datacenterId; + } + + //下一个ID生成算法 + public synchronized long nextId() { + long timestamp = nextMillis(); + + //获取当前时间戳如果小于上次时间戳,则表示时间戳获取出现异常 + if (timestamp < lastTimestamp) { + log.error(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", + lastTimestamp - timestamp)); + throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", + lastTimestamp - timestamp)); + } + + //获取当前时间戳如果等于上次时间戳(同一毫秒内),则在序列号加一;否则序列号赋值为0,从0开始。 + if (lastTimestamp == timestamp) { + sequence = (sequence + 1) & sequenceMask; + if (sequence == 0) { + timestamp = nextMillis(lastTimestamp); + } + }else { + sequence = 0; + } + + //将上次时间戳值刷新 + lastTimestamp = timestamp; + + return ((timestamp - twepoch) << timestampLeftShift) | + (datacenterId << datacenterIdShift) | + (workerId << workerIdShift) | + sequence; + } + + //获取时间戳,并与上次时间戳比较 + private long nextMillis(long lastTimestamp) { + long timestamp = nextMillis(); + while (timestamp <= lastTimestamp) { + timestamp = nextMillis(); + } + return timestamp; + } + + //获取系统时间戳 + private long nextMillis(){ + return System.currentTimeMillis(); + } + + //---------------测试--------------- + public static void main(String[] args) { + IdWorker worker = new IdWorker(1,1,1); + for (int i = 0; i < 30; i++) { + System.out.println(worker.nextId()); + } + } + +} \ No newline at end of file diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/IpUtils.java b/ksafepack-common/src/main/java/com/kelp/common/utils/IpUtils.java new file mode 100644 index 0000000..86614ea --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/IpUtils.java @@ -0,0 +1,28 @@ +package com.kelp.common.utils; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * 获取IP方法 + * + * @author kelp + */ +public class IpUtils { + + public static String getHostIp() { + try { + return InetAddress.getLocalHost().getHostAddress(); + } catch (UnknownHostException e) { + } + return "127.0.0.1"; + } + + public static String getHostName() { + try { + return InetAddress.getLocalHost().getHostName(); + } catch (UnknownHostException e) { + } + return "未知"; + } +} \ No newline at end of file diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/KRandom.java b/ksafepack-common/src/main/java/com/kelp/common/utils/KRandom.java new file mode 100644 index 0000000..d14638b --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/KRandom.java @@ -0,0 +1,35 @@ +package com.kelp.common.utils; + +import java.util.Random; + +public class KRandom { + + private static Random random = new Random(); + + private static final char[] passkey = { '2', '3', '4', '5', '6', '7', '8', + '9', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'p', 'a', 's', 'd', + 'f', 'g', 'h', 'j', 'k', 'z', 'x', 'c', 'v', 'b', 'n', 'm' }; + + private static final char[] numberpasskey = { '0', '1', '2', '3', '4', '5', + '6', '7', '8', '9' }; + + public static String getRandomNumber(int len) { + char[] c = new char[len]; + c[0] = numberpasskey[random.nextInt(9) + 1]; + for (int i = 1; i < len; i++) { + int ir = random.nextInt(10); + c[i] = numberpasskey[ir]; + } + return new String(c); + } + + public static String getRandomString(int len) { + char[] c = new char[len]; + + for (int i = 0; i < len; i++) { + int ir = random.nextInt(32); + c[i] = passkey[ir]; + } + return new String(c); + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/MaskUtil.java b/ksafepack-common/src/main/java/com/kelp/common/utils/MaskUtil.java new file mode 100644 index 0000000..abedbb0 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/MaskUtil.java @@ -0,0 +1,68 @@ +package com.kelp.common.utils; + +import org.apache.commons.lang3.StringUtils; + +public class MaskUtil { + + /** + * + * @param telephone + * @return + */ + public static String telephone(String telephone) { + + return telephone.replaceAll("(\\d{3})\\d{5}(\\d{3})","$1*****$2"); + } + + /** + * + * @param name + * @return + */ + public static String name(String name) { + if (!StringUtils.isEmpty(name)) { + String name_ = StringUtils.left(name, 1); + return StringUtils.rightPad(name_, StringUtils.length(name), "*"); + } + return ""; + } + + /** + * + * @param id + * @return + */ + public static String id(String id){ + if (!StringUtils.isEmpty(id)) { + return StringUtils.left(id, 6).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(id, 3), StringUtils.length(id), "*"), "******")); + } + return id; + } + + /** + * + * @param address + * @return + */ + public static String address(String address){ + if (!StringUtils.isEmpty(address)) { + return StringUtils.left(address, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(address, address.length()-11), StringUtils.length(address), "*"), "***")); + } + return address; + } + + /** + * 测试Main方法 + * + * @param args + */ + public static void main(String[] args) { + + System.out.println("sss===" + telephone("17733877260")); + System.out.println("sss===" + name("张晓")); + System.out.println("sss===" + name("张晓华月")); + System.out.println("sss===" + id("130105198001060")); + System.out.println("sss===" + address("石家庄市裕华东路")); + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/MathUtil.java b/ksafepack-common/src/main/java/com/kelp/common/utils/MathUtil.java new file mode 100644 index 0000000..d97c632 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/MathUtil.java @@ -0,0 +1,19 @@ +package com.kelp.common.utils; + +/** + * 精确的浮点数运算 + * + * @author kelp + */ +public class MathUtil { + + + public static Long string2long(String s) { + try { + return Long.valueOf(s); + }catch(Exception e) { + return null; + } + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/ObjectUtil.java b/ksafepack-common/src/main/java/com/kelp/common/utils/ObjectUtil.java new file mode 100644 index 0000000..f25fc66 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/ObjectUtil.java @@ -0,0 +1,62 @@ +package com.kelp.common.utils; + +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.apache.commons.beanutils.BeanUtils; + +import net.sf.json.JSONObject; + +public class ObjectUtil { + + @SuppressWarnings("unchecked") + public static Map object2Map(Object object) { + if (object == null) { + return null; + } + + try { + Map returnMap = BeanUtils.describe(object); + returnMap.remove("class"); + + return returnMap; + } catch (Exception e) { + Logger.getLogger(ObjectUtil.class.getName()).log(Level.SEVERE, null, e); + + return null; + } + } + + public static Object map2Object(Map map, Class clasz) { + if (map == null) { + return null; + } + + try { + Object object = clasz.newInstance(); + BeanUtils.populate(object, map); + return object; + } catch (Exception e) { + Logger.getLogger(ObjectUtil.class.getName()).log(Level.SEVERE, null, e); + + return null; + } + } + + public static JSONObject objectToJson(Object object) { + if (object == null) { + return null; + } + + JSONObject json = new JSONObject(); + Map map = object2Map(object); + + for (Map.Entry entry : map.entrySet()) { + json.put(entry.getKey(), entry.getValue()); + } + + return json; + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/file/FileType.java b/ksafepack-common/src/main/java/com/kelp/common/utils/file/FileType.java new file mode 100644 index 0000000..ba89a7b --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/file/FileType.java @@ -0,0 +1,25 @@ +package com.kelp.common.utils.file; + +import java.util.HashMap; + +public class FileType { + + + private static final HashMap IMAGE_FILE_TYPE_MAP = new HashMap(); + private static final HashMap VEDIO_FILE_TYPE_MAP = new HashMap(); + + static { + IMAGE_FILE_TYPE_MAP.put("jpeg", "jpeg"); //JPEG (jpg) + IMAGE_FILE_TYPE_MAP.put("png", "png"); //PNG (png) + + VEDIO_FILE_TYPE_MAP.put("mp4", "mp4"); + } + + public static String getImageType(String type) { + return IMAGE_FILE_TYPE_MAP.get(type); + } + + public static String getVedioType(String type) { + return VEDIO_FILE_TYPE_MAP.get(type); + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/file/FileTypeUtil.java b/ksafepack-common/src/main/java/com/kelp/common/utils/file/FileTypeUtil.java new file mode 100644 index 0000000..bfaa840 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/file/FileTypeUtil.java @@ -0,0 +1,60 @@ +package com.kelp.common.utils.file; + +import java.io.InputStream; +import java.util.HashMap; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class FileTypeUtil { + + private static Logger log = LoggerFactory.getLogger(FileTypeUtil.class); + + private static final HashMap FILE_TYPE_MAP = new HashMap(); + + static { + FILE_TYPE_MAP.put("ffd8ffe000104a464946", "jpg"); //JPEG (jpg) + FILE_TYPE_MAP.put("89504e470d0a1a0a0000", "png"); //PNG (png) + + FILE_TYPE_MAP.put("00000018667479706d70", "mp4"); + FILE_TYPE_MAP.put("00000020667479706d70", "mp4"); + FILE_TYPE_MAP.put("00000020667479706973", "mp4"); + } + + public static String getFileType(InputStream inputStream) { + try { + byte[] bytes = new byte[10]; + if (inputStream.read(bytes, 0, bytes.length) == -1) { + return null; + } + + String fileCode = getFileHex(bytes).toLowerCase(); + + for (String key : FILE_TYPE_MAP.keySet()) { + if (fileCode.startsWith(key.toLowerCase())) { + return FILE_TYPE_MAP.get(key); + } + } + } catch (Exception e) { + log.error(e.getMessage()); + } + return null; + } + + private final static String getFileHex(byte[] b) { + StringBuilder stringBuilder = new StringBuilder(); + if (b == null || b.length <= 1) { + return null; + } + for (int i = 0; i < b.length; i++) { + int v = b[i] & 0xFF; + String hv = Integer.toHexString(v); + if (hv.length() < 2) { + stringBuilder.append(0); + } + stringBuilder.append(hv); + } + return stringBuilder.toString(); + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/http/HttpUtil.java b/ksafepack-common/src/main/java/com/kelp/common/utils/http/HttpUtil.java new file mode 100644 index 0000000..a470ee6 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/http/HttpUtil.java @@ -0,0 +1,120 @@ +/** + * http接口 + * + */ +package com.kelp.common.utils.http; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +import javax.net.ssl.HttpsURLConnection; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class HttpUtil { + + private static Logger log = LoggerFactory.getLogger(HttpUtil.class); + + /** + * http + * + * @param url --必须带有协议:http + * @param method + * @param params + * @return + */ + public static String http(String url, String method, String params,String charset) { + + StringBuffer buffer = null; + try { + URL url_ = new URL(url); + HttpURLConnection conn = (HttpURLConnection) url_.openConnection(); + conn.setDoOutput(true); + conn.setDoInput(true); + conn.setRequestMethod(method); + conn.connect(); + // 设置http请求需要带的参数 + if (null != params) { + OutputStream os = conn.getOutputStream(); + os.write(params.getBytes(charset)); + os.close(); + } + + // 读取返回的内容 + InputStream is = conn.getInputStream(); + InputStreamReader isr = new InputStreamReader(is, charset); + BufferedReader br = new BufferedReader(isr); + buffer = new StringBuffer(); + String line = null; + while ((line = br.readLine()) != null) { + buffer.append(line); + } + } catch (Exception e) { + log.error(e.toString()); + } + + if(buffer == null || buffer.toString().length() == 0) { + return null; + } + + return buffer.toString(); + } + + public static String https(String url, String method, String xmlParam, String charSet){ + try { + + URL url_ = new URL(url); + HttpsURLConnection connection = (HttpsURLConnection) url_.openConnection(); + + connection.setDoOutput(true); + connection.setDoInput(true); + connection.setUseCaches(false); + connection.setRequestMethod(method); + connection.setRequestProperty("content-type", "application/x-www-form-urlencoded"); + + // 当outputStr不为null时向输出流写数据 + if (null != xmlParam) { + OutputStream outputStream = connection.getOutputStream(); + // 注意编码格式 + outputStream.write(xmlParam.getBytes(charSet)); + outputStream.close(); + } + + // 从输入流读取返回内容 + InputStream inputStream = connection.getInputStream(); + InputStreamReader inputStreamReader = new InputStreamReader(inputStream, charSet); + BufferedReader bufferedReader = new BufferedReader(inputStreamReader); + String strLine = null; + StringBuffer buffer = new StringBuffer(); + while ((strLine = bufferedReader.readLine()) != null) { + buffer.append(strLine); + } + // 释放资源 + bufferedReader.close(); + inputStreamReader.close(); + inputStream.close(); + inputStream = null; + connection.disconnect(); + return buffer.toString(); + } catch (Exception e) { + log.error(e.getMessage()); + } + return null; + } + + + public static void main(String[] args) { + + String result = http("http://www.qq.com","GET",null,"utf-8"); + System.out.println(result); + + result = https("https://www.baidu.com/","GET",null,"utf-8"); + System.out.println(result); + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/http/HttpUtilJwb.java b/ksafepack-common/src/main/java/com/kelp/common/utils/http/HttpUtilJwb.java new file mode 100644 index 0000000..fba6387 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/http/HttpUtilJwb.java @@ -0,0 +1,168 @@ +package com.kelp.common.utils.http; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.apache.http.HttpEntity; +import org.apache.http.NameValuePair; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicHeader; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; + +import com.alibaba.fastjson.JSON; + +public class HttpUtilJwb { + + public static String get(String url) { + CloseableHttpClient httpclient = HttpClients.createDefault(); + HttpGet httpGet = new HttpGet(url); + String res = null; + CloseableHttpResponse response = null; + try { + response = httpclient.execute(httpGet); + HttpEntity entity = response.getEntity(); + res = EntityUtils.toString(entity); + EntityUtils.consume(entity); + } catch (ClientProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (response != null) + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return res; + } + + public static String post(String url, Map params) { + + CloseableHttpClient httpclient = HttpClients.createDefault(); + HttpPost httpPost = new HttpPost(url); + + List nvps = new ArrayList(); + for (String key : params.keySet()) { + nvps.add(new BasicNameValuePair(key, params.get(key))); + } + String res = null; + CloseableHttpResponse response = null; + try { + httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); + // 设置请求的报文头部的编码 + httpPost.setHeader(new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")); + // 设置期望服务端返回的编码 + httpPost.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8")); + response = httpclient.execute(httpPost); + HttpEntity entity = response.getEntity(); + res = EntityUtils.toString(entity); + EntityUtils.consume(entity); + } catch (ClientProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (response != null) + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return res; + } + + public static String postJSON(String url, Map params) { + + CloseableHttpClient httpclient = HttpClients.createDefault(); + HttpPost httpPost = new HttpPost(url); + + /*List nvps = new ArrayList(); + for (String key : params.keySet()) { + nvps.add(new BasicNameValuePair(key, params.get(key))); + }*/ + String res = null; + CloseableHttpResponse response = null; + try { + + httpPost.setEntity(new StringEntity(JSON.toJSONString(params))); + //httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); + // 设置请求的报文头部的编码 + httpPost.setHeader(new BasicHeader("Content-Type", "application/json")); + // 设置期望服务端返回的编码 + httpPost.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8")); + response = httpclient.execute(httpPost); + HttpEntity entity = response.getEntity(); + res = EntityUtils.toString(entity); + EntityUtils.consume(entity); + }catch (IllegalArgumentException ec) { + response = null; + //interrupted(); + } catch (ClientProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (response != null) + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return res; + } + + public static String postJSON(String url, String json) { + + CloseableHttpClient httpclient = HttpClients.createDefault(); + HttpPost httpPost = new HttpPost(url); + + /*List nvps = new ArrayList(); + for (String key : params.keySet()) { + nvps.add(new BasicNameValuePair(key, params.get(key))); + }*/ + String res = null; + CloseableHttpResponse response = null; + try { + + httpPost.setEntity(new StringEntity(json)); + //httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); + // 设置请求的报文头部的编码 + httpPost.setHeader(new BasicHeader("Content-Type", "application/json")); + // 设置期望服务端返回的编码 + httpPost.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8")); + response = httpclient.execute(httpPost); + HttpEntity entity = response.getEntity(); + res = EntityUtils.toString(entity); + EntityUtils.consume(entity); + }catch (IllegalArgumentException ec) { + response = null; + //interrupted(); + } catch (ClientProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (response != null) + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return res; + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/jwt/JwtUtil.java b/ksafepack-common/src/main/java/com/kelp/common/utils/jwt/JwtUtil.java new file mode 100644 index 0000000..d4be8e7 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/jwt/JwtUtil.java @@ -0,0 +1,90 @@ +package com.kelp.common.utils.jwt; + +import java.util.Date; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.JWTVerifier; +import com.auth0.jwt.algorithms.Algorithm; +import com.auth0.jwt.exceptions.JWTDecodeException; +import com.auth0.jwt.interfaces.DecodedJWT; +import com.kelp.common.constant.KeyConstant; + +public class JwtUtil { + private static final long EXPIRE_TIME = 5 * 60 * 1000; + + /** + * 校验token是否正确 + * + * @param token 密钥 + * @param secret 用户的密码 + * @return 是否正确 + */ + public static boolean verify(String token, String id, String host, String secret) { + + try { + // 根据密码生成JWT效验器 + Algorithm algorithm = Algorithm.HMAC256(secret); + JWTVerifier verifier = JWT.require(algorithm).withClaim("id", id).withClaim("host", host).build(); + // 效验TOKEN + verifier.verify(token); + return true; + } catch (Exception exception) { + return false; + } + + } + + public static boolean verify(String token, String secret) { + try { + // 根据密码生成JWT效验器 + Algorithm algorithm = Algorithm.HMAC256(secret); + JWTVerifier verifier = JWT.require(algorithm).build(); + // 效验TOKEN + verifier.verify(token); + return true; + } catch (Exception exception) { + return false; + } + } + + public static String getId(String token) { + try { + DecodedJWT jwt = JWT.decode(token); + return jwt.getClaim("id").asString(); + } catch (JWTDecodeException e) { + return null; + } + } + + public static String getHost(String token) { + try { + DecodedJWT jwt = JWT.decode(token); + return jwt.getClaim("host").asString(); + } catch (JWTDecodeException e) { + return null; + } + } + + /** + * 生成签名,5min后过期 + * + * @param userId 用户名 + * @param secret 用户的密码 + * @return 加密的token + */ + public static String sign(String id, String host, String secret) { + Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME); + Algorithm algorithm = Algorithm.HMAC256(secret); + // 附带username信息 + return JWT.create().withClaim("id", id).withClaim("host", host).withExpiresAt(date).sign(algorithm); + } + + public static void main(String[] arg) { + String aaa = sign("kelp", "127.0.0.2", KeyConstant.JWTKEY); + System.out.println("token===" + aaa); + System.out.println(getId(aaa)); + System.out.println(getHost(aaa)); + System.out.println(verify(aaa, KeyConstant.JWTKEY)); + System.out.println(verify(aaa, "kelp", "127.0.0.2", KeyConstant.JWTKEY)); + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/object/BeanValueUtil.java b/ksafepack-common/src/main/java/com/kelp/common/utils/object/BeanValueUtil.java new file mode 100644 index 0000000..507a3dc --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/object/BeanValueUtil.java @@ -0,0 +1,57 @@ +package com.kelp.common.utils.object; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + * java 动态调用实体的set/get方法,完成多字段快速赋值/取值【整理】 + * https://blog.csdn.net/qq_35377323/article/details/110000937 + */ +public class BeanValueUtil { + + /** + * 动态调用实体的set方法 + * + * @param dto 实体 + * @param name 动态拼接字段 + * @param value 值 + * @throws Exception + */ + public static void setValue(Object dto, String name, Object value) { + try { + Method[] m = dto.getClass().getMethods(); + for (int i = 0; i < m.length; i++) { + if (("set" + name).toLowerCase().equals(m[i].getName().toLowerCase())) { + m[i].invoke(dto, value); + break; + } + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /** + * 动态调用实体的get方法(注意返回值) + * + * @param dto 实体 + * @param name 动态拼接字段 + * @throws Exception + */ + public static String getValue(Object dto, String name) { + try { + Method m = (Method) dto.getClass().getMethod(("get" + name)); + + String val = (String) m.invoke(dto);// 调用getter方法获取属性值 + return val; + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/object/DateConverter.java b/ksafepack-common/src/main/java/com/kelp/common/utils/object/DateConverter.java new file mode 100644 index 0000000..aed7f48 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/object/DateConverter.java @@ -0,0 +1,25 @@ +package com.kelp.common.utils.object; + +import java.text.SimpleDateFormat; + +import org.apache.commons.beanutils.Converter; + +public class DateConverter implements Converter{ + + public Object convert(Class arg0, Object arg1) { + String p = (String)arg1; + + if(p== null || p.trim().length()==0){ + return null; + } + + try{ + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + return df.parse(p.trim()); + } + catch(Exception e){ + return null; + } + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/object/ObjectUtil.java b/ksafepack-common/src/main/java/com/kelp/common/utils/object/ObjectUtil.java new file mode 100644 index 0000000..2af7845 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/object/ObjectUtil.java @@ -0,0 +1,66 @@ +package com.kelp.common.utils.object; + +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.beanutils.ConvertUtils; + +import net.sf.json.JSONObject; + +public class ObjectUtil { + + @SuppressWarnings("unchecked") + public static Map object2Map(Object object) { + if (object == null) { + return null; + } + + try { + Map returnMap = BeanUtils.describe(object); + returnMap.remove("class"); + + return returnMap; + } catch (Exception e) { + Logger.getLogger(ObjectUtil.class.getName()).log(Level.SEVERE, null, e); + + return null; + } + } + + public static Object map2Object(Map map, Class clasz) { + if (map == null) { + return null; + } + + try { + Object object = clasz.newInstance(); + //处理日期 + ConvertUtils.register(new DateConverter(), java.util.Date.class); + + BeanUtils.populate(object, map); + return object; + } catch (Exception e) { + Logger.getLogger(ObjectUtil.class.getName()).log(Level.SEVERE, null, e); + + return null; + } + } + + public static JSONObject objectToJson(Object object) { + if (object == null) { + return null; + } + + JSONObject json = new JSONObject(); + Map map = object2Map(object); + + for (Map.Entry entry : map.entrySet()) { + json.put(entry.getKey(), entry.getValue()); + } + + return json; + } + +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/security/Md5Utils.java b/ksafepack-common/src/main/java/com/kelp/common/utils/security/Md5Utils.java new file mode 100644 index 0000000..c7e3383 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/security/Md5Utils.java @@ -0,0 +1,77 @@ +package com.kelp.common.utils.security; + +import java.security.MessageDigest; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.DigestUtils; + +/** + * Md5加密方法 + * + * @author kelp + */ +public class Md5Utils { + private static final Logger log = LoggerFactory.getLogger(Md5Utils.class); + + private static byte[] md5(String s) { + MessageDigest algorithm; + try { + algorithm = MessageDigest.getInstance("MD5"); + algorithm.reset(); + algorithm.update(s.getBytes("UTF-8")); + byte[] messageDigest = algorithm.digest(); + return messageDigest; + } catch (Exception e) { + log.error("MD5 Error...", e); + } + return null; + } + + private static final String toHex(byte hash[]) { + if (hash == null) { + return null; + } + StringBuffer buf = new StringBuffer(hash.length * 2); + int i; + + for (i = 0; i < hash.length; i++) { + if ((hash[i] & 0xff) < 0x10) { + buf.append("0"); + } + buf.append(Long.toString(hash[i] & 0xff, 16)); + } + return buf.toString(); + } + + public static String hash(String s) { + try { + return new String(toHex(md5(s)).getBytes("UTF-8"), "UTF-8"); + } catch (Exception e) { + log.error("not supported charset...{}", e); + return s; + } + } + + public static String hash(String word, String salt) { + // 拼接原密码与盐值 + String str = salt + word + salt; + // 循环加密5次 + for (int i = 0; i < 5; i++) { + str = DigestUtils.md5DigestAsHex(str.getBytes()); + } + // 返回结果 + return str; + } + + /** + * 测试Main方法 + * + * @param args + */ + public static void main(String[] args) { + String sss = Md5Utils.hash("d1234567"); + System.err.println("加密后数据:" + sss); + System.out.println(hash("d1234567","")); + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/security/SensitiveWordInit.java b/ksafepack-common/src/main/java/com/kelp/common/utils/security/SensitiveWordInit.java new file mode 100644 index 0000000..a76fc3c --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/security/SensitiveWordInit.java @@ -0,0 +1,91 @@ +/** + * 初始化敏感词库,将敏感词加入到HashMap中,构建DFA算法模型 + */ +package com.kelp.common.utils.security; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class SensitiveWordInit { + + private static final Logger log = LoggerFactory.getLogger(SensitiveWordInit.class); + + private String ENCODING = "UTF-8"; + + @SuppressWarnings("rawtypes") + public Map initDFAHash(String filePath) { + try { + return makeDFAHash(readDictFile(filePath)); + } catch (Exception e) { + log.error("sensitive word init failed:" + e.getMessage()); + } + return null; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + private HashMap makeDFAHash(Set keyWordSet) { + HashMap dfaMap = new HashMap(keyWordSet.size()); + String key = null; + Map nowMap = null; + Map worMap = null; + Iterator iterator = keyWordSet.iterator(); + while (iterator.hasNext()) { + key = iterator.next(); + nowMap = dfaMap; + for (int i = 0; i < key.length(); i++) { + char keyChar = key.charAt(i); + Object wordMap = nowMap.get(keyChar); + + if (wordMap != null) { + nowMap = (Map) wordMap; + } else { + worMap = new HashMap(); + worMap.put("isEnd", "0"); + nowMap.put(keyChar, worMap); + nowMap = worMap; + } + + if (i == key.length() - 1) { + nowMap.put("isEnd", "1"); + } + } + } + + return dfaMap; + } + + /** + * 文件中的内容格式为每行一个词 + * @return + */ + @SuppressWarnings("resource") + private Set readDictFile(String filePath) { + Set set = null; + File file = new File(filePath); + try { + InputStreamReader isreader = new InputStreamReader(new FileInputStream(file), ENCODING); + if (file.isFile() && file.exists()) { + set = new HashSet(); + BufferedReader bufferedReader = new BufferedReader(isreader); + String word = null; + while ((word = bufferedReader.readLine()) != null) { + set.add(word); + } + } + isreader.close(); + } catch (Exception e) { + log.error("sensitive word init failed:" + e.getMessage()); + } + return set; + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/security/SensitivewordUtils.java b/ksafepack-common/src/main/java/com/kelp/common/utils/security/SensitivewordUtils.java new file mode 100644 index 0000000..ce5bc35 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/security/SensitivewordUtils.java @@ -0,0 +1,163 @@ +/** + * 敏感词过滤 + */ +package com.kelp.common.utils.security; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.ResourceUtils; + +public class SensitivewordUtils { + + private static final Logger log = LoggerFactory.getLogger(SensitivewordUtils.class); + + @SuppressWarnings("rawtypes") + private static Map dfaMap = null; + public static int minMatchTYpe = 1; + public static int maxMatchType = 2; + + /** + * 构造函数,初始化敏感词库 + */ + public SensitivewordUtils() { + try { + if(dfaMap == null) { + dfaMap = new SensitiveWordInit().initDFAHash(ResourceUtils.getURL("classpath:").getPath() + "/sensitiveword.txt"); + } + } catch (Exception e) { + log.error("sensitive word init failed : " + e.getMessage()); + } + } + + /** + * 判断文字是否包含敏感字符 + * + * @param txt 文字 + * @param matchType 匹配规则 1:最小匹配规则,2:最大匹配规则 + * @return 若包含返回true,否则返回false + */ + public boolean isContaintSensitiveWord(String txt, int matchType) { + boolean flag = false; + for (int i = 0; i < txt.length(); i++) { + int matchFlag = this.checkSensitiveWord(txt, i, matchType); + if (matchFlag > 0) { + flag = true; + } + } + return flag; + } + + /** + * 获取文字中的敏感词 + * + * @param txt 文字 + * @param matchType 匹配规则 1:最小匹配规则,2:最大匹配规则 + * @return + */ + public Set getSensitiveWord(String txt, int matchType) { + Set sensitiveWordList = new HashSet(); + + for (int i = 0; i < txt.length(); i++) { + int length = checkSensitiveWord(txt, i, matchType); + if (length > 0) { + sensitiveWordList.add(txt.substring(i, i + length)); + i = i + length - 1; + } + } + + return sensitiveWordList; + } + + /** + * 替换敏感字字符 + * + * @param txt + * @param matchType + * @param replaceChar 替换字符,默认* + */ + public String replaceSensitiveWord(String txt, int matchType, String replaceChar) { + String resultTxt = txt; + Set set = getSensitiveWord(txt, matchType); + Iterator iterator = set.iterator(); + String word = null; + String replaceString = null; + while (iterator.hasNext()) { + word = iterator.next(); + replaceString = getReplaceChars(replaceChar, word.length()); + resultTxt = resultTxt.replaceAll(word, replaceString); + } + + return resultTxt; + } + + /** + * 获取替换字符串 + * + * @param replaceChar + * @param length + * @return + */ + private String getReplaceChars(String replaceChar, int length) { + String resultReplace = replaceChar; + for (int i = 1; i < length; i++) { + resultReplace += replaceChar; + } + + return resultReplace; + } + + /** + * 检查文字中是否包含敏感字符,检查规则如下:
            + * + * @param txt + * @param beginIndex + * @param matchType + * @return,如果存在,则返回敏感词字符的长度,不存在返回0 + */ + @SuppressWarnings({ "rawtypes" }) + public int checkSensitiveWord(String txt, int beginIndex, int matchType) { + boolean flag = false; + int matchFlag = 0; + char word = 0; + Map nowMap = dfaMap; + for (int i = beginIndex; i < txt.length(); i++) { + word = txt.charAt(i); + nowMap = (Map) nowMap.get(word); + if (nowMap != null) { + matchFlag++; + if ("1".equals(nowMap.get("isEnd"))) { + flag = true; + if (SensitivewordUtils.minMatchTYpe == matchType) { + break; + } + } + } else { + break; + } + } + if (matchFlag < 2 || !flag) { + matchFlag = 0; + } + return matchFlag; + } + + public static void main(String[] args) { + SensitivewordUtils filter = new SensitivewordUtils(); + System.out.println("敏感词的数量:" + filter.dfaMap.size()); + String string = "太多的伤感情怀也许只局限于饲养基地 荧幕中的情节,主人公尝试着去用某种方式渐渐的很潇洒地释自杀指南怀那些自己经历的伤感。" + + "然后法轮功 我们的扮演的角色就是跟随着主人公的喜红客联盟 怒哀乐而过于牵强的把自己的情感也附加于银幕情节中,然后感动就流泪," + + "难过就躺在某一个人的怀里尽情的阐述心扉或者手机卡复制器一个人一杯红酒一部电影在夜三级片 深人静的晚上,关上电话静静的发呆着。"; + System.out.println("待检测语句字数:" + string.length()); + long beginTime = System.currentTimeMillis(); + Set set = filter.getSensitiveWord(string, 1); + System.out.println("" + filter.replaceSensitiveWord(string,1,"*")); + long endTime = System.currentTimeMillis(); + System.out.println("语句中包含敏感词的个数为:" + set.size() + "。包含:" + set); + System.out.println("总共消耗时间为:" + (endTime - beginTime)); + } +} diff --git a/ksafepack-common/src/main/java/com/kelp/common/utils/spring/SpringUtil.java b/ksafepack-common/src/main/java/com/kelp/common/utils/spring/SpringUtil.java new file mode 100644 index 0000000..6833a25 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/utils/spring/SpringUtil.java @@ -0,0 +1,46 @@ +package com.kelp.common.utils.spring; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +@Component +public class SpringUtil implements ApplicationContextAware { + + private static ApplicationContext applicationContext; + + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringUtil.applicationContext = applicationContext; + } + + public static ApplicationContext getApplicationContext() { + return applicationContext; + } + + /** + * 根据Bean名称获取实例 + * + * @param name + * Bean注册名称 + * + * @return bean实例 + * + * @throws BeansException + */ + @SuppressWarnings("unchecked") + public static T getBean(String name) throws BeansException { + return (T)applicationContext.getBean(name); + } + + /** + * + * @param clasz + * @return + * @throws BeansException + */ + public static T getBean(Class clasz) throws BeansException { + return (T)applicationContext.getBean(clasz); + } + +} \ No newline at end of file diff --git a/ksafepack-common/src/main/java/com/kelp/common/xss/XssFilter.java b/ksafepack-common/src/main/java/com/kelp/common/xss/XssFilter.java new file mode 100644 index 0000000..c8caaaa --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/xss/XssFilter.java @@ -0,0 +1,86 @@ +package com.kelp.common.xss; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; + +/** + * 防止XSS攻击的过滤器 + * + * @author kelp + */ +public class XssFilter implements Filter { + /** + * 排除链接 + */ + public List excludes = new ArrayList<>(); + + /** + * xss过滤开关 + */ + public boolean enabled = false; + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + String tempExcludes = filterConfig.getInitParameter("excludes"); + String tempEnabled = filterConfig.getInitParameter("enabled"); + if (StringUtils.isNotEmpty(tempExcludes)) { + String[] url = tempExcludes.split(","); + for (int i = 0; url != null && i < url.length; i++) { + excludes.add(url[i]); + } + } + if (StringUtils.isNotEmpty(tempEnabled)) { + enabled = Boolean.valueOf(tempEnabled); + } + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + HttpServletRequest req = (HttpServletRequest) request; + HttpServletResponse resp = (HttpServletResponse) response; + if (handleExcludeURL(req, resp)) { + chain.doFilter(request, response); + return; + } + XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper((HttpServletRequest) request); + chain.doFilter(xssRequest, response); + } + + private boolean handleExcludeURL(HttpServletRequest request, HttpServletResponse response) { + if (!enabled) { + return true; + } + if (excludes == null || excludes.isEmpty()) { + return false; + } + String url = request.getServletPath(); + for (String pattern : excludes) { + Pattern p = Pattern.compile("^" + pattern); + Matcher m = p.matcher(url); + if (m.find()) { + return true; + } + } + return false; + } + + @Override + public void destroy() { + + } +} \ No newline at end of file diff --git a/ksafepack-common/src/main/java/com/kelp/common/xss/XssHttpServletRequestWrapper.java b/ksafepack-common/src/main/java/com/kelp/common/xss/XssHttpServletRequestWrapper.java new file mode 100644 index 0000000..cd3b161 --- /dev/null +++ b/ksafepack-common/src/main/java/com/kelp/common/xss/XssHttpServletRequestWrapper.java @@ -0,0 +1,35 @@ +package com.kelp.common.xss; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; + +import org.springframework.web.util.HtmlUtils; + +/** + * XSS过滤处理 + * + * @author kelp + */ +public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { + /** + * @param request + */ + public XssHttpServletRequestWrapper(HttpServletRequest request) { + super(request); + } + + @Override + public String[] getParameterValues(String name) { + String[] values = super.getParameterValues(name); + if (values != null) { + int length = values.length; + String[] escapseValues = new String[length]; + for (int i = 0; i < length; i++) { + // 防xss攻击和过滤前后空格 + escapseValues[i] = HtmlUtils.htmlEscape(values[i]).trim(); + } + return escapseValues; + } + return super.getParameterValues(name); + } +} \ No newline at end of file diff --git a/ksafepack-framework/pom.xml b/ksafepack-framework/pom.xml new file mode 100644 index 0000000..871829d --- /dev/null +++ b/ksafepack-framework/pom.xml @@ -0,0 +1,140 @@ + + + + com.kelp + ksafepack + 1.0.1 + + 4.0.0 + + ksafepack-framework + + + framework框架核心 + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.springframework.boot + spring-boot-starter-aop + + + + org.springframework + spring-jdbc + + + + + + com.alibaba + druid-spring-boot-starter + + + + + com.github.penggle + kaptcha + + + javax.servlet-api + javax.servlet + + + + + + + eu.bitwalker + UserAgentUtils + + + + + com.kelp + ksafepack-system + + + + + com.github.oshi + oshi-core + + + + net.java.dev.jna + jna + + + + net.java.dev.jna + jna-platform + + + + + org.tuckey + urlrewritefilter + 4.0.4 + + + + + org.apache.httpcomponents + httpclient + + + org.apache.httpcomponents + httpcore + + + + + org.apache.axis + axis + 1.4 + + + axis + axis-jaxrpc + 1.4 + + + wsdl4j + wsdl4j + + + + com.alibaba + fastjson + + + + opensymphony + oscache + 2.4.1 + + + javax.jms + jms + + + log4j + log4j + + + + + + + \ No newline at end of file diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/aspect/DataSourceAspect.java b/ksafepack-framework/src/main/java/com/kelp/framework/aspect/DataSourceAspect.java new file mode 100644 index 0000000..2be54e3 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/aspect/DataSourceAspect.java @@ -0,0 +1,66 @@ +package com.kelp.framework.aspect; + +import java.lang.reflect.Method; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.aspectj.lang.reflect.MethodSignature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import com.kelp.common.annotation.DataSource; +import com.kelp.common.config.datasource.DynamicDataSourceContextHolder; + +/** + * 多数据源处理 + * + * @author kelp + */ +@Aspect +@Order(1) +@Component +public class DataSourceAspect { + protected Logger logger = LoggerFactory.getLogger(getClass()); + + @Pointcut("@annotation(com.kelp.common.annotation.DataSource)" + + "|| @within(com.kelp.common.annotation.DataSource)") + public void dsPointCut() { + + } + + @Around("dsPointCut()") + public Object around(ProceedingJoinPoint point) throws Throwable { + DataSource dataSource = getDataSource(point); + + if (dataSource != null) { + DynamicDataSourceContextHolder.setDataSourceType(dataSource.value().name()); + } + + try { + return point.proceed(); + } finally { + // 销毁数据源 在执行方法之后 + DynamicDataSourceContextHolder.clearDataSourceType(); + } + } + + /** + * 获取需要切换的数据源 + */ + public DataSource getDataSource(ProceedingJoinPoint point) { + MethodSignature signature = (MethodSignature) point.getSignature(); + Class targetClass = point.getTarget().getClass(); + DataSource targetDataSource = targetClass.getAnnotation(DataSource.class); + if (targetDataSource != null) { + return targetDataSource; + } + + Method method = signature.getMethod(); + DataSource dataSource = method.getAnnotation(DataSource.class); + return dataSource; + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/base/controller/BaseController.java b/ksafepack-framework/src/main/java/com/kelp/framework/base/controller/BaseController.java new file mode 100644 index 0000000..c53c3ae --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/base/controller/BaseController.java @@ -0,0 +1,168 @@ +package com.kelp.framework.base.controller; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import com.kelp.common.config.RedisBean; +import com.kelp.common.utils.CookieUtil; +import com.kelp.common.utils.jwt.JwtUtil; + +/** + * web层通用数据处理 + * + * @author kelp + */ +public class BaseController { + protected final Logger logger = LoggerFactory.getLogger(BaseController.class); + + protected String RESULT = "result"; + protected String MESSAGE = "message"; + + @Autowired + protected RedisBean redisBean; + + /** + * 获取token + * @param request + * @return + */ + protected String getToken(HttpServletRequest request) { + return CookieUtil.getCookie(request, "token"); + } + + /** + * 获取account id,可能是plat accountId,也可能是enterprise accountId/member accountId + * + * @param token + * @return + */ + protected String getAccountId(String token) { + return JwtUtil.getId(token); + } + + /** + * 通用account id + * + * @param request + * @return + */ + protected String getAccountId(HttpServletRequest request) { + return getAccountId(getToken(request)); + } + + /** + * 取得所有参数 + * @param request + * @return + */ + protected Map getParameters(HttpServletRequest request){ + Enumeration parameterNames = request.getParameterNames(); + + Map params = new HashMap(); + + while (parameterNames.hasMoreElements()) { + String parameterName = parameterNames.nextElement(); + params.put(parameterName, request.getParameter(parameterName)); + } + + return params; + } + + /** + * get member id + * + * @param request + * @return + */ + protected String getMemberId(HttpServletRequest request) { + return JwtUtil.getId(request.getHeader("token")); + } + + + /** + * role,key=plat_role/member_role/enterprise_role + * + * @param token + * @return + */ + protected String getRoleId(String token, String key) { + return redisBean.hget(getAccountId(token), key); + } + + /** + * 企业管理员获取departmentId + * @param token + * @return + */ + protected String getDepartmentId(HttpServletRequest request) { + return redisBean.hget(getAccountId(request), "e_department"); + } + + /** + * 企业管理员获取enterpriseId + * @param token + * @return + */ + protected String getEnterpriseId(HttpServletRequest request) { + return redisBean.hget(getAccountId(request), "e_enterprise"); + } + + protected String getEnterpriseIdPath(HttpServletRequest request) { + return redisBean.hget(getAccountId(request), "e_eidpath"); + } + + protected String getDepartmentIdPath(HttpServletRequest request) { + return redisBean.hget(getAccountId(request), "e_didpath"); + } + + /** + * 取得客户端IP + * + * @param request + * @return + */ + protected String getIp(HttpServletRequest request) { + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + if (ip.equals("0:0:0:0:0:0:0:1")) { + ip = getLocalIP(); + } + } + return ip; + } + + private String getLocalIP() { + InetAddress addr = null; + try { + addr = InetAddress.getLocalHost(); + } catch (UnknownHostException e) { + e.printStackTrace(); + return null; + } + byte[] ipAddr = addr.getAddress(); + String ipAddrStr = ""; + for (int i = 0; i < ipAddr.length; i++) { + if (i > 0) { + ipAddrStr += "."; + } + ipAddrStr += ipAddr[i] & 0xFF; + } + return ipAddrStr; + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/base/controller/ErrorMessage.java b/ksafepack-framework/src/main/java/com/kelp/framework/base/controller/ErrorMessage.java new file mode 100644 index 0000000..ea68a24 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/base/controller/ErrorMessage.java @@ -0,0 +1,27 @@ +package com.kelp.framework.base.controller; + +public class ErrorMessage { + private String message; + private Boolean status; + + public ErrorMessage(String message,Boolean status){ + this.message = message; + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Boolean getStatus() { + return status; + } + + public void setStatus(Boolean status) { + this.status = status; + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/CaptchaConfig.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/CaptchaConfig.java new file mode 100644 index 0000000..f3fde08 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/CaptchaConfig.java @@ -0,0 +1,84 @@ +package com.kelp.framework.config; + +import java.util.Properties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import com.google.code.kaptcha.impl.DefaultKaptcha; +import com.google.code.kaptcha.util.Config; +import static com.google.code.kaptcha.Constants.*; + +/** + * 验证码配置 + * + * @author kelp + */ +@Configuration +public class CaptchaConfig { + @Bean(name = "captchaProducer") + public DefaultKaptcha getKaptchaBean() { + DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); + Properties properties = new Properties(); + // 是否有边框 默认为true 我们可以自己设置yes,no + properties.setProperty(KAPTCHA_BORDER, "yes"); + // 验证码文本字符颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black"); + // 验证码图片宽度 默认为200 + properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); + // 验证码图片高度 默认为50 + properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "70"); + // 验证码文本字符大小 默认为40 + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38"); + // KAPTCHA_SESSION_KEY + properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode"); + // 验证码文本字符长度 默认为5 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4"); + // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple + // 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy + // 阴影com.google.code.kaptcha.impl.ShadowGimpy + properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); + Config config = new Config(properties); + defaultKaptcha.setConfig(config); + return defaultKaptcha; + } + + @Bean(name = "captchaProducerMath") + public DefaultKaptcha getKaptchaBeanMath() { + DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); + Properties properties = new Properties(); + // 是否有边框 默认为true 我们可以自己设置yes,no + properties.setProperty(KAPTCHA_BORDER, "yes"); + // 边框颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90"); + // 验证码文本字符颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue"); + // 验证码图片宽度 默认为200 + properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); + // 验证码图片高度 默认为50 + properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "70"); + // 验证码文本字符大小 默认为40 + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38"); + // KAPTCHA_SESSION_KEY + properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath"); + // 验证码文本生成器 + properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.kelp.framework.config.CaptchaTextCreator"); + // 验证码文本字符间距 默认为2 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3"); + // 验证码文本字符长度 默认为5 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6"); + // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + // 验证码噪点颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_NOISE_COLOR, "white"); + // 干扰实现类 + properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise"); + // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple + // 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy + // 阴影com.google.code.kaptcha.impl.ShadowGimpy + properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); + Config config = new Config(properties); + defaultKaptcha.setConfig(config); + return defaultKaptcha; + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/CaptchaTextCreator.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/CaptchaTextCreator.java new file mode 100644 index 0000000..634d996 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/CaptchaTextCreator.java @@ -0,0 +1,61 @@ +package com.kelp.framework.config; + +import java.security.SecureRandom; +import java.util.Random; +import com.google.code.kaptcha.text.impl.DefaultTextCreator; + +/** + * 验证码文本生成器 + * + * @author kelp + */ +public class CaptchaTextCreator extends DefaultTextCreator { + private static final String[] CNUMBERS = "0,1,2,3,4,5,6,7,8,9,10".split(","); + + @Override + public String getText() { + Integer result = 0; + Random random = new SecureRandom(); + int x = random.nextInt(10); + int y = random.nextInt(10); + StringBuilder suChinese = new StringBuilder(); + int randomoperands = (int) Math.round(Math.random() * 2); + if (randomoperands == 0) { + result = x * y; + suChinese.append(CNUMBERS[x]); + suChinese.append("*"); + suChinese.append(CNUMBERS[y]); + } else if (randomoperands == 1) { + if (!(x == 0) && y % x == 0) { + result = y / x; + suChinese.append(CNUMBERS[y]); + suChinese.append("/"); + suChinese.append(CNUMBERS[x]); + } else { + result = x + y; + suChinese.append(CNUMBERS[x]); + suChinese.append("+"); + suChinese.append(CNUMBERS[y]); + } + } else if (randomoperands == 2) { + if (x >= y) { + result = x - y; + suChinese.append(CNUMBERS[x]); + suChinese.append("-"); + suChinese.append(CNUMBERS[y]); + } else { + result = y - x; + suChinese.append(CNUMBERS[y]); + suChinese.append("-"); + suChinese.append(CNUMBERS[x]); + } + } else { + result = x + y; + suChinese.append(CNUMBERS[x]); + suChinese.append("+"); + suChinese.append(CNUMBERS[y]); + } + suChinese.append("=?@" + result); + return suChinese.toString(); + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/ControllerConfig.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/ControllerConfig.java new file mode 100644 index 0000000..2a635e9 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/ControllerConfig.java @@ -0,0 +1,30 @@ +/** + * 对传入参数进行处理 + */ +package com.kelp.framework.config; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.springframework.beans.propertyeditors.CustomDateEditor; +import org.springframework.beans.propertyeditors.StringTrimmerEditor; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.InitBinder; + +@ControllerAdvice +public class ControllerConfig { + + /** + * 应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器 + * + * @param binder + */ + @InitBinder + public void initBinder(WebDataBinder binder) { + binder.registerCustomEditor(String.class,new StringTrimmerEditor(true)); + binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), false)); + //对敏感词不过滤 + //binder.registerCustomEditor(String.class, new ControllerTextEditor()); + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/ControllerTextEditor.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/ControllerTextEditor.java new file mode 100644 index 0000000..c2366dc --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/ControllerTextEditor.java @@ -0,0 +1,19 @@ +/** + * 对传入参数进行处理 + */ +package com.kelp.framework.config; + +import org.springframework.beans.propertyeditors.PropertiesEditor; +import org.springframework.web.bind.annotation.ControllerAdvice; + +import com.kelp.common.utils.security.SensitivewordUtils; + +@ControllerAdvice +public class ControllerTextEditor extends PropertiesEditor { + + @Override + public void setAsText(String text) throws IllegalArgumentException { + //对敏感字符进行过虑 + setValue(new SensitivewordUtils().replaceSensitiveWord(text, 1, "*")); + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/CronJob.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/CronJob.java new file mode 100644 index 0000000..c3f4be9 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/CronJob.java @@ -0,0 +1,13 @@ +package com.kelp.framework.config; + +import org.springframework.stereotype.Component; + +@Component +public class CronJob { + +// @Scheduled(cron = "${scheduler.interval}") +// public void task() { +// System.out.println("----------------------------"); +// } + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/DataSourceConfig.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/DataSourceConfig.java new file mode 100644 index 0000000..3a944d9 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/DataSourceConfig.java @@ -0,0 +1,75 @@ +package com.kelp.framework.config; + +import java.util.HashMap; +import java.util.Map; + +import javax.persistence.EntityManager; +import javax.sql.DataSource; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; +import com.kelp.common.enums.DataSourceType; +import com.kelp.framework.config.properties.DataSourceProperties; +import com.kelp.framework.datasource.DynamicDataSource; + +/** + * druid 配置多数据源 + * + * @author kelp + */ +@Configuration +public class DataSourceConfig { + @Bean + @ConfigurationProperties("spring.datasource.master") + public DataSource masterDataSource(DataSourceProperties druidProperties) { + DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); + return druidProperties.dataSource(dataSource); + } + + @Bean + @ConfigurationProperties("spring.datasource.slave") + @ConditionalOnProperty(prefix = "spring.datasource.slave", name = "enabled", havingValue = "true") + public DataSource slaveDataSource(DataSourceProperties druidProperties) { + DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); + return druidProperties.dataSource(dataSource); + } + + @Bean(name = "dynamicDataSource") + @Primary + public DynamicDataSource dataSource(DataSource masterDataSource, DataSource slaveDataSource) { + Map targetDataSources = new HashMap<>(); + targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource); + targetDataSources.put(DataSourceType.SLAVE.name(), slaveDataSource); + return new DynamicDataSource(masterDataSource, targetDataSources); + } + + @Primary + @Bean(name = "entityManager") + public EntityManager entityManager(EntityManagerFactoryBuilder builder,DynamicDataSource dynamicDataSource) { + return entityManagerFactory(builder,dynamicDataSource).getObject().createEntityManager(); + } + + @Primary + @Bean(name = "entityManagerFactory") + public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder,DynamicDataSource dynamicDataSource) { + return builder.dataSource(dynamicDataSource) + .packages("com.kelp.zhishu.entity","com.kelp.plat.entity","com.kelp.biz.entity","com.kelp.business.entity","com.kelp.jwy.entity","com.kelp.crm.entity") // 设置实体类所在位置 + .persistenceUnit("persistenceUnit").build(); + } + + @Primary + @Bean(name = "transactionManager") + public PlatformTransactionManager transactionManager(EntityManagerFactoryBuilder builder,DynamicDataSource dynamicDataSource) { + return new JpaTransactionManager(entityManagerFactory(builder,dynamicDataSource).getObject()); + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/ElasticSearchConfig.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/ElasticSearchConfig.java new file mode 100644 index 0000000..e540e7f --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/ElasticSearchConfig.java @@ -0,0 +1,122 @@ +package com.kelp.framework.config; + +import org.apache.http.HttpHost; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.CredentialsProvider; +import org.apache.http.impl.client.BasicCredentialsProvider; +import org.elasticsearch.client.RestClient; +import org.elasticsearch.client.RestClientBuilder; +import org.elasticsearch.client.RestHighLevelClient; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 验证码配置 + * + * @author kelp + */ +@Configuration +public class ElasticSearchConfig { + + /** + * http连接超时时间 + */ + @Value("${elasticsearch.connectTimeout}") + private String connectTimeout; + + /** + * socket连接超时时间 + */ + @Value("${elasticsearch.socketTimeout}") + private String socketTimeout; + + /** + * 获取连接的超时时间 + */ + @Value("${elasticsearch.connectionRequestTimeout}") + private String connectionRequestTimeout; + + /** + * 最大连接数 + */ + @Value("${elasticsearch.maxConnTotal}") + private String maxConnTotal; + + /** + * 最大路由连接数 + */ + @Value("${elasticsearch.maxConnPerRoute}") + private String maxConnPerRoute; + + /** + * 用户名 + */ + @Value("${elasticsearch.username}") + private String userName; + + /** + * 密码 + */ + @Value("${elasticsearch.password}") + private String password; + + /** + * 协议 + */ + @Value("${elasticsearch.protocol}") + private String protocol; + + /** + * http访问路径 + */ + @Value("${elasticsearch.hosts}") + private String httpHosts; + + @Bean + public RestHighLevelClient restHighLevelClient() { + final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); + credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(userName, password)); + + // 初始化ES客户端的构造器 + RestClientBuilder builder = RestClient.builder(httpHosts()); + + // 异步的请求配置 + builder.setRequestConfigCallback(builder_ -> { + // http连接超时时间 默认-1 + builder_.setConnectTimeout(Integer.parseInt(connectTimeout)); + // socket连接超时时间 + builder_.setSocketTimeout(Integer.parseInt(socketTimeout)); + // 获取连接的超时时间 默认-1 + builder_.setConnectionRequestTimeout(Integer.parseInt(connectionRequestTimeout)); + return builder_; + }); + // 异步的httpclient连接数配置 + builder.setHttpClientConfigCallback(httpAsyncClientBuilder -> { + // 最大连接数 + httpAsyncClientBuilder.setMaxConnTotal(Integer.parseInt(maxConnTotal)); + // 最大路由连接数 + httpAsyncClientBuilder.setMaxConnPerRoute(Integer.parseInt(maxConnPerRoute)); + // 赋予连接凭证 + httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider); + return httpAsyncClientBuilder; + }); + return new RestHighLevelClient(builder); + } + + /** + * 为了应对集群部署的es,使用以下写法,返回HttpHost数组 + */ + private HttpHost[] httpHosts() { + String[] hosts = httpHosts.split(","); + HttpHost[] httpHosts = new HttpHost[hosts.length]; + for (int i = 0; i < hosts.length; i++) { + String ip = hosts[i].split(":")[0]; + int port = Integer.parseInt(hosts[i].split(":")[1]); + httpHosts[i] = new HttpHost(ip, port, protocol); + } + return httpHosts; + } + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/GlobalExceptionConfig.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/GlobalExceptionConfig.java new file mode 100644 index 0000000..de3c460 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/GlobalExceptionConfig.java @@ -0,0 +1,101 @@ +/** + * 这个类需要注意的是,处理Json及View异常,其方法的捕获的异常类不能相同,这样会给Spring造成歧义,不知道调用哪个方法 + * 建议自定义异常类进行处理这样的问题 + */ +package com.kelp.framework.config; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartException; +import org.springframework.web.servlet.ModelAndView; + +import com.kelp.framework.exception.E_NOGrantException; +import com.kelp.framework.exception.E_NOLoginException; +import com.kelp.framework.exception.M_NOGrantException; +import com.kelp.framework.exception.M_NOLoginException; +import com.kelp.framework.exception.P_NOGrantException; +import com.kelp.framework.exception.P_NOLoginException; + +@ControllerAdvice +public class GlobalExceptionConfig { + + @Value("${file.max-file-size}") + private String maxFileSize; + + @ResponseBody + @ExceptionHandler(M_NOLoginException.class) + public Map m_nologinExceptionHandler(M_NOLoginException e) { + Map map = new HashMap<>(); + map.put("code", e.getCode()); + map.put("msg", e.getMessage()); + return map; + } + + @ResponseBody + @ExceptionHandler(M_NOGrantException.class) + public Map m_nograntExceptionHandler(M_NOGrantException e) { + Map map = new HashMap<>(); + map.put("code", e.getCode()); + map.put("msg", e.getMessage()); + return map; + } + + @ResponseBody + @ExceptionHandler(MultipartException.class) + public Map fileUploadExceptionHandler(MultipartException e) { + Map map = new HashMap<>(); + map.put("result", false); + map.put("message", "上传文件超出不能超过" + maxFileSize); + return map; + } + + @ExceptionHandler(E_NOLoginException.class) + public ModelAndView e_nologinExceptionHandler(E_NOLoginException e) { + Map map = new HashMap<>(); + map.put("code", e.getCode()); + map.put("msg", e.getMessage()); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("/crm/login"); + modelAndView.addObject(map); + return modelAndView; + } + + @ExceptionHandler(E_NOGrantException.class) + public ModelAndView e_nograntExceptionHandler(E_NOGrantException e) { + Map map = new HashMap<>(); + map.put("code", e.getCode()); + map.put("msg", e.getMessage()); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("/crm/login"); + modelAndView.addObject(map); + return modelAndView; + } + + @ExceptionHandler(P_NOLoginException.class) + public ModelAndView p_nologinExceptionHandler(P_NOLoginException e) { + Map map = new HashMap<>(); + map.put("code", e.getCode()); + map.put("msg", e.getMessage()); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("/plat/login"); + modelAndView.addObject(map); + return modelAndView; + } + + @ExceptionHandler(P_NOGrantException.class) + public ModelAndView p_nograntExceptionHandler(P_NOGrantException e) { + Map map = new HashMap<>(); + map.put("code", e.getCode()); + map.put("msg", e.getMessage()); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("/plat/login"); + modelAndView.addObject(map); + return modelAndView; + } + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/I18nConfig.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/I18nConfig.java new file mode 100644 index 0000000..b4dc821 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/I18nConfig.java @@ -0,0 +1,39 @@ +package com.kelp.framework.config; + +import java.util.Locale; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.LocaleResolver; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; +import org.springframework.web.servlet.i18n.SessionLocaleResolver; + +/** + * 资源文件配置加载 + * + * @author kelp + */ +@Configuration +public class I18nConfig implements WebMvcConfigurer { + @Bean + public LocaleResolver localeResolver() { + SessionLocaleResolver slr = new SessionLocaleResolver(); + // 默认语言 + slr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE); + return slr; + } + + @Bean + public LocaleChangeInterceptor localeChangeInterceptor() { + LocaleChangeInterceptor lci = new LocaleChangeInterceptor(); + // 参数名 + lci.setParamName("lang"); + return lci; + } + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(localeChangeInterceptor()); + } +} \ No newline at end of file diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/IdWorkerConfig.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/IdWorkerConfig.java new file mode 100644 index 0000000..d79dd04 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/IdWorkerConfig.java @@ -0,0 +1,19 @@ +package com.kelp.framework.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.kelp.common.utils.IdWorker; + +/** + * 雪花算法生成器 + * + * @author kelp + */ +@Configuration +public class IdWorkerConfig { + @Bean + public IdWorker idWorker() { + return new IdWorker(1,1,1); + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/InterceptorConfig.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/InterceptorConfig.java new file mode 100644 index 0000000..1d2dd3f --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/InterceptorConfig.java @@ -0,0 +1,78 @@ +package com.kelp.framework.config; + +import java.util.List; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.StringHttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.kelp.framework.interceptor.EInterceptor; +import com.kelp.framework.interceptor.PApiInterceptor; +import com.kelp.framework.interceptor.PInterceptor; + +@Configuration +public class InterceptorConfig extends WebMvcConfigurationSupport { + + @Bean + public PApiInterceptor pApiInterceptor() { + return new PApiInterceptor(); + } + + @Bean + public PInterceptor pInterceptor() { + return new PInterceptor(); + } + + @Bean + public EInterceptor eInterceptor() { + return new EInterceptor(); + } + + + @Override + public void addInterceptors(InterceptorRegistry registry) { + + registry.addInterceptor(pApiInterceptor()).addPathPatterns("/api/p/**"); + + registry.addInterceptor(pInterceptor()).addPathPatterns("/plat/**").excludePathPatterns("/plat/index","/plat/login"); + + registry.addInterceptor(eInterceptor()).addPathPatterns("/crm/**").excludePathPatterns("/crm/index","/crm/login"); + } + + /** + * @param registry 配置静态资源放行 + */ + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); + } + + @Override + public void configureMessageConverters(List> converters) { + MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); + ObjectMapper objectMapper = new ObjectMapper(); + /** + * 序列换成json时,将所有的long变成string + * 因为js中得数字类型不能包含所有的java long值 + */ + SimpleModule simpleModule = new SimpleModule(); + simpleModule.addSerializer(Long.class, ToStringSerializer.instance); + simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); + objectMapper.registerModule(simpleModule); + jackson2HttpMessageConverter.setObjectMapper(objectMapper); + converters.add(jackson2HttpMessageConverter); + + StringHttpMessageConverter stringConverter = new StringHttpMessageConverter(); + stringConverter.setWriteAcceptCharset(false); + converters.add(stringConverter); + } + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/OSCacheFilterConfig.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/OSCacheFilterConfig.java new file mode 100644 index 0000000..36511e8 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/OSCacheFilterConfig.java @@ -0,0 +1,49 @@ +package com.kelp.framework.config; + +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.DispatcherType; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.opensymphony.oscache.web.filter.CacheFilter; + +/** + * Filter配置 + * + * @author kelp + */ +@Configuration +public class OSCacheFilterConfig { + @Value("${oscache.enabled}") + private String enabled; + + @Value("${oscache.excludes}") + private String excludes; + + @Value("${oscache.urlPatterns}") + private String urlPatterns; + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Bean + public FilterRegistrationBean oscacheFilterRegistration() { + FilterRegistrationBean registration = new FilterRegistrationBean(); + registration.setDispatcherTypes(DispatcherType.REQUEST); + registration.setFilter(new CacheFilter()); + registration.addUrlPatterns(StringUtils.split(urlPatterns, ",")); + registration.setName("oscacheFilter"); + registration.setOrder(Integer.MAX_VALUE); + Map initParameters = new HashMap(); + initParameters.put("excludes", excludes); + initParameters.put("enabled", enabled); + initParameters.put("time", "3600"); + initParameters.put("scope", "application"); + registration.setInitParameters(initParameters); + return registration; + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/OscacheManagerConfig.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/OscacheManagerConfig.java new file mode 100644 index 0000000..0453981 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/OscacheManagerConfig.java @@ -0,0 +1,37 @@ +package com.kelp.framework.config; + +import java.io.InputStream; +import java.util.Properties; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.opensymphony.oscache.general.GeneralCacheAdministrator; + +/** + * 验证码配置 + * + * @author kelp + */ +@Configuration +public class OscacheManagerConfig { + + private static final String URL_OSCACHE = "/oscache.properties"; + + @Bean(name = "oscacheManager") + public GeneralCacheAdministrator getOscacheBean() { + + try { + Properties properties = new Properties(); + // 使用InPutStream流读取properties文件 + InputStream in = OscacheManagerConfig.class.getResourceAsStream(URL_OSCACHE); + properties.load(in); + + return new GeneralCacheAdministrator(properties); + } catch (Exception e) { + return null; + } + + } + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/UrlRewriteFilterConfig.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/UrlRewriteFilterConfig.java new file mode 100644 index 0000000..d183ec9 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/UrlRewriteFilterConfig.java @@ -0,0 +1,32 @@ +package com.kelp.framework.config; + +import java.io.IOException; + +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.Resource; +import org.tuckey.web.filters.urlrewrite.Conf; +import org.tuckey.web.filters.urlrewrite.UrlRewriteFilter; + +@Configuration +public class UrlRewriteFilterConfig extends UrlRewriteFilter { + private static final String URL_REWRITE = "classpath:/urlrewrite.xml"; + + @Value(URL_REWRITE) + private Resource resource; + + // Override the loadUrlRewriter method, and write your own implementation + protected void loadUrlRewriter(FilterConfig filterConfig) throws ServletException { + try { + // Create a UrlRewrite Conf object with the injected resource + Conf conf = new Conf(filterConfig.getServletContext(), resource.getInputStream(), resource.getFilename(), + "kelp-urlrewrite"); + checkConf(conf); + } catch (IOException ex) { + throw new ServletException("Unable to load URL rewrite configuration file from " + URL_REWRITE, ex); + } + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/XSSFilterConfig.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/XSSFilterConfig.java new file mode 100644 index 0000000..5ae508a --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/XSSFilterConfig.java @@ -0,0 +1,47 @@ +package com.kelp.framework.config; + +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.DispatcherType; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.kelp.common.xss.XssFilter; + +/** + * Filter配置 + * + * @author kelp + */ +@Configuration +public class XSSFilterConfig { + @Value("${xss.enabled}") + private String enabled; + + @Value("${xss.excludes}") + private String excludes; + + @Value("${xss.urlPatterns}") + private String urlPatterns; + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Bean + public FilterRegistrationBean xssFilterRegistration() { + FilterRegistrationBean registration = new FilterRegistrationBean(); + registration.setDispatcherTypes(DispatcherType.REQUEST); + registration.setFilter(new XssFilter()); + registration.addUrlPatterns(StringUtils.split(urlPatterns, ",")); + registration.setName("xssFilter"); + registration.setOrder(Integer.MAX_VALUE - 1); + Map initParameters = new HashMap(); + initParameters.put("excludes", excludes); + initParameters.put("enabled", enabled); + registration.setInitParameters(initParameters); + return registration; + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/config/properties/DataSourceProperties.java b/ksafepack-framework/src/main/java/com/kelp/framework/config/properties/DataSourceProperties.java new file mode 100644 index 0000000..80d4b06 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/config/properties/DataSourceProperties.java @@ -0,0 +1,78 @@ +package com.kelp.framework.config.properties; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import com.alibaba.druid.pool.DruidDataSource; + +/** + * druid 配置属性 + * + * @author kelp + */ +@Configuration +public class DataSourceProperties { + @Value("${spring.datasource.initialSize}") + private int initialSize; + + @Value("${spring.datasource.minIdle}") + private int minIdle; + + @Value("${spring.datasource.maxActive}") + private int maxActive; + + @Value("${spring.datasource.maxWait}") + private int maxWait; + + @Value("${spring.datasource.timeBetweenEvictionRunsMillis}") + private int timeBetweenEvictionRunsMillis; + + @Value("${spring.datasource.minEvictableIdleTimeMillis}") + private int minEvictableIdleTimeMillis; + + @Value("${spring.datasource.maxEvictableIdleTimeMillis}") + private int maxEvictableIdleTimeMillis; + + @Value("${spring.datasource.validationQuery}") + private String validationQuery; + + @Value("${spring.datasource.testWhileIdle}") + private boolean testWhileIdle; + + @Value("${spring.datasource.testOnBorrow}") + private boolean testOnBorrow; + + @Value("${spring.datasource.testOnReturn}") + private boolean testOnReturn; + + public DruidDataSource dataSource(DruidDataSource datasource) { + /** 配置初始化大小、最小、最大 */ + datasource.setInitialSize(initialSize); + datasource.setMaxActive(maxActive); + datasource.setMinIdle(minIdle); + + /** 配置获取连接等待超时的时间 */ + datasource.setMaxWait(maxWait); + + /** 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 */ + datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); + + /** 配置一个连接在池中最小、最大生存的时间,单位是毫秒 */ + datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); + datasource.setMaxEvictableIdleTimeMillis(maxEvictableIdleTimeMillis); + + /** + * 用来检测连接是否有效的sql,要求是一个查询语句,常用select + * 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。 + */ + datasource.setValidationQuery(validationQuery); + /** + * 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 + */ + datasource.setTestWhileIdle(testWhileIdle); + /** 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 */ + datasource.setTestOnBorrow(testOnBorrow); + /** 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 */ + datasource.setTestOnReturn(testOnReturn); + return datasource; + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/datasource/DynamicDataSource.java b/ksafepack-framework/src/main/java/com/kelp/framework/datasource/DynamicDataSource.java new file mode 100644 index 0000000..e1dffc0 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/datasource/DynamicDataSource.java @@ -0,0 +1,25 @@ +package com.kelp.framework.datasource; + +import java.util.Map; + +import javax.sql.DataSource; +import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; +import com.kelp.common.config.datasource.DynamicDataSourceContextHolder; + +/** + * 动态数据源 + * + * @author kelp + */ +public class DynamicDataSource extends AbstractRoutingDataSource { + public DynamicDataSource(DataSource defaultTargetDataSource, Map targetDataSources) { + super.setDefaultTargetDataSource(defaultTargetDataSource); + super.setTargetDataSources(targetDataSources); + super.afterPropertiesSet(); + } + + @Override + protected Object determineCurrentLookupKey() { + return DynamicDataSourceContextHolder.getDataSourceType(); + } +} \ No newline at end of file diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/exception/E_NOGrantException.java b/ksafepack-framework/src/main/java/com/kelp/framework/exception/E_NOGrantException.java new file mode 100644 index 0000000..7094d93 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/exception/E_NOGrantException.java @@ -0,0 +1,16 @@ +package com.kelp.framework.exception; + +import com.kelp.common.exception.BaseException; + +public class E_NOGrantException extends BaseException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public E_NOGrantException(String code,String msg) { + super(code, msg); + } + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/exception/E_NOLoginException.java b/ksafepack-framework/src/main/java/com/kelp/framework/exception/E_NOLoginException.java new file mode 100644 index 0000000..1d7089c --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/exception/E_NOLoginException.java @@ -0,0 +1,17 @@ +package com.kelp.framework.exception; + +import com.kelp.common.exception.BaseException; + +public class E_NOLoginException extends BaseException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public E_NOLoginException(String code,String msg) { + super(code, msg); + } + + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/exception/M_NOGrantException.java b/ksafepack-framework/src/main/java/com/kelp/framework/exception/M_NOGrantException.java new file mode 100644 index 0000000..32564ca --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/exception/M_NOGrantException.java @@ -0,0 +1,16 @@ +package com.kelp.framework.exception; + +import com.kelp.common.exception.BaseException; + +public class M_NOGrantException extends BaseException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public M_NOGrantException(String code,String msg) { + super(code, msg); + } + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/exception/M_NOLoginException.java b/ksafepack-framework/src/main/java/com/kelp/framework/exception/M_NOLoginException.java new file mode 100644 index 0000000..9627e81 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/exception/M_NOLoginException.java @@ -0,0 +1,16 @@ +package com.kelp.framework.exception; + +import com.kelp.common.exception.BaseException; + +public class M_NOLoginException extends BaseException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public M_NOLoginException(String code,String msg) { + super(code, msg); + } + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/exception/P_NOGrantException.java b/ksafepack-framework/src/main/java/com/kelp/framework/exception/P_NOGrantException.java new file mode 100644 index 0000000..fd69aba --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/exception/P_NOGrantException.java @@ -0,0 +1,16 @@ +package com.kelp.framework.exception; + +import com.kelp.common.exception.BaseException; + +public class P_NOGrantException extends BaseException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public P_NOGrantException(String code,String msg) { + super(code, msg); + } + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/exception/P_NOLoginException.java b/ksafepack-framework/src/main/java/com/kelp/framework/exception/P_NOLoginException.java new file mode 100644 index 0000000..457ea3a --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/exception/P_NOLoginException.java @@ -0,0 +1,16 @@ +package com.kelp.framework.exception; + +import com.kelp.common.exception.BaseException; + +public class P_NOLoginException extends BaseException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public P_NOLoginException(String code,String msg) { + super(code, msg); + } + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/interceptor/EInterceptor.java b/ksafepack-framework/src/main/java/com/kelp/framework/interceptor/EInterceptor.java new file mode 100644 index 0000000..423fa4b --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/interceptor/EInterceptor.java @@ -0,0 +1,142 @@ +/** + * 解决nginx负载均衡问题 + */ +package com.kelp.framework.interceptor; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import com.kelp.common.config.RedisBean; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AuthenticationBean; +import com.kelp.common.utils.CookieUtil; +import com.kelp.common.utils.jwt.JwtUtil; +import com.kelp.framework.exception.E_NOGrantException; +import com.kelp.framework.exception.E_NOLoginException; +import com.kelp.plat.service.E_RFService; +import com.opensymphony.oscache.util.StringUtil; + +public class EInterceptor extends HandlerInterceptorAdapter{ + + private static Logger log = LoggerFactory.getLogger(EInterceptor.class); + + @Autowired + private RedisBean redisBean; + + @Resource + private E_RFService rfService; + + @Value("${token.alive.time}") + private int tokenLiveCount; + + @Override + public boolean preHandle(HttpServletRequest request, + HttpServletResponse response, Object handler) throws Exception { + + System.out.println("enterprise interceptor ----- "); + + String url = request.getRequestURL().toString(); + if (url.lastIndexOf("crm") > 0) { + url = url.substring(url.lastIndexOf("crm") - 1); + } + + System.out.println("enterprise u r accessing : " + url); + + log.error("enterprise u r accessing : " + url); + + String token = CookieUtil.getCookie(request, "token"); + + //如果没有token则没有登录 + if(StringUtil.isEmpty(token)){ + log.error("accessed without token."); + throw new E_NOLoginException("EL-001","accessed without token."); + } + + //验证token是否合法,不合法则登录 + if(!JwtUtil.verify(token, KeyConstant.JWTKEY)){ + System.out.println("the token is : expired..."); + log.error("the token is : expired..."); + throw new E_NOLoginException("EL-002","the token has expired."); + } + + String accountId = JwtUtil.getId(token); + String host = JwtUtil.getHost(token); + + //判断是否在另外的设备上登录 + if(!request.getSession().getId().equals(host)){ + System.out.println("u were logined on anather device."); + log.error("u logined on anather device."); + throw new E_NOLoginException("EL-003","u logined on anather device."); + } + + //如果redis中没有本次访问的token或本次访问的token与redis中不同 + if(null == redisBean.hget(accountId, "e_token") || !redisBean.hget(accountId, "e_token").equals(token)){ + System.out.println("there is no token in redis."); + log.error("there is no token in redis."); + throw new E_NOLoginException("EL-004","the token don't match token in at."); + } + + //从redis中获取departmentId + String departmentId = redisBean.hget(accountId, "e_department"); + //如果没有找到,则视为没有登录 + if(departmentId == null){ + System.out.println("ur department is not valid."); + log.error("ur department is not valid."); + throw new E_NOLoginException("EL-005","the token of department has expired."); + } + + //从redis中获取roleId + String roleId = redisBean.hget(accountId, "e_role"); + //如果没有找到,则视为没有登录 + if(roleId == null){ + System.out.println("ur role is not valid."); + log.error("ur role is not valid."); + throw new E_NOLoginException("EL-006","the token of role has expired."); + } + + + //判断此account在本系统中的权限 + if(!AuthenticationBean.getERfMap().containsKey(roleId)){ + AuthenticationBean.getERfMap().put(roleId, rfService.getSRFs(roleId)); + } + + if(!AuthenticationBean.getERfMap().get(roleId).containsKey(url)){ + System.out.println(url +",u r not granted to access this url."); + log.error("u r not granted to access this url."); + throw new E_NOGrantException("EG-001","u r not granted to access this url."); + } + + //更新token + token = JwtUtil.sign(accountId, request.getSession().getId(), KeyConstant.JWTKEY); + //更新redis + redisBean.hset(accountId, "e_token",token); + redisBean.hset(accountId, "e_role",roleId); + redisBean.hset(accountId, "e_department",departmentId); + //更新cookie + CookieUtil.editCookie(request, response, "token", token); + + return true; + } + + @Override + public void afterCompletion(HttpServletRequest request, + HttpServletResponse response, Object handler, Exception ex) + throws Exception { + super.afterCompletion(request, response, handler, ex); + } + + @Override + public void postHandle(HttpServletRequest request, + HttpServletResponse response, Object handler, + ModelAndView modelAndView) throws Exception { + super.postHandle(request, response, handler, modelAndView); + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/interceptor/PApiInterceptor.java b/ksafepack-framework/src/main/java/com/kelp/framework/interceptor/PApiInterceptor.java new file mode 100644 index 0000000..81662c3 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/interceptor/PApiInterceptor.java @@ -0,0 +1,158 @@ +/** + * 解决nginx负载均衡问题,plat 小程序使用的API + */ +package com.kelp.framework.interceptor; + +import java.io.IOException; +import java.io.PrintWriter; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.kelp.common.config.RedisBean; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AuthenticationBean; +import com.kelp.common.utils.jwt.JwtUtil; +import com.kelp.framework.palt.entity.KError; +import com.kelp.plat.service.RFService; +import com.opensymphony.oscache.util.StringUtil; + +public class PApiInterceptor extends HandlerInterceptorAdapter{ + + private static Logger log = LoggerFactory.getLogger(PApiInterceptor.class); + + @Autowired + private RedisBean redisBean; + + @Resource + private RFService rfService; + + @Override + public boolean preHandle(HttpServletRequest request, + HttpServletResponse response, Object handler) throws Exception { + + System.out.println("plat api interceptor ----- "); + + String url = request.getRequestURL().toString(); + //放行不需要登录的 + if (url.lastIndexOf("api/p/n/") > 0) { + url = url.substring(url.lastIndexOf("api/p/n/") - 1); + System.out.println("plat api u r accessing : " + url); + return true; + } + + if (url.lastIndexOf("api/p/") > 0) { + url = url.substring(url.lastIndexOf("api/p/") - 1); + } + + System.out.println("plat api u r accessing : " + url); + + log.error("plat u r accessing : " + url); + + String token = request.getHeader("token"); + + System.out.println("token ===== " + token); + + //如果没有token则没有登录 + if(StringUtil.isEmpty(token)){ + error(response, "10", "the token is invalid."); + System.out.println("the token is invalid."); + log.error("accessed without token."); + return false; + } + + //验证token是否合法,不合法则登录 + if(!JwtUtil.verify(token, KeyConstant.JWTKEY)){ + error(response, "11", "the token is : expired..."); + System.out.println("the token is : expired..."); + log.error("the token is : expired..."); + return false; + } + + String accountId = JwtUtil.getId(token); + + //判断是否在另外的设备上登录,由于微信有可能出错,这里不再判断 +// if(!request.getSession().getId().equals(host)){ +// error(response, "12", "u were logined on anather device."); +// System.out.println("u were logined on anather device."); +// log.error("u were logined on anather device."); +// return false; +// } + + //如果redis中没有本次访问的token或本次访问的token与redis中不同 + if(null == redisBean.hget(accountId, "p_token") || !redisBean.hget(accountId, "p_token").equals(token)){ + error(response, "13", "there is no token in redis."); + System.out.println("there is no token in redis."); + log.error("there is no token in redis."); + return false; + } + + //从redis中获取roleId + String roleId = redisBean.hget(accountId, "p_role"); + //如果没有找到,则视为没有登录 + if(roleId == null){ + error(response, "14", "ur role is not valid."); + System.out.println("ur role is not valid."); + log.error("ur role is not valid."); + return false; + } + + //判断此account在本系统中的权限 + if(!AuthenticationBean.getPRfMap().containsKey(roleId)){ + AuthenticationBean.getPRfMap().put(roleId, rfService.getSRFs(roleId)); + } + + if(!AuthenticationBean.getPRfMap().get(roleId).containsKey(url)){ + error(response, "15", "u r not granted to access this url."); + System.out.println(url +",u r not granted to access this url."); + log.error("u r not granted to access this url."); + return false; + } + + //更新token + token = JwtUtil.sign(accountId, request.getSession().getId(), KeyConstant.JWTKEY); + //更新redis + redisBean.hset(accountId, "p_token",token); + redisBean.hset(accountId, "p_role",roleId); + + //更新header + response.setHeader("token", token); + + return true; + + } + + private void error(HttpServletResponse response, String code, String message) throws IOException { + KError rst = new KError(); + rst.setCode(code); + rst.setMessage(message); + response.setContentType("application/json"); + PrintWriter out = response.getWriter(); + ObjectMapper mapper = new ObjectMapper(); + String jsonOfRST = "{\"error\":" + mapper.writeValueAsString(rst) + "}"; + out.print(jsonOfRST); + out.flush(); + } + + @Override + public void afterCompletion(HttpServletRequest request, + HttpServletResponse response, Object handler, Exception ex) + throws Exception { + super.afterCompletion(request, response, handler, ex); + } + + @Override + public void postHandle(HttpServletRequest request, + HttpServletResponse response, Object handler, + ModelAndView modelAndView) throws Exception { + super.postHandle(request, response, handler, modelAndView); + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/interceptor/PInterceptor.java b/ksafepack-framework/src/main/java/com/kelp/framework/interceptor/PInterceptor.java new file mode 100644 index 0000000..1752bba --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/interceptor/PInterceptor.java @@ -0,0 +1,153 @@ +/** + * 解决nginx负载均衡问题 + */ +package com.kelp.framework.interceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import com.kelp.common.config.RedisBean; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AuthenticationBean; +import com.kelp.common.utils.CookieUtil; +import com.kelp.common.utils.jwt.JwtUtil; +import com.kelp.framework.exception.P_NOGrantException; +import com.kelp.framework.exception.P_NOLoginException; +import com.kelp.plat.service.RFService; +import com.opensymphony.oscache.util.StringUtil; + +public class PInterceptor extends HandlerInterceptorAdapter{ + + private static Logger log = LoggerFactory.getLogger(PInterceptor.class); + + @Autowired + private RedisBean redisBean; + + @Autowired + private RFService rfService; + + @Value("${token.alive.time}") + private int tokenLiveCount; + + @Override + public boolean preHandle(HttpServletRequest request, + HttpServletResponse response, Object handler) throws Exception { + + System.out.println("mis interceptor ----- "); + + String url = request.getRequestURL().toString(); + if (url.lastIndexOf("plat") > 0) { + url = url.substring(url.lastIndexOf("plat") - 1); + } + + System.out.println("mis u r accessing : " + url); + + log.error("mis u r accessing : " + url); + + String token = CookieUtil.getCookie(request, "token"); + + //如果没有token则没有登录 + if(StringUtil.isEmpty(token)){ + log.error("accessed without token."); + throw new P_NOLoginException("PL-001","accessed without token."); + } + + //验证token是否合法,不合法则登录 + if(!JwtUtil.verify(token, KeyConstant.JWTKEY)){ + System.out.println("the token is : expired..."); + log.error("the token is : expired..."); + throw new P_NOLoginException("PL-002","the token has expired."); + } + + String accountId = JwtUtil.getId(token); + String host = JwtUtil.getHost(token); + //判断是否在另外的设备上登录 + if(!request.getSession().getId().equals(host)){ + System.out.println("u were logined on anather device."); + log.error("u logined on anather device."); + throw new P_NOLoginException("PL-003","u logined on anather device."); + } + + //如果redis中没有本次访问的token或本次访问的token与redis中不同 + String tc = redisBean.hget(accountId, "mis_token"); + String tcb = redisBean.hget(accountId, "mis_token_backup"); + if(tc == null || tcb == null) { + System.out.println("there is no token in redis."); + log.error("there is no token in redis."); + throw new P_NOLoginException("PL-004","the token don't match token in at."); + } + String []tcs = tc.split("\\|"); + String []tcbs = tcb.split("\\|"); + if(tcs.length != 2 || tcbs.length != 2 || (!tcs[0].equals(token) && !tcbs[0].equals(token))){ + System.out.println("there is no token in redis."); + log.error("there is no token in redis."); + throw new P_NOLoginException("PL-004","the token don't match token in at."); + } + + //从redis中获取roleId + String roleId = redisBean.hget(accountId, "mis_role"); + //如果没有找到,则视为没有登录 + if(roleId == null){ + System.out.println("ur role is not valid."); + log.error("ur role is not valid."); + throw new P_NOLoginException("PL-005","the token of role has expired."); + } + + //判断此account在本系统中的权限 + if(!AuthenticationBean.getPRfMap().containsKey(roleId)){ + AuthenticationBean.getPRfMap().put(roleId, rfService.getSRFs(roleId)); + } + + if(!AuthenticationBean.getPRfMap().get(roleId).containsKey(url)){ + System.out.println(url +",u r not granted to access this url."); + log.error("u r not granted to access this url."); + throw new P_NOGrantException("PG-001","u r not granted to access this url."); + } + + //前面半桶 + int tokenLiveCount_ = Integer.valueOf(tcs[1]); + if(tokenLiveCount_ > (tokenLiveCount/2)) { + //更新redis + redisBean.hset(accountId, "mis_token",tcs[0] + "|" + (--tokenLiveCount_)); + } else { + //更新token + token = JwtUtil.sign(accountId, request.getSession().getId(), KeyConstant.JWTKEY); + redisBean.hset(accountId, "mis_token",token + "|" + tokenLiveCount); + } + + //另外半桶 + int tokenLiveCount4Backup_ = Integer.valueOf(tcbs[1]); + if(tokenLiveCount4Backup_ > 0) { + redisBean.hset(accountId, "mis_token_backup",tcbs[0] + "|" + (--tokenLiveCount4Backup_)); + } else { + redisBean.hset(accountId, "mis_token_backup",tcs[0] + "|" + tokenLiveCount_); + } + + redisBean.hset(accountId, "mis_role",roleId); + //更新cookie + CookieUtil.editCookie(request, response, "token", token); + + return true; + } + + @Override + public void afterCompletion(HttpServletRequest request, + HttpServletResponse response, Object handler, Exception ex) + throws Exception { + super.afterCompletion(request, response, handler, ex); + } + + @Override + public void postHandle(HttpServletRequest request, + HttpServletResponse response, Object handler, + ModelAndView modelAndView) throws Exception { + super.postHandle(request, response, handler, modelAndView); + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/KError.java b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/KError.java new file mode 100644 index 0000000..91c205f --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/KError.java @@ -0,0 +1,32 @@ +package com.kelp.framework.palt.entity; + + + +public class KError { + + /** + * 返回码 + */ + private String code; + + /** + * 返回消息 + */ + private String message; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/Server.java b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/Server.java new file mode 100644 index 0000000..8eff1f6 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/Server.java @@ -0,0 +1,216 @@ +package com.kelp.framework.palt.entity; + +import java.net.UnknownHostException; +import java.util.LinkedList; +import java.util.List; +import java.util.Properties; +import com.kelp.common.utils.Arith; +import com.kelp.common.utils.IpUtils; +import com.kelp.framework.palt.entity.server.Cpu; +import com.kelp.framework.palt.entity.server.Jvm; +import com.kelp.framework.palt.entity.server.Mem; +import com.kelp.framework.palt.entity.server.Sys; +import com.kelp.framework.palt.entity.server.SysFile; + +import oshi.SystemInfo; +import oshi.hardware.CentralProcessor; +import oshi.hardware.CentralProcessor.TickType; +import oshi.hardware.GlobalMemory; +import oshi.hardware.HardwareAbstractionLayer; +import oshi.software.os.FileSystem; +import oshi.software.os.OSFileStore; +import oshi.software.os.OperatingSystem; +import oshi.util.Util; + +/** + * 服务器相关信息 + * + * @author kelp + */ +public class Server { + + private static final int OSHI_WAIT_SECOND = 1000; + + /** + * CPU相关信息 + */ + private Cpu cpu = new Cpu(); + + /** + * 內存相关信息 + */ + private Mem mem = new Mem(); + + /** + * JVM相关信息 + */ + private Jvm jvm = new Jvm(); + + /** + * 服务器相关信息 + */ + private Sys sys = new Sys(); + + /** + * 磁盘相关信息 + */ + private List sysFiles = new LinkedList(); + + public Cpu getCpu() { + return cpu; + } + + public void setCpu(Cpu cpu) { + this.cpu = cpu; + } + + public Mem getMem() { + return mem; + } + + public void setMem(Mem mem) { + this.mem = mem; + } + + public Jvm getJvm() { + return jvm; + } + + public void setJvm(Jvm jvm) { + this.jvm = jvm; + } + + public Sys getSys() { + return sys; + } + + public void setSys(Sys sys) { + this.sys = sys; + } + + public List getSysFiles() { + return sysFiles; + } + + public void setSysFiles(List sysFiles) { + this.sysFiles = sysFiles; + } + + public void copyTo() throws Exception { + SystemInfo si = new SystemInfo(); + HardwareAbstractionLayer hal = si.getHardware(); + + setCpuInfo(hal.getProcessor()); + + setMemInfo(hal.getMemory()); + + setSysInfo(); + + setJvmInfo(); + + setSysFiles(si.getOperatingSystem()); + } + + /** + * 设置CPU信息 + */ + private void setCpuInfo(CentralProcessor processor) { + // CPU信息 + long[] prevTicks = processor.getSystemCpuLoadTicks(); + Util.sleep(OSHI_WAIT_SECOND); + long[] ticks = processor.getSystemCpuLoadTicks(); + long nice = ticks[TickType.NICE.getIndex()] - prevTicks[TickType.NICE.getIndex()]; + long irq = ticks[TickType.IRQ.getIndex()] - prevTicks[TickType.IRQ.getIndex()]; + long softirq = ticks[TickType.SOFTIRQ.getIndex()] - prevTicks[TickType.SOFTIRQ.getIndex()]; + long steal = ticks[TickType.STEAL.getIndex()] - prevTicks[TickType.STEAL.getIndex()]; + long cSys = ticks[TickType.SYSTEM.getIndex()] - prevTicks[TickType.SYSTEM.getIndex()]; + long user = ticks[TickType.USER.getIndex()] - prevTicks[TickType.USER.getIndex()]; + long iowait = ticks[TickType.IOWAIT.getIndex()] - prevTicks[TickType.IOWAIT.getIndex()]; + long idle = ticks[TickType.IDLE.getIndex()] - prevTicks[TickType.IDLE.getIndex()]; + long totalCpu = user + nice + cSys + idle + iowait + irq + softirq + steal; + cpu.setCpuNum(processor.getLogicalProcessorCount()); + cpu.setTotal(totalCpu); + cpu.setSys(cSys); + cpu.setUsed(user); + cpu.setWait(iowait); + cpu.setFree(idle); + } + + /** + * 设置内存信息 + */ + private void setMemInfo(GlobalMemory memory) { + mem.setTotal(memory.getTotal()); + mem.setUsed(memory.getTotal() - memory.getAvailable()); + mem.setFree(memory.getAvailable()); + } + + /** + * 设置服务器信息 + */ + private void setSysInfo() { + Properties props = System.getProperties(); + sys.setComputerName(IpUtils.getHostName()); + sys.setComputerIp(IpUtils.getHostIp()); + sys.setOsName(props.getProperty("os.name")); + sys.setOsArch(props.getProperty("os.arch")); + sys.setUserDir(props.getProperty("user.dir")); + } + + /** + * 设置Java虚拟机 + */ + private void setJvmInfo() throws UnknownHostException { + Properties props = System.getProperties(); + jvm.setTotal(Runtime.getRuntime().totalMemory()); + jvm.setMax(Runtime.getRuntime().maxMemory()); + jvm.setFree(Runtime.getRuntime().freeMemory()); + jvm.setVersion(props.getProperty("java.version")); + jvm.setHome(props.getProperty("java.home")); + } + + /** + * 设置磁盘信息 + */ + private void setSysFiles(OperatingSystem os) { + FileSystem fileSystem = os.getFileSystem(); + OSFileStore[] fsArray = fileSystem.getFileStores(); + for (OSFileStore fs : fsArray) { + long free = fs.getUsableSpace(); + long total = fs.getTotalSpace(); + long used = total - free; + SysFile sysFile = new SysFile(); + sysFile.setDirName(fs.getMount()); + sysFile.setSysTypeName(fs.getType()); + sysFile.setTypeName(fs.getName()); + sysFile.setTotal(convertFileSize(total)); + sysFile.setFree(convertFileSize(free)); + sysFile.setUsed(convertFileSize(used)); + sysFile.setUsage(Arith.mul(Arith.div(used, total, 4), 100)); + sysFiles.add(sysFile); + } + } + + /** + * 字节转换 + * + * @param size 字节大小 + * @return 转换后值 + */ + public String convertFileSize(long size) { + long kb = 1024; + long mb = kb * 1024; + long gb = mb * 1024; + if (size >= gb) { + return String.format("%.1f GB", (float) size / gb); + } else if (size >= mb) { + float f = (float) size / mb; + return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f); + } else if (size >= kb) { + float f = (float) size / kb; + return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f); + } else { + return String.format("%d B", size); + } + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/Cpu.java b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/Cpu.java new file mode 100644 index 0000000..a458d9d --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/Cpu.java @@ -0,0 +1,88 @@ +package com.kelp.framework.palt.entity.server; + +import com.kelp.common.utils.Arith; + +/** + * CPU相关信息 + * + * @author kelp + */ +public class Cpu { + /** + * 核心数 + */ + private int cpuNum; + + /** + * CPU总的使用率 + */ + private double total; + + /** + * CPU系统使用率 + */ + private double sys; + + /** + * CPU用户使用率 + */ + private double used; + + /** + * CPU当前等待率 + */ + private double wait; + + /** + * CPU当前空闲率 + */ + private double free; + + public int getCpuNum() { + return cpuNum; + } + + public void setCpuNum(int cpuNum) { + this.cpuNum = cpuNum; + } + + public double getTotal() { + return Arith.round(Arith.mul(total, 100), 2); + } + + public void setTotal(double total) { + this.total = total; + } + + public double getSys() { + return Arith.round(Arith.mul(sys / total, 100), 2); + } + + public void setSys(double sys) { + this.sys = sys; + } + + public double getUsed() { + return Arith.round(Arith.mul(used / total, 100), 2); + } + + public void setUsed(double used) { + this.used = used; + } + + public double getWait() { + return Arith.round(Arith.mul(wait / total, 100), 2); + } + + public void setWait(double wait) { + this.wait = wait; + } + + public double getFree() { + return Arith.round(Arith.mul(free / total, 100), 2); + } + + public void setFree(double free) { + this.free = free; + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/Jvm.java b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/Jvm.java new file mode 100644 index 0000000..a092c25 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/Jvm.java @@ -0,0 +1,92 @@ +package com.kelp.framework.palt.entity.server; + +import java.lang.management.ManagementFactory; + +import com.kelp.common.utils.Arith; + +/** + * JVM相关信息 + * + * @author kelp + */ +public class Jvm { + /** + * 当前JVM占用的内存总数(M) + */ + private double total; + + /** + * JVM最大可用内存总数(M) + */ + private double max; + + /** + * JVM空闲内存(M) + */ + private double free; + + /** + * JDK版本 + */ + private String version; + + /** + * JDK路径 + */ + private String home; + + public double getTotal() { + return Arith.div(total, (1024 * 1024), 2); + } + + public void setTotal(double total) { + this.total = total; + } + + public double getMax() { + return Arith.div(max, (1024 * 1024), 2); + } + + public void setMax(double max) { + this.max = max; + } + + public double getFree() { + return Arith.div(free, (1024 * 1024), 2); + } + + public void setFree(double free) { + this.free = free; + } + + public double getUsed() { + return Arith.div(total - free, (1024 * 1024), 2); + } + + public double getUsage() { + return Arith.mul(Arith.div(total - free, total, 4), 100); + } + + /** + * 获取JDK名称 + */ + public String getName() { + return ManagementFactory.getRuntimeMXBean().getVmName(); + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getHome() { + return home; + } + + public void setHome(String home) { + this.home = home; + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/Mem.java b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/Mem.java new file mode 100644 index 0000000..9bf3cf4 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/Mem.java @@ -0,0 +1,53 @@ +package com.kelp.framework.palt.entity.server; + +import com.kelp.common.utils.Arith; + +/** + * 內存相关信息 + * + * @author kelp + */ +public class Mem { + /** + * 内存总量 + */ + private double total; + + /** + * 已用内存 + */ + private double used; + + /** + * 剩余内存 + */ + private double free; + + public double getTotal() { + return Arith.div(total, (1024 * 1024 * 1024), 2); + } + + public void setTotal(long total) { + this.total = total; + } + + public double getUsed() { + return Arith.div(used, (1024 * 1024 * 1024), 2); + } + + public void setUsed(long used) { + this.used = used; + } + + public double getFree() { + return Arith.div(free, (1024 * 1024 * 1024), 2); + } + + public void setFree(long free) { + this.free = free; + } + + public double getUsage() { + return Arith.mul(Arith.div(used, total, 4), 100); + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/Sys.java b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/Sys.java new file mode 100644 index 0000000..0ca6898 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/Sys.java @@ -0,0 +1,73 @@ +package com.kelp.framework.palt.entity.server; + +/** + * 系统相关信息 + * + * @author kelp + */ +public class Sys { + /** + * 服务器名称 + */ + private String computerName; + + /** + * 服务器Ip + */ + private String computerIp; + + /** + * 项目路径 + */ + private String userDir; + + /** + * 操作系统 + */ + private String osName; + + /** + * 系统架构 + */ + private String osArch; + + public String getComputerName() { + return computerName; + } + + public void setComputerName(String computerName) { + this.computerName = computerName; + } + + public String getComputerIp() { + return computerIp; + } + + public void setComputerIp(String computerIp) { + this.computerIp = computerIp; + } + + public String getUserDir() { + return userDir; + } + + public void setUserDir(String userDir) { + this.userDir = userDir; + } + + public String getOsName() { + return osName; + } + + public void setOsName(String osName) { + this.osName = osName; + } + + public String getOsArch() { + return osArch; + } + + public void setOsArch(String osArch) { + this.osArch = osArch; + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/SysFile.java b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/SysFile.java new file mode 100644 index 0000000..724a4e6 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/palt/entity/server/SysFile.java @@ -0,0 +1,99 @@ +package com.kelp.framework.palt.entity.server; + +/** + * 系统文件相关信息 + * + * @author kelp + */ +public class SysFile { + /** + * 盘符路径 + */ + private String dirName; + + /** + * 盘符类型 + */ + private String sysTypeName; + + /** + * 文件类型 + */ + private String typeName; + + /** + * 总大小 + */ + private String total; + + /** + * 剩余大小 + */ + private String free; + + /** + * 已经使用量 + */ + private String used; + + /** + * 资源的使用率 + */ + private double usage; + + public String getDirName() { + return dirName; + } + + public void setDirName(String dirName) { + this.dirName = dirName; + } + + public String getSysTypeName() { + return sysTypeName; + } + + public void setSysTypeName(String sysTypeName) { + this.sysTypeName = sysTypeName; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getTotal() { + return total; + } + + public void setTotal(String total) { + this.total = total; + } + + public String getFree() { + return free; + } + + public void setFree(String free) { + this.free = free; + } + + public String getUsed() { + return used; + } + + public void setUsed(String used) { + this.used = used; + } + + public double getUsage() { + return usage; + } + + public void setUsage(double usage) { + this.usage = usage; + } +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/util/ws/WS4AxisUtil.java b/ksafepack-framework/src/main/java/com/kelp/framework/util/ws/WS4AxisUtil.java new file mode 100644 index 0000000..8f4dbd2 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/util/ws/WS4AxisUtil.java @@ -0,0 +1,80 @@ +/** + * webservice调用类,axis xml + * + * SOAP 1.1为text/xml ; 1.2为 application/soap+xml + */ +package com.kelp.framework.util.ws; + +import java.net.URL; + +import javax.xml.namespace.QName; +import javax.xml.rpc.ParameterMode; + +import org.apache.axis.client.Call; +import org.apache.axis.client.Service; +import org.apache.axis.encoding.XMLType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import net.sf.json.JSONObject; +import net.sf.json.xml.XMLSerializer; + +public class WS4AxisUtil { + + private static Logger log = LoggerFactory.getLogger(WS4AxisUtil.class); + + /** + * axis传递xml方式调用 + * + * @param wsdlUrl - wsdl路径 + * @param namespace + * @param localPart -入口参数名称 + * @param method + * @param xmlData - 只需要从参数部分开始的XML内容 + * @return + */ + public static JSONObject xmlPost(String wsdlUrl, String namespace, String localPart, String method, + String xmlData) { + try { + + Service service = new Service(); + Call call = (Call) service.createCall(); + + call.setTargetEndpointAddress(new URL(wsdlUrl)); + // 命名空间和调用接口的方法名 + call.setOperationName(new QName(namespace, method)); + call.setSOAPActionURI(namespace + method); + call.setUseSOAPAction(true); + call.addParameter(new QName(namespace, localPart), XMLType.XSD_STRING, ParameterMode.IN);// 可多个.addParameterMode + // 设置返回类型 + call.setReturnType(XMLType.XSD_STRING); + + // 使用invoke调用方法,Object数据放传入的参数值(可多个) + Object object = call.invoke(new Object[] { xmlData }); + + return JSONObject.fromObject(new XMLSerializer().read(object.toString()).toString()); + } catch (Exception e) { + log.error(e.toString()); + return null; + } + } + + public static void main(String[] args) { + + String aa = "" + " 4201" + " 12580" + + " 12580" + " 12580" + " " + + " 1" + " 0" + + " 2015-01-01" + " 2015-01-08" + "" + + ""; + + try { + JSONObject ressult = xmlPost("http://jzysjc.ticp.net:20098/WebService1.asmx?wsdl", "http://tempuri.org/", + "strXml", "testMethod", aa); + System.out.println("返回的json结果:" + ressult); + } catch (Exception e) { + e.printStackTrace(); + } + + } + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/util/ws/WS4HttpUtil.java b/ksafepack-framework/src/main/java/com/kelp/framework/util/ws/WS4HttpUtil.java new file mode 100644 index 0000000..6e61376 --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/util/ws/WS4HttpUtil.java @@ -0,0 +1,173 @@ +/** + * webservice接口,post xml + * + * SOAP 1.1为text/xml ; 1.2为 application/soap+xml + */ +package com.kelp.framework.util.ws; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.http.NameValuePair; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import net.sf.json.JSONObject; +import net.sf.json.xml.XMLSerializer; + +public class WS4HttpUtil { + + private static Logger log = LoggerFactory.getLogger(WS4HttpUtil.class); + + /** + * http post xml的方式调用(map方式) + * + * @param url - 必须加方法名 + * @param namespace + * @param method + * @param xmlData - 加soap协议部分的XML内容 + * @return + */ + public static JSONObject xmlMap4Http(String url, String namespace, String method, String xmlData) { + + String result = ""; + + CloseableHttpClient httpclient = HttpClients.createDefault(); + CloseableHttpResponse response = null; + HttpPost httpPost = new HttpPost(url); + + try { + + List nvpList = new ArrayList(); + + NameValuePair nvp = new BasicNameValuePair("requestXml", xmlData); + nvpList.add(nvp); + + httpPost.setEntity(new UrlEncodedFormEntity(nvpList, "UTF-8")); + + response = httpclient.execute(httpPost); + + if (response != null) { + result = EntityUtils.toString(response.getEntity(), "UTF-8"); + } + + } catch (Exception e) { + log.error(e.toString()); + e.printStackTrace(); + } finally { + try { + if (response != null) + response.close(); + if (httpclient != null) + httpclient.close(); + } catch (IOException e) { + log.error(e.toString()); + } + } + + if (result.length() == 0) { + return null; + } + + return JSONObject.fromObject(new XMLSerializer().read(StringEscapeUtils.unescapeXml(result)).toString()); + + } + + /** + * xml url调用方式 + * + * @param url - 不带方法名 + * @param namespace + * @param method + * @param xmlData - 其中的参数部分必须转义,在这里推荐commons-lang.jar中的StringEscapeUtils类 + * @return - 返回值必须反转义,在这里推荐commons-lang.jar中的StringEscapeUtils类 + */ + public static JSONObject xml4Url(String url, String namespace, String method, String xmlData) { + + try { + + URL url_ = new URL(url); + HttpURLConnection connection = (HttpURLConnection) url_.openConnection(); + connection.setRequestProperty("Content-Length", String.valueOf(xmlData.getBytes("UTF-8").length)); + connection.setRequestProperty("Content-Type", "text/xml; charset=UTF-8"); + connection.setRequestProperty("soapActionString", namespace + method); + connection.setRequestMethod("POST"); + connection.setConnectTimeout(1 * 60 * 1000); + connection.setReadTimeout(1 * 60 * 1000); + connection.setUseCaches(false); + connection.setDoInput(true); + connection.setDoOutput(true); + + OutputStream outputStream = connection.getOutputStream(); + outputStream.write(xmlData.getBytes("UTF-8")); + outputStream.flush(); + outputStream.close(); + + if (connection.getResponseCode() == 200) { + InputStream inputStream = connection.getInputStream(); + + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int len = 0; + while ((len = inputStream.read(buffer)) != -1) { + byteArrayOutputStream.write(buffer, 0, len); + } + byte[] data = byteArrayOutputStream.toByteArray(); + byteArrayOutputStream.close(); + inputStream.close(); + + return JSONObject.fromObject( + new XMLSerializer().read(StringEscapeUtils.unescapeXml(new String(data))).toString()); + } + + } catch (Exception e) { + + log.error(e.toString()); + + e.printStackTrace(); + } + + return null; + + } + + public static void main(String[] args) { + + String aa = "" + " 4201" + " 12580" + + " 12580" + " 12580" + " " + + " 1" + " 0" + + " 2015-01-01" + " 2015-01-08" + "" + + ""; + + String soap = "" + + "" + + " " + " " + " " + + StringEscapeUtils.escapeXml(aa) + "" + // 注意这里需要对参数部分进行转义 + " " + " " + ""; + + try { + JSONObject post = xmlMap4Http("http://jzysjc.ticp.net:20098/WebService1.asmx/testMethod", + "http://tempuri.org/", "testMethod", soap); + System.out.println("---------------------" + post); + + } catch (Exception e) { + e.printStackTrace(); + } + + } + +} diff --git a/ksafepack-framework/src/main/java/com/kelp/framework/util/wx/WXUtil.java b/ksafepack-framework/src/main/java/com/kelp/framework/util/wx/WXUtil.java new file mode 100644 index 0000000..75e1e3a --- /dev/null +++ b/ksafepack-framework/src/main/java/com/kelp/framework/util/wx/WXUtil.java @@ -0,0 +1,23 @@ +package com.kelp.framework.util.wx; + +import com.kelp.common.utils.http.HttpUtil; + +import net.sf.json.JSONObject; + +public class WXUtil { + + public static String getOpenId(String appId, String appSecret, String wxUrl, String code) { + + String url = wxUrl + "?appid=" + appId + "&secret=" + appSecret + "&js_code=" + code + + "&grant_type=authorization_code"; + + JSONObject json = JSONObject.fromObject(HttpUtil.https(url, "POST", null, "UTF-8")); + + if (json.get("openid") != null) { + return json.getString("openid"); + } + + return null; + } + +} diff --git a/ksafepack-system/pom.xml b/ksafepack-system/pom.xml new file mode 100644 index 0000000..54f4fbf --- /dev/null +++ b/ksafepack-system/pom.xml @@ -0,0 +1,54 @@ + + + + com.kelp + ksafepack + 1.0.1 + + 4.0.0 + + ksafepack-system + + + system系统模块 + + + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + mysql + mysql-connector-java + + + + + org.elasticsearch.client + elasticsearch-rest-high-level-client + + + org.elasticsearch + elasticsearch + + + org.elasticsearch.client + elasticsearch-rest-client + + + + + com.kelp + ksafepack-common + + + + + \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/base/BaseEntity.java b/ksafepack-system/src/main/java/com/kelp/base/BaseEntity.java new file mode 100644 index 0000000..ff9f6db --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/base/BaseEntity.java @@ -0,0 +1,50 @@ +/** + * 基类 + */ +package com.kelp.base; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Id; +import javax.persistence.MappedSuperclass; + +@MappedSuperclass +public class BaseEntity implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @Column(name="id") + private Long id = null; + + @Column(updatable = false) + private Long createTime = System.currentTimeMillis(); + + private Long updateTime = System.currentTimeMillis(); + + public Long getId() { + return this.id; + } + public void setId(Long id) { + this.id = id; + } + + public Long getCreateTime() { + return createTime; + } + public void setCreateTime(Long createTime) { + this.createTime = createTime; + } + + public Long getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Long updateTime) { + this.updateTime = updateTime; + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/base/Page.java b/ksafepack-system/src/main/java/com/kelp/base/Page.java new file mode 100644 index 0000000..4e61dc0 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/base/Page.java @@ -0,0 +1,115 @@ +package com.kelp.base; + + +import java.util.ArrayList; +import java.util.List; + +public class Page { + + /** + * 总记录数 + */ + private int total; + + /** + * 总页数 + */ + private int totalPage; + + /** + * 记录开始索引 + */ + private int start; + + /** + * pageIndex + */ + private int pageIndex; + + /** + * 每页有多少数据 + */ + private int limit = 10; + + /** + * 返回的结果数据 + */ + private List data = new ArrayList(); + + /** + * 数据状态,默认为200 + */ + private String status = "200"; + + public int getTotal() { + return total; + } + public void setTotal(int total) { + this.total = total; + } + + public int getTotalPage() { + return totalPage; + } + public void setTotalPage(int totalPage) { + this.totalPage = totalPage; + } + + public int getStart() { + return start; + } + public void setStart(int start) { + this.start = start; + } + + public int getPageIndex() { + return pageIndex; + } + public void setPageIndex(int pageIndex) { + this.pageIndex = pageIndex; + } + + public int getLimit() { + return limit; + } + public void setLimit(int limit) { + this.limit = limit; + } + + public List getData() { + return data; + } + public void setData(List data) { + this.data = data; + } + + public String getStatus() { + return status; + } + public void setStatus(String status) { + this.status = status; + } + + @Override + public String toString() { + return "Page [total=" + total + ", totalPage=" + totalPage + ", start=" + start + ", pageIndex=" + pageIndex + + ", limit=" + limit + ", data=" + data + ", status=" + status + "]"; + } + + public boolean hasPrevious(){ + return start > 0; + } + + + public boolean hasNext(){ + return pageIndex < totalPage; + } + + public int current(){ + return pageIndex; + } + + public int getPages(){ + return totalPage; + } +} diff --git a/ksafepack-system/src/main/java/com/kelp/base/dao/BaseDao.java b/ksafepack-system/src/main/java/com/kelp/base/dao/BaseDao.java new file mode 100644 index 0000000..60e970d --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/base/dao/BaseDao.java @@ -0,0 +1,238 @@ +package com.kelp.base.dao; + +import java.io.Serializable; +import java.util.List; + +import com.kelp.base.Page; + +/** + * Dao基类接口 + * + * @author Administrator + * + * @param 泛型,比如我们对实体类Course进行数据库操作,则在子类中传入Course,见CourseDaoBean代码,T必须实现持久化接口 + * @param 泛型,主键,可以是任意类型 + */ +public interface BaseDao { + + /** + * 保存实体对象. + * + * @param entity 对象 + * @return ID + */ + public boolean add(T entity); + + /** + * 添加实体对象集合. + * + * @return 实体对象集合 + */ + public boolean adds(List ts); + + /** + * 更新实体对象. + * + * @param entity 对象 + */ + public boolean update(T entity); + + /** + * 更新多个对象 + * + * @param ts + */ + public boolean updates(List ts); + + /** + * 删除实体对象. + * + * @param entity 对象 + * @return + */ + public boolean delete(T entity); + + /** + * 根据ID删除实体对象. + * + * @param id 记录ID + */ + public boolean delete(PK id); + + /** + * 根据ID数组删除实体对象. + * + * @param ids ID数组 + */ + public boolean delete(List ids); + + /** + * 根据ID获取实体对象. + * + * @param id 记录ID + * @return 实体对象 + */ + public T get(PK id); + + /** + * 根据ID获取实体对象,有懒加载. + * + * @param id 记录ID + * @return 实体对象 + */ + public T load(PK id); + + /** + * 根据ID数组获取实体对象集合. + * + * @param ids ID对象数组 + * + * @return 实体对象集合 + */ + public List get(List ids); + + /** + * 根据属性名和属性值获取实体对象. + * + * @param propertyName 属性名称 + * @param value 属性值 + * @return 实体对象 + */ + public T get(String propertyName, Object value); + + /** + * 根据属性名和属性值获取实体对象集合. + * + * @param propertyName 属性名称 + * @param value 属性值 + * @return 实体对象集合 + */ + public List getList(String propertyName, Object value); + + /** + * 获取所有实体对象集合. + * + * @return 实体对象集合 + */ + public List getAll(); + + /** + * 按某个字段排序 + * + * @param propertyName + * @param orderType + * @return + */ + public List getAll(String propertyName, String orderType); + + /** + * 获取所有实体对象总数. + * + * @return 实体对象总数 + */ + public Long getTotalCount(); + + /** + * 获取所有实体对象数量 + * + * @param propertyName + * @param propertyValue + * @return + */ + public Long getTotalCount(String propertyName, String propertyValue); + + /** + * 根据属性名、修改前后属性值判断在数据库中是否唯一(若新修改的值与原来值相等则直接返回true). + * + * @param propertyName 属性名称 + * @param oldValue 修改前的属性值 + * @param oldValue 修改后的属性值 + * @return boolean + */ + public boolean isUnique(String propertyName, Object oldValue, Object newValue); + + /** + * 根据属性名判断数据是否已存在. + * + * @param propertyName 属性名称 + * @param value 值 + * @return boolean + */ + public boolean isExist(String propertyName, Object value); + + /** + * 刷新session. + * + */ + public void flush(); + + /** + * 清除Session. + * + */ + public void clear(); + + /** + * 查找符合条件的记录数 + * + * @param sql + * @param parameters + * @return + */ + public int getCount(String sql, List parameters); + + /** + * 查找符合条件的记录数 + * + * @param sql + * @param parameters + * @return + */ + public int getNativeCount(String sql, List parameters); + + /** + * 执行原生SQL得到符合条件的记录 + * + * @param sql + * @param parameters + * @return + */ + public List getListByNativeSql(String sql, List parameters); + + /** + * 查找符合条件的记录 + * + * @param sql + * @param parameters + * @return + */ + public List getList(String sql, List parameters); + + public List getList(String sql, List parameters, int firstResult, int maxResult); + + /** + * 分页取得符合条件的记录 + * + * @param pageNumber + * @param pageSize + * @param sql + * @param params + * @return + */ + public Page getBeanPage(int pageNumber, int pageSize, String sql, List parameters); + + public Page getBeanPage(int pageNumber, int pageSize, String columns,String sql, List parameters); + + /** + * 分页取得符合条件的记录 + * + * @param pageNumber + * @param pageSize + * @param sql + * @param params + * @return + */ + public Page getNativeBeanPage(int pageNumber, int pageSize, String classz, String sql, + List parameters); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/base/dao/impl/BaseDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/base/dao/impl/BaseDaoImpl.java new file mode 100644 index 0000000..e22eeff --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/base/dao/impl/BaseDaoImpl.java @@ -0,0 +1,464 @@ +package com.kelp.base.dao.impl; + +import java.io.Serializable; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.List; +import java.util.Map; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +import org.hibernate.query.internal.NativeQueryImpl; +import org.hibernate.transform.Transformers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.transaction.annotation.Transactional; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; + +/** + * 基类Dao的实现,是抽象类 + * + * @author Administrator + * + * @param + * @param + */ +public abstract class BaseDaoImpl implements BaseDao { + + private static Logger log = LoggerFactory.getLogger(BaseDaoImpl.class); + + //注意,这里unitName是Factory的别名 + @PersistenceContext(unitName = "entityManagerFactory") + protected EntityManager em; + + private Class entityClass; + + @SuppressWarnings({ "unchecked" }) + public BaseDaoImpl() { + this.entityClass = null; + Type type = getClass().getGenericSuperclass(); + if (type instanceof ParameterizedType) { + Type[] parameterizedType = ((ParameterizedType) type).getActualTypeArguments(); + this.entityClass = (Class) parameterizedType[0]; + } + } + + @Transactional + @Override + public boolean add(T t) { + try { + em.persist(t); + return true; + } catch (Exception e) { + log.error(e.getMessage()); + } + return false; + } + + @Transactional + @Override + public boolean adds(List ts) { + try { + for (T t : ts) { + if (null != t) { + em.persist(t); + } + } + return true; + } catch (Exception e) { + log.error(e.getMessage()); + } + return false; + } + + @Transactional + @Override + public boolean update(T entity) { + try { + em.merge(entity); + return true; + } catch (Exception e) { + log.error(e.getMessage()); + } + return false; + } + + @Transactional + @Override + public boolean updates(List ts) { + try { + for (T t : ts) { + if (null != ts) { + em.merge(t); + } + } + return true; + } catch (Exception e) { + log.error(e.getMessage()); + } + return false; + } + + @Transactional + @Override + public boolean delete(T entity) { + try { + em.remove(entity); + return true; + } catch (Exception e) { + log.error(e.getMessage()); + } + return false; + } + + @Transactional + @Override + public boolean delete(PK id) { + try { + T entity = load(id); + em.remove(entity); + return true; + } catch (Exception e) { + log.error(e.getMessage()); + } + return false; + } + + @Transactional + @Override + public boolean delete(List ids) { + try { + for (PK id : ids) { + T entity = load(id); + em.remove(entity); + } + return true; + } catch (Exception e) { + log.error(e.getMessage()); + } + return false; + } + + @Override + public T get(PK id) { + return (T) em.find(entityClass, id); + } + + @Override + public T load(PK id) { + return (T) em.getReference(entityClass, id); + } + + @SuppressWarnings("unchecked") + @Override + public List get(List ids) { + String hql = "select o from " + entityClass.getName() + " o where o.id in(:ids)"; + return em.createQuery(hql).setParameter("ids", ids).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public T get(String propertyName, Object value) { + String sql = "select o from " + entityClass.getName() + " o where o." + propertyName + " = :" + propertyName; + try { + return (T) em.createQuery(sql).setParameter(propertyName, value).getSingleResult(); + } catch (Exception e) { + return null; + } + } + + @SuppressWarnings("unchecked") + @Override + public List getList(String propertyName, Object value) { + String sql = "select o from " + entityClass.getName() + " o where o." + propertyName + " = :" + propertyName; + return em.createQuery(sql).setParameter(propertyName, value).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List getAll() { + String sql = "select o from " + entityClass.getName() + " o"; + return em.createQuery(sql).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List getAll(String propertyName, String orderType) { + String sql = "select o from " + entityClass.getName() + " o order by " + propertyName + " " + orderType; + return em.createQuery(sql).getResultList(); + } + + @Override + public Long getTotalCount() { + String sql = "select count(*) from " + entityClass.getName(); + return (Long) em.createQuery(sql).getSingleResult(); + } + + @Override + public Long getTotalCount(String propertyName, String propertyValue) { + String sql = "select count(*) from " + entityClass.getName() + " where " + propertyName + " = :" + + propertyName; + return (Long) em.createQuery(sql).setParameter(propertyName, propertyValue).getSingleResult(); + } + + @Override + public boolean isUnique(String propertyName, Object oldValue, Object newValue) { + if (newValue == oldValue || newValue.equals(oldValue)) { + return true; + } + T object = get(propertyName, newValue); + return (object == null); + } + + @Override + public boolean isExist(String propertyName, Object value) { + T object = get(propertyName, value); + return (object != null); + } + + @Override + public void flush() { + em.flush(); + } + + @Override + public void clear() { + em.clear(); + } + + @Override + public int getCount(String sql, List parameters) { + + Query query = em.createQuery(sql); + if (parameters != null && parameters.size() > 0) { + int i = 1; + for (Object parameter : parameters) { + query.setParameter(i++, parameter); + } + } + + try { + return Integer.parseInt(query.getSingleResult().toString()); + } catch (Exception e) { + log.error(e.getMessage()); + } + return 0; + } + + @Override + public int getNativeCount(String sql, List parameters) { + + Query query = em.createNativeQuery(sql); + if (parameters != null && parameters.size() > 0) { + int i = 1; + for (Object parameter : parameters) { + query.setParameter(i++, parameter); + } + } + + try { + return Integer.parseInt(query.getSingleResult().toString()); + } catch (Exception e) { + log.error(e.getMessage()); + } + return 0; + } + + @SuppressWarnings("unchecked") + @Override + public List getListByNativeSql(String sql, List parameters) { + Query query = em.createNativeQuery(sql, entityClass); + if (parameters != null && parameters.size() > 0) { + int i = 1; + for (Object parameter : parameters) { + query.setParameter(i++, parameter); + } + } + return query.getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List getList(String sql, List parameters) { + Query query = em.createQuery(sql); + if (parameters != null && parameters.size() > 0) { + int i = 1; + for (Object parameter : parameters) { + query.setParameter(i++, parameter); + } + } + return query.getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List getList(String sql, List parameters, int firstResult, int maxResult) { + Query query = em.createQuery(sql); + if (parameters != null && parameters.size() > 0) { + int i = 1; + for (Object parameter : parameters) { + query.setParameter(i++, parameter); + } + } + query.setFirstResult(firstResult); + query.setMaxResults(maxResult); + return query.getResultList(); + } + + @SuppressWarnings("unchecked") + public List> getMapList(String sql, Object... parameters) { + Query query = em.createNativeQuery(sql); + if (parameters != null && parameters.length > 0) { + int i = 1; + for (Object parameter : parameters) { + query.setParameter(i++, parameter); + } + } + return query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list(); + } + + @SuppressWarnings("unchecked") + private List getBeanList(String sql, List parameters, int firstResult, int maxResult) { + Query query = em.createQuery(sql); + if (parameters != null && parameters.size() > 0) { + int i = 1; + for (Object parameter : parameters) { + query.setParameter(i++, parameter); + } + } + query.setFirstResult(firstResult); + query.setMaxResults(maxResult); + return query.getResultList(); + } + + @SuppressWarnings("unchecked") + private List getNativeBeanList(String sql, List parameters, int firstResult, int maxResult) { + Query query = em.createNativeQuery(sql); + if (parameters != null && parameters.size() > 0) { + int i = 1; + for (Object parameter : parameters) { + query.setParameter(i++, parameter); + } + } + query.setFirstResult(firstResult); + query.setMaxResults(maxResult); + return query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(entityClass)).list(); + } + + @Override + public Page getBeanPage(int pageNumber, int pageSize, String sql, List params) { + Page page = new Page(); + // 总条数 + int count = this.getCount("select count(1) " + sql, params); + if (count == 0) { + return page; + } + + // 总页数 + int pageCount = count / pageSize + ((count % pageSize) == 0 ? 0 : 1); + if (pageNumber < 1) { + pageNumber = 1; + } + + // 页码 + if (pageNumber > pageCount) { + pageNumber = pageCount; + } + + // 第一条记录索引 + int firstResult = pageSize * (pageNumber - 1); + // 最后一条记录索引 + int maxResult = Math.min(pageSize, count - firstResult); + + // 生成PageForm + List listBaseBean = this.getBeanList("select o " + sql, params, firstResult, maxResult); + + page.setLimit(pageSize); + page.setTotal(count); + page.setPageIndex(pageNumber); + page.setData(listBaseBean); + page.setTotalPage(pageCount); + + return page; + } + + @Override + public Page getBeanPage(int pageNumber, int pageSize,String columns, String sql, List params) { + + // 总条数 + int count = this.getCount("select count(1) " + sql, params); + if (count == 0) { + return null; + } + + // 总页数 + int pageCount = count / pageSize + ((count % pageSize) == 0 ? 0 : 1); + if (pageNumber < 1) { + pageNumber = 1; + } + + // 页码 + if (pageNumber > pageCount) { + pageNumber = pageCount; + } + + // 第一条记录索引 + int firstResult = pageSize * (pageNumber - 1); + // 最后一条记录索引 + int maxResult = Math.min(pageSize, count - firstResult); + + // 生成PageForm + List listBaseBean = this.getBeanList("select " + columns + " " + sql, params, firstResult, maxResult); + Page page = new Page(); + page.setLimit(pageSize); + page.setTotal(count); + page.setPageIndex(pageNumber); + page.setData(listBaseBean); + page.setTotalPage(pageCount); + + return page; + } + + @Override + public Page getNativeBeanPage(int pageNumber, int pageSize, String columns, String sqlTail, + List params) { + + // 总条数 + int count = this.getNativeCount("select count(1) " + sqlTail, params); + if (count == 0) { + return null; + } + + // 总页数 + int pageCount = count / pageSize + ((count % pageSize) == 0 ? 0 : 1); + if (pageNumber < 1) { + pageNumber = 1; + } + + // 页码 + if (pageNumber > pageCount) { + pageNumber = pageCount; + } + + // 第一条记录索引 + int firstResult = pageSize * (pageNumber - 1); + // 最后一条记录索引 + int maxResult = Math.min(pageSize, count - firstResult); + + // 生成PageForm + List listBaseBean = this.getNativeBeanList("select " + columns + sqlTail, params, firstResult, maxResult); + Page page = new Page(); + page.setLimit(pageSize); + page.setTotal(count); + page.setPageIndex(pageNumber); + page.setData(listBaseBean); + page.setTotalPage(pageCount); + + return page; + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/biz/dao/DictDao.java b/ksafepack-system/src/main/java/com/kelp/biz/dao/DictDao.java new file mode 100644 index 0000000..3c40c1a --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/dao/DictDao.java @@ -0,0 +1,14 @@ +package com.kelp.biz.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.biz.entity.Dict; + +public interface DictDao extends BaseDao{ + + public Page getPage(int pageNumber, int pageSize,String name,String type,String state); + + public List getList(String type); +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/dao/DistrictDao.java b/ksafepack-system/src/main/java/com/kelp/biz/dao/DistrictDao.java new file mode 100644 index 0000000..32474d6 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/dao/DistrictDao.java @@ -0,0 +1,20 @@ +package com.kelp.biz.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.biz.entity.District; + +public interface DistrictDao extends BaseDao{ + + /** + * 递归删除 + * @param ids + */ + public void delete(String[] ids); + + public List listdsub(String pId); + + public Page getPage(int pageNumber, int pageSize,String pId,String name,String state); +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/dao/SMSRecordDao.java b/ksafepack-system/src/main/java/com/kelp/biz/dao/SMSRecordDao.java new file mode 100644 index 0000000..66d7b61 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/dao/SMSRecordDao.java @@ -0,0 +1,14 @@ +package com.kelp.biz.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.biz.entity.SMSRecord; + +public interface SMSRecordDao extends BaseDao{ + + public List getList(String telephone,String startDate,String endDate); + + public Page getPage(int pageNumber, int pageSize,String telephone,String startDate,String endDate,String state); +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/dao/impl/DictDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/biz/dao/impl/DictDaoImpl.java new file mode 100644 index 0000000..0123702 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/dao/impl/DictDaoImpl.java @@ -0,0 +1,58 @@ +package com.kelp.biz.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.stereotype.Repository; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.biz.dao.DictDao; +import com.kelp.biz.entity.Dict; + +@Repository +public class DictDaoImpl extends BaseDaoImpl implements DictDao{ + + @Override + public Page getPage(int pageNumber, int pageSize, String name, String type, String state) { + + String sql = " from Dict o where 1 = 1 "; + List params = new ArrayList(); + int index = 1; + + if(name == null || name.length() == 0 || name.length() > 50){ + name = ""; + } + sql += " and name like ?" + index++; + params.add("%" + name + "%"); + + if(type != null && type.length() > 0 && type.length() <= 20){ + sql += " and type = ?" + index++; + params.add(type); + } + + if(state != null && state.length() == 2){ + sql += " and state = ?" + index; + params.add(state); + } + + sql += " order by type,code,name "; + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @SuppressWarnings("unchecked") + @Override + public List getList(String type){ + String sql = "select o from Dict o where type = :type and state = '00' order by type,code,name"; + return em.createQuery(sql).setParameter("type", type).getResultList(); + } + + @Override + public boolean delete(List ids) { + String sql = "update Dict set state = '10' where id in (:ids)"; + em.createQuery(sql).setParameter("ids", ids).executeUpdate(); + return true; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/dao/impl/DistrictDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/biz/dao/impl/DistrictDaoImpl.java new file mode 100644 index 0000000..a3419d7 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/dao/impl/DistrictDaoImpl.java @@ -0,0 +1,70 @@ +package com.kelp.biz.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.transaction.Transactional; + +import org.springframework.stereotype.Repository; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.biz.dao.DistrictDao; +import com.kelp.biz.entity.District; + +@Repository +public class DistrictDaoImpl extends BaseDaoImpl implements DistrictDao{ + + @Transactional + @Override + public void delete(String[] ids) { + for(String id : ids){ + delete(id); + } + } + + @Override + public boolean delete(String id) { + String sqld = "update District set state = '10' where id = :id "; + String sqlq = "select o from District o where pId = :pId order by name"; + + @SuppressWarnings("unchecked") + List districtList = em.createQuery(sqlq).setParameter("pId", id).getResultList(); + if(0 < districtList.size()){ + for(District district : districtList){ + delete(district.getId()); + } + } + em.createQuery(sqld).setParameter("id", id).executeUpdate(); + + return true; + } + + @SuppressWarnings("unchecked") + @Override + public List listdsub(String pId) { + + String sql = "select new com.kelp.biz.entity.District(o.id,o.name,o.pId) from District o where pId = :pId and state='00' order by orderNumber"; + + return em.createQuery(sql).setParameter("pId", pId).getResultList(); + } + + @Override + public Page getPage(int pageNumber, int pageSize, String pId, String name, String state) { + if(name == null || name.length() == 0 || name.length() > 50){ + name = ""; + } + + if(state == null || state.length() != 2){ + state = "00"; + } + + String sql = " from District o where name like ?1 and pId = ?2 and state = ?3 order by orderNumber"; + List params = new ArrayList(); + params.add("%" + name + "%"); + params.add(pId); + params.add(state); + return getBeanPage(pageNumber, pageSize, sql, params); + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/dao/impl/SMSRecordDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/biz/dao/impl/SMSRecordDaoImpl.java new file mode 100644 index 0000000..0422cd4 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/dao/impl/SMSRecordDaoImpl.java @@ -0,0 +1,60 @@ +package com.kelp.biz.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.biz.dao.SMSRecordDao; +import com.kelp.biz.entity.SMSRecord; +import com.kelp.common.utils.DateUtils; + +@Repository +public class SMSRecordDaoImpl extends BaseDaoImpl implements SMSRecordDao { + + @Override + public Page getPage(int pageNumber, int pageSize, String telephone, String startDate, String endDate, + String state) { + + String sql = " from SMSRecord o where 1 = 1 "; + List params = new ArrayList(); + int index = 1; + + if (!StringUtils.isEmpty(telephone) && telephone.length() < 128) { + sql += " and telephone = ?" + index++; + params.add(telephone); + } + + if (startDate != null && DateUtils.string2date(startDate + " 00:00:00") != null) { + sql = sql + " and createTime >= ?" + index++; + params.add(DateUtils.string2date(startDate + " 00:00:00").getTime()); + } + + if (endDate != null && DateUtils.string2date(endDate + " 23:59:59") != null) { + sql = sql + " and createTime <= ?" + index++; + params.add(DateUtils.string2date(endDate + " 23:59:59").getTime()); + } + + if (state != null && state.length() == 2) { + sql += " and state = ?" + index; + params.add(state); + } + + sql += " order by createDate desc "; + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @SuppressWarnings("unchecked") + @Override + public List getList(String telephone, String startDate, String endDate) { + String sql = "select o from SMSRecord o where tid = :tid and createTime >= :startDate and createTime <= :endDate order by createDate desc"; + return em.createQuery(sql).setParameter("tid", telephone) + .setParameter("startDate", DateUtils.string2date(startDate + " 00:00:00").getTime()) + .setParameter("endDate", DateUtils.string2date(endDate + " 23:59:59").getTime()).getResultList(); + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/entity/Dict.java b/ksafepack-system/src/main/java/com/kelp/biz/entity/Dict.java new file mode 100644 index 0000000..c38732b --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/entity/Dict.java @@ -0,0 +1,72 @@ +/** + * 公共字典 + */ +package com.kelp.biz.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import com.kelp.base.BaseEntity; + +@Entity +@Table(name = "dt_common_dict") +public class Dict extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * 业务类型 + */ + @Column(length = 20, nullable = false) + private String type; + + /** + * 编码 + */ + @Column(length = 20, nullable = false, unique = true) + private String code; + + /** + * 名称 + */ + @Column(length = 50, nullable = false) + private String name; + + /** + * 状态:00-正常;01-非开通;10-禁用 + */ + @Column(length = 2, nullable = false) + private String state; + + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + + public String getCode() { + return code; + } + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/biz/entity/District.java b/ksafepack-system/src/main/java/com/kelp/biz/entity/District.java new file mode 100644 index 0000000..4a436bb --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/entity/District.java @@ -0,0 +1,124 @@ +/** + * 行政区划,组织架构 + */ +package com.kelp.biz.entity; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; + +@Entity +@Table(name="dt_common_district") +public class District implements Serializable { + + + /** + * + */ + private static final long serialVersionUID = 1L; + + public District() {} + + public District(String id,String name,String pId) { + this.id = id; + this.name = name; + this.pId = pId; + } + + /** + * 本身编码 + */ + @Id + @Column(length = 12, nullable = false, unique = true) + private String id; + + /** + * 父id + */ + @Column(length=12,nullable=false) + private String pId; + + /** + * 名称 + */ + @Column(length=50,nullable=false) + private String name; + + /** + * 常驻人口数,用于统计 + */ + private Integer residents; + + /** + * 序号 + */ + private Integer orderNumber; + + /** + * 级别 + */ + private Integer level; + + /** + * 状态:00-正常;01-非开通;10-禁用 + */ + @Column(length=2,nullable=false) + private String state; + + @Transient + public Boolean isParent = true; + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + + public String getpId() { + return pId; + } + public void setpId(String pId) { + this.pId = pId; + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public Integer getResidents() { + return residents; + } + public void setResidents(Integer residents) { + this.residents = residents; + } + + public Integer getOrderNumber() { + return orderNumber; + } + public void setOrderNumber(Integer orderNumber) { + this.orderNumber = orderNumber; + } + + public Integer getLevel() { + return level; + } + public void setLevel(Integer level) { + this.level = level; + } + + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/biz/entity/SMSRecord.java b/ksafepack-system/src/main/java/com/kelp/biz/entity/SMSRecord.java new file mode 100644 index 0000000..7a8056a --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/entity/SMSRecord.java @@ -0,0 +1,130 @@ +/** + * 短信记录 + */ +package com.kelp.biz.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import org.apache.commons.lang3.StringUtils; + +import com.kelp.base.BaseEntity; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; + +@Entity +@Table(name="dt_common_sms_record") +public class SMSRecord extends BaseEntity{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + + /** + * 发送源id,固定为"yyqt" + */ + @Column(nullable=false,length=20) + private String rId = "hr4dd"; + + /** + * 目标id,如电话号码 + */ + @Column(length = 128, nullable = false,name="tId") + private String tId_; + + /** + * 类型:01-注册;02-验证码登录;03-找回密码; + */ + @Column(length=2,nullable=false) + private String bizType; + + /** + * 短信发送Id + */ + @Column(nullable=false,length=20) + private String smsId; + + /** + * 有效时间,如验证码时需要,可为空 + */ + private Integer validTime; + + /** + * 原始数据,有可能是验证码 + */ + @Column(length = 128) + private String rawData; + + /** + * 发送备注信息 + */ + private String messeage; + + /** + * 短信发送结果 + */ + @Column(nullable=false,length=2) + private String state; + + + public String getrId() { + return rId; + } + public void setrId(String rId) { + this.rId = rId; + } + + public String gettId() { + return tId_ != null ? AESUtil.decrypt(tId_, KeyConstant.TELEPHONE) : ""; + } + public void settId(String tId) { + if(!StringUtils.isEmpty(tId)) { + this.tId_ = AESUtil.encrypt(tId, KeyConstant.TELEPHONE); + } + } + + public String getBizType() { + return bizType; + } + public void setBizType(String bizType) { + this.bizType = bizType; + } + + public String getSmsId() { + return smsId; + } + public void setSmsId(String smsId) { + this.smsId = smsId; + } + + public Integer getValidTime() { + return validTime; + } + public void setValidTime(Integer validTime) { + this.validTime = validTime; + } + + public String getRawData() { + return rawData; + } + public void setRawData(String rawData) { + this.rawData = rawData; + } + + public String getMesseage() { + return messeage; + } + public void setMesseage(String messeage) { + this.messeage = messeage; + } + + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/entity/TFile.java b/ksafepack-system/src/main/java/com/kelp/biz/entity/TFile.java new file mode 100644 index 0000000..0b28029 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/entity/TFile.java @@ -0,0 +1,130 @@ +/** + * common file + * 注意上传路径的权限问题,一定不可执行 + */ +package com.kelp.biz.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.persistence.Transient; + +import com.kelp.base.BaseEntity; + + + +@Entity +@Table(name="dt_common_file") +public class TFile extends BaseEntity { + + + /** + * + */ + private static final long serialVersionUID = -3232098209244991016L; + + /** + * 业务id:00-平台上传;01-企业上传;02-会员上传 + */ + @Column(nullable=false,length=2) + private String bizId; + + /** + * 上传人id + */ + @Column(nullable=false,length=128) + private String accountId; + + /** + * 上传人name + */ + @Column(nullable=false,length=128) + private String accountName; + + /** + * 文件名称 + */ + @Column(nullable=false,length=128,unique=true) + private String fileName; + + /** + * 文件内容,不映射数据库 + */ + @Transient + private String fileContent; + + /** + * 文件的md5值,以待备用 + */ + @Column(nullable=false,length=128,unique = true) + private String md5; + + /** + * 文件路径 + */ + @Column(nullable=false,length=256) + private String path; + + /** + * 上传人ip + */ + @Column(nullable=false,length=50) + private String ip; + + public String getBizId() { + return bizId; + } + public void setBizId(String bizId) { + this.bizId = bizId; + } + + public String getAccountId() { + return accountId; + } + public void setAccountId(String accountId) { + this.accountId = accountId; + } + + public String getAccountName() { + return accountName; + } + public void setAccountName(String accountName) { + this.accountName = accountName; + } + + public String getFileContent() { + return fileContent; + } + public void setFileContent(String fileContent) { + this.fileContent = fileContent; + } + + public String getFileName() { + return fileName; + } + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getMd5() { + return md5; + } + public void setMd5(String md5) { + this.md5 = md5; + } + + public String getPath() { + return path; + } + public void setPath(String path) { + this.path = path; + } + + public String getIp() { + return ip; + } + public void setIp(String ip) { + this.ip = ip; + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/biz/service/DictService.java b/ksafepack-system/src/main/java/com/kelp/biz/service/DictService.java new file mode 100644 index 0000000..da55e33 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/service/DictService.java @@ -0,0 +1,24 @@ +package com.kelp.biz.service; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.biz.entity.Dict; + +public interface DictService { + + public void add(Dict dict); + + public void update(Dict dict); + + public void delete(String[] ids); + + public Dict getById(String id); + + public Dict getByCode(String code); + + public List getByType(String type); + + public Page getPage(int pageNumber, int pageSize,String name,String type,String state); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/service/DistrictService.java b/ksafepack-system/src/main/java/com/kelp/biz/service/DistrictService.java new file mode 100644 index 0000000..d55b8f4 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/service/DistrictService.java @@ -0,0 +1,27 @@ +package com.kelp.biz.service; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.biz.entity.District; + +public interface DistrictService { + + public void add(District district); + + public void update(District district); + + public District getById(String id); + + public void delete(String[] ids); + + public Page getPage(int pageNumber, int pageSize,String pId,String name,String state); + + /** + * 取得直接下级 + * @param pId + * @return + */ + public List listdsub(String pId); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/service/FileUploadService.java b/ksafepack-system/src/main/java/com/kelp/biz/service/FileUploadService.java new file mode 100644 index 0000000..3d5424a --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/service/FileUploadService.java @@ -0,0 +1,21 @@ +package com.kelp.biz.service; + +import org.springframework.web.multipart.MultipartFile; + +public interface FileUploadService { + + /** + * 上传image文件 + * @param file + * @return + */ + public String uploadImageFile(MultipartFile file); + + /** + * 上传vedio文件 + * @param file + * @return + */ + public String uploadVedioFile(MultipartFile file); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/service/SMSRecordService.java b/ksafepack-system/src/main/java/com/kelp/biz/service/SMSRecordService.java new file mode 100644 index 0000000..cb9441b --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/service/SMSRecordService.java @@ -0,0 +1,18 @@ +package com.kelp.biz.service; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.biz.entity.SMSRecord; + +public interface SMSRecordService { + + public String aliSendSMS(String bizType,String telephone,String rawData); + + public SMSRecord getById(String id); + + public List getList(String telephone,String startDate,String endDate); + + public Page getPage(int pageNumber, int pageSize,String telephone,String startDate,String endDate,String state); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/service/impl/DictServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/biz/service/impl/DictServiceImpl.java new file mode 100644 index 0000000..98860fd --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/service/impl/DictServiceImpl.java @@ -0,0 +1,76 @@ +package com.kelp.biz.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.biz.dao.DictDao; +import com.kelp.biz.entity.Dict; +import com.kelp.biz.service.DictService; +import com.kelp.common.utils.IdWorker; + +@Service +public class DictServiceImpl implements DictService { + + @Autowired + private DictDao dictDao; + + @Autowired + private IdWorker idWorker; + + @Override + public void add(Dict dict) { + dict.setId(idWorker.nextId()); + dictDao.add(dict); + } + + @Override + public void update(Dict dict) { + dictDao.update(dict); + } + + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for(String id : ids){ + try { + ids_.add(Long.valueOf(id)); + } catch (Exception e) { + return; + } + } + dictDao.delete(ids_); + } + + @Override + public Dict getByCode(String code) { + return dictDao.get("code", code); + } + + @Override + public Dict getById(String id) { + return dictDao.get(Long.valueOf(id)); + } + + @Override + public List getByType(String type) { + return dictDao.getList(type); + } + + @Override + public Page getPage(int pageNumber, int pageSize,String name,String type,String state) { + + Page page = dictDao.getPage(pageNumber, pageSize,name,type,state); + + if(page == null){ + page = new Page(); + } + + return page; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/service/impl/DistrictServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/biz/service/impl/DistrictServiceImpl.java new file mode 100644 index 0000000..acf2302 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/service/impl/DistrictServiceImpl.java @@ -0,0 +1,59 @@ +package com.kelp.biz.service.impl; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.biz.dao.DistrictDao; +import com.kelp.biz.entity.District; +import com.kelp.biz.service.DistrictService; + +@Service +public class DistrictServiceImpl implements DistrictService { + + @Autowired + private DistrictDao districtDao; + + @Override + public void add(District district) { + districtDao.add(district); + } + + @Override + public void update(District district) { + districtDao.update(district); + } + + @Override + public District getById(String id) { + return districtDao.get(id); + } + + + @Override + public void delete(String[] ids) { + //对选中的进行递归删除 + districtDao.delete(ids); + + } + + @Override + public List listdsub(String pId) { + return districtDao.listdsub(pId); + } + + @Override + public Page getPage(int pageNumber, int pageSize,String pId,String name,String state) { + + Page page = districtDao.getPage(pageNumber, pageSize,pId,name,state); + + if(page == null){ + page = new Page(); + } + + return page; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/service/impl/FileUploadServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/biz/service/impl/FileUploadServiceImpl.java new file mode 100644 index 0000000..ce2197c --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/service/impl/FileUploadServiceImpl.java @@ -0,0 +1,81 @@ +package com.kelp.biz.service.impl; + +import java.io.IOException; +import java.util.Date; +import java.util.UUID; + +import org.apache.commons.io.FilenameUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import com.kelp.biz.service.FileUploadService; +import com.kelp.common.config.FtpBean; +import com.kelp.common.utils.DateUtils; +import com.kelp.common.utils.file.FileType; +import com.kelp.common.utils.file.FileTypeUtil; + +@Service +public class FileUploadServiceImpl implements FileUploadService { + + private static Logger log = LoggerFactory.getLogger(FileUploadServiceImpl.class); + + @Autowired + private FtpBean ftpBean; + + @Override + public String uploadImageFile(MultipartFile file) { + try { + String fileType = FileTypeUtil.getFileType(file.getInputStream()); + //判断文件类型 + if(fileType == null) { + return "10"; + } + fileType = FileType.getImageType(file.getContentType().split("/")[1]); + if(fileType == null) { + return "10"; + } + + //生成文件目录 + String filePath = fileType + "/" + DateUtils.date2YYYYMMDD(new Date()); + + //生成新的文件名 + String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + FilenameUtils.getExtension(file.getOriginalFilename()); + + return ftpBean.uploadFileToFtp(filePath, fileName, file.getInputStream()); + } catch (IOException e) { + log.error(e.getMessage()); + return null; + } + } + + @Override + public String uploadVedioFile(MultipartFile file) { + try { + String fileType = FileTypeUtil.getFileType(file.getInputStream()); + //判断文件类型 + if(fileType ==null) { + return "10"; + } + fileType = FileType.getVedioType(file.getContentType().split("/")[1]); + if(fileType == null) { + return "10"; + } + + //生成文件目录 + String filePath = fileType + "/" + DateUtils.date2YYYYMMDD(new Date()); + + //生成新的文件名 + String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + FilenameUtils.getExtension(file.getOriginalFilename()); + + return ftpBean.uploadFileToFtp(filePath, fileName, file.getInputStream()); + } catch (IOException e) { + log.error(e.getMessage()); + return null; + } + } + + +} diff --git a/ksafepack-system/src/main/java/com/kelp/biz/service/impl/SMSRecordServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/biz/service/impl/SMSRecordServiceImpl.java new file mode 100644 index 0000000..0005043 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/biz/service/impl/SMSRecordServiceImpl.java @@ -0,0 +1,80 @@ +package com.kelp.biz.service.impl; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; +import com.kelp.base.Page; +import com.kelp.biz.dao.SMSRecordDao; +import com.kelp.biz.entity.SMSRecord; +import com.kelp.biz.service.SMSRecordService; +import com.kelp.common.config.AliSMSBean; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; +import com.kelp.common.utils.IdWorker; + +@Service +public class SMSRecordServiceImpl implements SMSRecordService { + + @Autowired + private SMSRecordDao smsRecordDao; + + @Autowired + private AliSMSBean aliSMSBean; + + @Value("${sms.captcha.validtime}") + private int validTime; + + @Autowired + private IdWorker idWorker; + + @Override + public String aliSendSMS(String bizType,String telephone,String rawData) { + + + SendSmsResponse sendSmsResponse = aliSMSBean.send(telephone, rawData); + + if(sendSmsResponse != null) { + SMSRecord smsRecord = new SMSRecord(); + smsRecord.setId(idWorker.nextId()); + smsRecord.setBizType(bizType); + smsRecord.setRawData(rawData); + smsRecord.setValidTime(30); + smsRecord.setrId("hrdd"); + smsRecord.settId(telephone); + smsRecord.setSmsId(sendSmsResponse.getBizId()); + smsRecord.setState("00"); + smsRecordDao.add(smsRecord); + + return "00"; + } + + return "11"; + } + + @Override + public SMSRecord getById(String id) { + return smsRecordDao.get(Long.valueOf(id)); + } + + @Override + public List getList(String telephone,String startDate,String endDate){ + return smsRecordDao.getList(AESUtil.encrypt(telephone, KeyConstant.TELEPHONE), startDate, endDate); + } + + @Override + public Page getPage(int pageNumber, int pageSize,String telephone,String startDate,String endDate,String state) { + + Page page = smsRecordDao.getPage(pageNumber, pageSize, telephone, startDate, endDate, state); + + if(page == null){ + page = new Page(); + } + + return page; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/business/dao/BuyDao.java b/ksafepack-system/src/main/java/com/kelp/business/dao/BuyDao.java new file mode 100644 index 0000000..98d0937 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/business/dao/BuyDao.java @@ -0,0 +1,9 @@ +package com.kelp.business.dao; + +import com.kelp.base.dao.BaseDao; +import com.kelp.business.entity.Buy; +import com.kelp.business.entity.News; + +public interface BuyDao extends BaseDao{ + +} diff --git a/ksafepack-system/src/main/java/com/kelp/business/dao/NewsDao.java b/ksafepack-system/src/main/java/com/kelp/business/dao/NewsDao.java new file mode 100644 index 0000000..34a5400 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/business/dao/NewsDao.java @@ -0,0 +1,10 @@ +package com.kelp.business.dao; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.business.entity.News; + +public interface NewsDao extends BaseDao{ + + Page getPage(int pageNum, int i, String type); +} diff --git a/ksafepack-system/src/main/java/com/kelp/business/dao/impl/BuyDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/business/dao/impl/BuyDaoImpl.java new file mode 100644 index 0000000..c147831 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/business/dao/impl/BuyDaoImpl.java @@ -0,0 +1,11 @@ +package com.kelp.business.dao.impl; + +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.business.dao.BuyDao; +import com.kelp.business.entity.Buy; +import org.springframework.stereotype.Repository; + +@Repository +public class BuyDaoImpl extends BaseDaoImpl implements BuyDao { + +} diff --git a/ksafepack-system/src/main/java/com/kelp/business/dao/impl/NewsDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/business/dao/impl/NewsDaoImpl.java new file mode 100644 index 0000000..1ce0909 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/business/dao/impl/NewsDaoImpl.java @@ -0,0 +1,30 @@ +package com.kelp.business.dao.impl; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.business.dao.NewsDao; +import com.kelp.business.entity.News; +import com.kelp.common.utils.DateUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; +import java.util.List; + +@Repository +public class NewsDaoImpl extends BaseDaoImpl implements NewsDao { + + @Override + public Page getPage(int pageNum, int pageSize, String type) { + String sql = " from News o where 1 = 1 "; + List params = new ArrayList<>(); + int index = 1; + if (!StringUtils.isEmpty(type)) { + sql += " and type = ?" + index++; + params.add(type); + } + + sql += " order by createTime desc"; + return getBeanPage(pageNum, pageSize, sql, params); + } +} diff --git a/ksafepack-system/src/main/java/com/kelp/business/entity/Buy.java b/ksafepack-system/src/main/java/com/kelp/business/entity/Buy.java new file mode 100644 index 0000000..af5083d --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/business/entity/Buy.java @@ -0,0 +1,74 @@ +package com.kelp.business.entity; + +import com.kelp.base.BaseEntity; +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.persistence.Transient; + +@Entity +@Table(name = "dt_business_buy") +public class Buy extends BaseEntity { + + private Long customerId; + + @Transient + private String name; + + @Transient + private String telephone; + + @Transient + private String companyName; + + private String type; + + private String fuwu; + + public String getFuwu() { + return fuwu; + } + + public void setFuwu(String fuwu) { + this.fuwu = fuwu; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getTelephone() { + return telephone; + } + + public void setTelephone(String telephone) { + this.telephone = telephone; + } + + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + } + + public Long getCustomerId() { + return customerId; + } + + public void setCustomerId(Long customerId) { + this.customerId = customerId; + } +} diff --git a/ksafepack-system/src/main/java/com/kelp/business/entity/News.java b/ksafepack-system/src/main/java/com/kelp/business/entity/News.java new file mode 100644 index 0000000..9a8c07f --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/business/entity/News.java @@ -0,0 +1,75 @@ +package com.kelp.business.entity; + +import com.kelp.base.BaseEntity; +import org.springframework.util.StringUtils; + +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.persistence.Transient; + +@Entity +@Table(name = "dt_business_news") +public class News extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + private String title; + + @Transient + private String subTitle; + + private String content; + + private String img; + + private String type; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getImg() { + return img; + } + + public void setImg(String img) { + this.img = img; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getSubTitle() { + if (StringUtils.isEmpty(content)) { + return ""; + } + if (content.length() > 100) { + return content.substring(0, 100) + "..."; + } + return content; + } + + public void setSubTitle(String subTitle) { + this.subTitle = subTitle; + } +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/crm/dao/DepartmentDao.java b/ksafepack-system/src/main/java/com/kelp/crm/dao/DepartmentDao.java new file mode 100644 index 0000000..d4581cd --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/dao/DepartmentDao.java @@ -0,0 +1,16 @@ +package com.kelp.crm.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.crm.entity.Department; + +public interface DepartmentDao extends BaseDao{ + + public Page getPage(int pageNumber, int pageSize,Long enterpriseId,Long pId,String name,String state); + + //取得直接下级 + public List listTop(Long enterpriseId,Long pId); + public List listdsub(Long enterpriseId,Long pId); +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/dao/EAccountDao.java b/ksafepack-system/src/main/java/com/kelp/crm/dao/EAccountDao.java new file mode 100644 index 0000000..ba791d2 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/dao/EAccountDao.java @@ -0,0 +1,16 @@ +package com.kelp.crm.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.crm.entity.EAccount; + +public interface EAccountDao extends BaseDao { + + public void setState(List ids, String state); + + public Page getPage(int pageNumber, int pageSize,Long enterpriseId,Long departmentId,String name,String telephone, Long roleId,String state); + + public Page getPage4m(int pageNumber, int pageSize,Long enterpriseId,String name,String telephone, Long roleId,String state); +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/dao/EContractDao.java b/ksafepack-system/src/main/java/com/kelp/crm/dao/EContractDao.java new file mode 100644 index 0000000..747d7a3 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/dao/EContractDao.java @@ -0,0 +1,16 @@ +package com.kelp.crm.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.crm.entity.EContract; + +public interface EContractDao extends BaseDao { + + public void setState(List ids, String state); + + public Page getPage(int pageNumber, int pageSize, String startDate, String endDate, String name, + String state); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/dao/ECustomerDao.java b/ksafepack-system/src/main/java/com/kelp/crm/dao/ECustomerDao.java new file mode 100644 index 0000000..8e523ea --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/dao/ECustomerDao.java @@ -0,0 +1,20 @@ +package com.kelp.crm.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.crm.entity.ECustomer; + +public interface ECustomerDao extends BaseDao { + + public List getAll(String state); + + public void setState(List ids, String state); + + public Page getPage(int pageNumber, int pageSize, String startDate, String endDate, String name, + String state); + + public Page getPage4NoVisit(int pageNumber, int pageSize, String startDate, String endDate); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/dao/ECustomerVisitDao.java b/ksafepack-system/src/main/java/com/kelp/crm/dao/ECustomerVisitDao.java new file mode 100644 index 0000000..4e55fc3 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/dao/ECustomerVisitDao.java @@ -0,0 +1,16 @@ +package com.kelp.crm.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.crm.entity.ECustomerVisit; + +public interface ECustomerVisitDao extends BaseDao { + + public void setState(List ids, String state); + + public Page getPage(int pageNumber, int pageSize, Long customerId, String startDate, String endDate, + String state); + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/crm/dao/EnterpriseDao.java b/ksafepack-system/src/main/java/com/kelp/crm/dao/EnterpriseDao.java new file mode 100644 index 0000000..f4bbdf8 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/dao/EnterpriseDao.java @@ -0,0 +1,19 @@ +package com.kelp.crm.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.crm.entity.Enterprise; + +public interface EnterpriseDao extends BaseDao{ + + public Page getPage(int pageNumber, int pageSize,Long pId,String name,String state); + + public List listAll(String state); + + //取得直接下级 + public List listTop(Long pId); + public List listdsub(Long pId); + public List listdsub(Long pId,String type); +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/DepartmentDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/DepartmentDaoImpl.java new file mode 100644 index 0000000..9b3f298 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/DepartmentDaoImpl.java @@ -0,0 +1,79 @@ +package com.kelp.crm.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.transaction.Transactional; + +import org.springframework.stereotype.Repository; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.crm.dao.DepartmentDao; +import com.kelp.crm.entity.Department; + +@Repository +public class DepartmentDaoImpl extends BaseDaoImpl implements DepartmentDao{ + + @Transactional + @Override + public boolean delete(List ids) { + for(Long id : ids){ + delete(id); + } + + return true; + } + + @Override + public boolean delete(Long id) { + String sqld = "update Department set state = '10' where id = :id "; + String sqlq = "select o from Department o where pId = :pId order by orderNumber"; + + @SuppressWarnings("unchecked") + List departmentList = em.createQuery(sqlq).setParameter("pId", id).getResultList(); + if(0 < departmentList.size()){ + for(Department department : departmentList){ + delete(department.getId()); + } + } + em.createQuery(sqld).setParameter("id", id).executeUpdate(); + + return true; + } + + @Override + public Page getPage(int pageNumber, int pageSize, Long enterpriseId, Long pId, String name, String state) { + if(name == null || name.length() == 0 || name.length() > 50){ + name = ""; + } + + if(state == null || state.length() != 2){ + state = "00"; + } + + String sql = " from Department o where enterpriseId=?1 and name like ?2 and pId = ?3 and state = ?4 order by orderNumber"; + List params = new ArrayList(); + params.add(enterpriseId); + params.add("%" + name + "%"); + params.add(pId); + params.add(state); + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @SuppressWarnings("unchecked") + @Override + public List listTop(Long enterpriseId, Long pId) { + String sql = "select new com.kelp.crm.entity.Department(o.id,o.name,o.pId,o.idPath) from Department o where id = :pId and enterpriseId = :enterpriseId and state = '00' order by orderNumber"; + return em.createQuery(sql).setParameter("enterpriseId", enterpriseId).setParameter("pId", pId).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List listdsub(Long enterpriseId,Long pId) { + + String sql = "select new com.kelp.crm.entity.Department(o.id,o.name,o.pId,o.idPath) from Department o where id != pId and enterpriseId = :enterpriseId and pId = :pId and state = '00' order by orderNumber"; + return em.createQuery(sql).setParameter("enterpriseId", enterpriseId).setParameter("pId", pId).getResultList(); + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/EAccountDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/EAccountDaoImpl.java new file mode 100644 index 0000000..ebc0cdd --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/EAccountDaoImpl.java @@ -0,0 +1,95 @@ +package com.kelp.crm.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.transaction.Transactional; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.crm.dao.EAccountDao; +import com.kelp.crm.entity.EAccount; + +@Repository +public class EAccountDaoImpl extends BaseDaoImpl implements EAccountDao { + + @Override + public Page getPage(int pageNumber, int pageSize, Long enterpriseId, Long departmentId, String name, String telephone, Long roleId, + String state) { + String sql = " from EAccount o where 1 = 1 "; + List params = new ArrayList(); + int index = 1; + + sql += " and enterpriseId = ?" + index++; + params.add(enterpriseId); + + sql += " and departmentId = ?" + index++; + params.add(departmentId); + + if(!StringUtils.isEmpty(name) && name.length() < 50){ + sql += " and name like ?" + index++; + params.add("%" + name + "%"); + } + + if(!StringUtils.isEmpty(telephone) && telephone.length() <= 32){ + sql += " and telephone = ?" + index++; + params.add(telephone); + } + + if(roleId != null ){ + sql += " and roleId = ?" + index++; + params.add(roleId); + } + + if(state != null && state.length() == 2){ + sql += " and state = ?" + index; + params.add(state); + } + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @Transactional + @Override + public void setState(List ids ,String state) { + String sql = "update EAccount set state = :state where id in (:ids)"; + em.createQuery(sql).setParameter("state", state).setParameter("ids", ids).executeUpdate(); + } + + @Override + public Page getPage4m(int pageNumber, int pageSize, Long enterpriseId, String name, String telephone, + Long roleId, String state) { + String sql = " from EAccount o where 1 = 1 "; + List params = new ArrayList(); + int index = 1; + + sql += " and enterpriseId = ?" + index++; + params.add(enterpriseId); + + if(!StringUtils.isEmpty(name) && name.length() < 50){ + sql += " and name like ?" + index++; + params.add("%" + name + "%"); + } + + if(!StringUtils.isEmpty(telephone) && telephone.length() <= 32){ + sql += " and telephone = ?" + index++; + params.add(telephone); + } + + if(roleId != null ){ + sql += " and roleId = ?" + index++; + params.add(roleId); + } + + if(state != null && state.length() == 2){ + sql += " and state = ?" + index; + params.add(state); + } + + return getBeanPage(pageNumber, pageSize, sql, params); + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/EContractDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/EContractDaoImpl.java new file mode 100644 index 0000000..a278e3b --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/EContractDaoImpl.java @@ -0,0 +1,62 @@ +package com.kelp.crm.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.transaction.Transactional; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; +import com.kelp.common.utils.DateUtils; +import com.kelp.crm.dao.EContractDao; +import com.kelp.crm.entity.EContract; + +@Repository +public class EContractDaoImpl extends BaseDaoImpl implements EContractDao { + + @Override + public Page getPage(int pageNumber, int pageSize, String startDate, String endDate, + String name, String state) { + String sql = " from EContract o where 1 = 1 "; + List params = new ArrayList(); + int index = 1; + + if (startDate != null && DateUtils.string2date(startDate + " 00:00:00") != null) { + sql = sql + " and signTime >= ?" + index++; + params.add(DateUtils.string2date(startDate + " 00:00:00").getTime()); + } + + if (endDate != null && DateUtils.string2date(endDate + " 23:59:59") != null) { + sql = sql + " and signTime <= ?" + index++; + params.add(DateUtils.string2date(endDate + " 23:59:59").getTime()); + } + + if (!StringUtils.isEmpty(name) && name.length() <= 50) { + sql += " and customerName = ?" + index++; + params.add(AESUtil.encrypt(name, KeyConstant.REALNAME)); + } + + if (state != null && state.length() == 2) { + sql += " and state = ?" + index; + params.add(state); + } + + sql += " order by createTime desc"; + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + + @Transactional + @Override + public void setState(List ids, String state) { + String sql = "update EContract set state = :state where id in (:ids)"; + em.createQuery(sql).setParameter("state", state).setParameter("ids", ids).executeUpdate(); + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/ECustomerDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/ECustomerDaoImpl.java new file mode 100644 index 0000000..a3661b2 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/ECustomerDaoImpl.java @@ -0,0 +1,95 @@ +package com.kelp.crm.dao.impl; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.transaction.Transactional; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.common.utils.DateUtils; +import com.kelp.crm.dao.ECustomerDao; +import com.kelp.crm.entity.ECustomer; + +@Repository +public class ECustomerDaoImpl extends BaseDaoImpl implements ECustomerDao { + + @Override + public Page getPage(int pageNumber, int pageSize, String startDate, String endDate, String name, + String state) { + String sql = " from ECustomer o where 1 = 1 "; + List params = new ArrayList(); + int index = 1; + + if (startDate != null && DateUtils.string2date(startDate + " 00:00:00") != null) { + sql = sql + " and createTime >= ?" + index++; + params.add(DateUtils.string2date(startDate + " 00:00:00").getTime()); + } + + if (endDate != null && DateUtils.string2date(endDate + " 23:59:59") != null) { + sql = sql + " and createTime <= ?" + index++; + params.add(DateUtils.string2date(endDate + " 23:59:59").getTime()); + } + + if (!StringUtils.isEmpty(name) && name.length() <= 50) { + sql += " and name = ?" + index++; + params.add(name); + } + + if (state != null && state.length() == 2) { + sql += " and state = ?" + index; + params.add(state); + } + + sql += " order by createTime desc"; + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @Override + public Page getPage4NoVisit(int pageNumber, int pageSize, String startDate, String endDate) { + String sql = " from ECustomer o where 1 = 1 "; + List params = new ArrayList(); + int index = 1; + + if (startDate == null || DateUtils.string2date(startDate + " 00:00:00") == null) { + startDate = DateUtils.date2Day(new Date()); + } + + if (endDate == null || DateUtils.string2date(endDate + " 23:59:59") == null) { + endDate = DateUtils.date2Day(new Date()); + } + + sql += " and id not in (select distinct customerId from ECustomerVisit where createTime >= ?" + (index++) + + " and createTime <= ?" + (index++) + " and state != '10')"; + + params.add(DateUtils.string2date(startDate + " 00:00:00").getTime()); + params.add(DateUtils.string2date(endDate + " 23:59:59").getTime()); + + sql += " order by createTime desc"; + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @Transactional + @Override + public void setState(List ids, String state) { + String sql = "update ECustomer set state = :state where id in (:ids)"; + em.createQuery(sql).setParameter("state", state).setParameter("ids", ids).executeUpdate(); + } + + @SuppressWarnings("unchecked") + @Override + public List getAll(String state) { + if (state == null || state.length() != 2) { + return getAll(); + } + String sql = "select o from ECustomer o where state = :state "; + return em.createQuery(sql).setParameter("state", state).getResultList(); + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/ECustomerVisitDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/ECustomerVisitDaoImpl.java new file mode 100644 index 0000000..06b2565 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/ECustomerVisitDaoImpl.java @@ -0,0 +1,59 @@ +package com.kelp.crm.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.transaction.Transactional; + +import org.springframework.stereotype.Repository; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.common.utils.DateUtils; +import com.kelp.crm.dao.ECustomerVisitDao; +import com.kelp.crm.entity.ECustomerVisit; + +@Repository +public class ECustomerVisitDaoImpl extends BaseDaoImpl implements ECustomerVisitDao { + + @Override + public Page getPage(int pageNumber, int pageSize, Long customerId, String startDate, + String endDate, String state) { + + String sql = " from ECustomerVisit o where 1 = 1 "; + List params = new ArrayList(); + int index = 1; + + if (customerId != null) { + sql += " and customerId = ?" + index++; + params.add(customerId); + } + + if (startDate != null && DateUtils.string2date(startDate + " 00:00:00") != null) { + sql = sql + " and visitTime >= ?" + index++; + params.add(DateUtils.string2date(startDate + " 00:00:00").getTime()); + } + + if (endDate != null && DateUtils.string2date(endDate + " 23:59:59") != null) { + sql = sql + " and visitTime <= ?" + index++; + params.add(DateUtils.string2date(endDate + " 23:59:59").getTime()); + } + + if (state != null && state.length() == 2) { + sql += " and state = ?" + index; + params.add(state); + } + + sql += " order by visitTime desc "; + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @Transactional + @Override + public void setState(List ids, String state) { + String sql = "update ECustomerVisit set state = :state where id in (:ids)"; + em.createQuery(sql).setParameter("state", state).setParameter("ids", ids).executeUpdate(); + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/EnterpriseDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/EnterpriseDaoImpl.java new file mode 100644 index 0000000..c9d0d4d --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/dao/impl/EnterpriseDaoImpl.java @@ -0,0 +1,104 @@ +package com.kelp.crm.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.transaction.Transactional; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.crm.dao.EnterpriseDao; +import com.kelp.crm.entity.Enterprise; + +@Repository +public class EnterpriseDaoImpl extends BaseDaoImpl implements EnterpriseDao{ + + @Transactional + @Override + public boolean delete(List ids) { + for(Long id : ids){ + delete(id); + } + + return true; + } + + @Override + public boolean delete(Long id) { + String sqld = "update Enterprise set state = '10' where id = :id "; + String sqlq = "select o from Enterprise o where pId = :pId order by name"; + + @SuppressWarnings("unchecked") + List enterpriseList = em.createQuery(sqlq).setParameter("pId", id).getResultList(); + if(0 < enterpriseList.size()){ + for(Enterprise enterprise : enterpriseList){ + delete(enterprise.getId()); + } + } + em.createQuery(sqld).setParameter("id", id).executeUpdate(); + + return true; + } + + @Override + public Page getPage(int pageNumber, int pageSize, Long pId, String name, String state) { + + String sql = " from Enterprise o where 1 = 1 "; + List params = new ArrayList(); + int index = 1; + + sql += " and pId = ?" + index++; + params.add(pId); + + if(!StringUtils.isEmpty(name) && name.length() < 50){ + sql += " and name like ?" + index++; + params.add("%" + name + "%"); + } + + if(state != null && state.length() == 2){ + sql += " and state = ?" + index; + params.add(state); + } + + sql += " order by name"; + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @SuppressWarnings("unchecked") + @Override + public List listTop(Long pId) { + String sql = "select new com.kelp.crm.entity.Enterprise(o.id,o.name,o.pId,o.type) from Enterprise o where id = :pId and state = '00' order by name"; + return em.createQuery(sql).setParameter("pId", pId).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List listdsub(Long pId) { + + String sql = "select new com.kelp.crm.entity.Enterprise(o.id,o.name,o.pId,o.type) from Enterprise o where id != pId and pId = :pId and state = '00' order by name"; + return em.createQuery(sql).setParameter("pId", pId).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List listdsub(Long pId,String type) { + + String sql = "select new com.kelp.crm.entity.Enterprise(o.id,o.name,o.pId,o.type) from Enterprise o where id != pId and pId = :pId and type = :type and state = '00' order by name"; + return em.createQuery(sql).setParameter("pId", pId).setParameter("type", type).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List listAll(String state) { + if(state == null || state.length() != 2) { + return getAll(); + } + String sql = "select o from Enterprise o where state = :state "; + return em.createQuery(sql).setParameter("state", state).getResultList(); + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/entity/Department.java b/ksafepack-system/src/main/java/com/kelp/crm/entity/Department.java new file mode 100644 index 0000000..ce3666d --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/entity/Department.java @@ -0,0 +1,157 @@ +/** + * 企业部门 + */ +package com.kelp.crm.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.persistence.Transient; + +import org.apache.commons.lang3.StringUtils; + +import com.kelp.base.BaseEntity; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; + +@Entity +@Table(name = "dt_enterprise_departmemt") +public class Department extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public Department() {} + + public Department(Long id,String name,Long pId,String idPath) { + this.setId(id); + this.name = name; + this.pId = pId; + this.idPath = idPath; + } + + /** + * 所属企业,一个人只能属于一家企业 + */ + @Column(nullable = false,name="enterpriseId") + private Long enterpriseId; + + /** + * 企业id path + */ + @Column(nullable = false,length = 512) + private String eidPath; + + /** + * 上级id,如果id=pId则为顶级 + */ + @Column(name="pId",nullable = false) + private Long pId; + + /** + * id path,默认支持10级 + */ + @Column(nullable = false,length = 512) + private String idPath; + + /** + * 部门名称 + */ + @Column(length = 50, nullable = false) + private String name; + + /** + * 联系电话 + */ + @Column(length = 128, nullable = false,name="phone") + private String phone_; + + /** + * 部门领导 + */ + @Column(length = 50, nullable = false,name="leader") + private String leader_; + + /** + * 显示排序 + */ + private int orderNumber; + + /** + * 00-正常;10删除 + */ + @Column(length = 2, nullable = false) + private String state; + + @Transient + public Boolean isParent = true; + + public Long getEnterpriseId() { + return enterpriseId; + } + public void setEnterpriseId(Long enterpriseId) { + this.enterpriseId = enterpriseId; + } + + public String getEidPath() { + return eidPath; + } + public void setEidPath(String eidPath) { + this.eidPath = eidPath; + } + + public Long getpId() { + return pId; + } + public void setpId(Long pId) { + this.pId = pId; + } + + public String getIdPath() { + return idPath; + } + public void setIdPath(String idPath) { + this.idPath = idPath; + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public String getPhone() { + return phone_ != null ? AESUtil.decrypt(phone_, KeyConstant.TELEPHONE) : ""; + } + public void setPhone(String phone) { + if (!StringUtils.isEmpty(phone)) { + this.phone_ = AESUtil.encrypt(phone, KeyConstant.TELEPHONE); + } + } + + public String getLeader() { + return leader_ != null ? AESUtil.decrypt(leader_, KeyConstant.NAME) : ""; + } + public void setLeader(String leader) { + if (!StringUtils.isEmpty(leader)) { + this.leader_ = AESUtil.encrypt(leader, KeyConstant.NAME); + } + } + + public int getOrderNumber() { + return orderNumber; + } + public void setOrderNumber(int orderNumber) { + this.orderNumber = orderNumber; + } + + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/entity/EAccount.java b/ksafepack-system/src/main/java/com/kelp/crm/entity/EAccount.java new file mode 100644 index 0000000..e0c91d7 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/entity/EAccount.java @@ -0,0 +1,199 @@ +/** + * 企业账号 + */ +package com.kelp.crm.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import org.apache.commons.lang3.StringUtils; + +import com.kelp.base.BaseEntity; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; + +@Entity +@Table(name = "dt_enterprise_account") +public class EAccount extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * 所属企业,一个人只能属于一家企业 + */ + @Column(nullable = false,name="enterpriseId") + private Long enterpriseId; + + /** + * 企业id path + */ + @Column(nullable = false,length = 512) + private String eidPath; + + /** + * 所属部门,一个人只能属于一个部门 + */ + @Column(nullable = false,name="departmentId") + private Long departmentId; + + /** + * 部门id path + */ + @Column(nullable = false,length = 512) + private String didPath; + + /** + * 昵称 + */ + @Column(nullable = false,name="name",length = 50) + private String name; + + /** + * 联系电话加密 + */ + @Column(length = 128, nullable = false, name = "telephone") + private String telephone_; + + /** + * 加密真实姓名 + */ + @Column(length = 128,name = "realName") + private String realName_; + + /** + * 头像 + */ + @Column(length = 128) + private String avatar; + + /** + * 性别:0-男;1-女;2-未知 + */ + @Column(nullable = false,length = 1) + private String sex; + + /** + * 密码,telephone为盐值 + */ + @Column(nullable = false,length=128) + private String password; + + /** + * role Id + */ + @Column(nullable = false,name="roleId") + private Long roleId; + + /** + * 状态:00-正常,10-锁定 + */ + @Column(nullable = false,length = 2) + private String state; + + public Long getEnterpriseId() { + return enterpriseId; + } + public void setEnterpriseId(Long enterpriseId) { + this.enterpriseId = enterpriseId; + } + + public String getEidPath() { + return eidPath; + } + public void setEidPath(String eidPath) { + this.eidPath = eidPath; + } + + public Long getDepartmentId() { + return departmentId; + } + public void setDepartmentId(Long departmentId) { + this.departmentId = departmentId; + } + + public String getDidPath() { + return didPath; + } + public void setDidPath(String didPath) { + this.didPath = didPath; + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public String getTelephone() { + return telephone_ != null ? AESUtil.decrypt(telephone_, KeyConstant.TELEPHONE) : ""; + } + public void setTelephone(String telephone) { + if (!StringUtils.isEmpty(telephone)) { + this.telephone_ = AESUtil.encrypt(telephone, KeyConstant.TELEPHONE); + } + } + + public String getRealName() { + return realName_ != null ? AESUtil.decrypt(realName_, KeyConstant.REALNAME) : ""; + } + public void setRealName(String realName) { + if (!StringUtils.isEmpty(realName)) { + this.realName_ = AESUtil.encrypt(realName, KeyConstant.REALNAME); + } + } + + public String getAvatar() { + return avatar; + } + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public String getSex() { + return sex; + } + public void setSex(String sex) { + this.sex = sex; + } + + public String getPassword() { + return password; + } + public void setPassword(String password) { + this.password = password; + } + + public Long getRoleId() { + return roleId; + } + public void setRoleId(Long roleId) { + this.roleId = roleId; + } + + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + + /** + * 将隐私数据处理 + * @param account + * @return + */ + public EAccount mask() { + this.setId(null); + this.setCreateTime(null); + this.setUpdateTime(null); + this.departmentId = null; + this.password = null; + return this; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/entity/EContract.java b/ksafepack-system/src/main/java/com/kelp/crm/entity/EContract.java new file mode 100644 index 0000000..5697124 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/entity/EContract.java @@ -0,0 +1,256 @@ +/** + * 合同 + */ +package com.kelp.crm.entity; + +import java.math.BigDecimal; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import org.apache.commons.lang3.StringUtils; + +import com.kelp.base.BaseEntity; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; + +@Entity +@Table(name = "dt_enterprise_contract") +public class EContract extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * 企业,目前不使用 + */ +// @Column(nullable = false,name="enterpriseId") +// private Long enterpriseId; + + /** + * 企业id path,目前不使用 + */ +// @Column(nullable = false,length = 512) +// private String eidPath; + + /** + * 部门,目前不使用 + */ +// @Column(nullable = false,name="departmentId") +// private Long departmentId; + + /** + * 部门id path,目前不使用 + */ +// @Column(nullable = false,length = 512) +// private String didPath; + + + /** + * 客户id,不可修改 + */ + @Column(nullable = false) + private Long customerId; + + /** + * 客户名称,不可修改 + */ + @Column(nullable = false,name="customerName",length = 128) + private String customerName_; + + /** + * 录入人,不可修改 + */ + @Column(nullable = false) + private Long accountId; + + /** + * 录入人姓名,不可修改 + */ + @Column(length = 128,nullable = false,name="accountName") + private String accountName_; + + /** + * 我方签订人 + */ + @Column(length = 128,nullable = false,name="staffName") + private String staffName_; + + /** + * 甲方签订人 + */ + @Column(length = 128,nullable = false,name="customerSignatory") + private String customerSignatory_; + + /** + * 签订时间 + */ + @Column(nullable = false) + private Long signTime; + + /** + * 合同终止时间 + */ + private Long endTime; + + /** + * 合同金额 + */ + private BigDecimal amount; + + /** + * 发票情况 + */ + @Column(length = 1024) + private String fapiao; + + /** + * 回款情况 + */ + @Column(length = 1024) + private String dso; + + /** + * 备注或内容 + */ + @Column(length = 1024) + private String content; + + + /** + * 状态:00-正常,10-删除 + */ + @Column(nullable = false,length = 2) + private String state; + +// public Long getEnterpriseId() { +// return enterpriseId; +// } +// public void setEnterpriseId(Long enterpriseId) { +// this.enterpriseId = enterpriseId; +// } + +// public String getEidPath() { +// return eidPath; +// } +// public void setEidPath(String eidPath) { +// this.eidPath = eidPath; +// } + +// public Long getDepartmentId() { +// return departmentId; +// } +// public void setDepartmentId(Long departmentId) { +// this.departmentId = departmentId; +// } + +// public String getDidPath() { +// return didPath; +// } +// public void setDidPath(String didPath) { +// this.didPath = didPath; +// } + + public Long getAccountId() { + return accountId; + } + public void setAccountId(Long accountId) { + this.accountId = accountId; + } + + public String getAccountName() { + return accountName_ != null ? AESUtil.decrypt(accountName_, KeyConstant.REALNAME) : ""; + } + public void setAccountName(String accountName) { + if (!StringUtils.isEmpty(accountName)) { + this.accountName_ = AESUtil.encrypt(accountName, KeyConstant.REALNAME); + } + } + + public String getStaffName() { + return staffName_ != null ? AESUtil.decrypt(staffName_, KeyConstant.REALNAME) : ""; + } + public void setStaffName(String staffName) { + if (!StringUtils.isEmpty(staffName)) { + this.staffName_ = AESUtil.encrypt(staffName, KeyConstant.REALNAME); + } + } + + public Long getCustomerId() { + return customerId; + } + public void setCustomerId(Long customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName_ != null ? AESUtil.decrypt(customerName_, KeyConstant.REALNAME) : ""; + } + public void setCustomerName(String customerName) { + if (!StringUtils.isEmpty(customerName)) { + this.customerName_ = AESUtil.encrypt(customerName, KeyConstant.REALNAME); + } + } + + public String getCustomerSignatory() { + return customerSignatory_ != null ? AESUtil.decrypt(customerSignatory_, KeyConstant.REALNAME) : ""; + } + public void setCustomerSignatory(String customerSignatory) { + if (!StringUtils.isEmpty(customerSignatory)) { + this.customerSignatory_ = AESUtil.encrypt(customerSignatory, KeyConstant.REALNAME); + } + } + + public Long getSignTime() { + return signTime; + } + public void setSignTime(Long signTime) { + this.signTime = signTime; + } + + public Long getEndTime() { + return endTime; + } + public void setEndTime(Long endTime) { + this.endTime = endTime; + } + + public BigDecimal getAmount() { + return amount; + } + public void setAmount(BigDecimal amount) { + this.amount = amount; + } + + public String getFapiao() { + return fapiao; + } + public void setFapiao(String fapiao) { + this.fapiao = fapiao; + } + + public String getDso() { + return dso; + } + public void setDso(String dso) { + this.dso = dso; + } + + public String getContent() { + return content; + } + public void setContent(String content) { + this.content = content; + } + + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/entity/ECustomer.java b/ksafepack-system/src/main/java/com/kelp/crm/entity/ECustomer.java new file mode 100644 index 0000000..02bb9cb --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/entity/ECustomer.java @@ -0,0 +1,216 @@ +/** + * 客户 + */ +package com.kelp.crm.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import org.apache.commons.lang3.StringUtils; + +import com.kelp.base.BaseEntity; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; + +@Entity +@Table(name = "dt_enterprise_customer") +public class ECustomer extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * 当前所属企业,目前不使用 + */ +// @Column(nullable = false,name="enterpriseId") +// private Long enterpriseId; + + /** + * 企业id path,目前不使用 + */ +// @Column(nullable = false,length = 512) +// private String eidPath; + + /** + * 当前所属部门,目前不使用 + */ +// @Column(nullable = false,name="departmentId") +// private Long departmentId; + + /** + * 部门id path,目前不使用 + */ +// @Column(nullable = false,length = 512) +// private String didPath; + + /** + * 录入人,不可修改,目前不使用 + */ +// @Column(nullable = false) +// private Long accountId; + + /** + * 录入人姓名,不可修改,目前不使用 + */ +// @Column(length = 128,nullable = false,name = "accountName") +// private String accountName_; + + /** + * 跟单人 + */ + @Column(length = 128,name="staffName") + private String staffName_; + + /** + * 客户名称 + */ + @Column(nullable = false,name="name",length = 128,unique = true) + private String name_; + + /** + * 联系人 + */ + @Column(length = 128, nullable = false,name="contact") + private String contact_; + + /** + * 联系电话加密 + */ + @Column(length = 128, nullable = false, name = "telephone") + private String telephone_; + + /** + * 最后有效日期始 + */ + private long effctiveTime; + + /** + * 最后有效日期止 + */ + private long expiredTime; + + /** + * 描述 + */ + @Column(length=256) + private String description; + + + /** + * 状态:00-待签约,01-签约,10-死单,11-删除 + */ + @Column(nullable = false,length = 2) + private String state; + +// public Long getEnterpriseId() { +// return enterpriseId; +// } +// public void setEnterpriseId(Long enterpriseId) { +// this.enterpriseId = enterpriseId; +// } + +// public String getEidPath() { +// return eidPath; +// } +// public void setEidPath(String eidPath) { +// this.eidPath = eidPath; +// } + +// public Long getDepartmentId() { +// return departmentId; +// } +// public void setDepartmentId(Long departmentId) { +// this.departmentId = departmentId; +// } + +// public String getDidPath() { +// return didPath; +// } +// public void setDidPath(String didPath) { +// this.didPath = didPath; +// } + +// public Long getAccountId() { +// return accountId; +// } +// public void setAccountId(Long accountId) { +// this.accountId = accountId; +// } + +// public String getAccountName() { +// return accountName_ != null ? AESUtil.decrypt(accountName_, KeyConstant.REALNAME) : ""; +// } +// public void setAccountName(String accountName) { +// if (!StringUtils.isEmpty(accountName)) { +// this.accountName_ = AESUtil.encrypt(accountName, KeyConstant.REALNAME); +// } +// } + + public String getName() { + return name_ != null ? AESUtil.decrypt(name_, KeyConstant.REALNAME) : ""; + } + public void setName(String name) { + if (!StringUtils.isEmpty(name)) { + this.name_ = AESUtil.encrypt(name, KeyConstant.REALNAME); + } + } + + public String getContact() { + return contact_ != null ? AESUtil.decrypt(contact_, KeyConstant.NAME) : ""; + } + public void setContact(String contact) { + if(!StringUtils.isEmpty(contact)) { + this.contact_ = AESUtil.encrypt(contact, KeyConstant.NAME); + } + } + + public String getTelephone() { + return telephone_ != null ? AESUtil.decrypt(telephone_, KeyConstant.TELEPHONE) : ""; + } + public void setTelephone(String telephone) { + if (!StringUtils.isEmpty(telephone)) { + this.telephone_ = AESUtil.encrypt(telephone, KeyConstant.TELEPHONE); + } + } + + public String getStaffName() { + return staffName_ != null ? AESUtil.decrypt(staffName_, KeyConstant.REALNAME) : ""; + } + public void setStaffName(String staffName) { + if (!StringUtils.isEmpty(staffName)) { + this.staffName_ = AESUtil.encrypt(staffName, KeyConstant.REALNAME); + } + } + + public long getEffctiveTime() { + return effctiveTime; + } + public void setEffctiveTime(long effctiveTime) { + this.effctiveTime = effctiveTime; + } + + public long getExpiredTime() { + return expiredTime; + } + public void setExpiredTime(long expiredTime) { + this.expiredTime = expiredTime; + } + + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/entity/ECustomerVisit.java b/ksafepack-system/src/main/java/com/kelp/crm/entity/ECustomerVisit.java new file mode 100644 index 0000000..9742688 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/entity/ECustomerVisit.java @@ -0,0 +1,233 @@ +/** + * 客户拜访记录 + */ +package com.kelp.crm.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import org.apache.commons.lang3.StringUtils; + +import com.kelp.base.BaseEntity; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; + +@Entity +@Table(name = "dt_enterprise_customer_visit") +public class ECustomerVisit extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * 企业,目前不使用 + */ +// @Column(nullable = false,name="enterpriseId") +// private Long enterpriseId; + + /** + * 企业id path,目前不使用 + */ +// @Column(nullable = false,length = 512) +// private String eidPath; + + /** + * 部门,目前不使用 + */ +// @Column(nullable = false,name="departmentId") +// private Long departmentId; + + /** + * 部门id path,目前不使用 + */ +// @Column(nullable = false,length = 512) +// private String didPath; + + /** + * 录入人,不可修改 + */ + @Column(nullable = false) + private Long accountId; + + /** + * 录入人姓名,不可修改 + */ + @Column(length = 128,nullable = false,name="accountName") + private String accountName_; + + /** + * 拜访人 + */ + @Column(length = 128,nullable = false,name="staffName") + private String staffName_; + + /** + * 约见人 + */ + @Column(length = 128,nullable = false,name="visiter") + private String visiter_; + + /** + * 约见人 + */ + @Column(length = 128,nullable = false,name="visiterTelephone") + private String visiterTelephone_; + + /** + * 拜访时间 + */ + @Column(nullable = false) + private Long visitTime; + + /** + * 客户id,不可修改 + */ + @Column(nullable = false) + private Long customerId; + + /** + * 客户名称,不可修改 + */ + @Column(nullable = false,name="customerName",length = 128) + private String customerName_; + + /** + * 联系电话加密 + */ + @Column(length = 128, nullable = false, name = "customerTelephone") + private String customerTelephone_; + + /** + * 拜访内容及结果 + */ + @Column(length = 1024,nullable = false) + private String content; + + + /** + * 状态:00-待签约,01-签约,10-死单,11-删除 + */ + @Column(nullable = false,length = 2) + private String state; + +// public Long getEnterpriseId() { +// return enterpriseId; +// } +// public void setEnterpriseId(Long enterpriseId) { +// this.enterpriseId = enterpriseId; +// } + +// public String getEidPath() { +// return eidPath; +// } +// public void setEidPath(String eidPath) { +// this.eidPath = eidPath; +// } + +// public Long getDepartmentId() { +// return departmentId; +// } +// public void setDepartmentId(Long departmentId) { +// this.departmentId = departmentId; +// } + +// public String getDidPath() { +// return didPath; +// } +// public void setDidPath(String didPath) { +// this.didPath = didPath; +// } + + public Long getAccountId() { + return accountId; + } + public void setAccountId(Long accountId) { + this.accountId = accountId; + } + + public String getAccountName() { + return accountName_ != null ? AESUtil.decrypt(accountName_, KeyConstant.REALNAME) : ""; + } + public void setAccountName(String accountName) { + if (!StringUtils.isEmpty(accountName)) { + this.accountName_ = AESUtil.encrypt(accountName, KeyConstant.REALNAME); + } + } + + public String getStaffName() { + return staffName_ != null ? AESUtil.decrypt(staffName_, KeyConstant.REALNAME) : ""; + } + public void setStaffName(String staffName) { + if (!StringUtils.isEmpty(staffName)) { + this.staffName_ = AESUtil.encrypt(staffName, KeyConstant.REALNAME); + } + } + + public String getVisiter() { + return visiter_ != null ? AESUtil.decrypt(visiter_, KeyConstant.REALNAME) : ""; + } + public void setVisiter(String visiter) { + if (!StringUtils.isEmpty(visiter)) { + this.visiter_ = AESUtil.encrypt(visiter, KeyConstant.REALNAME); + } + } + + public String getVisiterTelephone() { + return visiterTelephone_ != null ? AESUtil.decrypt(visiterTelephone_, KeyConstant.TELEPHONE) : ""; + } + public void setVisiterTelephone(String visiterTelephone) { + if (!StringUtils.isEmpty(visiterTelephone)) { + this.visiterTelephone_ = AESUtil.encrypt(visiterTelephone, KeyConstant.TELEPHONE); + } + } + + public Long getVisitTime() { + return visitTime; + } + public void setVisitTime(Long visitTime) { + this.visitTime = visitTime; + } + + public Long getCustomerId() { + return customerId; + } + public void setCustomerId(Long customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName_ != null ? AESUtil.decrypt(customerName_, KeyConstant.REALNAME) : ""; + } + public void setCustomerName(String customerName) { + if (!StringUtils.isEmpty(customerName)) { + this.customerName_ = AESUtil.encrypt(customerName, KeyConstant.REALNAME); + } + } + + public String getCustomerTelephone() { + return customerTelephone_ != null ? AESUtil.decrypt(customerTelephone_, KeyConstant.TELEPHONE) : ""; + } + public void setCustomerTelephone(String customerTelephone) { + if (!StringUtils.isEmpty(customerTelephone)) { + this.customerTelephone_ = AESUtil.encrypt(customerTelephone, KeyConstant.TELEPHONE); + } + } + + public String getContent() { + return content; + } + public void setContent(String content) { + this.content = content; + } + + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/entity/Enterprise.java b/ksafepack-system/src/main/java/com/kelp/crm/entity/Enterprise.java new file mode 100644 index 0000000..ea39197 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/entity/Enterprise.java @@ -0,0 +1,172 @@ +/** + * 企业 + */ +package com.kelp.crm.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Lob; +import javax.persistence.Table; +import javax.persistence.Transient; + +import org.apache.commons.lang3.StringUtils; + +import com.kelp.base.BaseEntity; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; + +@Entity +@Table(name = "dt_enterprise") +public class Enterprise extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public Enterprise() {} + + public Enterprise(Long id,String name,Long pId,String type) { + this.setId(id); + this.name = name; + this.pId = pId; + this.type = type; + } + + /** + * 类型:00-企业;01-代理 + */ + @Column(length = 2,nullable = false) + private String type = "00"; + + /** + * 上级id,如果id=pId则为顶级 + */ + @Column(name="pId",nullable = false) + private Long pId; + + /** + * id path,默认支持10级 + */ + @Column(nullable = false,length = 512) + private String idPath; + + /** + * 名称 + */ + @Column(nullable = false,name="name",length = 50,unique = true) + private String name; + + /** + * 联系电话加密 + */ + @Column(length = 128, nullable = false, name = "telephone") + private String telephone_; + + /** + * 联系人 + */ + @Column(length = 50, nullable = false,name="contact") + private String contact_; + + /** + * 图片 + */ + @Column(length = 128) + private String avatar; + + /** + * 地址 + */ + private String address; + + /** + * 简介 + */ + @Lob + private String description; + + /** + * 状态:00-正常,10-锁定 + */ + @Column(nullable = false,length = 2) + private String state; + + @Transient + public Boolean isParent = true; + + public Long getpId() { + return pId; + } + public void setpId(Long pId) { + this.pId = pId; + } + + public String getIdPath() { + return idPath; + } + public void setIdPath(String idPath) { + this.idPath = idPath; + } + + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public String getTelephone() { + return telephone_ != null ? AESUtil.decrypt(telephone_, KeyConstant.TELEPHONE) : ""; + } + public void setTelephone(String telephone) { + if(!StringUtils.isEmpty(telephone)) { + this.telephone_ = AESUtil.encrypt(telephone, KeyConstant.TELEPHONE); + } + } + + public String getContact() { + return contact_ != null ? AESUtil.decrypt(contact_, KeyConstant.NAME) : ""; + } + public void setContact(String contact) { + if(!StringUtils.isEmpty(contact)) { + this.contact_ = AESUtil.encrypt(contact, KeyConstant.NAME); + } + } + + public String getAvatar() { + return avatar; + } + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public String getAddress() { + return address; + } + public void setAddress(String address) { + this.address = address; + } + + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/service/DepartmentService.java b/ksafepack-system/src/main/java/com/kelp/crm/service/DepartmentService.java new file mode 100644 index 0000000..a0aaece --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/service/DepartmentService.java @@ -0,0 +1,25 @@ +package com.kelp.crm.service; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.crm.entity.Department; + +public interface DepartmentService { + + public void add(Department department); + + public void update(Department department); + + public void delete(String[] ids); + + public Department getById(String id); + + // + public Page getPage(int pageNumber, int pageSize,String enterpriseId,String pId,String name,String state); + + //取得直接下级 + public List listTop(String enterpriseId,String pId); + public List listdsub(String enterpriseId,String pId); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/service/EAccountService.java b/ksafepack-system/src/main/java/com/kelp/crm/service/EAccountService.java new file mode 100644 index 0000000..3c684f3 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/service/EAccountService.java @@ -0,0 +1,52 @@ +package com.kelp.crm.service; + +import com.kelp.base.Page; +import com.kelp.crm.entity.EAccount; + +public interface EAccountService { + + public void add(EAccount account); + + public void add4m(EAccount account); + + public void update(EAccount account); + + public void update4m(EAccount account); + + public EAccount getById(String id); + + public EAccount getByTelephone(String telephone); + + public EAccount getBySelfId(String selfId); + + public void delete(String[] ids); + + /** + * + * @param pageNumber + * @param pageSize + * @param name - 昵称 + * @param telephone + * @param roleId + * @param state + * @return + */ + public Page getPage(int pageNumber, int pageSize, String enterpriseId, String departmentId, String name, + String telephone, String roleId, String state); + + /** + * 公司管理员查询 + * + * @param pageNumber + * @param pageSize + * @param enterpriseId + * @param name + * @param telephone + * @param roleId + * @param state + * @return + */ + public Page getPage4m(int pageNumber, int pageSize, String enterpriseId, String name, String telephone, + String roleId, String state); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/service/EContractService.java b/ksafepack-system/src/main/java/com/kelp/crm/service/EContractService.java new file mode 100644 index 0000000..a45bda6 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/service/EContractService.java @@ -0,0 +1,19 @@ +package com.kelp.crm.service; + +import com.kelp.base.Page; +import com.kelp.crm.entity.EContract; + +public interface EContractService { + + public void add(EContract contract); + + public void update(EContract contract); + + public EContract getById(String id); + + public void delete(String[] ids); + + public Page getPage(int pageNumber, int pageSize, String startDate, String endDate, String name, + String state); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/service/ECustomerService.java b/ksafepack-system/src/main/java/com/kelp/crm/service/ECustomerService.java new file mode 100644 index 0000000..331796b --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/service/ECustomerService.java @@ -0,0 +1,27 @@ +package com.kelp.crm.service; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.crm.entity.ECustomer; + +public interface ECustomerService { + + public ECustomer add(ECustomer customer); + + public void update(ECustomer customer); + + public ECustomer getByName(String name); + + public ECustomer getById(String id); + + public void delete(String[] ids); + + public List getAll(String state); + + public Page getPage(int pageNumber, int pageSize, String startDate, String endDate, String name, + String state); + + public Page getPage4NoVisit(int pageNumber, int pageSize, String startDate, String endDate); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/service/ECustomerVisitService.java b/ksafepack-system/src/main/java/com/kelp/crm/service/ECustomerVisitService.java new file mode 100644 index 0000000..6194a70 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/service/ECustomerVisitService.java @@ -0,0 +1,19 @@ +package com.kelp.crm.service; + +import com.kelp.base.Page; +import com.kelp.crm.entity.ECustomerVisit; + +public interface ECustomerVisitService { + + public void add(ECustomerVisit customerVisit); + + public void update(ECustomerVisit customerVisit); + + public ECustomerVisit getById(String id); + + public void delete(String[] ids); + + public Page getPage(int pageNumber, int pageSize, String customerId, String startDate, + String endDate, String state); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/service/EnterpriseService.java b/ksafepack-system/src/main/java/com/kelp/crm/service/EnterpriseService.java new file mode 100644 index 0000000..df8a54a --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/service/EnterpriseService.java @@ -0,0 +1,29 @@ +package com.kelp.crm.service; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.crm.entity.Enterprise; + +public interface EnterpriseService { + + public void add(Enterprise company); + + public void update(Enterprise company); + + public void delete(String[] ids); + + public Enterprise getById(String id); + + public Enterprise getByName(String name); + + public List listAll(String state); + + // + public Page getPage(int pageNumber, int pageSize,String pId,String name,String state); + + //取得直接下级 + public List listTop(Long pId); + public List listdsub(String pId); + public List listdsub(String pId ,String type); +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/service/impl/DepartmentServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/crm/service/impl/DepartmentServiceImpl.java new file mode 100644 index 0000000..b26032e --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/service/impl/DepartmentServiceImpl.java @@ -0,0 +1,93 @@ +package com.kelp.crm.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.common.utils.IdWorker; +import com.kelp.crm.dao.DepartmentDao; +import com.kelp.crm.dao.EnterpriseDao; +import com.kelp.crm.entity.Department; +import com.kelp.crm.entity.Enterprise; +import com.kelp.crm.service.DepartmentService; + +@Service +public class DepartmentServiceImpl implements DepartmentService { + + @Autowired + private IdWorker idWorker; + + @Autowired + private DepartmentDao departmentDao; + + @Autowired + private EnterpriseDao enterpriseDao; + + @Override + public void add(Department department) { + Enterprise enterprise = enterpriseDao.get(department.getEnterpriseId()); + department.setEidPath(enterprise != null?enterprise.getIdPath():"0"); + + department.setId(idWorker.nextId()); + //先设为0 + department.setIdPath("0"); + //保存之后处理 + Department pdepartment = departmentDao.get(department.getpId()); + department.setIdPath((pdepartment != null?pdepartment.getIdPath():"0") + "-" + String.valueOf(department.getId())); + departmentDao.update(department); + } + + @Override + public void update(Department department) { + Enterprise enterprise = enterpriseDao.get(department.getEnterpriseId()); + department.setEidPath(enterprise != null?enterprise.getIdPath():"0"); + + Department pdepartment = departmentDao.get(department.getpId()); + department.setIdPath((pdepartment != null?pdepartment.getIdPath():"0") + "-" + String.valueOf(department.getId())); + departmentDao.update(department); + } + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for(String id : ids){ + try { + ids_.add(Long.valueOf(id)); + } catch (Exception e) { + return; + } + } + departmentDao.delete(ids_); + } + + @Override + public Department getById(String id) { + return departmentDao.get(Long.valueOf(id)); + } + + @Override + public Page getPage(int pageNumber, int pageSize,String enterpriseId,String pId,String name,String state) { + + Page page = departmentDao.getPage(pageNumber, pageSize,Long.valueOf(enterpriseId),Long.valueOf(pId),name,state); + + if(page == null){ + page = new Page(); + } + + return page; + } + + @Override + public List listTop(String enterpriseId, String pId) { + return departmentDao.listTop(Long.valueOf(enterpriseId),Long.valueOf(pId)); + } + + @Override + public List listdsub(String enterpriseId,String pId) { + return departmentDao.listdsub(Long.valueOf(enterpriseId),Long.valueOf(pId)); + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/service/impl/EAccountServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/crm/service/impl/EAccountServiceImpl.java new file mode 100644 index 0000000..a218b2c --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/service/impl/EAccountServiceImpl.java @@ -0,0 +1,125 @@ +package com.kelp.crm.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; +import com.kelp.common.utils.IdWorker; +import com.kelp.crm.dao.DepartmentDao; +import com.kelp.crm.dao.EAccountDao; +import com.kelp.crm.dao.EnterpriseDao; +import com.kelp.crm.entity.Department; +import com.kelp.crm.entity.EAccount; +import com.kelp.crm.entity.Enterprise; +import com.kelp.crm.service.EAccountService; + +@Service +public class EAccountServiceImpl implements EAccountService { + + @Autowired + private IdWorker idWorker; + + @Autowired + private EAccountDao accountDao; + + @Autowired + private DepartmentDao departmentDao; + + @Autowired + private EnterpriseDao enterpriseDao; + + @Override + public EAccount getByTelephone(String telephone) { + return accountDao.get("telephone_", AESUtil.encrypt(telephone, KeyConstant.TELEPHONE)); + } + + @Override + public EAccount getBySelfId(String selfId) { + return accountDao.get("selfId_", AESUtil.encrypt(selfId, KeyConstant.SELFID)); + } + + @Override + public void add(EAccount account) { + Department department = departmentDao.get(account.getDepartmentId()); + account.setId(idWorker.nextId()); + account.setEidPath(department != null?department.getEidPath():"0"); + account.setDidPath(department != null?department.getIdPath():"0"); + accountDao.add(account); + } + + @Override + public void add4m(EAccount account) { + Enterprise enterprise = enterpriseDao.get(account.getEnterpriseId()); + account.setId(idWorker.nextId()); + account.setEidPath(enterprise != null?enterprise.getIdPath():"0"); + account.setDepartmentId(0L); + account.setDidPath("0"); + accountDao.add(account); + } + + @Override + public void update(EAccount account) { + Department department = departmentDao.get(account.getDepartmentId()); + account.setEidPath(department != null?department.getEidPath():"0"); + account.setDidPath(department != null?department.getIdPath():"0"); + accountDao.update(account); + } + + @Override + public void update4m(EAccount account) { + Enterprise enterprise = enterpriseDao.get(account.getEnterpriseId()); + account.setEidPath(enterprise != null?enterprise.getIdPath():"0"); + account.setDepartmentId(0L); + account.setDidPath("0"); + accountDao.update(account); + } + + @Override + public EAccount getById(String id) { + return accountDao.get(Long.valueOf(id)); + } + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for(String id : ids){ + try { + ids_.add(Long.valueOf(id)); + } catch (Exception e) { + return; + } + } + accountDao.setState(ids_, "10"); + } + + @Override + public Page getPage(int pageNumber, int pageSize, String enterpriseId, String departmentId, String name, String telephone, String roleId, + String state) { + Page page = accountDao.getPage(pageNumber, pageSize,Long.valueOf(enterpriseId),(!StringUtils.isEmpty(departmentId))?Long.valueOf(departmentId) : null, name, !StringUtils.isEmpty(telephone) ? AESUtil.encrypt(telephone, KeyConstant.TELEPHONE) : null, (!StringUtils.isEmpty(roleId))?Long.valueOf(roleId) : null, state); + + if (page == null) { + page = new Page(); + } + + return page; + } + + @Override + public Page getPage4m(int pageNumber, int pageSize, String enterpriseId, String name, String telephone, String roleId, + String state) { + Page page = accountDao.getPage4m(pageNumber, pageSize,Long.valueOf(enterpriseId), name, !StringUtils.isEmpty(telephone) ? AESUtil.encrypt(telephone, KeyConstant.TELEPHONE) : null, (!StringUtils.isEmpty(roleId))?Long.valueOf(roleId) : null, state); + + if (page == null) { + page = new Page(); + } + + return page; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/service/impl/EContractServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/crm/service/impl/EContractServiceImpl.java new file mode 100644 index 0000000..31bde6c --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/service/impl/EContractServiceImpl.java @@ -0,0 +1,85 @@ +package com.kelp.crm.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.common.utils.IdWorker; +import com.kelp.crm.dao.EAccountDao; +import com.kelp.crm.dao.EContractDao; +import com.kelp.crm.dao.ECustomerDao; +import com.kelp.crm.entity.EAccount; +import com.kelp.crm.entity.EContract; +import com.kelp.crm.entity.ECustomer; +import com.kelp.crm.service.EContractService; + +@Service +public class EContractServiceImpl implements EContractService { + + @Autowired + private IdWorker idWorker; + + @Autowired + private ECustomerDao customerDao; + + @Autowired + private EAccountDao accountDao; + + @Autowired + private EContractDao contractDao; + + @Override + public void add(EContract contract) { + // 设置默认值 + EAccount account = accountDao.get(contract.getAccountId()); + ECustomer customer = customerDao.get(contract.getCustomerId()); + + if (account == null || customer == null) { + return; + } + + contract.setId(idWorker.nextId()); + contract.setAccountName(account.getName()); + contract.setCustomerName(customer.getName()); + contractDao.add(contract); + } + + @Override + public void update(EContract contract) { + contractDao.update(contract); + } + + @Override + public EContract getById(String id) { + return contractDao.get(Long.valueOf(id)); + } + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for (String id : ids) { + try { + ids_.add(Long.valueOf(id)); + } catch (Exception e) { + return; + } + } + contractDao.setState(ids_, "10"); + } + + @Override + public Page getPage(int pageNumber, int pageSize, String startDate, String endDate, String name, + String state) { + Page page = contractDao.getPage(pageNumber, pageSize, startDate, endDate, name, state); + + if (page == null) { + page = new Page(); + } + + return page; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/service/impl/ECustomerServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/crm/service/impl/ECustomerServiceImpl.java new file mode 100644 index 0000000..1fe0a44 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/service/impl/ECustomerServiceImpl.java @@ -0,0 +1,89 @@ +package com.kelp.crm.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; +import com.kelp.common.utils.IdWorker; +import com.kelp.crm.dao.ECustomerDao; +import com.kelp.crm.entity.ECustomer; +import com.kelp.crm.service.ECustomerService; + +@Service +public class ECustomerServiceImpl implements ECustomerService { + + @Autowired + private IdWorker idWorker; + + @Autowired + private ECustomerDao customerDao; + + @Override + public ECustomer add(ECustomer customer) { + customer.setId(idWorker.nextId()); + customerDao.add(customer); + return customer; + } + + @Override + public void update(ECustomer customer) { + customerDao.update(customer); + } + + @Override + public ECustomer getByName(String name) { + return customerDao.get("name_", AESUtil.encrypt(name, KeyConstant.REALNAME)); + } + + @Override + public ECustomer getById(String id) { + return customerDao.get(Long.valueOf(id)); + } + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for (String id : ids) { + try { + ids_.add(Long.valueOf(id)); + } catch (Exception e) { + return; + } + } + customerDao.setState(ids_, "11"); + } + + @Override + public Page getPage(int pageNumber, int pageSize, String startDate, String endDate, String name, + String state) { + Page page = customerDao.getPage(pageNumber, pageSize, startDate, endDate, name, state); + + if (page == null) { + page = new Page(); + } + + return page; + } + + @Override + public Page getPage4NoVisit(int pageNumber, int pageSize, String startDate, String endDate) { + Page page = customerDao.getPage4NoVisit(pageNumber, pageSize, startDate, endDate); + + if (page == null) { + page = new Page(); + } + + return page; + } + + @Override + public List getAll(String state) { + return customerDao.getAll(state); + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/service/impl/ECustomerVisitServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/crm/service/impl/ECustomerVisitServiceImpl.java new file mode 100644 index 0000000..ef65f12 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/service/impl/ECustomerVisitServiceImpl.java @@ -0,0 +1,90 @@ +package com.kelp.crm.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.common.utils.IdWorker; +import com.kelp.crm.dao.EAccountDao; +import com.kelp.crm.dao.ECustomerDao; +import com.kelp.crm.dao.ECustomerVisitDao; +import com.kelp.crm.entity.EAccount; +import com.kelp.crm.entity.ECustomer; +import com.kelp.crm.entity.ECustomerVisit; +import com.kelp.crm.service.ECustomerVisitService; + +@Service +public class ECustomerVisitServiceImpl implements ECustomerVisitService { + + @Autowired + private IdWorker idWorker; + + @Autowired + private ECustomerVisitDao customerVisitDao; + + @Autowired + private ECustomerDao customerDao; + + @Autowired + private EAccountDao accountDao; + + @Override + public void add(ECustomerVisit customerVisit) { + // 设置默认值 + ECustomer customer = customerDao.get(customerVisit.getCustomerId()); + EAccount account = accountDao.get(customerVisit.getAccountId()); + + if (customer == null || account == null) { + return; + } + + customerVisit.setId(idWorker.nextId()); + customerVisit.setAccountName(account.getRealName()); + + customerVisit.setCustomerName(customer.getName()); + customerVisit.setCustomerTelephone(customer.getTelephone()); + + customerVisitDao.add(customerVisit); + } + + @Override + public void update(ECustomerVisit customerVisit) { + customerVisitDao.update(customerVisit); + } + + @Override + public ECustomerVisit getById(String id) { + return customerVisitDao.get(Long.valueOf(id)); + } + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for (String id : ids) { + try { + ids_.add(Long.valueOf(id)); + } catch (Exception e) { + return; + } + } + customerVisitDao.setState(ids_, "10"); + } + + @Override + public Page getPage(int pageNumber, int pageSize, String customerId, String startDate, + String endDate, String state) { + + Page page = customerVisitDao.getPage(pageNumber, pageSize, + customerId != null ? Long.valueOf(customerId) : null, startDate, endDate, state); + + if (page == null) { + page = new Page(); + } + + return page; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/crm/service/impl/EnterpriseServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/crm/service/impl/EnterpriseServiceImpl.java new file mode 100644 index 0000000..7eaf6ca --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/crm/service/impl/EnterpriseServiceImpl.java @@ -0,0 +1,96 @@ +package com.kelp.crm.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.common.utils.IdWorker; +import com.kelp.crm.dao.EnterpriseDao; +import com.kelp.crm.entity.Enterprise; +import com.kelp.crm.service.EnterpriseService; + +@Service +public class EnterpriseServiceImpl implements EnterpriseService { + + @Autowired + private IdWorker idWorker; + + @Autowired + private EnterpriseDao enterpriseDao; + + @Override + public void add(Enterprise enterprise) { + enterprise.setId(idWorker.nextId()); + enterprise.setIdPath("0"); + Enterprise penterprise = enterpriseDao.get(enterprise.getpId()); + enterprise.setIdPath((penterprise != null ? penterprise.getIdPath(): "0") + "-" + String.valueOf(enterprise.getId())); + enterpriseDao.add(enterprise); + } + + @Override + public void update(Enterprise enterprise) { + + Enterprise penterprise = enterpriseDao.get(enterprise.getpId()); + enterprise.setIdPath((penterprise != null ? penterprise.getIdPath(): "0") + "-" + String.valueOf(enterprise.getId())); + enterpriseDao.update(enterprise); + } + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for(String id : ids){ + try { + ids_.add(Long.valueOf(id)); + } catch (Exception e) { + return; + } + } + enterpriseDao.delete(ids_); + } + + @Override + public Enterprise getById(String id) { + return enterpriseDao.get(Long.valueOf(id)); + } + + @Override + public Enterprise getByName(String name) { + return enterpriseDao.get("name",name); + } + + @Override + public List listAll(String state) { + return enterpriseDao.listAll(state); + } + + @Override + public Page getPage(int pageNumber, int pageSize, String pId,String name,String state) { + + Page page = enterpriseDao.getPage(pageNumber, pageSize,Long.valueOf(pId),name,state); + + if(page == null){ + page = new Page(); + } + + return page; + } + + @Override + public List listTop(Long pId) { + return enterpriseDao.listTop(pId); + } + + @Override + public List listdsub(String pId) { + return enterpriseDao.listdsub(Long.valueOf(pId)); + } + + @Override + public List listdsub(String pId,String type) { + return enterpriseDao.listdsub(Long.valueOf(pId),type); + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/es/dao/ESDocumentDao.java b/ksafepack-system/src/main/java/com/kelp/es/dao/ESDocumentDao.java new file mode 100644 index 0000000..ac5e886 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/es/dao/ESDocumentDao.java @@ -0,0 +1,49 @@ +package com.kelp.es.dao; + +import java.util.List; +import java.util.Map; + +import org.elasticsearch.search.builder.SearchSourceBuilder; + +import com.kelp.base.BaseEntity; +import com.kelp.base.Page; + +/** + * ES操作基类接口 + * + * @author Administrator + * + * @param 泛型,比如我们对实体类Course进行数据库操作,则在子类中传入Course,见CourseDaoBean代码,T必须实现持久化接口 + * @param 泛型,主键,可以是任意类型 + */ +public interface ESDocumentDao { + + /** + * 添加或更新 + * + * @param indexName + * @param entity + */ + public void add(String indexName, BaseEntity entity); + + public void adds(String indexName, List list); + + public void update(String indexName, BaseEntity entity); + + /** + * 此处id为document id + * + * @param indexName + * @param id + * @return + */ + public Map getById(String indexName, Integer id); + + public void delete(String indexName, Integer id); + + public void deletes(String idxName, List idList); + + public Page getPage(int pageNumber, int pageSize, String indexName, Class classz, + SearchSourceBuilder searchSourceBuilder, List highlightFields); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/es/dao/ESIndexDao.java b/ksafepack-system/src/main/java/com/kelp/es/dao/ESIndexDao.java new file mode 100644 index 0000000..264415e --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/es/dao/ESIndexDao.java @@ -0,0 +1,17 @@ +package com.kelp.es.dao; + +/** + * ES操作基类接口 + * + */ +public interface ESIndexDao { + + public void createIndex(String indexName); + + public boolean isExistsIndex(String indexName); + + public void updateIndexSettings(String indexName); + + public void deleteIndex(String indexName); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/es/dao/impl/ESDocumentDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/es/dao/impl/ESDocumentDaoImpl.java new file mode 100644 index 0000000..10032c7 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/es/dao/impl/ESDocumentDaoImpl.java @@ -0,0 +1,215 @@ +package com.kelp.es.dao.impl; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.elasticsearch.action.bulk.BulkRequest; +import org.elasticsearch.action.delete.DeleteRequest; +import org.elasticsearch.action.get.GetRequest; +import org.elasticsearch.action.get.GetResponse; +import org.elasticsearch.action.index.IndexRequest; +import org.elasticsearch.action.search.SearchRequest; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.update.UpdateRequest; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.RestHighLevelClient; +import org.elasticsearch.client.core.CountRequest; +import org.elasticsearch.client.core.CountResponse; +import org.elasticsearch.common.unit.TimeValue; +import org.elasticsearch.common.xcontent.XContentType; +import org.elasticsearch.search.SearchHit; +import org.elasticsearch.search.SearchHits; +import org.elasticsearch.search.builder.SearchSourceBuilder; +import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; +import org.elasticsearch.search.fetch.subphase.highlight.HighlightField; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.BaseEntity; +import com.kelp.base.Page; +import com.kelp.common.utils.object.ObjectUtil; +import com.kelp.es.dao.ESDocumentDao; + +/** + * 基类ESDocument的实现,是抽象类 + */ +@Service +public class ESDocumentDaoImpl implements ESDocumentDao { + + private static Logger log = LoggerFactory.getLogger(ESDocumentDaoImpl.class); + + /** + * 这里获取的ElasticSearchConfig中声明的RestHighLevelClient对象 + */ + @Autowired + private RestHighLevelClient restHighLevelClient; + + @SuppressWarnings("unchecked") + @Override + public void add(String indexName, BaseEntity entity) { + IndexRequest request = new IndexRequest(indexName).id(entity.getId().toString()) + .source(ObjectUtil.objectToJson(entity), XContentType.JSON); + try { + restHighLevelClient.index(request, RequestOptions.DEFAULT); + } catch (Exception e) { + log.error("ES: add document failed - " + e.getMessage()); + } + } + + @SuppressWarnings("unchecked") + @Override + public void adds(String indexName, List list) { + BulkRequest request = new BulkRequest(); + list.forEach(item -> request.add(new IndexRequest(indexName).id(item.getId().toString()) + .source(ObjectUtil.objectToJson(item), XContentType.JSON))); + try { + restHighLevelClient.bulk(request, RequestOptions.DEFAULT); + } catch (Exception e) { + log.error("ES: add documents failed - " + e.getMessage()); + } + } + + @Override + public Map getById(String indexName, Integer id) { + GetRequest request = new GetRequest(indexName, id.toString()); + try { + GetResponse response = restHighLevelClient.get(request, RequestOptions.DEFAULT); + if (response.isExists()) { + return response.getSourceAsMap(); + } + } catch (Exception e) { + log.error("ES: get document failed - " + e.getMessage()); + } + return null; + } + + @SuppressWarnings("unchecked") + @Override + public void update(String indexName, BaseEntity entity) { + try { + restHighLevelClient.update(new UpdateRequest(indexName, entity.getId().toString()) + .doc(ObjectUtil.objectToJson(entity), XContentType.JSON), RequestOptions.DEFAULT); + } catch (Exception e) { + log.error("ES: update document failed - " + e.getMessage()); + } + } + + @Override + public void delete(String indexName, Integer id) { + try { + restHighLevelClient.delete(new DeleteRequest(indexName, id.toString()), RequestOptions.DEFAULT); + } catch (Exception e) { + log.error("ES: delete document failed - " + e.getMessage()); + } + } + + @Override + public void deletes(String indexName, List ids) { + BulkRequest request = new BulkRequest(); + ids.forEach(item -> request.add(new DeleteRequest(indexName, item.toString()))); + try { + restHighLevelClient.bulk(request, RequestOptions.DEFAULT); + } catch (Exception e) { + log.error("ES: delete documents failed - " + e.getMessage()); + } + } + + @Override + public Page getPage(int pageNumber, int pageSize, String indexName, Class classz, + SearchSourceBuilder searchSourceBuilder, List highlightFields) { + + int count = getCount(indexName, searchSourceBuilder).intValue(); + if (count == 0) { + return null; + } + + // 总页数 + int pageCount = count / pageSize + ((count % pageSize) == 0 ? 0 : 1); + if (pageNumber < 1) { + pageNumber = 1; + } + + // 页码 + if (pageNumber > pageCount) { + pageNumber = pageCount; + } + + searchSourceBuilder.from(--pageNumber * pageSize).size(pageSize); + + // 设置超时时间为2s + searchSourceBuilder.timeout(new TimeValue(2000)); + + // 高亮处理 + if (highlightFields.size() > 0) { + HighlightBuilder highlightBuilder = new HighlightBuilder(); + highlightBuilder.preTags("").postTags(""); + // 设置高亮的方法 + highlightBuilder.highlighterType("plain"); + // 设置分段的数量不做限制 + highlightBuilder.numOfFragments(0); + for (String field : highlightFields) { + highlightBuilder.field(field); + } + searchSourceBuilder.highlighter(highlightBuilder); + } + + SearchRequest searchRequest = new SearchRequest(indexName); + searchRequest.source(searchSourceBuilder); + + Page page = new Page(); + + try { + + SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); + + page.setData(makeList(searchResponse.getHits(), classz)); + page.setLimit(pageSize); + page.setTotal(count); + page.setPageIndex(++pageNumber); + page.setTotalPage(pageCount); + + return page; + } catch (Exception e) { + log.error("ES: get base entity page failed - " + e.getMessage(), e); + return null; + } + } + + private List makeList(SearchHits searchHits, Class classz) { + if (searchHits != null) { + List list = new ArrayList(); + + for (SearchHit hit : searchHits) { + Map map = hit.getSourceAsMap(); + + Map map_ = hit.getHighlightFields(); + for (String key : map_.keySet()) { + String value = map_.get(key).getFragments()[0].toString(); + map.replace(key, value); + } + + list.add((T) (ObjectUtil.map2Object(map, classz))); + } + + return list; + } + + return null; + } + + private Long getCount(String indexName, SearchSourceBuilder builder) { + CountRequest request = new CountRequest(indexName).source(builder); + try { + CountResponse response = restHighLevelClient.count(request, RequestOptions.DEFAULT); + return response.getCount(); + } catch (Exception e) { + log.error("ES: getCount by builder with value of field in index " + indexName + " - " + e.getMessage()); + } + return 0L; + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/es/dao/impl/ESIndexDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/es/dao/impl/ESIndexDaoImpl.java new file mode 100644 index 0000000..13901c4 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/es/dao/impl/ESIndexDaoImpl.java @@ -0,0 +1,99 @@ +package com.kelp.es.dao.impl; + +import java.io.IOException; + +import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; +import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.RestHighLevelClient; +import org.elasticsearch.client.indices.CreateIndexRequest; +import org.elasticsearch.client.indices.CreateIndexResponse; +import org.elasticsearch.client.indices.GetIndexRequest; +import org.elasticsearch.common.settings.Settings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import com.kelp.es.dao.ESIndexDao; + +/** + * 基类ESIndex的实现 + */ +@Service +public class ESIndexDaoImpl implements ESIndexDao { + + private static Logger log = LoggerFactory.getLogger(ESIndexDaoImpl.class); + + /** + * 分片数量 + */ + @Value("${elasticsearch.shards}") + private int shards; + + /** + * 拷贝数量 + */ + @Value("${elasticsearch.replicas}") + private int replicas; + + /** + * 这里获取的ElasticSearchConfig中声明的RestHighLevelClient对象 + */ + @Autowired + private RestHighLevelClient restHighLevelClient; + + @Override + public void createIndex(String indexName) { + if (!isExistsIndex(indexName)) { + + CreateIndexRequest request = new CreateIndexRequest(indexName).settings( + Settings.builder().put("index.number_of_shards", shards).put("index.number_of_replicas", replicas)); + + try { + CreateIndexResponse response = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT); + if (!response.isAcknowledged()) { + log.error("ES : init index failed."); + } + } catch (Exception e) { + log.error("ES : init index failed - " + e.getMessage()); + } + } + } + + @Override + public boolean isExistsIndex(String indexName) { + try { + return restHighLevelClient.indices().exists(new GetIndexRequest(indexName), RequestOptions.DEFAULT); + } catch (Exception e) { + log.error("ES: index is exists failed - " + e.getMessage()); + return false; + } + } + + @Override + public void deleteIndex(String indexName) { + try { + restHighLevelClient.indices().delete(new DeleteIndexRequest(indexName), RequestOptions.DEFAULT); + } catch (Exception e) { + log.error("ES: delete index failed - " + e.getMessage()); + } + } + + @Override + public void updateIndexSettings(String indexName) { + UpdateSettingsRequest request = new UpdateSettingsRequest(indexName); + + request.settings( + Settings.builder().put("index.number_of_shards", shards).put("index.number_of_replicas", replicas)) + .setPreserveExisting(true); + + try { + restHighLevelClient.indices().putSettings(request, RequestOptions.DEFAULT); + } catch (IOException e) { + log.error("ES: index is exists failed - " + e.getMessage()); + } + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/AccountDao.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/AccountDao.java new file mode 100644 index 0000000..8fd2e22 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/AccountDao.java @@ -0,0 +1,14 @@ +package com.kelp.plat.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.plat.entity.Account; + +public interface AccountDao extends BaseDao { + + public void setState(List ids, String state); + + public Page getPage(int pageNumber, int pageSize,String name,String telephone, Long roleId,String state); +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/E_RFDao.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/E_RFDao.java new file mode 100644 index 0000000..67a79ac --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/E_RFDao.java @@ -0,0 +1,31 @@ +package com.kelp.plat.dao; + +import java.util.List; + +import com.kelp.base.dao.BaseDao; +import com.kelp.plat.entity.E_RF; +import com.kelp.plat.entity.Function; + +public interface E_RFDao extends BaseDao { + + /** + * 取得这个Role可以访问的资源 + * @param roleId + * @return + */ + public List getSRFByRoleId(Long roleId); + + /** + * 保存权限信息 + * @param roleId + * @param functionIds + */ + public void setRFs(Long roleId,List functionIds); + + /** + * 取得这个Role的权限设置信息 + * @param roleId + * @return + */ + public List getRFsByRoleId(Long roleId); +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/E_RoleDao.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/E_RoleDao.java new file mode 100644 index 0000000..0227c4a --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/E_RoleDao.java @@ -0,0 +1,17 @@ +package com.kelp.plat.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.plat.entity.E_Role; + +public interface E_RoleDao extends BaseDao{ + + public Page getPage(int pageNumber, int pageSize,String name,Integer level); + + public List getByLevel(Integer level); + + public List getAll(); + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/FunctionDao.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/FunctionDao.java new file mode 100644 index 0000000..78bcd85 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/FunctionDao.java @@ -0,0 +1,15 @@ +package com.kelp.plat.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.plat.entity.Function; + +public interface FunctionDao extends BaseDao { + + public Page getPage(int pageNumber, int pageSize,Long moduleId,String name); + + public boolean delete(List ids); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/MenuDao.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/MenuDao.java new file mode 100644 index 0000000..b08f984 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/MenuDao.java @@ -0,0 +1,45 @@ +package com.kelp.plat.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.plat.entity.Menu; + +public interface MenuDao extends BaseDao { + + public Page getPage(int pageNumber, int pageSize,String name,Long pId); + + public List listdsub(Long pId); + + /**************************************************************/ + + /** + * 取得平台顶层菜单,pId=1 + * @return + */ + public List getTMenus(); + + /** + * 取得系统角色菜单 + * @param roleId + * @return + */ + public List getMenus(Long roleId); + + /**************************************************************/ + + /** + * 取得企业顶层菜单,pId=2 + * @return + */ + public List getTMenus4Enterprise(); + + /** + * 取得企业角色菜单 + * @param roleId + * @return + */ + public List getMenus4Enterprise(Long roleId); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/ModuleDao.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/ModuleDao.java new file mode 100644 index 0000000..0e1197f --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/ModuleDao.java @@ -0,0 +1,15 @@ +package com.kelp.plat.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.plat.entity.Module; + +public interface ModuleDao extends BaseDao { + + public Page getPage(int pageNumber, int pageSize,String name ,String state); + + public List getAll(String state); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/RFDao.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/RFDao.java new file mode 100644 index 0000000..8dbe439 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/RFDao.java @@ -0,0 +1,31 @@ +package com.kelp.plat.dao; + +import java.util.List; + +import com.kelp.base.dao.BaseDao; +import com.kelp.plat.entity.Function; +import com.kelp.plat.entity.RF; + +public interface RFDao extends BaseDao { + + /** + * 取得这个Role可以访问的资源 + * @param roleId + * @return + */ + public List getSRFByRoleId(Long roleId); + + /** + * 保存权限信息 + * @param roleId + * @param functionIds + */ + public void setRFs(Long roleId,List functionIds); + + /** + * 取得这个Role的权限设置信息 + * @param roleId + * @return + */ + public List getRFsByRoleId(Long roleId); +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/RoleDao.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/RoleDao.java new file mode 100644 index 0000000..1317470 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/RoleDao.java @@ -0,0 +1,17 @@ +package com.kelp.plat.dao; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.base.dao.BaseDao; +import com.kelp.plat.entity.Role; + +public interface RoleDao extends BaseDao{ + + public Page getPage(int pageNumber, int pageSize,String name,Integer level); + + public List getByLevel(Integer level); + + public List getAll(); + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/AccountDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/AccountDaoImpl.java new file mode 100644 index 0000000..d66e38d --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/AccountDaoImpl.java @@ -0,0 +1,56 @@ +package com.kelp.plat.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.transaction.Transactional; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.plat.dao.AccountDao; +import com.kelp.plat.entity.Account; + +@Repository +public class AccountDaoImpl extends BaseDaoImpl implements AccountDao { + + @Override + public Page getPage(int pageNumber, int pageSize, String name, String telephone, Long roleId, + String state) { + String sql = " from Account o where 1 = 1 "; + List params = new ArrayList(); + int index = 1; + + if(!StringUtils.isEmpty(name) && name.length() < 50){ + sql += " and name like ?" + index++; + params.add("%" + name + "%"); + } + + if(!StringUtils.isEmpty(telephone) && telephone.length() <= 32){ + sql += " and telephone = ?" + index++; + params.add(telephone); + } + + if(roleId != null ){ + sql += " and roleId = ?" + index++; + params.add(roleId); + } + + if(state != null && state.length() == 2){ + sql += " and state = ?" + index; + params.add(state); + } + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @Transactional + @Override + public void setState(List ids ,String state) { + String sql = "update Account set state = :state where id in (:ids)"; + em.createQuery(sql).setParameter("state", state).setParameter("ids", ids).executeUpdate(); + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/E_RFDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/E_RFDaoImpl.java new file mode 100644 index 0000000..56dc1f5 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/E_RFDaoImpl.java @@ -0,0 +1,52 @@ +package com.kelp.plat.dao.impl; + + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; + +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.common.utils.IdWorker; +import com.kelp.plat.dao.E_RFDao; +import com.kelp.plat.entity.E_RF; +import com.kelp.plat.entity.Function; + +@Repository +@Transactional +public class E_RFDaoImpl extends BaseDaoImpl implements E_RFDao { + + @Autowired + private IdWorker idWorker; + + @SuppressWarnings("unchecked") + @Override + public List getSRFByRoleId(Long roleId) { + String sql = "select o from Function o where o.id in (select functionId from E_RF where roleId = :roleId) order by moduleId"; + return em.createQuery(sql).setParameter("roleId", roleId).getResultList(); + } + + @Override + @Transactional + public void setRFs(Long roleId, List functionIds) { + //先删除 + String sql = "delete E_RF where roleId = :roleId"; + em.createQuery(sql).setParameter("roleId", roleId).executeUpdate(); + + //再添加 + for(Long functionId : functionIds){ + E_RF rf = new E_RF(roleId,functionId); + rf.setId(idWorker.nextId()); + em.persist(rf); + } + } + + @SuppressWarnings("unchecked") + @Override + public List getRFsByRoleId(Long roleId) { + String sql = "select o from E_RF o where roleId = :roleId"; + return em.createQuery(sql).setParameter("roleId", roleId).getResultList(); + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/E_RoleDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/E_RoleDaoImpl.java new file mode 100644 index 0000000..86c6bea --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/E_RoleDaoImpl.java @@ -0,0 +1,69 @@ +package com.kelp.plat.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.plat.dao.E_RoleDao; +import com.kelp.plat.entity.E_Role; + +@Repository +@Transactional +public class E_RoleDaoImpl extends BaseDaoImpl implements E_RoleDao { + + @Override + @Transactional + public boolean delete(List ids) { + + //处理RF + String sql = "delete E_RF where roleId in(:roleIds)"; + em.createQuery(sql).setParameter("roleIds", ids).executeUpdate(); + + super.delete(ids); + + return true; + } + + @Override + public Page getPage(int pageNumber, int pageSize,String name,Integer level) { + + String sql = " from E_Role o where 1=1 "; + List params = new ArrayList(); + + int i = 1; + if(name == null || name.length() == 0){ + name = ""; + sql += " and name like ?" + i++; + params.add("%" + name + "%"); + } + + if(level != null) { + sql += "and level = ?" + i++; + params.add(level); + } + + sql += "order by level"; + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @SuppressWarnings("unchecked") + @Override + public List getAll() { + String sql = "select o from E_Role o order by level"; + return em.createQuery(sql).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List getByLevel(Integer level) { + String sql = "select o from E_Role o where level = :level "; + + return em.createQuery(sql).setParameter("level", level).getResultList(); + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/FunctionDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/FunctionDaoImpl.java new file mode 100644 index 0000000..8e5c30c --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/FunctionDaoImpl.java @@ -0,0 +1,56 @@ +package com.kelp.plat.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.plat.dao.FunctionDao; +import com.kelp.plat.entity.Function; +@Repository +public class FunctionDaoImpl extends BaseDaoImpl implements + FunctionDao { + + @Override + public Page getPage(int pageNumber, int pageSize,Long moduleId,String name) { + String sql = " from Function o where 1=1 "; + List params = new ArrayList(); + + int i=1; + if(moduleId != null ){ + sql += " and moduleId = ? " + i++; + params.add(moduleId); + } + + if(name != null && name.length() > 0 && name.length() <= 20){ + sql += " and name like ? " + i++; + params.add("%" + (name!=null?name:"") + "%"); + } + + sql += " order by moduleId,name "; + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @Override + @Transactional + public boolean delete(List ids) { + + //处理RF中的Function的关联 + String sqlRF = "delete RF where functionId in (:functionIds)"; + em.createQuery(sqlRF).setParameter("functionIds", ids).executeUpdate(); + + //处理菜单 + String sqlMenu = "update Menu set functionId = null,functionUrl = '' where functionId in (:functionIds)"; + em.createQuery(sqlMenu).setParameter("functionIds", ids).executeUpdate(); + + //处理本身的删除 + super.delete(ids); + + return true; + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/MenuDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/MenuDaoImpl.java new file mode 100644 index 0000000..409f5f3 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/MenuDaoImpl.java @@ -0,0 +1,103 @@ +package com.kelp.plat.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.plat.dao.MenuDao; +import com.kelp.plat.entity.Menu; + +@Repository +public class MenuDaoImpl extends BaseDaoImpl implements MenuDao { + + @Override + public Page getPage(int pageNumber, int pageSize, String name, Long pId) { + + String sql = " from Menu o where 1=1 "; + + List params = new ArrayList(); + int index = 1; + if(name != null && name.length() > 0){ + sql += " and name like ?" + index++; + params.add("%" + (name!=null?name:"") + "%"); + } + + if(pId != null){ + sql += " and pId = ?" + index++; + params.add(pId); + } + + + sql += "order by pId,orderNumber"; + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @Transactional + @Override + public boolean delete(List ids) { + for(Long id : ids){ + delete(id); + } + + return true; + } + + @Override + public boolean delete(Long id) { + String sqlMenuD = " delete Menu where id = :id "; + String sqlMenuQ = "select o from Menu o where pId = :pId "; + + @SuppressWarnings("unchecked") + List menuList = em.createQuery(sqlMenuQ).setParameter("pId", id).getResultList(); + if(0 < menuList.size()){ + for(Menu menu : menuList){ + delete(Long.valueOf(menu.getId())); + } + } + em.createQuery(sqlMenuD).setParameter("id", id).executeUpdate(); + + return true; + } + + @SuppressWarnings("unchecked") + @Override + public List listdsub(Long pId) { + + String sql = "select new com.kelp.plat.entity.Menu(o.id,o.name,o.pId) from Menu o where pId = :pId order by orderNumber"; + + return em.createQuery(sql).setParameter("pId", pId).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List getTMenus() { + String sql = "select o from Menu o where o.pId = 1 order by orderNumber "; + return em.createQuery(sql).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List getMenus(Long roleId) { + String sql = "select o from Menu o where o.functionId in(select functionId from RF where roleId = :roleId) order by orderNumber "; + return em.createQuery(sql).setParameter("roleId", roleId).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List getTMenus4Enterprise() { + String sql = "select o from Menu o where o.pId = 2 order by orderNumber "; + return em.createQuery(sql).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List getMenus4Enterprise(Long roleId) { + String sql = "select o from Menu o where o.functionId in(select functionId from E_RF where roleId = :roleId) order by orderNumber "; + return em.createQuery(sql).setParameter("roleId", roleId).getResultList(); + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/ModuleDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/ModuleDaoImpl.java new file mode 100644 index 0000000..ab0e7e5 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/ModuleDaoImpl.java @@ -0,0 +1,58 @@ +package com.kelp.plat.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.stereotype.Repository; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.plat.dao.ModuleDao; +import com.kelp.plat.entity.Module; +@Repository +public class ModuleDaoImpl extends BaseDaoImpl implements + ModuleDao { + + @Override + public Page getPage(int pageNumber, int pageSize, String name, String state) { + String sql = " from Module o where 1 = 1 "; + List params = new ArrayList(); + int index = 1; + + if(name == null || name.length() == 0 || name.length() > 50){ + name = ""; + } + sql += " and name like ?" + index++; + params.add("%" + name + "%"); + + if(state != null && state.length() == 2){ + sql += " and state = ?" + index++; + params.add(state); + } + + sql += " order by name "; + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @SuppressWarnings("unchecked") + @Override + public List getAll(String state) { + String sql = "select o from Module o where state = :state order by name "; + + if(state == null || state.length() != 2){ + state = ""; + } + + return em.createQuery(sql).setParameter("state", state).getResultList(); + } + + @Override + public boolean delete(List ids) { + String sql = "update Module set state = '10' where id in (:ids)"; + em.createQuery(sql).setParameter("ids", ids).executeUpdate(); + + return true; + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/RFDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/RFDaoImpl.java new file mode 100644 index 0000000..ea0f25c --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/RFDaoImpl.java @@ -0,0 +1,51 @@ +package com.kelp.plat.dao.impl; + + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; + +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.common.utils.IdWorker; +import com.kelp.plat.dao.RFDao; +import com.kelp.plat.entity.Function; +import com.kelp.plat.entity.RF; + +@Repository +public class RFDaoImpl extends BaseDaoImpl implements RFDao { + + @Autowired + private IdWorker idWorker; + + @SuppressWarnings("unchecked") + @Override + public List getSRFByRoleId(Long roleId) { + String sql = "select o from Function o where o.id in (select functionId from RF where roleId = :roleId) order by moduleId"; + return em.createQuery(sql).setParameter("roleId", roleId).getResultList(); + } + + @Override + @Transactional + public void setRFs(Long roleId, List functionIds) { + //先删除 + String sql = "delete RF where roleId = :roleId"; + em.createQuery(sql).setParameter("roleId", roleId).executeUpdate(); + + //再添加 + for(Long functionId : functionIds){ + RF rf = new RF(roleId,functionId); + rf.setId(idWorker.nextId()); + em.persist(rf); + } + } + + @SuppressWarnings("unchecked") + @Override + public List getRFsByRoleId(Long roleId) { + String sql = "select o from RF o where roleId = :roleId"; + return em.createQuery(sql).setParameter("roleId", roleId).getResultList(); + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/RoleDaoImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/RoleDaoImpl.java new file mode 100644 index 0000000..60ad387 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/dao/impl/RoleDaoImpl.java @@ -0,0 +1,68 @@ +package com.kelp.plat.dao.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; + +import com.kelp.base.Page; +import com.kelp.base.dao.impl.BaseDaoImpl; +import com.kelp.plat.dao.RoleDao; +import com.kelp.plat.entity.Role; + +@Repository +public class RoleDaoImpl extends BaseDaoImpl implements RoleDao { + + @Override + @Transactional + public boolean delete(List ids) { + + //处理RF + String sql = "delete RF where roleId in(:roleIds)"; + em.createQuery(sql).setParameter("roleIds", ids).executeUpdate(); + + super.delete(ids); + + return true; + } + + @Override + public Page getPage(int pageNumber, int pageSize,String name,Integer level) { + + String sql = " from Role o where 1=1 "; + List params = new ArrayList(); + + int i = 1; + if(name == null || name.length() == 0){ + name = ""; + sql += " and name like ?" + i++; + params.add("%" + name + "%"); + } + + if(level != null) { + sql += "and level = ?" + i++; + params.add(level); + } + + sql += "order by level"; + + return getBeanPage(pageNumber, pageSize, sql, params); + } + + @SuppressWarnings("unchecked") + @Override + public List getAll() { + String sql = "select o from Role o order by level"; + return em.createQuery(sql).getResultList(); + } + + @SuppressWarnings("unchecked") + @Override + public List getByLevel(Integer level) { + String sql = "select o from Role o where level = :level "; + + return em.createQuery(sql).setParameter("level", level).getResultList(); + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/entity/Account.java b/ksafepack-system/src/main/java/com/kelp/plat/entity/Account.java new file mode 100644 index 0000000..83aa331 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/entity/Account.java @@ -0,0 +1,146 @@ +/** + * 账号 + */ +package com.kelp.plat.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import org.apache.commons.lang3.StringUtils; + +import com.kelp.base.BaseEntity; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; + +@Entity +@Table(name = "dt_mis_account") +public class Account extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * 昵称 + */ + @Column(length = 128, nullable = false) + private String name; + + /** + * 联系电话加密 + */ + @Column(length = 128, nullable = false,unique = true, name = "telephone") + private String telephone_; + + /** + * 加密真实姓名 + */ + @Column(length = 128,name = "realName") + private String realName_; + + /** + * 头像 + */ + @Column(length = 128) + private String avatar; + + /** + * 性别:0-男;1-女;2-未知 + */ + @Column(nullable = false,length = 1) + private String sex; + + /** + * 密码,telephone为盐值 + */ + @Column(nullable = false,length=128) + private String password; + + /** + * role Id + */ + @Column(nullable = false) + private Long roleId; + + /** + * 状态:00-正常,10-锁定 + */ + @Column(nullable = false,length = 2) + private String state; + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public String getTelephone() { + return telephone_ != null ? AESUtil.decrypt(telephone_, KeyConstant.TELEPHONE) : ""; + } + public void setTelephone(String telephone) { + if (!StringUtils.isEmpty(telephone)) { + this.telephone_ = AESUtil.encrypt(telephone, KeyConstant.TELEPHONE); + } + } + + public String getRealName() { + return realName_ != null ? AESUtil.decrypt(realName_, KeyConstant.REALNAME) : ""; + } + public void setRealName(String realName) { + if (!StringUtils.isEmpty(realName)) { + this.realName_ = AESUtil.encrypt(realName, KeyConstant.REALNAME); + } + } + + public Long getRoleId() { + return roleId; + } + public void setRoleId(Long roleId) { + this.roleId = roleId; + } + + public String getAvatar() { + return avatar; + } + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public String getSex() { + return sex; + } + public void setSex(String sex) { + this.sex = sex; + } + + public String getPassword() { + return password; + } + public void setPassword(String password) { + this.password = password; + } + + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + + /** + * 将隐私数据处理 + * @param account + * @return + */ + public Account mask() { + this.setId(null); + this.setCreateTime(null); + this.setUpdateTime(null); + this.password = null; + return this; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/entity/E_RF.java b/ksafepack-system/src/main/java/com/kelp/plat/entity/E_RF.java new file mode 100644 index 0000000..ef9fafb --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/entity/E_RF.java @@ -0,0 +1,54 @@ +/** + * enterpirse rf + */ +package com.kelp.plat.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import com.kelp.base.BaseEntity; + +@Entity +@Table(name="dt_e_rf") +public class E_RF extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public E_RF() {} + + public E_RF(Long roleId,Long functionId) { + this.roleId = roleId; + this.functionId = functionId; + } + + /** + * 角色id + */ + @Column(nullable = false) + private Long roleId; + + /** + * 资源id + */ + @Column(nullable = false) + private Long functionId; + + + public Long getRoleId() { + return roleId; + } + public void setRoleId(Long roleId) { + this.roleId = roleId; + } + + public Long getFunctionId() { + return functionId; + } + public void setFunctionId(Long functionId) { + this.functionId = functionId; + } +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/entity/E_Role.java b/ksafepack-system/src/main/java/com/kelp/plat/entity/E_Role.java new file mode 100644 index 0000000..49d9c94 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/entity/E_Role.java @@ -0,0 +1,60 @@ +/** + * enterpirse role + */ +package com.kelp.plat.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import com.kelp.base.BaseEntity; + +@Entity +@Table(name="dt_e_role") +public class E_Role extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * 角色名称 + */ + @Column(length = 50, nullable = false) + private String name; + + /** + * + */ + @Column(nullable = false) + private Integer level = 0; + + /** + * 描述 + */ + @Column(length=128) + private String description; + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public Integer getLevel() { + return level; + } + public void setLevel(Integer level) { + this.level = level; + } + + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/entity/Function.java b/ksafepack-system/src/main/java/com/kelp/plat/entity/Function.java new file mode 100644 index 0000000..736a87e --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/entity/Function.java @@ -0,0 +1,97 @@ +package com.kelp.plat.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.persistence.Transient; + +import com.kelp.base.BaseEntity; + +@Entity +@Table(name="dt_mis_function") +public class Function extends BaseEntity{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * 名称 + */ + @Column(length=50,nullable = false, unique = true) + private String name; + + /** + * url + */ + @Column(nullable = false,unique = true) + private String url; + + /** + * 是否记录日志 + * 00-不记日志 + * 10-记录日志 + */ + private String isLog; + + /** + * 所属模块的ID + */ + @Column(nullable=false) + private Long moduleId; + + /** + * 描述 + */ + @Column(length = 256) + private String description; + + /** + * 权限处理里是否选中状态,不映射数据库 + */ + @Transient + private String isChecked; + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + + public String getIsLog() { + return isLog; + } + public void setIsLog(String isLog) { + this.isLog = isLog; + } + + public Long getModuleId() { + return moduleId; + } + public void setModuleId(Long moduleId) { + this.moduleId = moduleId; + } + + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + + public String getIsChecked() { + return isChecked; + } + public void setIsChecked(String isChecked) { + this.isChecked = isChecked; + } +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/entity/MF.java b/ksafepack-system/src/main/java/com/kelp/plat/entity/MF.java new file mode 100644 index 0000000..6f3cead --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/entity/MF.java @@ -0,0 +1,31 @@ +package com.kelp.plat.entity; + +import java.io.Serializable; +import java.util.List; + +public class MF implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 648607480793276509L; + + private Module module; + + private List functions; + + public Module getModule() { + return module; + } + public void setModule(Module module) { + this.module = module; + } + + public List getFunctions() { + return functions; + } + public void setFunctions(List functions) { + this.functions = functions; + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/entity/Menu.java b/ksafepack-system/src/main/java/com/kelp/plat/entity/Menu.java new file mode 100644 index 0000000..fa8c843 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/entity/Menu.java @@ -0,0 +1,123 @@ +/** + * 菜单 + */ +package com.kelp.plat.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.persistence.Transient; + +import com.kelp.base.BaseEntity; + +@Entity +@Table(name="dt_mis_menu") +public class Menu extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public Menu() {} + + public Menu(Long id,String name,Long pId) { + this.setId(id); + this.name = name; + this.pId = pId; + } + + /** + * 菜单名称 + */ + @Column(nullable = false,length=50) + private String name; + + /** + * 父ID + */ + @Column(nullable = false) + private Long pId; + + /** + * 关联的功能Id + */ + @Column(name="functionId") + private Long functionId; + + /** + * 关联的功能url,与function保持一致 + */ + private String functionUrl; + + /** + * 序号 + */ + @Column(nullable=false) + private int orderNumber; + + /** + * 自定义css + */ + @Column(length = 128) + private String css; + + /** + * 描述 + */ + @Column(length=128) + private String description; + + @Transient + public Boolean isParent = true; + + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public Long getpId() { + return pId; + } + public void setpId(Long pId) { + this.pId = pId; + } + + public Long getFunctionId() { + return functionId; + } + public void setFunctionId(Long functionId) { + this.functionId = functionId; + } + + public String getFunctionUrl() { + return functionUrl; + } + public void setFunctionUrl(String functionUrl) { + this.functionUrl = functionUrl; + } + + public int getOrderNumber() { + return orderNumber; + } + public void setOrderNumber(int orderNumber) { + this.orderNumber = orderNumber; + } + + public String getCss() { + return css; + } + public void setCss(String css) { + this.css = css; + } + + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/entity/Module.java b/ksafepack-system/src/main/java/com/kelp/plat/entity/Module.java new file mode 100644 index 0000000..0696292 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/entity/Module.java @@ -0,0 +1,61 @@ +/** + * 模块 + */ +package com.kelp.plat.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import com.kelp.base.BaseEntity; + +@Entity +@Table(name="dt_mis_module") +public class Module extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * 名称 + */ + @Column(length=50,nullable = false, unique = true) + private String name; + + /** + * 00-正常 + * 10-禁用 + */ + @Column(length=2,nullable = false) + private String state; + + /** + * 描述 + */ + @Column(length=128) + private String description; + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/entity/RF.java b/ksafepack-system/src/main/java/com/kelp/plat/entity/RF.java new file mode 100644 index 0000000..d8fbeee --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/entity/RF.java @@ -0,0 +1,52 @@ +package com.kelp.plat.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import com.kelp.base.BaseEntity; + +@Entity +@Table(name="dt_mis_rf") +public class RF extends BaseEntity{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + public RF() {} + + public RF(Long roleId,Long functionId) { + this.roleId = roleId; + this.functionId = functionId; + } + + /** + * 角色id + */ + @Column(nullable = false) + private Long roleId; + + /** + * 资源id + */ + @Column(nullable = false) + private Long functionId; + + + public Long getRoleId() { + return roleId; + } + public void setRoleId(Long roleId) { + this.roleId = roleId; + } + + public Long getFunctionId() { + return functionId; + } + public void setFunctionId(Long functionId) { + this.functionId = functionId; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/entity/Role.java b/ksafepack-system/src/main/java/com/kelp/plat/entity/Role.java new file mode 100644 index 0000000..b06d6d9 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/entity/Role.java @@ -0,0 +1,54 @@ +package com.kelp.plat.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import com.kelp.base.BaseEntity; + +@Entity +@Table(name="dt_mis_role") +public class Role extends BaseEntity{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Column(nullable = false,length=50,unique = true) + private String name; + + /** + * 0-省,1-市,2-县,3-乡,4-村 + */ + @Column(nullable = false) + private Integer level = 0; + + /** + * 描述 + */ + @Column(length=128) + private String description; + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public Integer getLevel() { + return level; + } + public void setLevel(Integer level) { + this.level = level; + } + + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/entity/TSMenu.java b/ksafepack-system/src/main/java/com/kelp/plat/entity/TSMenu.java new file mode 100644 index 0000000..f0314a9 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/entity/TSMenu.java @@ -0,0 +1,31 @@ +package com.kelp.plat.entity; + +import java.io.Serializable; +import java.util.List; + +public class TSMenu implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 3114824770165538134L; + + private Menu topMenu; + + private List subMenus; + + public Menu getTopMenu() { + return topMenu; + } + public void setTopMenu(Menu topMenu) { + this.topMenu = topMenu; + } + + public List getSubMenus() { + return subMenus; + } + public void setSubMenus(List subMenus) { + this.subMenus = subMenus; + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/AccountService.java b/ksafepack-system/src/main/java/com/kelp/plat/service/AccountService.java new file mode 100644 index 0000000..f2efefe --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/AccountService.java @@ -0,0 +1,32 @@ +package com.kelp.plat.service; + +import com.kelp.base.Page; +import com.kelp.plat.entity.Account; + +public interface AccountService { + + public void add(Account account); + + public void update(Account account); + + public Account getById(String id); + + public Account getByTelephone(String telephone); + + public Account getBySelfId(String selfId); + + public void delete(String[] ids); + + /** + * + * @param pageNumber + * @param pageSize + * @param name - 昵称 + * @param telephone + * @param roleId + * @param state + * @return + */ + public Page getPage(int pageNumber, int pageSize,String name,String telephone, String roleId,String state); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/E_RFService.java b/ksafepack-system/src/main/java/com/kelp/plat/service/E_RFService.java new file mode 100644 index 0000000..4ffba8c --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/E_RFService.java @@ -0,0 +1,34 @@ +package com.kelp.plat.service; + +import java.util.List; +import java.util.Map; + +import com.kelp.plat.entity.E_RF; +import com.kelp.plat.entity.MF; + +public interface E_RFService { + + /** + * 取得权限信息,key为url,value为roleId + * @param roleId + * @return + */ + public Map getSRFs(String roleId); + + /** + * 保存权限信息 + * @param roleId + * @param functionIds + */ + public void setRFs(String roleId,String[] functionIds); + + public List getMFs(); + + /** + * 取得此角色所有的权限信息 + * @param roleId + * @return + */ + public List getRFs(String roleId); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/E_RoleService.java b/ksafepack-system/src/main/java/com/kelp/plat/service/E_RoleService.java new file mode 100644 index 0000000..7abe310 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/E_RoleService.java @@ -0,0 +1,28 @@ +package com.kelp.plat.service; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.plat.entity.E_Role; + + +public interface E_RoleService { + + public void add(E_Role role); + + public void update(E_Role role); + + public void delete(String[] ids); + + public E_Role getById(String id); + + public E_Role getByName(String name); + + public Page getPage(int pageNumber, int pageSize,String name, Integer level); + + /////////////////////////////////////////// + + public List getByLevel(Integer level); + + public List getAll(); +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/FunctionService.java b/ksafepack-system/src/main/java/com/kelp/plat/service/FunctionService.java new file mode 100644 index 0000000..1a572fc --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/FunctionService.java @@ -0,0 +1,31 @@ +package com.kelp.plat.service; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.plat.entity.Function; + + +public interface FunctionService { + + public void add(Function function); + + public void update(Function function); + + public void delete(String[] ids); + + public Function getById(String id); + + public Function getByUrl(String url); + + public Function getByName(String name); + + public Page getPage(int pageNumber, int pageSize,String moduleId, String name); + + /** + * 取得所有功能 + * @return + */ + public List getFunctions(); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/MenuService.java b/ksafepack-system/src/main/java/com/kelp/plat/service/MenuService.java new file mode 100644 index 0000000..7af97ff --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/MenuService.java @@ -0,0 +1,53 @@ +package com.kelp.plat.service; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.plat.entity.Menu; +import com.kelp.plat.entity.TSMenu; + +public interface MenuService { + + public void add(Menu menu); + + public void update(Menu menu); + + public void delete(String[] ids); + + public Menu getById(String id); + + public Page getPage(int pageNumber, int pageSize,String name,String pId); + + /** + * 取得直接下级菜单 + * @param pId + * @return + */ + public List listdsub(String pId); + + + /**************************************************************/ + + /** + * 取得所有的菜单 + * @return + */ + public List getMenus(); + + /** + *取得系统角色菜单 + * @param roleId + * @return + */ + public List getMenus(String roleId); + + /**************************************************************/ + + /** + * 取得企业角色菜单 + * @param roleId + * @return + */ + public List getMenus4Enterprise(String roleId); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/ModuleService.java b/ksafepack-system/src/main/java/com/kelp/plat/service/ModuleService.java new file mode 100644 index 0000000..bc9e3b3 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/ModuleService.java @@ -0,0 +1,25 @@ +package com.kelp.plat.service; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.plat.entity.Module; + + + +public interface ModuleService { + + public void add(Module module); + + public void update(Module module); + + public Module getById(String id); + + public Module getByName(String name); + + public void delete(String[] ids); + + public Page getPage(int pageNumber, int pageSize,String name,String state); + + public List getAll(String state); +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/RFService.java b/ksafepack-system/src/main/java/com/kelp/plat/service/RFService.java new file mode 100644 index 0000000..6ffd19a --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/RFService.java @@ -0,0 +1,35 @@ +package com.kelp.plat.service; + +import java.util.List; +import java.util.Map; + +import com.kelp.plat.entity.MF; +import com.kelp.plat.entity.RF; + + +public interface RFService { + + /** + * 取得权限信息,key为url,value为roleId + * @param roleId + * @return + */ + public Map getSRFs(String roleId); + + /** + * 保存权限信息 + * @param roleId + * @param functionIds + */ + public void setRFs(String roleId,String[] functionIds); + + public List getMFs(); + + /** + * 取得此角色所有的权限信息 + * @param roleId + * @return + */ + public List getRFs(String roleId); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/RoleService.java b/ksafepack-system/src/main/java/com/kelp/plat/service/RoleService.java new file mode 100644 index 0000000..c9e7948 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/RoleService.java @@ -0,0 +1,29 @@ +package com.kelp.plat.service; + +import java.util.List; + +import com.kelp.base.Page; +import com.kelp.plat.entity.Role; + + +public interface RoleService { + + public void add(Role role); + + public void update(Role role); + + public void delete(String[] ids); + + public Role getById(String id); + + public Role getByName(String name); + + public Page getPage(int pageNumber, int pageSize,String name, Integer level); + + /////////////////////////////////////////// + + public List getByLevel(Integer level); + + public List getAll(); + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/impl/AccountServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/AccountServiceImpl.java new file mode 100644 index 0000000..90efd89 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/AccountServiceImpl.java @@ -0,0 +1,78 @@ +package com.kelp.plat.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.common.constant.KeyConstant; +import com.kelp.common.utils.AESUtil; +import com.kelp.common.utils.IdWorker; +import com.kelp.plat.dao.AccountDao; +import com.kelp.plat.entity.Account; +import com.kelp.plat.service.AccountService; + +@Service +public class AccountServiceImpl implements AccountService { + + @Autowired + private IdWorker idWorker; + + @Autowired + private AccountDao accountDao; + + @Override + public Account getByTelephone(String telephone) { + return accountDao.get("telephone_", AESUtil.encrypt(telephone, KeyConstant.TELEPHONE)); + } + + @Override + public Account getBySelfId(String selfId) { + return accountDao.get("selfId_", AESUtil.encrypt(selfId, KeyConstant.SELFID)); + } + + @Override + public void add(Account account) { + account.setId(idWorker.nextId()); + accountDao.add(account); + } + + @Override + public void update(Account account) { + accountDao.update(account); + } + + @Override + public Account getById(String id) { + return accountDao.get(Long.valueOf(id)); + } + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for(String id : ids){ + try { + ids_.add(Long.valueOf(id)); + } catch (Exception e) { + return; + } + } + accountDao.setState(ids_, "10"); + } + + @Override + public Page getPage(int pageNumber, int pageSize, String name, String telephone, String roleId, + String state) { + Page page = accountDao.getPage(pageNumber, pageSize, name, !StringUtils.isEmpty(telephone) ? AESUtil.encrypt(telephone, KeyConstant.KEY) : null, (roleId != null && roleId.length() > 0)?Long.valueOf(roleId) : null, state); + + if (page == null) { + page = new Page(); + } + + return page; + } + +} diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/impl/E_RFServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/E_RFServiceImpl.java new file mode 100644 index 0000000..4806890 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/E_RFServiceImpl.java @@ -0,0 +1,84 @@ +package com.kelp.plat.service.impl; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import com.kelp.plat.dao.E_RFDao; +import com.kelp.plat.dao.FunctionDao; +import com.kelp.plat.dao.ModuleDao; +import com.kelp.plat.entity.E_RF; +import com.kelp.plat.entity.Function; +import com.kelp.plat.entity.MF; +import com.kelp.plat.entity.Module; +import com.kelp.plat.service.E_RFService; + +@Service +public class E_RFServiceImpl implements E_RFService { + + @Resource + private E_RFDao rfDao; + + @Resource + private FunctionDao functiondao; + + @Resource + private ModuleDao moduleDao; + + @Override + public Map getSRFs(String roleId) { + + List functions = rfDao.getSRFByRoleId(Long.valueOf(roleId)); + Map rfMap = new HashMap(); + for(Function function : functions){ + rfMap.put(function.getUrl(), roleId); + } + + return rfMap; + } + + @Override + public void setRFs(String roleId, String[] functionIds) { + + List functionIds_ = new ArrayList(); + for(String functionId : functionIds){ + functionIds_.add(Long.valueOf(functionId)); + } + rfDao.setRFs(Long.valueOf(roleId), functionIds_); + } + + @Override + public List getMFs() { + + List mfs = new ArrayList(); + List modules = moduleDao.getAll("00"); + List allFunctions = functiondao.getAll("moduleId","asc"); + + for(Module module : modules){ + MF mf = new MF(); + mf.setModule(module); + List functions = new ArrayList(); + for(Function function : allFunctions){ + if(function.getModuleId().equals(module.getId())){ + functions.add(function); + } + } + mf.setFunctions(functions); + + mfs.add(mf); + } + + return mfs; + } + + @Override + public List getRFs(String roleId) { + return rfDao.getRFsByRoleId(Long.valueOf(roleId)); + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/impl/E_RoleServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/E_RoleServiceImpl.java new file mode 100644 index 0000000..41e3701 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/E_RoleServiceImpl.java @@ -0,0 +1,78 @@ +package com.kelp.plat.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.common.utils.IdWorker; +import com.kelp.plat.dao.E_RoleDao; +import com.kelp.plat.entity.E_Role; +import com.kelp.plat.service.E_RoleService; + +@Service +public class E_RoleServiceImpl implements E_RoleService { + + @Autowired + private IdWorker idWorker; + + @Resource + private E_RoleDao roleDao; + + @Override + public void add(E_Role role) { + role.setId(idWorker.nextId()); + roleDao.add(role); + } + + @Override + public void update(E_Role role) { + roleDao.update(role); + } + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for(String id : ids){ + ids_.add(Long.valueOf(id)); + } + roleDao.delete(ids_); + } + + @Override + public E_Role getById(String id) { + return roleDao.get(Long.valueOf(id)); + } + + @Override + public Page getPage(int pageNumber, int pageSize,String name, Integer level) { + + Page page = roleDao.getPage(pageNumber, pageSize,name,level); + + if(page == null){ + page = new Page(); + } + + return page; + } + + @Override + public E_Role getByName(String name) { + return roleDao.get("name", name); + } + + @Override + public List getAll() { + return roleDao.getAll(); + } + + @Override + public List getByLevel(Integer level) { + return roleDao.getByLevel(level); + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/impl/FunctionServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/FunctionServiceImpl.java new file mode 100644 index 0000000..f70f786 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/FunctionServiceImpl.java @@ -0,0 +1,84 @@ +package com.kelp.plat.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.common.utils.IdWorker; +import com.kelp.plat.dao.FunctionDao; +import com.kelp.plat.entity.Function; +import com.kelp.plat.service.FunctionService; + +@Service +public class FunctionServiceImpl implements FunctionService { + + @Autowired + private IdWorker idWorker; + + @Resource + private FunctionDao functionDao; + + @Override + public void add(Function function) { + function.setId(idWorker.nextId()); + functionDao.add(function); + } + + @Override + public void update(Function function) { + functionDao.update(function); + } + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for(String id : ids){ + try { + ids_.add(Long.valueOf(id)); + } catch (Exception e) { + return; + } + } + functionDao.delete(ids_); + } + + @Override + public Function getById(String id) { + return functionDao.get(Long.valueOf(id)); + } + + @Override + public Function getByUrl(String url) { + return functionDao.get("url", url); + } + + @Override + public Page getPage(int pageNumber, int pageSize,String moduleId,String name) { + + Long moduleId_ = !StringUtils.isEmpty(moduleId)?Long.valueOf(moduleId):null; + + Page page = functionDao.getPage(pageNumber, pageSize,moduleId_,name); + + if(page == null){ + page = new Page(); + } + + return page; + } + + @Override + public Function getByName(String name) { + return functionDao.get("name", name); + } + + @Override + public List getFunctions() { + return functionDao.getAll("name", "asc"); + } +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/impl/MenuServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/MenuServiceImpl.java new file mode 100644 index 0000000..c9fa192 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/MenuServiceImpl.java @@ -0,0 +1,138 @@ +package com.kelp.plat.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.common.utils.IdWorker; +import com.kelp.plat.dao.MenuDao; +import com.kelp.plat.entity.Menu; +import com.kelp.plat.entity.TSMenu; +import com.kelp.plat.service.MenuService; + +@Service +public class MenuServiceImpl implements MenuService { + + @Autowired + private IdWorker idWorker; + + @Resource + private MenuDao menuDao; + + @Override + public void add(Menu menu) { + menu.setId(idWorker.nextId()); + menuDao.add(menu); + } + + @Override + public void update(Menu menu) { + menuDao.update(menu); + } + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for(String id : ids){ + try { + ids_.add(Long.valueOf(id)); + } catch (Exception e) { + return; + } + } + menuDao.delete(ids_); + } + + @Override + public Menu getById(String id) { + return menuDao.get(Long.valueOf(id)); + } + + @Override + public List listdsub(String pId) { + return menuDao.listdsub(Long.valueOf(pId)); + } + + @Override + public Page getPage(int pageNumber, int pageSize, String name,String pId) { + + Long pId_ = !StringUtils.isEmpty(pId)?Long.valueOf(pId):null; + + Page page = menuDao.getPage(pageNumber, pageSize, name, pId_); + + if(page == null){ + page = new Page(); + } + + return page; + } + + @Override + public List getMenus(String roleId) { + + //顶层菜单 + List tmenus = menuDao.getTMenus(); + //角色菜单 + List smenus = menuDao.getMenus(Long.valueOf(roleId)); + + List tsmenus = new ArrayList(); + + for(Menu tmenu : tmenus){ + TSMenu tsmenu = new TSMenu(); + tsmenu.setSubMenus(new ArrayList()); + + for(Menu smenu : smenus){ + if(smenu.getpId().equals(tmenu.getId())){ + tsmenu.getSubMenus().add(smenu); + } + } + + if(tsmenu.getSubMenus().size() > 0){ + tsmenu.setTopMenu(tmenu); + tsmenus.add(tsmenu); + } + } + + return tsmenus; + } + + @Override + public List getMenus4Enterprise(String roleId) { + //顶层菜单 + List tmenus = menuDao.getTMenus4Enterprise(); + //角色菜单 + List smenus = menuDao.getMenus4Enterprise(Long.valueOf(roleId)); + + List tsmenus = new ArrayList(); + + for(Menu tmenu : tmenus){ + TSMenu tsmenu = new TSMenu(); + tsmenu.setSubMenus(new ArrayList()); + + for(Menu smenu : smenus){ + if(smenu.getpId().equals(tmenu.getId())){ + tsmenu.getSubMenus().add(smenu); + } + } + + if(tsmenu.getSubMenus().size() > 0){ + tsmenu.setTopMenu(tmenu); + tsmenus.add(tsmenu); + } + } + + return tsmenus; + } + + @Override + public List getMenus() { + return menuDao.getAll("name", "asc"); + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/impl/ModuleServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/ModuleServiceImpl.java new file mode 100644 index 0000000..422e1e6 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/ModuleServiceImpl.java @@ -0,0 +1,76 @@ +package com.kelp.plat.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.common.utils.IdWorker; +import com.kelp.plat.dao.ModuleDao; +import com.kelp.plat.entity.Module; +import com.kelp.plat.service.ModuleService; + +@Service +public class ModuleServiceImpl implements ModuleService { + + @Autowired + private IdWorker idWorker; + + @Resource + private ModuleDao moduleDao; + + @Override + public void add(Module module) { + module.setId(idWorker.nextId()); + moduleDao.add(module); + } + + @Override + public Module getById(String id) { + return moduleDao.get(Long.valueOf(id)); + } + + @Override + public Module getByName(String name) { + return moduleDao.get("name", name); + } + + @Override + public void update(Module module) { + moduleDao.update(module); + } + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for(String id : ids){ + try { + ids_.add(Long.valueOf(id)); + } catch (Exception e) { + return; + } + } + moduleDao.delete(ids_); + } + + @Override + public Page getPage(int pageNumber, int pageSize,String name,String state) { + Page page = moduleDao.getPage(pageNumber, pageSize,name, state); + + if(page == null){ + page = new Page(); + } + + return page; + } + + @Override + public List getAll(String state) { + return moduleDao.getAll(state); + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/impl/RFServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/RFServiceImpl.java new file mode 100644 index 0000000..8832895 --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/RFServiceImpl.java @@ -0,0 +1,84 @@ +package com.kelp.plat.service.impl; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import com.kelp.plat.dao.FunctionDao; +import com.kelp.plat.dao.ModuleDao; +import com.kelp.plat.dao.RFDao; +import com.kelp.plat.entity.Function; +import com.kelp.plat.entity.MF; +import com.kelp.plat.entity.Module; +import com.kelp.plat.entity.RF; +import com.kelp.plat.service.RFService; + +@Service +public class RFServiceImpl implements RFService { + + @Resource + private RFDao rfDao; + + @Resource + private FunctionDao functiondao; + + @Resource + private ModuleDao moduleDao; + + @Override + public Map getSRFs(String roleId) { + + List functions = rfDao.getSRFByRoleId(Long.valueOf(roleId)); + Map rfMap = new HashMap(); + for(Function function : functions){ + rfMap.put(function.getUrl(), roleId); + } + + return rfMap; + } + + @Override + public void setRFs(String roleId, String[] functionIds) { + + List functionIds_ = new ArrayList(); + for(String functionId : functionIds){ + functionIds_.add(Long.valueOf(functionId)); + } + rfDao.setRFs(Long.valueOf(roleId), functionIds_); + } + + @Override + public List getMFs() { + + List mfs = new ArrayList(); + List modules = moduleDao.getAll("00"); + List allFunctions = functiondao.getAll("moduleId","asc"); + + for(Module module : modules){ + MF mf = new MF(); + mf.setModule(module); + List functions = new ArrayList(); + for(Function function : allFunctions){ + if(function.getModuleId().equals(module.getId())){ + functions.add(function); + } + } + mf.setFunctions(functions); + + mfs.add(mf); + } + + return mfs; + } + + @Override + public List getRFs(String roleId) { + return rfDao.getRFsByRoleId(Long.valueOf(roleId)); + } + +} \ No newline at end of file diff --git a/ksafepack-system/src/main/java/com/kelp/plat/service/impl/RoleServiceImpl.java b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..0b5ecde --- /dev/null +++ b/ksafepack-system/src/main/java/com/kelp/plat/service/impl/RoleServiceImpl.java @@ -0,0 +1,77 @@ +package com.kelp.plat.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.kelp.base.Page; +import com.kelp.common.utils.IdWorker; +import com.kelp.plat.dao.RoleDao; +import com.kelp.plat.entity.Role; +import com.kelp.plat.service.RoleService; + +@Service +public class RoleServiceImpl implements RoleService { + + @Autowired + private IdWorker idWorker; + + @Resource + private RoleDao roleDao; + + @Override + public void add(Role role) { + role.setId(idWorker.nextId()); + roleDao.add(role); + } + + @Override + public void update(Role role) { + roleDao.update(role); + } + + @Override + public void delete(String[] ids) { + List ids_ = new ArrayList(); + for(String id : ids){ + ids_.add(Long.valueOf(id)); + } + roleDao.delete(ids_); + } + + @Override + public Role getById(String id) { + return roleDao.get(Long.valueOf(id)); + } + + @Override + public Page getPage(int pageNumber, int pageSize,String name, Integer level) { + + Page page = roleDao.getPage(pageNumber, pageSize,name,level); + + if(page == null){ + page = new Page(); + } + + return page; + } + + @Override + public Role getByName(String name) { + return roleDao.get("name", name); + } + + @Override + public List getAll() { + return roleDao.getAll(); + } + + @Override + public List getByLevel(Integer level) { + return roleDao.getByLevel(level); + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..e626a3b --- /dev/null +++ b/pom.xml @@ -0,0 +1,204 @@ + + + 4.0.0 + + com.kelp + ksafepack + 1.0.1 + + ksafepack + http://www.ksafepack.com + ksafepack管理系统 + + + 1.0.1 + UTF-8 + UTF-8 + 1.8 + 1.1.14 + 1.19 + 2.3.2 + 1.2.60 + 3.9.1 + 2.5 + 1.3.3 + 3.17 + 3.0.3 + + 7.9.2 + + + + + + + + + org.springframework.boot + spring-boot-dependencies + 2.1.3.RELEASE + pom + import + + + + + com.alibaba + druid-spring-boot-starter + ${druid.version} + + + + + com.github.penggle + kaptcha + ${kaptcha.version} + + + + + eu.bitwalker + UserAgentUtils + ${bitwalker.version} + + + + + com.github.oshi + oshi-core + ${oshi.version} + + + + + commons-io + commons-io + ${commons.io.version} + + + + + commons-fileupload + commons-fileupload + ${commons.fileupload.version} + + + + + org.apache.poi + poi-ooxml + ${poi.version} + + + + + com.alibaba + fastjson + ${fastjson.version} + + + + + com.kelp + ksafepack-framework + ${kelp.version} + + + + + com.kelp + ksafepack-system + ${kelp.version} + + + + + com.kelp + ksafepack-common + ${kelp.version} + + + + com.github.ulisesbocchio + jasypt-spring-boot-starter + ${jasypt.version} + + + + + org.elasticsearch.client + elasticsearch-rest-high-level-client + ${elasticsearch.version} + + + org.elasticsearch + elasticsearch + ${elasticsearch.version} + + + org.elasticsearch.client + elasticsearch-rest-client + ${elasticsearch.version} + + + + + + + ksafepack-admin + ksafepack-framework + ksafepack-system + ksafepack-common + + pom + + + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + + + + + + + + public + aliyun nexus + http://maven.aliyun.com/nexus/content/groups/public/ + + true + + + + + + + public + aliyun nexus + http://maven.aliyun.com/nexus/content/groups/public/ + + true + + + false + + + + + \ No newline at end of file