已重命名10个文件
已修改61个文件
已添加52个文件
已复制1个文件
| | |
| | | package com.gkhy.assess.admin; |
| | | |
| | | import org.mybatis.spring.annotation.MapperScan; |
| | | import org.springframework.boot.SpringApplication; |
| | | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| | | import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; |
| | |
| | | |
| | | @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) |
| | | @ComponentScan("com.gkhy.assess") |
| | | //@MapperScan("com.gkhy.**.mapper") |
| | | public class GkhyAdminApplication { |
| | | |
| | | public static void main(String[] args) { |
文件名从 assess-admin/src/main/java/com/gkhy/assess/admin/controller/CaptchaController.java 修改 |
| | |
| | | package com.gkhy.assess.admin.controller; |
| | | package com.gkhy.assess.admin.controller.web; |
| | | |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.service.CaptchaService; |
对比新文件 |
| | |
| | | package com.gkhy.assess.admin.controller.web; |
| | | |
| | | import com.gkhy.assess.common.annotation.RepeatSubmit; |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.domain.SysExpertClassify; |
| | | import com.gkhy.assess.system.service.SysExpertClassifyService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | @Api(tags = "专家库-专家分类前端控制器") |
| | | @RestController |
| | | @RequestMapping("/system/expert_classify") |
| | | public class ExpertClassifyController { |
| | | @Autowired |
| | | private SysExpertClassifyService expertClassifyService; |
| | | |
| | | @ApiOperation(value = "专家分类列表(树形)") |
| | | @GetMapping("/tree") |
| | | public CommonResult classifyTree(SysExpertClassify expertClassify){ |
| | | return CommonResult.success(expertClassifyService.classifyTree(expertClassify)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "修改专家分类") |
| | | @PutMapping("/mod") |
| | | public CommonResult modClassify(@RequestBody SysExpertClassify expertClassify){ |
| | | return CommonResult.success(expertClassifyService.modClassify(expertClassify)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "删除专家分类") |
| | | @DeleteMapping("/del/{classifyId}") |
| | | public CommonResult delClassify(@PathVariable(value = "classifyId") Long classifyId){ |
| | | return CommonResult.success(expertClassifyService.delClassify(classifyId)); |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "新增专家分类") |
| | | @PostMapping("/add") |
| | | public CommonResult addClassify(@RequestBody SysExpertClassify expertClassify){ |
| | | return CommonResult.success(expertClassifyService.addClassify(expertClassify)); |
| | | } |
| | | |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.admin.controller.web; |
| | | |
| | | import com.gkhy.assess.common.annotation.RepeatSubmit; |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.domain.SysAgency; |
| | | import com.gkhy.assess.system.domain.SysExpertClassify; |
| | | import com.gkhy.assess.system.domain.SysExpertInfo; |
| | | import com.gkhy.assess.system.service.SysExpertInfoService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | @Api(tags = "专家库-专家信息前端控制器") |
| | | @RestController |
| | | @RequestMapping("/system/expert_info") |
| | | public class ExpertInfoController { |
| | | @Autowired |
| | | private SysExpertInfoService expertInfoService; |
| | | |
| | | @ApiOperation(value = "专家列表(分页)") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"), |
| | | @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10") |
| | | }) |
| | | @GetMapping("/list") |
| | | public CommonResult exportInfoList(SysExpertInfo expertInfo){ |
| | | return CommonResult.success(expertInfoService.exportInfoList(expertInfo)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "新增专家信息") |
| | | @PostMapping("/add") |
| | | public CommonResult addExpertInfo(@RequestBody SysExpertInfo expertInfo){ |
| | | return CommonResult.success(expertInfoService.addExpertInfo(expertInfo)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "修改专家信息") |
| | | @PutMapping("/mod") |
| | | public CommonResult modExpertInfo(@RequestBody SysExpertInfo expertInfo){ |
| | | return CommonResult.success(expertInfoService.modExpertInfo(expertInfo)); |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "删除专家信息") |
| | | @DeleteMapping("/del/{expertId}") |
| | | public CommonResult delExpertInfo(@PathVariable(value = "expertId") Long expertId){ |
| | | return CommonResult.success(expertInfoService.delExpertInfo(expertId)); |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "批量删除专家信息") |
| | | @DeleteMapping("/del/batch/{expertIds}") |
| | | public CommonResult delExpertInfo(@PathVariable(value = "expertIds") Long[] expertIds){ |
| | | return CommonResult.success(expertInfoService.delExpertInfoBatch(expertIds)); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
copy from assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysAgencyController.java
copy to assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/SysAgencyController.java
文件从 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysAgencyController.java 复制 |
| | |
| | | package com.gkhy.assess.admin.controller; |
| | | package com.gkhy.assess.admin.controller.web; |
| | | |
| | | import com.gkhy.assess.common.annotation.RepeatSubmit; |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.domain.SysAgency; |
| | | import com.gkhy.assess.system.domain.SysUser; |
| | | import com.gkhy.assess.system.service.SysAgencyService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.shiro.authz.annotation.Logical; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | |
| | | |
| | | @ApiOperation(value = "校验机构名称") |
| | | @PostMapping("/checkAgencyNameUnique") |
| | | public boolean checkAgencyNameUnique(SysAgency agency) |
| | | public CommonResult checkAgencyNameUnique(@RequestBody SysAgency agency) |
| | | { |
| | | return agencyService.checkAgencyNameUnique(agency); |
| | | return CommonResult.success(agencyService.checkAgencyNameUnique(agency)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions(value={"system:assess:monitor"}) |
| | | @ApiOperation(value = "公示状态修改,公示/不公示") |
| | | @PostMapping("/changePublic") |
| | | public CommonResult changePublic(@RequestBody SysAgency agency) |
| | | { |
| | | return CommonResult.success(agencyService.changePublic(agency)); |
| | | } |
| | | |
| | | } |
文件名从 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysCommonController.java 修改 |
| | |
| | | package com.gkhy.assess.admin.controller; |
| | | package com.gkhy.assess.admin.controller.web; |
| | | |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.domain.SysAgency; |
文件名从 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysDictDataController.java 修改 |
| | |
| | | package com.gkhy.assess.admin.controller; |
| | | package com.gkhy.assess.admin.controller.web; |
| | | |
| | | import com.gkhy.assess.common.annotation.RepeatSubmit; |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.domain.SysDictData; |
| | | import com.gkhy.assess.system.domain.SysDictType; |
| | |
| | | return CommonResult.success(dictDataService.getDictDataById(dictId)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "新增字典数据") |
| | | @PostMapping("/addDictData") |
| | | public CommonResult addDictData(@Validated @RequestBody SysDictData dictData){ |
| | |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "编辑字典数据") |
| | | @PutMapping("/editDictData") |
| | | public CommonResult editDictData(@Validated @RequestBody SysDictData dictData){ |
| | |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "删除字典数据") |
| | | @PutMapping("/remove/{dictId}") |
| | | @DeleteMapping("/remove/{dictId}") |
| | | public CommonResult removeDictData(@PathVariable(name = "dictId")Long dictId){ |
| | | return CommonResult.success(dictDataService.deleteDictDataById(dictId)); |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "字典数据状态修改,停用/启用") |
| | | @PostMapping("/changeStatus") |
| | | public CommonResult changeStatus(SysDictData SysDictData) |
| | | public CommonResult changeStatus(@RequestBody SysDictData SysDictData) |
| | | { |
| | | return CommonResult.success(dictDataService.changeDictDataStatus(SysDictData)); |
| | | } |
文件名从 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysDictTypeController.java 修改 |
| | |
| | | package com.gkhy.assess.admin.controller; |
| | | package com.gkhy.assess.admin.controller.web; |
| | | |
| | | import com.gkhy.assess.common.annotation.RepeatSubmit; |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.domain.SysDictType; |
| | | import com.gkhy.assess.system.domain.SysLaw; |
| | |
| | | |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "新增字典类型") |
| | | @PostMapping("/addDictType") |
| | | public CommonResult addDictType(@Validated @RequestBody SysDictType dictType){ |
| | |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "编辑字典类型") |
| | | @PutMapping("/editDictType") |
| | | public CommonResult editDictType(@Validated @RequestBody SysDictType dictType){ |
| | |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "删除字典类型") |
| | | @DeleteMapping("/remove/{dictId}") |
| | | public CommonResult removeDictType(@PathVariable(name = "dictId")Long dictId){ |
| | |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "字典类型状态修改,停用/启用") |
| | | @PostMapping("/changeStatus") |
| | | public CommonResult changeStatus(SysDictType SysDictType) |
| | | public CommonResult changeStatus(@RequestBody SysDictType SysDictType) |
| | | { |
| | | return CommonResult.success(dictTypeService.changeDictTypeStatus(SysDictType)); |
| | | } |
| | |
| | | * 校验字典类型 |
| | | */ |
| | | @PostMapping("/checkDictTypeUnique") |
| | | public CommonResult checkDictTypeUnique(SysDictType dictType) |
| | | public CommonResult checkDictTypeUnique(@RequestBody SysDictType dictType) |
| | | { |
| | | return CommonResult.success(dictTypeService.checkDictTypeUnique(dictType)); |
| | | } |
文件名从 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysLawController.java 修改 |
| | |
| | | package com.gkhy.assess.admin.controller; |
| | | package com.gkhy.assess.admin.controller.web; |
| | | |
| | | import com.gkhy.assess.common.annotation.RepeatSubmit; |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.domain.SysLaw; |
| | | import com.gkhy.assess.system.service.SysLawService; |
| | |
| | | return CommonResult.success(lawService.getLawById(lawId)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions("system:assess:monitor") |
| | | @ApiOperation(value = "新增法律法规") |
| | | @PostMapping("/addLaw") |
| | |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions("system:assess:monitor") |
| | | @ApiOperation(value = "编辑法律法规") |
| | | @PutMapping("/editLaw") |
| | |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions("system:assess:monitor") |
| | | @ApiOperation(value = "删除法律法规") |
| | | @PutMapping("/remove/{lawId}") |
| | | @DeleteMapping("/remove/{lawId}") |
| | | public CommonResult removeLaw(@PathVariable(name = "lawId")Long lawId){ |
| | | return CommonResult.success(lawService.deleteLawById(lawId)); |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions("system:assess:monitor") |
| | | @ApiOperation(value = "法律法规状态修改,停用/启用") |
| | | @PostMapping("/changeStatus") |
| | | public CommonResult changeStatus(SysLaw law) |
| | | public CommonResult changeStatus(@RequestBody SysLaw law) |
| | | { |
| | | return CommonResult.success(lawService.changeLawStatus(law)); |
| | | } |
文件名从 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysLoginController.java 修改 |
| | |
| | | package com.gkhy.assess.admin.controller; |
| | | package com.gkhy.assess.admin.controller.web; |
| | | |
| | | |
| | | import com.gkhy.assess.common.api.CommonResult; |
文件名从 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysNoticeController.java 修改 |
| | |
| | | package com.gkhy.assess.admin.controller; |
| | | package com.gkhy.assess.admin.controller.web; |
| | | |
| | | import com.gkhy.assess.common.annotation.RepeatSubmit; |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.domain.SysNotice; |
| | | import com.gkhy.assess.system.service.SysNoticeService; |
| | |
| | | return CommonResult.success(noticeService.getNoticeById(noticeId)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions("system:assess:monitor") |
| | | @ApiOperation(value = "新增通知") |
| | | @PostMapping("/addNotice") |
| | |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions("system:assess:monitor") |
| | | @ApiOperation(value = "编辑通知") |
| | | @PutMapping("/editNotice") |
| | |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions("system:assess:monitor") |
| | | @ApiOperation(value = "删除通知") |
| | | @PutMapping("/remove/{noticeId}") |
| | | @DeleteMapping("/remove/{noticeId}") |
| | | public CommonResult removeNotice(@PathVariable(name = "noticeId")Long noticeId){ |
| | | return CommonResult.success(noticeService.deleteNoticeById(noticeId)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions("system:assess:monitor") |
| | | @ApiOperation(value = "通知状态修改,停用/启用") |
| | | @PostMapping("/changeStatus") |
| | | public CommonResult changeStatus(SysNotice notice) |
| | | public CommonResult changeStatus(@RequestBody SysNotice notice) |
| | | { |
| | | return CommonResult.success(noticeService.changeNoticeStatus(notice)); |
| | | } |
文件名从 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysRegionController.java 修改 |
| | |
| | | package com.gkhy.assess.admin.controller; |
| | | package com.gkhy.assess.admin.controller.web; |
| | | |
| | | import com.gkhy.assess.common.annotation.RepeatSubmit; |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.domain.SysRegion; |
| | | import com.gkhy.assess.system.service.SysRegionService; |
| | |
| | | @Autowired |
| | | private SysRegionService regionService; |
| | | |
| | | @ApiOperation(value = "地区列表(树形结构)") |
| | | @ApiOperation(value = "地区列表(树形结构),默认返回疆内数据") |
| | | @GetMapping("/regionTree") |
| | | public CommonResult regionTree(SysRegion region){ |
| | | return CommonResult.success(regionService.regionTree(region)); |
| | |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "新增地区") |
| | | @PostMapping("/addRegion") |
| | | public CommonResult addLaw(@Validated @RequestBody SysRegion region){ |
| | |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "编辑地区") |
| | | @PutMapping("/editRegion") |
| | | public CommonResult editLaw(@Validated @RequestBody SysRegion region){ |
| | |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "删除地区") |
| | | @PutMapping("/remove/{regionId}") |
| | | @DeleteMapping("/remove/{regionId}") |
| | | public CommonResult removeRegion(@PathVariable(name = "regionId")Long regionId){ |
| | | return CommonResult.success(regionService.deleteRegionById(regionId)); |
| | | } |
文件名从 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysUserController.java 修改 |
| | |
| | | package com.gkhy.assess.admin.controller; |
| | | package com.gkhy.assess.admin.controller.web; |
| | | |
| | | import com.gkhy.assess.common.annotation.RepeatSubmit; |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.common.validate.AgencyGroup; |
| | | import com.gkhy.assess.common.validate.ExpertGroup; |
| | | import com.gkhy.assess.common.validate.MonitorGroup; |
| | | import com.gkhy.assess.system.domain.SysUser; |
| | | import com.gkhy.assess.system.service.SysUserService; |
| | | import io.swagger.annotations.Api; |
| | |
| | | return CommonResult.success(sysUserService.expertList(user)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "机构注册") |
| | | @PostMapping("/agencyRegister") |
| | | public CommonResult agencyRegister(@Validated(AgencyGroup.class) @RequestBody SysUser user){ |
| | | return CommonResult.success(sysUserService.agencyRegister(user)); |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "创建监管用户") |
| | | @PostMapping("/addMonitor") |
| | | public CommonResult addMonitor(@Validated(MonitorGroup.class) @RequestBody SysUser user){ |
| | | return CommonResult.success(sysUserService.addMonitor(user)); |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "机构注册") |
| | | @PostMapping("/addAgency") |
| | | public CommonResult addAgency(@Validated(AgencyGroup.class) @RequestBody SysUser user){ |
| | | return CommonResult.success(sysUserService.addAgency(user)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions(value={"system:assess:monitor","system:assess:agency"},logical = Logical.OR) |
| | | @ApiOperation(value = "创建专家") |
| | | @PostMapping("/addExpert") |
| | |
| | | return CommonResult.success(sysUserService.addExpert(user)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions("system:assess:monitor") |
| | | @ApiOperation(value = "编辑监管用户") |
| | | @PutMapping("/editMonitor") |
| | | public CommonResult editMonitor(@RequestBody SysUser user){ |
| | | return CommonResult.success(sysUserService.editMonitor(user)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions("system:assess:monitor") |
| | | @ApiOperation(value = "编辑机构") |
| | | @PutMapping("/editAgency") |
| | | public CommonResult editAgency(@Validated(ExpertGroup.class) @RequestBody SysUser user){ |
| | | public CommonResult editAgency(@RequestBody SysUser user){ |
| | | return CommonResult.success(sysUserService.editAgency(user)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions(value={"system:assess:monitor","system:assess:agency"},logical = Logical.OR) |
| | | @ApiOperation(value = "编辑专家") |
| | | @PutMapping("/editExpert") |
| | | public CommonResult editExpert(@Validated(ExpertGroup.class) @RequestBody SysUser user){ |
| | | public CommonResult editExpert(@RequestBody SysUser user){ |
| | | return CommonResult.success(sysUserService.editExpert(user)); |
| | | } |
| | | |
| | | @ApiOperation(value = "根据id获取用户详情") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "query", name = "userId", dataType = "int", required = true, value = "用户id") |
| | | }) |
| | | @GetMapping("/getUserById") |
| | | public CommonResult getUserById(@RequestParam(required = true) Long userId){ |
| | | return CommonResult.success(sysUserService.getUserInfoById(userId)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "校验用户名") |
| | | @PostMapping("/checkUserNameUnique") |
| | | public boolean checkLoginNameUnique(SysUser user) |
| | | public CommonResult checkLoginNameUnique(@RequestBody SysUser user) |
| | | { |
| | | return sysUserService.checkUsernameUnique(user); |
| | | return CommonResult.success(sysUserService.checkUsernameUnique(user)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "校验手机号") |
| | | @PostMapping("/checkPhoneUnique") |
| | | public boolean checkPhoneUnique(SysUser user) |
| | | public CommonResult checkPhoneUnique(@RequestBody SysUser user) |
| | | { |
| | | return sysUserService.checkPhoneUnique(user); |
| | | return CommonResult.success(sysUserService.checkPhoneUnique(user)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @ApiOperation(value = "用户修改密码") |
| | | @PutMapping("/resetUserPwd") |
| | | public CommonResult resetUserPwd(@RequestBody SysUser user) |
| | | { |
| | | return CommonResult.success(sysUserService.resetUserPwd(user)); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 用户状态修改 |
| | | */ |
| | | @RepeatSubmit |
| | | @RequiresPermissions(value={"system:assess:monitor","system:assess:agency"},logical = Logical.OR) |
| | | @ApiOperation(value = "用户状态修改,停用/启用") |
| | | @PostMapping("/changeStatus") |
| | | public CommonResult changeStatus(SysUser user) |
| | | public CommonResult changeStatus(@RequestBody SysUser user) |
| | | { |
| | | return CommonResult.success(sysUserService.changeUserStatus(user)); |
| | | } |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions("system:assess:monitor") |
| | | @ApiOperation(value = "审批状态修改,停用/启用") |
| | | @ApiOperation(value = "审批状态修改,审批状态(0暂存,1审核中,2审批通过,3审批驳回,4已作废)") |
| | | @PostMapping("/changeApprove") |
| | | public CommonResult changeApprove(SysUser user) |
| | | public CommonResult changeApprove(@RequestBody SysUser user) |
| | | { |
| | | return CommonResult.success(sysUserService.changeApprove(user)); |
| | | } |
| | | |
| | | |
| | | @RepeatSubmit |
| | | @RequiresPermissions(value={"system:assess:monitor","system:assess:agency"},logical = Logical.OR) |
| | | @ApiOperation(value = "根据id删除用户") |
| | | @DeleteMapping("/remove/{userId}") |
| | |
| | | |
| | | |
| | | |
| | | |
| | | } |
文件名从 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysAgencyController.java 修改 |
| | |
| | | package com.gkhy.assess.admin.controller; |
| | | package com.gkhy.assess.admin.controller.web.front; |
| | | |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.domain.SysAgency; |
| | |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | @Api(tags = "机构前端控制器") |
| | | @Api(tags = "前台首页-机构前端控制器") |
| | | @RestController |
| | | @RequestMapping("/system/agency") |
| | | public class SysAgencyController { |
| | | @RequestMapping("/agency") |
| | | public class AgencyController { |
| | | @Autowired |
| | | private SysAgencyService agencyService; |
| | | |
| | |
| | | }) |
| | | @GetMapping("/agencyList") |
| | | public CommonResult agencyList(SysAgency agency){ |
| | | agency.setPublication(0); |
| | | agency.setDelFlag(0); |
| | | return CommonResult.success(agencyService.agencyList(agency)); |
| | | } |
| | | |
| | |
| | | public CommonResult getAgencyById(@RequestParam(required = true) Long agencyId){ |
| | | return CommonResult.success(agencyService.getAgencyById(agencyId)); |
| | | } |
| | | |
| | | @ApiOperation(value = "校验机构名称") |
| | | @PostMapping("/checkAgencyNameUnique") |
| | | public boolean checkAgencyNameUnique(SysAgency agency) |
| | | { |
| | | return agencyService.checkAgencyNameUnique(agency); |
| | | } |
| | | |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.admin.controller.web.front; |
| | | |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.domain.SysLaw; |
| | | import com.gkhy.assess.system.service.SysLawService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | @Api(tags = "前台首页-法律法规前端控制器") |
| | | @RestController |
| | | @RequestMapping("/law") |
| | | public class LawController { |
| | | @Autowired |
| | | private SysLawService lawService; |
| | | |
| | | @ApiOperation(value = "法律法规列表(分页)") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"), |
| | | @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10") |
| | | }) |
| | | @GetMapping("/lawList") |
| | | public CommonResult lawList(SysLaw law){ |
| | | law.setStatus(0); |
| | | return CommonResult.success(lawService.lawList(law)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "根据id获取法律法规详情") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "query", name = "lawId", dataType = "int", required = true, value = "法律法规id") |
| | | }) |
| | | @GetMapping("/getLawById") |
| | | public CommonResult getLawById(@RequestParam(required = true)Long lawId){ |
| | | return CommonResult.success(lawService.getLawById(lawId)); |
| | | } |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.admin.controller.web.front; |
| | | |
| | | import com.gkhy.assess.common.api.CommonResult; |
| | | import com.gkhy.assess.system.domain.SysNotice; |
| | | import com.gkhy.assess.system.service.SysNoticeService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | @Api(tags = "前台首页-通知公告前端控制器") |
| | | @RestController |
| | | @RequestMapping("/notice") |
| | | public class NoticeController { |
| | | @Autowired |
| | | private SysNoticeService noticeService; |
| | | |
| | | @ApiOperation(value = "通知列表(分页)") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"), |
| | | @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10") |
| | | }) |
| | | @GetMapping("/noticeList") |
| | | public CommonResult noticeList(SysNotice notice){ |
| | | notice.setStatus(0); |
| | | return CommonResult.success(noticeService.noticeList(notice)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "根据id获取通知详情") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "query", name = "noticeId", dataType = "int", required = true, value = "通知id") |
| | | }) |
| | | @GetMapping("/getNoticeById") |
| | | public CommonResult getNoticeById(@RequestParam(required = true)Long noticeId){ |
| | | return CommonResult.success(noticeService.getNoticeById(noticeId)); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | multipart: |
| | | enabled: true |
| | | # 单个文件大小 |
| | | max-file-size: 10MB |
| | | max-file-size: 20MB |
| | | # 设置总上传的文件大小 |
| | | max-request-size: 20MB |
| | | max-request-size: 100MB |
| | | mvc: |
| | | pathmatch: |
| | | matching-strategy: ant_path_matcher |
| | |
| | | servlet: |
| | | context-path: /api |
| | | |
| | | #shiro配置 |
| | | #shiro: |
| | | # sessionManager: |
| | | # sessionIdCookieEnabled: true |
| | | # sessionIdUrlRewritingEnabled: true |
| | | # unauthorizedUrl: /unauthorizedurl |
| | | # web: |
| | | # enabled: true |
| | | # successUrl: /index |
| | | # loginUrl: /account/login |
| | | |
| | | # 用户配置 |
| | | user: |
| | |
| | | |
| | | |
| | | image: |
| | | root_path: upload |
| | | upload_image: upload/images |
| | | upload_file: upload/documents |
| | | upload_path: upload |
| | | |
| | | |
| | | # 防止XSS攻击 |
| | | xss: |
| | | # 过滤开关 |
| | | enabled: true |
| | | # 排除链接(多个用逗号分隔) |
| | | excludes: /system/notice |
| | | # 匹配链接 |
| | | urlPatterns: /system/*,/monitor/*,/tool/* |
| | |
| | | CREATE TABLE `smart_assess`.`sys_user` ( |
| | | `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, |
| | | `username` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '登录账号', |
| | | `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户昵称/姓名', |
| | | `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '用户昵称/姓名', |
| | | `identity` tinyint NOT NULL COMMENT '用户身份(0代表监管用户,1代表机构用户,2代表专家用户)', |
| | | `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '邮箱', |
| | | `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '手机号码', |
| | | `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '邮箱', |
| | | `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '手机号码', |
| | | `sex` tinyint NULL DEFAULT 2 COMMENT '用户性别(0男,1女,2未知,默认2)', |
| | | `avatar` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '头像路径', |
| | | `avatar` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '头像路径', |
| | | `password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码', |
| | | `salt` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '盐加密', |
| | | `salt` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '盐加密', |
| | | `status` tinyint NULL DEFAULT 0 COMMENT '账号状态(0正常,1停用,默认0)', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0代表存在,1代表删除,默认0)', |
| | | `user_type` tinyint NULL DEFAULT 0 COMMENT '账号类型(0代表工作人员,1代表领导,默认0)', |
| | | `manage_region` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '管辖地区', |
| | | `manage_region` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '管辖地区', |
| | | `expert_type` tinyint NULL DEFAULT 0 COMMENT '专家类型(0代表安全评价,1代表检验检测,默认0)', |
| | | `agency_id` bigint NULL DEFAULT NULL COMMENT '机构id', |
| | | `post` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '职务', |
| | | `job_title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '职称', |
| | | `major` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '专业方向', |
| | | `approve` tinyint NULL DEFAULT 1 COMMENT '审批状态(0审批通过,1待审批,2未通过 默认1)', |
| | | `login_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '最后登录ip', |
| | | `post` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '职务', |
| | | `job_title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '职称', |
| | | `major` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '专业方向', |
| | | `state` tinyint(2) NULL DEFAULT 1 COMMENT '审批状态(0暂存,1审核中,2审批通过,3审批驳回,4已作废 默认1)', |
| | | `login_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '最后登录ip', |
| | | `login_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后登录时间', |
| | | `pwd_update_date` datetime NULL DEFAULT NULL COMMENT '密码最后更新时间', |
| | | `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', |
| | | `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '创建者', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', |
| | | `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '更新者', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注', |
| | | `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) USING BTREE, |
| | | UNIQUE INDEX `index_username`(`username`) USING BTREE |
| | | ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户表' ROW_FORMAT = Dynamic; |
| | | |
| | | insert into sys_user values(1,'admin', '国科鸿宇', 0, 'gkhy@163.com', '15888888888', 0, '', '29c67a30398638269fe600f73a054934', '111111', 0, 0, 0,'',null,null,'','','',1,'127.0.0.1', sysdate(), sysdate(), 'admin', sysdate(), '', sysdate(), '管理员'); |
| | | -- admin admin@123 |
| | | insert into sys_user values(1,'admin', '国科鸿宇', 0, 'gkhy@163.com', '15888888888', 0, '', 'b3065cdf5dfdbbc573e2f576c8dc147a', '111111', 0, 0, 0,'',null,null,'','','',1,'127.0.0.1', sysdate(), sysdate(), 'admin', sysdate(), '', sysdate(), '管理员'); |
| | |
| | | `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '字典名称', |
| | | `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '字典类型', |
| | | `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0正常,1停用)', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP, |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '', |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| | | `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '', |
| | | `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, |
| | | PRIMARY KEY (`id`) USING BTREE, |
| | | UNIQUE INDEX `index_name`(`name`) USING BTREE, |
| | | UNIQUE INDEX `index_type`(`dict_type`) USING BTREE |
| | |
| | | `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '字典类型', |
| | | `is_default` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'N' COMMENT '是否默认(Y是 N否)', |
| | | `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0正常 1停用)', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP, |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '', |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| | | `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注', |
| | | `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) USING BTREE, |
| | | UNIQUE INDEX `index_l_v_t`(`dict_type`, `label`, `value`) USING BTREE |
| | | ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典数据表' ROW_FORMAT = Dynamic; |
| | | |
| | | insert into sys_dict_data values(1, 0, '煤炭开采业','0', 'sys_business_scope', 'Y',0, 'admin', sysdate(), '', sysdate(), '业务范围数据'); |
| | | insert into sys_dict_data values(2, 0, '金属、非金属矿及其他矿采选业','1', 'sys_business_scope', 'N',0, 'admin', sysdate(), '', sysdate(), '业务范围数据'); |
| | | insert into sys_dict_data values(3, 0, '陆地石油和天然气开采业','2', 'sys_business_scope', 'N',0, 'admin', sysdate(), '', sysdate(), '业务范围数据'); |
| | | insert into sys_dict_data values(4, 0, '陆上油气管道运输业','3', 'sys_business_scope', 'N',0, 'admin', sysdate(), '', sysdate(), '业务范围数据'); |
| | | insert into sys_dict_data values(5, 0, '石油加工业,化学原料、化学品及医药制造业','4', 'sys_business_scope', 'N',0, 'admin', sysdate(), '', sysdate(), '业务范围数据'); |
| | | insert into sys_dict_data values(6, 0, '烟花爆竹制造业','5', 'sys_business_scope', 'N',0, 'admin', sysdate(), '', sysdate(), '业务范围数据'); |
| | | insert into sys_dict_data values(7, 0, '金属冶炼','6', 'sys_business_scope', 'N',0, 'admin', sysdate(), '', sysdate(), '业务范围数据'); |
| | |
| | | `config_key` varchar(100) NOT NULL COMMENT '参数键名', |
| | | `config_value` varchar(500) NOT NULL COMMENT '参数键值', |
| | | `type` char(1) NULL DEFAULT 'N' COMMENT '系统内置(Y是 N否)', |
| | | `create_by` varchar(64) NULL DEFAULT '' COMMENT '创建人', |
| | | `create_by` varchar(64) NULL COMMENT '创建人', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| | | `update_by` varchar(64) NULL DEFAULT '' COMMENT '更新人', |
| | | `update_by` varchar(64) NULL COMMENT '更新人', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| | | `remark` varchar(100) NULL DEFAULT '' COMMENT '备注', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`), |
| | | UNIQUE INDEX `index_key`(`config_key`) USING BTREE, |
| | | UNIQUE INDEX `index_name`(`name`) USING BTREE |
| | |
| | | CREATE TABLE `smart_assess`.`sys_agency` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `name` varchar(50) NOT NULL COMMENT '机构名称', |
| | | `credit_code` varchar(50) NOT NULL COMMENT '社会信用代码', |
| | | `credit_code` varchar(30) NOT NULL COMMENT '社会信用代码', |
| | | `attribute` tinyint(2) NOT NULL COMMENT '机构属性(0疆内,1疆外,默认0)', |
| | | `province` varchar(10) NULL DEFAULT '' COMMENT '省', |
| | | `province` varchar(10) NULL COMMENT '省', |
| | | `city` varchar(20) NOT NULL COMMENT '市', |
| | | `district` varchar(20) NOT NULL COMMENT '区', |
| | | `district` varchar(20) NULL COMMENT '区', |
| | | `address` varchar(100) NOT NULL COMMENT '经营地址', |
| | | `web` varchar(100) NULL DEFAULT '' COMMENT '机构网址', |
| | | `web` varchar(100) NULL COMMENT '机构网址', |
| | | `legal_person` varchar(20) NOT NULL COMMENT '法定代表人', |
| | | `legal_phone` varchar(13) NOT NULL COMMENT '法人电话', |
| | | `manager` varchar(20) NOT NULL COMMENT '机构负责人', |
| | |
| | | `archive_area` varchar(20) NOT NULL COMMENT '档案室面积', |
| | | `reg_address` varchar(100) NOT NULL COMMENT '注册地址', |
| | | `business` varchar(20) NOT NULL COMMENT '业务范围', |
| | | `report_path` varchar(50) NULL DEFAULT '' COMMENT '机构信息上报表存放路径', |
| | | `report_path` varchar(50) NULL COMMENT '机构信息上报表存放路径', |
| | | `publication` tinyint(2) NULL DEFAULT 0 COMMENT '是否公示(0代表公示,1代表不公示,默认0)', |
| | | `del_flag` tinyint(2) NULL DEFAULT 0 COMMENT '删除标志(0代表存在,1代表删除,默认0)', |
| | | `create_by` varchar(20) NULL DEFAULT '' COMMENT '创建人', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL DEFAULT '' COMMENT '更新人', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL DEFAULT '' COMMENT '备注', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`), |
| | | INDEX `index_name`(`name`) USING BTREE |
| | | )ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '机构表' ROW_FORMAT = Dynamic; |
| | |
| | | CREATE TABLE `smart_assess`.`sys_notice` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `title` varchar(50) NOT NULL COMMENT '通知标题', |
| | | `content` varchar(2000) NULL DEFAULT '' COMMENT '通知内容', |
| | | `content` text NULL COMMENT '通知内容', |
| | | `status` tinyint(2) NULL DEFAULT 0 COMMENT '通知状态(0正常,1关闭 默认0)', |
| | | `create_by` varchar(20) NULL DEFAULT '' COMMENT '创建人', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL DEFAULT '' COMMENT '更新人', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL DEFAULT '' COMMENT '备注', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | )ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '通知表' ROW_FORMAT = Dynamic; |
| | |
| | | CREATE TABLE `smart_assess`.`sys_law` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '住标题', |
| | | `sub_title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '副标题', |
| | | `content` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '内容', |
| | | `sub_title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '副标题', |
| | | `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '内容', |
| | | `law_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '法律法规类别', |
| | | `pub_agency` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '颁布机构', |
| | | `pub_date` datetime NOT NULL COMMENT '颁布日期', |
| | | `status` tinyint NULL DEFAULT 0 COMMENT '状态(0正常,1关闭 默认0)', |
| | | `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建人', |
| | | `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新人', |
| | | `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注', |
| | | `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '法律法规表' ROW_FORMAT = DYNAMIC; |
| | |
| | | `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '地区名称', |
| | | `sort` int NULL DEFAULT 0 COMMENT '排序', |
| | | `parent_id` bigint NOT NULL DEFAULT 0 COMMENT '父主键', |
| | | `region_type` tinyint NULL DEFAULT 0 COMMENT '地区类型(0是疆内,1是疆外,默认0)', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '创建人', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '更新人', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| | | PRIMARY KEY (`id`) USING BTREE, |
| | | UNIQUE INDEX `index_key`(`parent_id`, `name`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统地区表' ROW_FORMAT = DYNAMIC; |
| | | UNIQUE INDEX `index_key`(`parent_id`, `name`,`region_type`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统地区表' ROW_FORMAT = DYNAMIC; |
| | | |
| | | |
| | | |
| | | use smart_assess; |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (1, '乌鲁木齐市', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (2, '天山区', 0, 1, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (3, '沙依巴克区', 0, 1, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (4, '新市区', 0, 1, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (5, '水磨沟区', 0, 1, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (6, '头屯河区', 0, 1, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (7, '达坂城区', 0, 1, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (8, '米东区', 0, 1, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (9, '乌鲁木齐县', 0, 1, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (10, '克拉玛依市', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (11, '独山子区', 0, 10, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (12, '克拉玛依区', 0, 10, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (13, '白碱滩区', 0, 10, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (14, '乌尔禾区', 0, 10, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (15, '吐鲁番市', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (16, '高昌区', 0, 15, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (17, '鄯善县', 0, 15, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (18, '托克逊县', 0, 15, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (19, '哈密市', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (20, '伊州区', 0, 19, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (21, '巴里坤哈萨克自治县', 0, 19, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (22, '伊吾县', 0, 19, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (23, '昌吉回族自治州', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (24, '昌吉市', 0, 23, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (25, '阜康市', 0, 23, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (26, '呼图壁县', 0, 23, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (27, '玛纳斯县', 0, 23, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (28, '奇台县', 0, 23, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (29, '吉木萨尔县', 0, 23, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (30, '木垒哈萨克自治县', 0, 23, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (31, '博尔塔拉蒙古自治州', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (32, '博乐市', 0, 31, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (33, '阿拉山口市', 0, 31, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (34, '精河县', 0, 31, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (35, '温泉县', 0, 31, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (36, '巴音郭楞蒙古自治州', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (37, '库尔勒市', 0, 36, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (38, '轮台县', 0, 36, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (39, '尉犁县', 0, 36, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (40, '若羌县', 0, 36, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (41, '且末县', 0, 36, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (42, '焉耆回族自治县', 0, 36, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (43, '和静县', 0, 36, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (44, '和硕县', 0, 36, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (45, '博湖县', 0, 36, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (46, '阿克苏地区', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (47, '阿克苏市', 0, 46, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (48, '库车市', 0, 46, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (49, '温宿县', 0, 46, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (50, '沙雅县', 0, 46, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (51, '新和县', 0, 46, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (52, '拜城县', 0, 46, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (53, '乌什县', 0, 46, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (54, '阿瓦提县', 0, 46, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (55, '柯坪县', 0, 46, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (56, '克孜勒苏柯尔克孜自治州', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (57, '阿图什市', 0, 56, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (58, '阿克陶县', 0, 56, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (59, '阿合奇县', 0, 56, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (60, '乌恰县', 0, 56, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (61, '喀什地区', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (62, '喀什市', 0, 61, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (63, '疏附县', 0, 61, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (64, '疏勒县', 0, 61, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (65, '英吉沙县', 0, 61, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (66, '泽普县', 0, 61, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (67, '莎车县', 0, 61, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (68, '叶城县', 0, 61, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (69, '麦盖提县', 0, 61, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (70, '岳普湖县', 0, 61, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (71, '伽师县', 0, 61, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (72, '巴楚县', 0, 61, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (73, '塔什库尔干塔吉克自治县', 0, 61, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (74, '和田地区', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (75, '和田市', 0, 74, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (76, '和田县', 0, 74, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (77, '墨玉县', 0, 74, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (78, '皮山县', 0, 74, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (79, '洛浦县', 0, 74, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (80, '策勒县', 0, 74, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (81, '于田县', 0, 74, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (82, '民丰县', 0, 74, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (83, '伊犁哈萨克自治州', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (84, '伊宁市', 0, 83, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (85, '奎屯市', 0, 83, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (86, '霍尔果斯市', 0, 83, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (87, '伊宁县', 0, 83, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (88, '察布查尔锡伯自治县', 0, 83, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (89, '霍城县', 0, 83, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (90, '巩留县', 0, 83, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (91, '新源县', 0, 83, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (92, '昭苏县', 0, 83, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (93, '特克斯县', 0, 83, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (94, '尼勒克县', 0, 83, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (95, '塔城地区', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (96, '塔城市', 0, 95, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (97, '乌苏市', 0, 95, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (98, '沙湾市', 0, 95, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (99, '额敏县', 0, 95, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (100, '托里县', 0, 95, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (101, '裕民县', 0, 95, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (102, '和布克赛尔蒙古自治县', 0, 95, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (103, '阿勒泰地区', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (104, '阿勒泰市', 0, 103, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (105, '布尔津县', 0, 103, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (106, '富蕴县', 0, 103, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (107, '福海县', 0, 103, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (108, '哈巴河县', 0, 103, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (109, '青河县', 0, 103, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (110, '吉木乃县', 0, 103, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (111, '自治区直辖县级行政区划', 0, 0, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (112, '石河子市', 0, 111, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (113, '阿拉尔市', 0, 111, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (114, '图木舒克市', 0, 111, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (115, '五家渠市', 0, 111, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (116, '北屯市', 0, 111, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (117, '铁门关市', 0, 111, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (118, '双河市', 0, 111, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (119, '可克达拉市', 0, 111, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (120, '昆玉市', 0, 111, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (121, '胡杨河市', 0, 111, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (122, '新星市', 0, 111, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (123, '白杨市', 0, 111, 0); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (124, '北京市', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (125, '天津市', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (126, '河北省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (127, '石家庄市', 0, 126, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (128, '唐山市', 0, 126, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (129, '秦皇岛市', 0, 126, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (130, '邯郸市', 0, 126, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (131, '邢台市', 0, 126, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (132, '保定市', 0, 126, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (133, '张家口市', 0, 126, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (134, '承德市', 0, 126, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (135, '沧州市', 0, 126, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (136, '廊坊市', 0, 126, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (137, '衡水市', 0, 126, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (138, '山西省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (139, '太原市', 0, 138, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (140, '大同市', 0, 138, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (141, '阳泉市', 0, 138, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (142, '长治市', 0, 138, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (143, '晋城市', 0, 138, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (144, '朔州市', 0, 138, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (145, '晋中市', 0, 138, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (146, '运城市', 0, 138, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (147, '忻州市', 0, 138, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (148, '临汾市', 0, 138, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (149, '吕梁市', 0, 138, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (150, '内蒙古自治区', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (151, '呼和浩特市', 0, 150, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (152, '包头市', 0, 150, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (153, '乌海市', 0, 150, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (154, '赤峰市', 0, 150, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (155, '通辽市', 0, 150, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (156, '鄂尔多斯市', 0, 150, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (157, '呼伦贝尔市', 0, 150, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (158, '巴彦淖尔市', 0, 150, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (159, '乌兰察布市', 0, 150, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (160, '兴安盟', 0, 150, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (161, '锡林郭勒盟', 0, 150, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (162, '阿拉善盟', 0, 150, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (163, '辽宁省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (164, '沈阳市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (165, '大连市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (166, '鞍山市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (167, '抚顺市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (168, '本溪市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (169, '丹东市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (170, '锦州市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (171, '营口市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (172, '阜新市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (173, '辽阳市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (174, '盘锦市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (175, '铁岭市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (176, '朝阳市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (177, '葫芦岛市', 0, 163, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (178, '吉林省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (179, '长春市', 0, 178, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (180, '吉林市', 0, 178, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (181, '四平市', 0, 178, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (182, '辽源市', 0, 178, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (183, '通化市', 0, 178, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (184, '白山市', 0, 178, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (185, '松原市', 0, 178, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (186, '白城市', 0, 178, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (187, '延边朝鲜族自治州', 0, 178, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (188, '黑龙江省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (189, '哈尔滨市', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (190, '齐齐哈尔市', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (191, '鸡西市', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (192, '鹤岗市', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (193, '双鸭山市', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (194, '大庆市', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (195, '伊春市', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (196, '佳木斯市', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (197, '七台河市', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (198, '牡丹江市', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (199, '黑河市', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (200, '绥化市', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (201, '大兴安岭地区', 0, 188, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (202, '上海市', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (203, '江苏省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (204, '南京市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (205, '无锡市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (206, '徐州市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (207, '常州市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (208, '苏州市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (209, '南通市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (210, '连云港市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (211, '淮安市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (212, '盐城市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (213, '扬州市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (214, '镇江市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (215, '泰州市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (216, '宿迁市', 0, 203, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (217, '浙江省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (218, '杭州市', 0, 217, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (219, '宁波市', 0, 217, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (220, '温州市', 0, 217, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (221, '嘉兴市', 0, 217, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (222, '湖州市', 0, 217, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (223, '绍兴市', 0, 217, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (224, '金华市', 0, 217, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (225, '衢州市', 0, 217, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (226, '舟山市', 0, 217, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (227, '台州市', 0, 217, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (228, '丽水市', 0, 217, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (229, '安徽省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (230, '合肥市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (231, '芜湖市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (232, '蚌埠市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (233, '淮南市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (234, '马鞍山市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (235, '淮北市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (236, '铜陵市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (237, '安庆市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (238, '黄山市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (239, '滁州市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (240, '阜阳市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (241, '宿州市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (242, '六安市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (243, '亳州市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (244, '池州市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (245, '宣城市', 0, 229, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (246, '福建省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (247, '福州市', 0, 246, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (248, '厦门市', 0, 246, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (249, '莆田市', 0, 246, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (250, '三明市', 0, 246, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (251, '泉州市', 0, 246, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (252, '漳州市', 0, 246, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (253, '南平市', 0, 246, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (254, '龙岩市', 0, 246, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (255, '宁德市', 0, 246, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (256, '江西省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (257, '南昌市', 0, 256, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (258, '景德镇市', 0, 256, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (259, '萍乡市', 0, 256, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (260, '九江市', 0, 256, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (261, '新余市', 0, 256, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (262, '鹰潭市', 0, 256, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (263, '赣州市', 0, 256, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (264, '吉安市', 0, 256, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (265, '宜春市', 0, 256, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (266, '抚州市', 0, 256, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (267, '上饶市', 0, 256, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (268, '山东省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (269, '济南市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (270, '青岛市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (271, '淄博市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (272, '枣庄市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (273, '东营市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (274, '烟台市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (275, '潍坊市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (276, '济宁市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (277, '泰安市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (278, '威海市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (279, '日照市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (280, '临沂市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (281, '德州市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (282, '聊城市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (283, '滨州市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (284, '菏泽市', 0, 268, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (285, '河南省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (286, '郑州市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (287, '开封市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (288, '洛阳市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (289, '平顶山市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (290, '安阳市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (291, '鹤壁市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (292, '新乡市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (293, '焦作市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (294, '濮阳市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (295, '许昌市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (296, '漯河市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (297, '三门峡市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (298, '南阳市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (299, '商丘市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (300, '信阳市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (301, '周口市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (302, '驻马店市', 0, 285, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (303, '湖北省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (304, '武汉市', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (305, '黄石市', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (306, '十堰市', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (307, '宜昌市', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (308, '襄阳市', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (309, '鄂州市', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (310, '荆门市', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (311, '孝感市', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (312, '荆州市', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (313, '黄冈市', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (314, '咸宁市', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (315, '随州市', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (316, '恩施土家族苗族自治州', 0, 303, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (317, '湖南省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (318, '长沙市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (319, '株洲市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (320, '湘潭市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (321, '衡阳市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (322, '邵阳市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (323, '岳阳市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (324, '常德市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (325, '张家界市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (326, '益阳市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (327, '郴州市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (328, '永州市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (329, '怀化市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (330, '娄底市', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (331, '湘西土家族苗族自治州', 0, 317, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (332, '广东省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (333, '广州市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (334, '韶关市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (335, '深圳市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (336, '珠海市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (337, '汕头市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (338, '佛山市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (339, '江门市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (340, '湛江市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (341, '茂名市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (342, '肇庆市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (343, '惠州市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (344, '梅州市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (345, '汕尾市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (346, '河源市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (347, '阳江市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (348, '清远市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (349, '潮州市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (350, '揭阳市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (351, '云浮市', 0, 332, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (352, '广西壮族自治区', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (353, '南宁市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (354, '柳州市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (355, '桂林市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (356, '梧州市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (357, '北海市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (358, '防城港市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (359, '钦州市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (360, '贵港市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (361, '玉林市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (362, '百色市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (363, '贺州市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (364, '河池市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (365, '来宾市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (366, '崇左市', 0, 352, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (367, '海南省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (368, '海口市', 0, 367, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (369, '三亚市', 0, 367, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (370, '儋州市', 0, 367, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (371, '重庆市', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (372, '四川省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (373, '成都市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (374, '自贡市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (375, '攀枝花市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (376, '泸州市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (377, '德阳市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (378, '绵阳市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (379, '广元市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (380, '遂宁市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (381, '内江市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (382, '乐山市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (383, '南充市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (384, '眉山市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (385, '宜宾市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (386, '广安市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (387, '达州市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (388, '雅安市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (389, '巴中市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (390, '资阳市', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (391, '阿坝藏族羌族自治州', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (392, '甘孜藏族自治州', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (393, '凉山彝族自治州', 0, 372, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (394, '贵州省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (395, '贵阳市', 0, 394, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (396, '六盘水市', 0, 394, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (397, '遵义市', 0, 394, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (398, '安顺市', 0, 394, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (399, '毕节市', 0, 394, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (400, '铜仁市', 0, 394, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (401, '黔西南布依族苗族自治州', 0, 394, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (402, '黔东南苗族侗族自治州', 0, 394, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (403, '黔南布依族苗族自治州', 0, 394, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (404, '云南省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (405, '昆明市', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (406, '曲靖市', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (407, '玉溪市', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (408, '保山市', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (409, '昭通市', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (410, '丽江市', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (411, '普洱市', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (412, '临沧市', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (413, '楚雄彝族自治州', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (414, '红河哈尼族彝族自治州', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (415, '文山壮族苗族自治州', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (416, '西双版纳傣族自治州', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (417, '大理白族自治州', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (418, '德宏傣族景颇族自治州', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (419, '怒江傈僳族自治州', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (420, '迪庆藏族自治州', 0, 404, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (421, '西藏自治区', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (422, '拉萨市', 0, 421, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (423, '日喀则市', 0, 421, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (424, '昌都市', 0, 421, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (425, '林芝市', 0, 421, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (426, '山南市', 0, 421, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (427, '那曲市', 0, 421, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (428, '阿里地区', 0, 421, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (429, '陕西省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (430, '西安市', 0, 429, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (431, '铜川市', 0, 429, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (432, '宝鸡市', 0, 429, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (433, '咸阳市', 0, 429, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (434, '渭南市', 0, 429, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (435, '延安市', 0, 429, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (436, '汉中市', 0, 429, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (437, '榆林市', 0, 429, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (438, '安康市', 0, 429, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (439, '商洛市', 0, 429, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (440, '甘肃省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (441, '兰州市', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (442, '金昌市', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (443, '白银市', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (444, '天水市', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (445, '武威市', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (446, '张掖市', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (447, '平凉市', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (448, '酒泉市', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (449, '庆阳市', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (450, '定西市', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (451, '陇南市', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (452, '临夏回族自治州', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (453, '甘南藏族自治州', 0, 440, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (454, '青海省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (455, '西宁市', 0, 454, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (456, '海东市', 0, 454, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (457, '海北藏族自治州', 0, 454, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (458, '黄南藏族自治州', 0, 454, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (459, '海南藏族自治州', 0, 454, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (460, '果洛藏族自治州', 0, 454, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (461, '玉树藏族自治州', 0, 454, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (462, '海西蒙古族藏族自治州', 0, 454, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (463, '宁夏回族自治区', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (464, '银川市', 0, 463, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (465, '石嘴山市', 0, 463, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (466, '吴忠市', 0, 463, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (467, '固原市', 0, 463, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (468, '中卫市', 0, 463, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (469, '新疆维吾尔自治区', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (470, '乌鲁木齐市', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (471, '克拉玛依市', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (472, '吐鲁番市', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (473, '哈密市', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (474, '昌吉回族自治州', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (475, '博尔塔拉蒙古自治州', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (476, '巴音郭楞蒙古自治州', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (477, '阿克苏地区', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (478, '克孜勒苏柯尔克孜自治州', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (479, '喀什地区', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (480, '和田地区', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (481, '伊犁哈萨克自治州', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (482, '塔城地区', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (483, '阿勒泰地区', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (484, '自治区直辖县级行政区划', 0, 469, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (485, '台湾省', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (486, '台北市', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (487, '新北市', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (488, '桃园市', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (489, '台中市', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (490, '台南市', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (491, '高雄市', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (492, '基隆市', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (493, '新竹市', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (494, '嘉义市', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (495, '新竹县', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (496, '苗栗县', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (497, '彰化县', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (498, '南投县', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (499, '云林县', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (500, '嘉义县', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (501, '屏东县', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (502, '宜兰县', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (503, '花莲县', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (504, '台东县', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (505, '澎湖县', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (506, '连江县', 0, 485, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (507, '香港特别行政区', 0, 0, 1); |
| | | INSERT INTO `sys_region`(`id`, `name`, `sort`, `parent_id`, `region_type`) VALUES (508, '澳门特别行政区', 0, 0, 1); |
| | |
| | | `path` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件存放路径', |
| | | `type` tinyint NOT NULL COMMENT '文件所属类型(1社保,2医保,3工资单)', |
| | | `user_id` bigint NOT NULL COMMENT '用户id', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建人', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '创建人', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新人', |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '更新人', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| | | PRIMARY KEY (`id`) USING BTREE, |
| | | UNIQUE INDEX `index_name`(`name`) USING BTREE |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 系统专家分类表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`sys_expert_classify`; |
| | | CREATE TABLE `smart_assess`.`sys_expert_classify` ( |
| | | `classify_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', |
| | | `classify_name` varchar(20) NOT NULL COMMENT '分类名称', |
| | | `parent_id` bigint NOT NULL DEFAULT 0 COMMENT '父id', |
| | | `del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '删除标志(0代表存在,1代表删除,默认0)', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '修改人', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`classify_id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统专家分类表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 系统专家分类表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`sys_expert_info`; |
| | | CREATE TABLE `smart_assess`.`sys_expert_info` ( |
| | | `expert_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', |
| | | `name` varchar(20) NOT NULL COMMENT '专家名称', |
| | | `sex` tinyint NULL DEFAULT 2 COMMENT '性别(0男,1女,2未知,默认2)', |
| | | `big_classify` bigint NULL COMMENT '类别id', |
| | | `small_classify` bigint NULL COMMENT '类别id', |
| | | `birthday` datetime NULL COMMENT '出生日期', |
| | | `phone` varchar(11) NULL COMMENT '手机号', |
| | | `title` varchar(20) NULL COMMENT '职称', |
| | | `electronic_photo` varchar(100) NULL COMMENT '电子照片', |
| | | `id_card` varchar(18) NULL COMMENT '身份证号码', |
| | | `duty_status` tinyint NULL COMMENT '在职状态', |
| | | `company_name` varchar(20) NULL COMMENT '公司名称', |
| | | `company_address` varchar(50) NULL COMMENT '公司地址', |
| | | `dept_name` varchar(20) NULL COMMENT '部门名称', |
| | | `job` varchar(10) NULL COMMENT '职务', |
| | | `company_telephone` varchar(11) NULL COMMENT '公司电话', |
| | | `fax_num` varchar(11) NULL COMMENT '传真', |
| | | `email` varchar(20) NULL COMMENT '邮箱', |
| | | `graduation_school` varchar(20) NULL COMMENT '毕业学校', |
| | | `degree` varchar(10) NULL COMMENT '学历', |
| | | `speciality` varchar(20) NULL COMMENT '专业', |
| | | `current_profession` varchar(20) NULL COMMENT '当前专业', |
| | | `support_direction_safety` varchar(20) NULL COMMENT '支撑安全', |
| | | `support_direction_prevention` varchar(20) NULL COMMENT '支撑预防', |
| | | `support_direction_emergency` varchar(20) NULL COMMENT '支持应急', |
| | | `resume_key` varchar(20) NULL COMMENT '简述', |
| | | `paper_situation_key` varchar(20) NULL, |
| | | `reward_key` varchar(20) NULL, |
| | | `achievement_key` varchar(20) NULL, |
| | | `personal_opinion_key` varchar(20) NULL, |
| | | `recommend_unit_opinion_key` varchar(20) NULL, |
| | | `del_flag` tinyint(255) NOT NULL DEFAULT 0 COMMENT '删除标志(0代表存在,1代表删除,默认0)', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '修改人', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', |
| | | `remark` varchar(100) NULL, |
| | | PRIMARY KEY (`expert_id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统专家信息表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 项目表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`ass_project`; |
| | | CREATE TABLE `smart_assess`.`ass_project` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `name` varchar(50) NOT NULL COMMENT '项目名称', |
| | | `code` varchar(50) NULL COMMENT '项目编号', |
| | | `agency_id` bigint NOT NULL COMMENT '机构id', |
| | | `client` varchar(50) NOT NULL COMMENT '委托方', |
| | | `province` varchar(20) NULL COMMENT '省份', |
| | | `city` varchar(20) NOT NULL COMMENT '城市', |
| | | `district` varchar(20) NOT NULL COMMENT '区县', |
| | | `business` varchar(20) NOT NULL COMMENT '业务范围,字典id', |
| | | `invest` varchar(10) NOT NULL COMMENT '项目投资额/万', |
| | | `address` varchar(100) NOT NULL COMMENT '地址', |
| | | `actual_location` varchar(60) NULL COMMENT '实际纬度/经度', |
| | | `location` varchar(20) NULL COMMENT '纬度/经度', |
| | | `estimate_type` bigint NULL COMMENT '评估类型,字典id', |
| | | `leader_id` bigint NOT NULL COMMENT '负责人id', |
| | | `defect_numb` int NULL, |
| | | `review_plan_date` datetime NULL COMMENT '评估计划时间', |
| | | `township` varchar(20) NULL, |
| | | `credit_code` varchar(30) NOT NULL COMMENT '委托单位社会统一信用代码', |
| | | `report_progress` tinyint(2) NULL DEFAULT 0 COMMENT '项目状态(0创建,1风险评估,2合同管理,默认0)', |
| | | `state` tinyint(2) NULL DEFAULT 1 COMMENT '审批状态(0暂存,1审核中,2审批通过,3审批驳回,4已作废 默认1)', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 风险评估表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`ass_risk_estimate`; |
| | | CREATE TABLE `smart_assess`.`ass_risk_estimate` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `introduction` varchar(500) NOT NULL COMMENT '基本概况(500字以内)', |
| | | `risk_character` varchar(500) NOT NULL COMMENT '行业风险特性(500字以内)', |
| | | `surroundings` varchar(500) NOT NULL COMMENT '周边环境(500字以内)', |
| | | `equipment` varchar(500) NULL COMMENT '主要生产装置(500字以内)', |
| | | `technology` varchar(500) NULL COMMENT '生产工艺概况(500字以内)', |
| | | `is_accept_chargess` tinyint(1) NOT NULL COMMENT '评价费用是否在本机构所接受的范围内(0否,1是)', |
| | | `is_feasibility` tinyint(1) NOT NULL COMMENT '项目的可行性(0否,1是)', |
| | | `is_finish_report` tinyint(1) NOT NULL COMMENT '是否能在约定的时间内完成评价报告(0否,1是)', |
| | | `is_in_business` tinyint(1) NOT NULL COMMENT '评价项目是否在本机构资质业务范围内(0否,1是)', |
| | | `is_need_expert` tinyint(1) NOT NULL COMMENT '是否需要聘请相关专业的技术专家(0否,1是)', |
| | | `is_satisfy_need` tinyint(1) NOT NULL COMMENT '评价人员专业构成是否满足评价项目需要(0否,1是)', |
| | | `estimate_date` datetime NOT NULL COMMENT '评估时间', |
| | | `tech_opinion` varchar(30) NOT NULL COMMENT '技术负责人意见(30字以内)', |
| | | `risk_opinion` varchar(30) NOT NULL COMMENT '风险评估人意见(30字以内)', |
| | | `agency_opinon` varchar(30) NOT NULL COMMENT '机构评价负责人意见(30字以内)', |
| | | `state` tinyint(2) NULL DEFAULT 1 COMMENT '审批状态(0暂存,1审核中,2审批通过,3审批驳回,4已作废 默认1)', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '风险评估表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 合同管理表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`ass_contract`; |
| | | CREATE TABLE `smart_assess`.`ass_contract` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `contract_money` decimal NOT NULL COMMENT '合同价格/万', |
| | | `actual_contract_money` decimal NOT NULL COMMENT '实际合同价格/万', |
| | | `contract_sign_date` datetime NOT NULL COMMENT '合同签订时间', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `contract_introduction` varchar(100) NULL COMMENT '合同额外说明(100字以内)', |
| | | `actual_contract_introduction` varchar(100) NULL COMMENT '实际合同额外说明(100字以内)', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '合同管理表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 评价认为通知表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`ass_estimate_task`; |
| | | CREATE TABLE `smart_assess`.`ass_estimate_task` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `leader_id` bigint NOT NULL COMMENT '项目负责人id', |
| | | `link_man` varchar(10) NOT NULL COMMENT '联系人(10个字符)', |
| | | `link_phone` varchar(11) NOT NULL COMMENT '联系电话(11个字符)', |
| | | `fax` varchar(20) NULL COMMENT '传真', |
| | | `transmit_date` datetime NOT NULL COMMENT '任务下达时间', |
| | | `transmit_person` varchar(20) NULL COMMENT '任务下达人', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '评价认为通知表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 设备表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`ass_device`; |
| | | CREATE TABLE `smart_assess`.`ass_device` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `device_name` varchar(20) NOT NULL COMMENT '设备名称', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '设备表' ROW_FORMAT = DYNAMIC; |
| | | |
| | | |
| | | -- ---------------------------- |
| | | -- 项目需要的设备清单表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`ass_project_device`; |
| | | CREATE TABLE `smart_assess`.`ass_project_device` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `device_id` bigint NOT NULL COMMENT '设备id', |
| | | `start_date` datetime NOT NULL COMMENT '开始时间', |
| | | `end_date` datetime NOT NULL COMMENT '结束时间', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目需要的设备清单表' ROW_FORMAT = DYNAMIC; |
| | | |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 评价项目计划表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`ass_estimate_plan`; |
| | | CREATE TABLE `smart_assess`.`ass_estimate_plan` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `auser_id` bigint NOT NULL COMMENT '评价机构负责人id', |
| | | `technical_id` bigint NOT NULL COMMENT '技术负责人负责人id', |
| | | `start_date` datetime NOT NULL COMMENT '评价开始时间', |
| | | `end_date` datetime NOT NULL COMMENT '评价结束时间', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '评价项目计划表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 评价日程安排表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`ass_estimate_schedule`; |
| | | CREATE TABLE `smart_assess`.`ass_estimate_schedule` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `name` varchar(20) NOT NULL COMMENT '日程名称', |
| | | `schedule_type` tinyint(2) NOT NULL COMMENT '日程类型:1勘验准备,2现场勘验,3材料分析整理,4评价报告编写,5整改情况现场确认,6整理评价报告,7报告审核,8报告修改', |
| | | `start_date` datetime NOT NULL COMMENT '开始时间', |
| | | `end_date` datetime NOT NULL COMMENT '结束时间', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '评价日程安排表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 评价项目组成员表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`ass_plan_person`; |
| | | CREATE TABLE `smart_assess`.`ass_plan_person` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `person_id` bigint NOT NULL COMMENT '成员id', |
| | | `certificate_number` varchar(30) NOT NULL COMMENT '资格证书编号', |
| | | `ability` varchar(10) NOT NULL COMMENT '能力', |
| | | `business_ability_id` bigint NULL COMMENT '能力id(字典id)', |
| | | `identification_number` varchar(10) NOT NULL COMMENT '识别码', |
| | | `job_type` tinyint(2) NOT NULL DEFAULT 1 COMMENT '工作类型:1普通人员,2组长', |
| | | `later_promise` tinyint(1) NOT NULL COMMENT '承诺后期前往现场勘验(0否,1是)', |
| | | `professional_ability` varchar(50) NOT NULL COMMENT '专业能力', |
| | | `work` varchar(50) NOT NULL COMMENT '承担工作', |
| | | `scene_statue` tinyint(2) NOT NULL DEFAULT 1 COMMENT '场景状态1 2', |
| | | `reason` varchar(30) NULL COMMENT '未到现场勘验原因(30字)', |
| | | `sort` int NULL DEFAULT 0 COMMENT '排序', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `work_notification_id` bigint NULL COMMENT '从业告知id', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '评价项目组成员表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 评价项目组专家表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`ass_plan_expert`; |
| | | CREATE TABLE `smart_assess`.`ass_plan_expert` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `expert_id` bigint NOT NULL COMMENT '专家id', |
| | | `ability` varchar(10) NOT NULL COMMENT '能力', |
| | | `business_ability_id` bigint NULL COMMENT '能力id(字典id)', |
| | | `later_promise` tinyint(1) NOT NULL COMMENT '承诺后期前往现场勘验(0否,1是)', |
| | | `professional_ability` varchar(50) NOT NULL COMMENT '专业能力', |
| | | `work` varchar(50) NOT NULL COMMENT '工作任务', |
| | | `sort` int NULL DEFAULT 0 COMMENT '排序', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `work_notification_id` bigint NULL COMMENT '从业告知id', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '评价项目组专家表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 从业告知表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`ass_work_notification`; |
| | | CREATE TABLE `smart_assess`.`ass_work_notification` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `service_start_date` datetime NOT NULL COMMENT '服务开始时间', |
| | | `service_end_date` datetime NOT NULL COMMENT '服务结束时间', |
| | | `investigation_plan_date` datetime NOT NULL COMMENT '计划现场勘验时间', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `state` tinyint(2) NULL DEFAULT 1 COMMENT '审批状态(0暂存,1审核中,2审批通过,3审批驳回,4已作废 默认1)', |
| | | `audit_id` bigint NULL COMMENT '审核人员id', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '从业告知表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 现场勘验记录表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`ass_investigation`; |
| | | CREATE TABLE `smart_assess`.`ass_investigation` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `investigation_date` datetime NOT NULL COMMENT '现场勘验时间', |
| | | `is_first` tinyint(1) NULL DEFAULT 0 COMMENT '是否第一次(0是,1否)', |
| | | `is_safety_check` tinyint(1) NULL DEFAULT 0 COMMENT '编制现场安全检查表', |
| | | `record_data` varchar(200) NULL COMMENT '现场勘验记录(200字)', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(20) NULL COMMENT '创建人', |
| | | `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | `update_by` varchar(20) NULL COMMENT '更新人', |
| | | `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | `remark` varchar(100) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '现场勘验记录表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 评估文件上传记录表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`sys_accessory_file`; |
| | | CREATE TABLE `smart_assess`.`sys_accessory_file` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `file_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件名称', |
| | | `path` varchar(70) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件存放路径', |
| | | `module_type` tinyint NOT NULL COMMENT '模块code', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '创建人', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '更新人', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| | | `remark` varchar(50) NULL COMMENT '文件描述', |
| | | PRIMARY KEY (`id`) USING BTREE, |
| | | UNIQUE INDEX `index_name`(`file_name`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '评估文件上传记录表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 现场勘验人员人脸识别记录表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`sys_face_record`; |
| | | CREATE TABLE `smart_assess`.`sys_face_record` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `person_id` bigint NOT NULL COMMENT '用户id', |
| | | `file_id` bigint NOT NULL COMMENT '评估文件id(图片id)', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '创建人', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '更新人', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| | | `remark` varchar(50) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '现场勘验人员人脸识别记录表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 审核表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`sys_audit`; |
| | | CREATE TABLE `smart_assess`.`sys_audit` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `audit_date` datetime NOT NULL COMMENT '审核日期', |
| | | `affirm_date` datetime NOT NULL COMMENT '内部审核确定日期', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `audit_type` tinyint(2) NOT NULL COMMENT '审核类型(1内部审核2技术审核)', |
| | | `assessor_id` bigint NOT NULL COMMENT '审核人id', |
| | | `is_amend_finish` tinyint(1) NOT NULL DEFAULT 1 COMMENT '已按要求修改完成(0否 1是)', |
| | | `is_basis` tinyint(1) NOT NULL DEFAULT 1 COMMENT '评价依据是否充分、准确、有效(0否 1是)', |
| | | `is_conclusion` tinyint(1) NOT NULL DEFAULT 1 COMMENT '结论是否正确(0否 1是)', |
| | | `is_danger_overall` tinyint(1) NOT NULL DEFAULT 1 COMMENT '危险有害因素识别是否全面(0否 1是)', |
| | | `is_file` tinyint(1) NOT NULL DEFAULT 1 COMMENT '附件与附图是否有效及规范(0否 1是)', |
| | | `is_format` tinyint(1) NOT NULL DEFAULT 1 COMMENT '格式是否符合要求(0否 1是)', |
| | | `is_measure` tinyint(1) NOT NULL DEFAULT 1 COMMENT '对策措施与建议是否可行(0否 1是)', |
| | | `is_method_selection` tinyint(1) NOT NULL DEFAULT 1 COMMENT '评价方法选择是否适当(0否 1是)', |
| | | `is_report_audit` tinyint(1) NOT NULL DEFAULT 1 COMMENT '可报技术负责人审核(0否 1是)', |
| | | `is_scope` tinyint(1) NOT NULL DEFAULT 1 COMMENT '评价范围是否与合同一致(0否 1是)', |
| | | `is_text` tinyint(1) NOT NULL DEFAULT 1 COMMENT '文字、数据是否准确(0否 1是)', |
| | | `is_unit_division` tinyint(1) NOT NULL DEFAULT 1 COMMENT '评价单元划分是否合理(0否 1是)', |
| | | `is_basis_quote` tinyint(1) NOT NULL DEFAULT 1 COMMENT '报告中所列评价依据是否得到引用和验证(0否 1是)', |
| | | `is_conclusion_right` tinyint(1) NOT NULL DEFAULT 1 COMMENT '评价结论及格式是否正确(0否 1是)', |
| | | `is_danger_full` tinyint(1) NOT NULL DEFAULT 1 COMMENT '危险有害因素识别是否充分(0否 1是)', |
| | | `is_data` tinyint(1) NOT NULL DEFAULT 1 COMMENT '现场收集的有关资料是否齐全、有效(0否 1是)', |
| | | `is_omission` tinyint(1) NOT NULL DEFAULT 1 COMMENT '报告中是否有重大遗漏(0否 1是)', |
| | | `is_measure_equitable` tinyint(1) NOT NULL DEFAULT 1 COMMENT '对策措施及建议是否有针对性、合理性(0否 1是)', |
| | | `is_method_rational` tinyint(1) NOT NULL DEFAULT 1 COMMENT '评价方法选用是否合理(0否 1是)', |
| | | `suggestions` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '存在问题及建议(500字符)', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '创建人', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '更新人', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| | | `remark` varchar(50) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '审核表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 项目结论表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`sys_conclusion`; |
| | | CREATE TABLE `smart_assess`.`sys_conclusion` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `conclusion` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '评价结论', |
| | | `is_revise_manual` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否有评价报告修改说明(0否 1是)', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '创建人', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '更新人', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| | | `remark` varchar(50) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目结论表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 过程控制负责人审核表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`sys_process_audit`; |
| | | CREATE TABLE `smart_assess`.`sys_process_audit` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `audit_date` datetime NOT NULL COMMENT '审核日期', |
| | | `process_leader_id` bigint NOT NULL COMMENT '过程控制负责人id', |
| | | `suggestions` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '存在问题及建议(500字符)', |
| | | `is_estimate_plan` tinyint(1) NOT NULL DEFAULT 1 COMMENT '编制安全评价项目计划书(0否 1是)', |
| | | `is_estimate_task` tinyint(1) NOT NULL DEFAULT 1 COMMENT '评价任务通知书(0否 1是)', |
| | | `is_sign_contract` tinyint(1) NOT NULL DEFAULT 1 COMMENT '签订合同(0否 1是)', |
| | | `is_exterior_audit` tinyint(1) NOT NULL DEFAULT 1 COMMENT '评价报告外审意见0否 1是)', |
| | | `is_full_materials` tinyint(1) NOT NULL DEFAULT 1 COMMENT '报告归档材料完整性(0否 1是)', |
| | | `is_interior_audit` tinyint(1) NOT NULL DEFAULT 1 COMMENT '评价报告内部审核(0否 1是)', |
| | | `is_investigation_site` tinyint(1) NOT NULL DEFAULT 1 COMMENT '现场勘验记录及影像资料(0否 1是)', |
| | | `is_open_information` tinyint(1) NOT NULL DEFAULT 1 COMMENT '评价项目网上信息公开(0否 1是)', |
| | | `is_provide_materials` tinyint(1) NOT NULL DEFAULT 1 COMMENT '被评价单位提供材料清单(0否 1是)', |
| | | `is_risk_analyse` tinyint(1) NOT NULL DEFAULT 1 COMMENT '风险分析(0否 1是)', |
| | | `is_technolgy_audit` tinyint(1) NOT NULL DEFAULT 1 COMMENT '技术负责人审核(0否 1是)', |
| | | `is_use_qrcode` tinyint(1) NOT NULL DEFAULT 1 COMMENT '二维码的使用(0否 1是)', |
| | | `is_work_notification` tinyint(1) NOT NULL DEFAULT 1 COMMENT '从业告知(0否 1是)', |
| | | `estimate_plan_des` varchar(20) NULL COMMENT '编制安全评价项目计划书-不符合描述(20字符)', |
| | | `estimate_task_des` varchar(20) NULL COMMENT '评价任务通知书-不符合描述(20字符)', |
| | | `sign_contract_des` varchar(20) NULL COMMENT '签订合同-不符合描述(20字符)', |
| | | `exterior_audit_des` varchar(20) NULL COMMENT '评价报告外审意见-不符合描述(20字符)', |
| | | `full_materials_des` varchar(20) NULL COMMENT '报告归档材料完整性-不符合描述(20字符)', |
| | | `interior_audit_des` varchar(20) NULL COMMENT '评价报告内部审核-不符合描述(20字符)', |
| | | `investigation_site_des` varchar(20) NULL COMMENT '现场勘验记录及影像资料-不符合描述(20字符)', |
| | | `open_information_des` varchar(20) NULL COMMENT '评价项目网上信息公开-不符合描述(20字符)', |
| | | `provide_materials_des` varchar(20) NULL COMMENT '被评价单位提供材料清单-不符合描述(20字符)', |
| | | `risk_analyse_des` varchar(20) NULL COMMENT '风险分析-不符合描述(20字符)', |
| | | `technolgy_audit_des` varchar(20) NULL COMMENT '技术负责人审核-不符合描述(20字符)', |
| | | `use_qrcode_des` varchar(20) NULL COMMENT '二维码的使用-不符合描述(20字符)', |
| | | `work_notification_des` varchar(20) NULL COMMENT '从业告知-不符合描述(20字符)', |
| | | |
| | | `is_full_process` tinyint(1) NOT NULL DEFAULT 1 COMMENT '审核结论是否满足过程控制要求(0否 1是)', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '创建人', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '更新人', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| | | `remark` varchar(50) NULL COMMENT '备注', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '过程控制负责人审核表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | |
| | | -- ---------------------------- |
| | | -- 项目归档文件表 |
| | | -- ---------------------------- |
| | | drop table if exists `smart_assess`.`sys_project_material`; |
| | | CREATE TABLE `smart_assess`.`sys_project_material` ( |
| | | `id` bigint NOT NULL AUTO_INCREMENT, |
| | | `name` varchar(50) NOT NULL COMMENT '名称', |
| | | `type` tinyint NOT NULL COMMENT '类型', |
| | | `project_id` bigint NOT NULL COMMENT '项目id', |
| | | `file_id` bigint NULL COMMENT '评估文件id', |
| | | `version` int NULL DEFAULT 0 COMMENT '乐观锁', |
| | | `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', |
| | | `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '创建人', |
| | | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| | | `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '更新人', |
| | | `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| | | `remark` varchar(50) NULL COMMENT '原因说明', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目归档文件表' ROW_FORMAT = DYNAMIC; |
对比新文件 |
| | |
| | | package com.gkhy.admin; |
| | | |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.gkhy.assess.admin.GkhyAdminApplication; |
| | | import com.gkhy.assess.system.domain.SysRegion; |
| | | import com.gkhy.assess.system.service.SysRegionService; |
| | | import com.gkhy.assess.system.service.impl.SysRegionServiceImpl; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.junit.Test; |
| | | import org.junit.runner.RunWith; |
| | | import org.mybatis.spring.annotation.MapperScan; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | import org.springframework.test.context.ActiveProfiles; |
| | | import org.springframework.test.context.junit4.SpringRunner; |
| | | import sun.swing.plaf.GTKKeybindings; |
| | | |
| | | import java.io.BufferedReader; |
| | | import java.io.File; |
| | | import java.io.FileReader; |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @RunWith(SpringRunner.class) |
| | | @SpringBootTest(classes = GkhyAdminApplication.class) |
| | | //@ActiveProfiles("dev") |
| | | @Slf4j |
| | | public class RegionTest { |
| | | |
| | | @Autowired |
| | | private SysRegionService regionService; |
| | | |
| | | //添加疆外数据 |
| | | @Test |
| | | public void addRegion() throws IOException { |
| | | String path="F:\\kzy\\codes\\java\\smart_assess\\assess-admin\\src\\main\\resources\\region.json"; |
| | | StringBuilder stringBuilder=new StringBuilder(); |
| | | BufferedReader br=new BufferedReader(new FileReader(new File(path))); |
| | | String s=null; |
| | | while ((s=br.readLine())!=null){ |
| | | stringBuilder.append(s); |
| | | } |
| | | br.close(); |
| | | JSONArray jsonArray = JSONObject.parseArray(stringBuilder.toString()); |
| | | |
| | | for(Object obj : jsonArray){ |
| | | JSONObject jsonObject= (JSONObject) obj; |
| | | String pro= (String) jsonObject.get("province"); |
| | | SysRegion region=new SysRegion() |
| | | .setName(pro) |
| | | .setRegionType(1); |
| | | regionService.save(region); |
| | | List<JSONObject> citys= (List<JSONObject>) jsonObject.get("citys"); |
| | | if(citys.size()==1){ |
| | | continue; |
| | | } |
| | | List<SysRegion> childRegion=new ArrayList<>(); |
| | | for(JSONObject cityObject:citys){ |
| | | String cityName= (String) cityObject.get("city"); |
| | | SysRegion region2=new SysRegion() |
| | | .setName(cityName) |
| | | .setRegionType(1) |
| | | .setParentId(region.getId()); |
| | | childRegion.add(region2); |
| | | } |
| | | regionService.saveBatch(childRegion); |
| | | } |
| | | } |
| | | //添加疆内数据 |
| | | @Test |
| | | public void addRegion2() throws IOException { |
| | | String path="F:\\kzy\\codes\\java\\smart_assess\\assess-admin\\src\\main\\resources\\region.json"; |
| | | StringBuilder stringBuilder=new StringBuilder(); |
| | | BufferedReader br=new BufferedReader(new FileReader(new File(path))); |
| | | String s=null; |
| | | while ((s=br.readLine())!=null){ |
| | | stringBuilder.append(s); |
| | | } |
| | | br.close(); |
| | | JSONArray jsonArray = JSONObject.parseArray(stringBuilder.toString()); |
| | | |
| | | for(Object obj : jsonArray){ |
| | | JSONObject jsonObject= (JSONObject) obj; |
| | | String pro= (String) jsonObject.get("province"); |
| | | if(!pro.equalsIgnoreCase("新疆维吾尔自治区")){ |
| | | continue; |
| | | } |
| | | List<JSONObject> citys= (List<JSONObject>) jsonObject.get("citys"); |
| | | for(JSONObject cityObject:citys){ |
| | | String cityName= (String) cityObject.get("city"); |
| | | SysRegion region=new SysRegion() |
| | | .setName(cityName) |
| | | .setRegionType(0); |
| | | regionService.save(region); |
| | | List<JSONObject> areas= (List<JSONObject>) cityObject.get("areas"); |
| | | List<SysRegion> childRegion=new ArrayList<>(); |
| | | for(JSONObject areaObject:areas){ |
| | | String areaName= (String) areaObject.get("area"); |
| | | SysRegion region2=new SysRegion() |
| | | .setName(areaName) |
| | | .setRegionType(0) |
| | | .setParentId(region.getId()); |
| | | childRegion.add(region2); |
| | | } |
| | | regionService.saveBatch(childRegion); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | <groupId>com.github.penggle</groupId> |
| | | <artifactId>kaptcha</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>commons-io</groupId> |
| | | <artifactId>commons-io</artifactId> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | </project> |
| | |
| | | |
| | | String CAPTCHA_CODE_KEY = "captcha_codes:"; |
| | | |
| | | String SYS_REGION_KEY ="sys_region"; |
| | | |
| | | |
| | | /** |
| | | * 防重提交 redis key |
| | | */ |
| | | String REPEAT_SUBMIT_KEY = "repeat_submit:"; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Getter; |
| | | import lombok.Setter; |
| | | import lombok.experimental.Accessors; |
| | | |
| | | import java.io.Serializable; |
| | | import java.time.LocalDateTime; |
| | |
| | | |
| | | @Getter |
| | | @Setter |
| | | @Accessors(chain = true) |
| | | @ApiModel(value = "baseEntity对象", description = "基础类") |
| | | public class BaseEntity implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | |
| | | package com.gkhy.assess.common.domain; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import com.gkhy.assess.common.utils.StringUtils; |
| | | |
| | | public class PageDomain { |
| | | |
| | |
| | | private Boolean reasonable=true; |
| | | |
| | | public String getOrderBy(){ |
| | | if(StrUtil.isEmpty(orderByColumn)){ |
| | | if(StringUtils.isEmpty(orderByColumn)){ |
| | | return ""; |
| | | } |
| | | return StrUtil.toUnderlineCase(orderByColumn)+" "+isAsc; |
| | | return StringUtils.toUnderlineCase(orderByColumn)+" "+isAsc; |
| | | } |
| | | |
| | | public Integer getPageNum() { |
| | |
| | | package com.gkhy.assess.common.domain.vo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.fasterxml.jackson.annotation.JsonInclude; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | |
| | | |
| | | @ApiModelProperty("生产的token,接口请求头字段: Authorization") |
| | | private String token; |
| | | |
| | | @ApiModelProperty("用户身份(0代表监管用户,1代表机构用户,2代表专家用户)") |
| | | private Integer identity; |
| | | |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.enums; |
| | | |
| | | /** |
| | | * 评估文件类型 |
| | | * |
| | | */ |
| | | public enum AccessoryFileTypeEnum |
| | | { |
| | | DEVICE_IMAGE(1, "评价机构项目现场勘验人员在主要装置前的合影照片"), |
| | | INVESTINGATION_IMAGE(2, "评价机构项目现场勘验照片"), |
| | | COMPANY_IMAGE(3, "评价机构项目现场勘验人员与企业陪同人员图片"), |
| | | INVESTINGATION_EAST_IMAGE(4, "预评价现场勘验照片-东"), |
| | | INVESTINGATION_SOUTH_IMAGE(5, "预评价现场勘验照片-南"), |
| | | INVESTINGATION_WEST_IMAGE(6, "预评价现场勘验照片-西"), |
| | | INVESTINGATION_NORTH_IMAGE(7, "预评价现场勘验照片-北"), |
| | | INVESTINGATION_VIDEO(8, "评价机构项目现场勘验视频"), |
| | | EXCODE(9, "二维码"), |
| | | PROARCHIVE_FILE(10, "安全评价过程控制记录文档附件"); |
| | | |
| | | private final Integer code; |
| | | private final String info; |
| | | |
| | | AccessoryFileTypeEnum(Integer code, String info) |
| | | { |
| | | this.code = code; |
| | | this.info = info; |
| | | } |
| | | |
| | | public Integer getCode() |
| | | { |
| | | return code; |
| | | } |
| | | |
| | | public String getInfo() |
| | | { |
| | | return info; |
| | | } |
| | | } |
| | |
| | | */ |
| | | public enum ApproveStatusEnum |
| | | { |
| | | APPROVED(0, "审批通过"), APPROVING(1, "待审批"), FAIL(2, "未通过"); |
| | | TEMPORARY(0, "暂存"), APPROVING(1, "待审批"), APPROVED(2, "审批通过"),REJECT(3, "审批驳回"),DISCARD(4, "废弃"); |
| | | |
| | | private final Integer code; |
| | | private final String info; |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.enums; |
| | | |
| | | /** |
| | | * 专家类型 |
| | | * |
| | | */ |
| | | public enum ExpertTypeEnum |
| | | { |
| | | SAFETY_ASSESS(1, "安全评价"), INSPECTION(2, "检验检测"); |
| | | |
| | | private final Integer code; |
| | | private final String info; |
| | | |
| | | ExpertTypeEnum(Integer code, String info) |
| | | { |
| | | this.code = code; |
| | | this.info = info; |
| | | } |
| | | |
| | | public Integer getCode() |
| | | { |
| | | return code; |
| | | } |
| | | |
| | | public String getInfo() |
| | | { |
| | | return info; |
| | | } |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.enums; |
| | | |
| | | /** |
| | | * 疆内疆外 |
| | | * |
| | | */ |
| | | public enum RegionTypeEnum |
| | | { |
| | | INSIDE(0, "疆内"), OUTSIDE(1, "疆外"); |
| | | |
| | | private final Integer code; |
| | | private final String info; |
| | | |
| | | RegionTypeEnum(Integer code, String info) |
| | | { |
| | | this.code = code; |
| | | this.info = info; |
| | | } |
| | | |
| | | public Integer getCode() |
| | | { |
| | | return code; |
| | | } |
| | | |
| | | public String getInfo() |
| | | { |
| | | return info; |
| | | } |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.filter; |
| | | |
| | | import com.gkhy.assess.common.utils.StringUtils; |
| | | import org.springframework.http.MediaType; |
| | | |
| | | import javax.servlet.*; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.io.IOException; |
| | | |
| | | /** |
| | | * Repeatable 过滤器 |
| | | * |
| | | */ |
| | | public class RepeatableFilter implements Filter |
| | | { |
| | | @Override |
| | | public void init(FilterConfig filterConfig) throws ServletException |
| | | { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) |
| | | throws IOException, ServletException |
| | | { |
| | | ServletRequest requestWrapper = null; |
| | | if (request instanceof HttpServletRequest |
| | | && StringUtils.startWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE)) |
| | | { |
| | | requestWrapper = new RepeatedlyRequestWrapper((HttpServletRequest) request, response); |
| | | } |
| | | if (null == requestWrapper) |
| | | { |
| | | chain.doFilter(request, response); |
| | | } |
| | | else |
| | | { |
| | | chain.doFilter(requestWrapper, response); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void destroy() |
| | | { |
| | | |
| | | } |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.filter; |
| | | |
| | | |
| | | import com.gkhy.assess.common.utils.http.HttpHelper; |
| | | |
| | | import javax.servlet.ReadListener; |
| | | import javax.servlet.ServletInputStream; |
| | | import javax.servlet.ServletResponse; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletRequestWrapper; |
| | | import java.io.BufferedReader; |
| | | import java.io.ByteArrayInputStream; |
| | | import java.io.IOException; |
| | | import java.io.InputStreamReader; |
| | | |
| | | /** |
| | | * 构建可重复读取inputStream的request |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper |
| | | { |
| | | private final byte[] body; |
| | | |
| | | public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException |
| | | { |
| | | super(request); |
| | | request.setCharacterEncoding("UTF-8"); |
| | | response.setCharacterEncoding("UTF-8"); |
| | | |
| | | body = HttpHelper.getBodyString(request).getBytes("UTF-8"); |
| | | } |
| | | |
| | | @Override |
| | | public BufferedReader getReader() throws IOException |
| | | { |
| | | return new BufferedReader(new InputStreamReader(getInputStream())); |
| | | } |
| | | |
| | | @Override |
| | | public ServletInputStream getInputStream() throws IOException |
| | | { |
| | | final ByteArrayInputStream bais = new ByteArrayInputStream(body); |
| | | return new ServletInputStream() |
| | | { |
| | | @Override |
| | | public int read() throws IOException |
| | | { |
| | | return bais.read(); |
| | | } |
| | | |
| | | @Override |
| | | public int available() throws IOException |
| | | { |
| | | return body.length; |
| | | } |
| | | |
| | | @Override |
| | | public boolean isFinished() |
| | | { |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public boolean isReady() |
| | | { |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public void setReadListener(ReadListener readListener) |
| | | { |
| | | |
| | | } |
| | | }; |
| | | } |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.filter; |
| | | |
| | | import com.gkhy.assess.common.utils.StringUtils; |
| | | import org.springframework.http.HttpMethod; |
| | | |
| | | import javax.servlet.*; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 防止XSS攻击的过滤器 |
| | | * |
| | | */ |
| | | public class XssFilter implements Filter |
| | | { |
| | | /** |
| | | * 排除链接 |
| | | */ |
| | | public List<String> excludes = new ArrayList<>(); |
| | | |
| | | @Override |
| | | public void init(FilterConfig filterConfig) throws ServletException |
| | | { |
| | | String tempExcludes = filterConfig.getInitParameter("excludes"); |
| | | if (StringUtils.isNotBlank(tempExcludes)) |
| | | { |
| | | String[] url = tempExcludes.split(","); |
| | | for (int i = 0; url != null && i < url.length; i++) |
| | | { |
| | | excludes.add(url[i]); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @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) |
| | | { |
| | | String url = request.getServletPath(); |
| | | String method = request.getMethod(); |
| | | // GET DELETE 不过滤 |
| | | if (method == null || HttpMethod.GET.matches(method) || HttpMethod.DELETE.matches(method)) |
| | | { |
| | | return true; |
| | | } |
| | | return StringUtils.matches(url, excludes); |
| | | } |
| | | |
| | | @Override |
| | | public void destroy() |
| | | { |
| | | |
| | | } |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.filter; |
| | | |
| | | import com.gkhy.assess.common.utils.StringUtils; |
| | | import com.gkhy.assess.common.utils.html.EscapeUtil; |
| | | import org.apache.commons.io.IOUtils; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.MediaType; |
| | | |
| | | import javax.servlet.ReadListener; |
| | | import javax.servlet.ServletInputStream; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletRequestWrapper; |
| | | import java.io.ByteArrayInputStream; |
| | | import java.io.IOException; |
| | | |
| | | /** |
| | | * XSS过滤处理 |
| | | * |
| | | */ |
| | | 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[] escapesValues = new String[length]; |
| | | for (int i = 0; i < length; i++) |
| | | { |
| | | // 防xss攻击和过滤前后空格 |
| | | escapesValues[i] = EscapeUtil.clean(values[i]).trim(); |
| | | } |
| | | return escapesValues; |
| | | } |
| | | return super.getParameterValues(name); |
| | | } |
| | | |
| | | @Override |
| | | public ServletInputStream getInputStream() throws IOException |
| | | { |
| | | // 非json类型,直接返回 |
| | | if (!isJsonRequest()) |
| | | { |
| | | return super.getInputStream(); |
| | | } |
| | | |
| | | // 为空,直接返回 |
| | | String json = IOUtils.toString(super.getInputStream(), "utf-8"); |
| | | if (StringUtils.isBlank(json)) |
| | | { |
| | | return super.getInputStream(); |
| | | } |
| | | |
| | | // xss过滤 |
| | | json = EscapeUtil.clean(json).trim(); |
| | | byte[] jsonBytes = json.getBytes("utf-8"); |
| | | final ByteArrayInputStream bis = new ByteArrayInputStream(jsonBytes); |
| | | return new ServletInputStream() |
| | | { |
| | | @Override |
| | | public boolean isFinished() |
| | | { |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public boolean isReady() |
| | | { |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public int available() throws IOException |
| | | { |
| | | return jsonBytes.length; |
| | | } |
| | | |
| | | @Override |
| | | public void setReadListener(ReadListener readListener) |
| | | { |
| | | } |
| | | |
| | | @Override |
| | | public int read() throws IOException |
| | | { |
| | | return bis.read(); |
| | | } |
| | | }; |
| | | } |
| | | |
| | | /** |
| | | * 是否是Json请求 |
| | | * |
| | | * @param request |
| | | */ |
| | | public boolean isJsonRequest() |
| | | { |
| | | String header = super.getHeader(HttpHeaders.CONTENT_TYPE); |
| | | return StringUtils.startWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE); |
| | | } |
| | | } |
| | |
| | | package com.gkhy.assess.common.utils; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import org.apache.commons.lang3.ArrayUtils; |
| | | |
| | | import java.math.BigDecimal; |
| | |
| | | } |
| | | |
| | | final String valueStr = toStr(value, null); |
| | | return StrUtil.isEmpty(valueStr) ? defaultValue : valueStr.charAt(0); |
| | | return StringUtils.isEmpty(valueStr) ? defaultValue : valueStr.charAt(0); |
| | | } |
| | | |
| | | /** |
| | |
| | | return ((Number) value).byteValue(); |
| | | } |
| | | final String valueStr = toStr(value, null); |
| | | if (StrUtil.isEmpty(valueStr)) |
| | | if (StringUtils.isEmpty(valueStr)) |
| | | { |
| | | return defaultValue; |
| | | } |
| | |
| | | return ((Number) value).shortValue(); |
| | | } |
| | | final String valueStr = toStr(value, null); |
| | | if (StrUtil.isEmpty(valueStr)) |
| | | if (StringUtils.isEmpty(valueStr)) |
| | | { |
| | | return defaultValue; |
| | | } |
| | |
| | | return (Number) value; |
| | | } |
| | | final String valueStr = toStr(value, null); |
| | | if (StrUtil.isEmpty(valueStr)) |
| | | if (StringUtils.isEmpty(valueStr)) |
| | | { |
| | | return defaultValue; |
| | | } |
| | |
| | | return ((Number) value).intValue(); |
| | | } |
| | | final String valueStr = toStr(value, null); |
| | | if (StrUtil.isEmpty(valueStr)) |
| | | if (StringUtils.isEmpty(valueStr)) |
| | | { |
| | | return defaultValue; |
| | | } |
| | |
| | | */ |
| | | public static Integer[] toIntArray(String split, String str) |
| | | { |
| | | if (StrUtil.isEmpty(str)) |
| | | if (StringUtils.isEmpty(str)) |
| | | { |
| | | return new Integer[] {}; |
| | | } |
| | |
| | | */ |
| | | public static Long[] toLongArray(String split, String str) |
| | | { |
| | | if (StrUtil.isEmpty(str)) |
| | | if (StringUtils.isEmpty(str)) |
| | | { |
| | | return new Long[] {}; |
| | | } |
| | |
| | | return ((Number) value).longValue(); |
| | | } |
| | | final String valueStr = toStr(value, null); |
| | | if (StrUtil.isEmpty(valueStr)) |
| | | if (StringUtils.isEmpty(valueStr)) |
| | | { |
| | | return defaultValue; |
| | | } |
| | |
| | | return ((Number) value).doubleValue(); |
| | | } |
| | | final String valueStr = toStr(value, null); |
| | | if (StrUtil.isEmpty(valueStr)) |
| | | if (StringUtils.isEmpty(valueStr)) |
| | | { |
| | | return defaultValue; |
| | | } |
| | |
| | | return ((Number) value).floatValue(); |
| | | } |
| | | final String valueStr = toStr(value, null); |
| | | if (StrUtil.isEmpty(valueStr)) |
| | | if (StringUtils.isEmpty(valueStr)) |
| | | { |
| | | return defaultValue; |
| | | } |
| | |
| | | return (Boolean) value; |
| | | } |
| | | String valueStr = toStr(value, null); |
| | | if (StrUtil.isEmpty(valueStr)) |
| | | if (StringUtils.isEmpty(valueStr)) |
| | | { |
| | | return defaultValue; |
| | | } |
| | |
| | | return myE; |
| | | } |
| | | final String valueStr = toStr(value, null); |
| | | if (StrUtil.isEmpty(valueStr)) |
| | | if (StringUtils.isEmpty(valueStr)) |
| | | { |
| | | return defaultValue; |
| | | } |
| | |
| | | return BigInteger.valueOf((Long) value); |
| | | } |
| | | final String valueStr = toStr(value, null); |
| | | if (StrUtil.isEmpty(valueStr)) |
| | | if (StringUtils.isEmpty(valueStr)) |
| | | { |
| | | return defaultValue; |
| | | } |
| | |
| | | return new BigDecimal((Integer) value); |
| | | } |
| | | final String valueStr = toStr(value, null); |
| | | if (StrUtil.isEmpty(valueStr)) |
| | | if (StringUtils.isEmpty(valueStr)) |
| | | { |
| | | return defaultValue; |
| | | } |
| | |
| | | */ |
| | | public static String str(byte[] bytes, String charset) |
| | | { |
| | | return str(bytes, StrUtil.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset)); |
| | | return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset)); |
| | | } |
| | | |
| | | /** |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.utils; |
| | | |
| | | import com.fasterxml.jackson.core.JsonGenerationException; |
| | | import com.fasterxml.jackson.core.JsonParseException; |
| | | import com.fasterxml.jackson.databind.JsonMappingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.databind.ObjectWriter; |
| | | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | |
| | | public class JSONUtil { |
| | | public static final String DEFAULT_FAIL = "\"Parse failed\""; |
| | | private static final ObjectMapper objectMapper = new ObjectMapper(); |
| | | private static final ObjectWriter objectWriter = objectMapper.writerWithDefaultPrettyPrinter(); |
| | | |
| | | public static void marshal(File file, Object value) throws Exception |
| | | { |
| | | try |
| | | { |
| | | objectWriter.writeValue(file, value); |
| | | } |
| | | catch (JsonGenerationException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (JsonMappingException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static void marshal(OutputStream os, Object value) throws Exception |
| | | { |
| | | try |
| | | { |
| | | objectWriter.writeValue(os, value); |
| | | } |
| | | catch (JsonGenerationException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (JsonMappingException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static String marshal(Object value) throws Exception |
| | | { |
| | | try |
| | | { |
| | | return objectWriter.writeValueAsString(value); |
| | | } |
| | | catch (JsonGenerationException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (JsonMappingException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static byte[] marshalBytes(Object value) throws Exception |
| | | { |
| | | try |
| | | { |
| | | return objectWriter.writeValueAsBytes(value); |
| | | } |
| | | catch (JsonGenerationException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (JsonMappingException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static <T> T unmarshal(File file, Class<T> valueType) throws Exception |
| | | { |
| | | try |
| | | { |
| | | return objectMapper.readValue(file, valueType); |
| | | } |
| | | catch (JsonParseException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (JsonMappingException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static <T> T unmarshal(InputStream is, Class<T> valueType) throws Exception |
| | | { |
| | | try |
| | | { |
| | | return objectMapper.readValue(is, valueType); |
| | | } |
| | | catch (JsonParseException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (JsonMappingException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static <T> T unmarshal(String str, Class<T> valueType) throws Exception |
| | | { |
| | | try |
| | | { |
| | | return objectMapper.readValue(str, valueType); |
| | | } |
| | | catch (JsonParseException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (JsonMappingException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static <T> T unmarshal(byte[] bytes, Class<T> valueType) throws Exception |
| | | { |
| | | try |
| | | { |
| | | if (bytes == null) |
| | | { |
| | | bytes = new byte[0]; |
| | | } |
| | | return objectMapper.readValue(bytes, 0, bytes.length, valueType); |
| | | } |
| | | catch (JsonParseException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (JsonMappingException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | } |
| | |
| | | import com.auth0.jwt.interfaces.DecodedJWT; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.crypto.hash.Md5Hash; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 密码加密 |
| | | * @param username |
| | | * @param password |
| | | * @param salt |
| | | * @return |
| | | */ |
| | | public static String encryptPassword(String username,String password,String salt){ |
| | | if(salt==null){ |
| | | salt=""; |
| | | } |
| | | return new Md5Hash(username+password+salt).toHex(); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | package com.gkhy.assess.common.utils; |
| | | |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.gkhy.assess.common.exception.UtilException; |
| | | |
| | | import java.util.List; |
| | |
| | | */ |
| | | public static String escapeOrderBySql(String value) |
| | | { |
| | | if (StrUtil.isNotEmpty(value) && !isValidOrderBySql(value)) |
| | | if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value)) |
| | | { |
| | | throw new UtilException("参数不符合规范,不能进行查询"); |
| | | } |
| | | if (StrUtil.length(value) > ORDER_BY_MAX_LENGTH) |
| | | if (StringUtils.length(value) > ORDER_BY_MAX_LENGTH) |
| | | { |
| | | throw new UtilException("参数已超过最大限制,不能进行查询"); |
| | | } |
| | |
| | | */ |
| | | public static void filterKeyword(String value) |
| | | { |
| | | if (StrUtil.isEmpty(value)) |
| | | if (StringUtils.isEmpty(value)) |
| | | { |
| | | return; |
| | | } |
| | | List<String> sqlKeywords = StrUtil.split(SQL_REGEX, "\\|"); |
| | | List<String> sqlKeywords = StringUtils.split(SQL_REGEX, "\\|"); |
| | | for (String sqlKeyword : sqlKeywords) |
| | | { |
| | | if (StrUtil.indexOfIgnoreCase(value, sqlKeyword) > -1) |
| | | if (StringUtils.indexOfIgnoreCase(value, sqlKeyword) > -1) |
| | | { |
| | | throw new UtilException("参数存在SQL注入风险"); |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.utils; |
| | | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import org.springframework.util.AntPathMatcher; |
| | | |
| | | import java.util.List; |
| | | |
| | | public class StringUtils extends StrUtil { |
| | | |
| | | /** |
| | | * 查找指定字符串是否匹配指定字符串列表中的任意一个字符串 |
| | | * |
| | | * @param str 指定字符串 |
| | | * @param strs 需要检查的字符串数组 |
| | | * @return 是否匹配 |
| | | */ |
| | | public static boolean matches(String str, List<String> strs) |
| | | { |
| | | if (isBlank(str) || ObjectUtil.isEmpty(strs)) |
| | | { |
| | | return false; |
| | | } |
| | | for (String pattern : strs) |
| | | { |
| | | if (isMatch(pattern, str)) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 判断url是否与规则配置: |
| | | * ? 表示单个字符; |
| | | * * 表示一层路径内的任意字符串,不可跨层级; |
| | | * ** 表示任意层路径; |
| | | * |
| | | * @param pattern 匹配规则 |
| | | * @param url 需要匹配的url |
| | | * @return |
| | | */ |
| | | public static boolean isMatch(String pattern, String url) |
| | | { |
| | | AntPathMatcher matcher = new AntPathMatcher(); |
| | | return matcher.match(pattern, url); |
| | | } |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.utils.html; |
| | | |
| | | import com.gkhy.assess.common.utils.StringUtils; |
| | | |
| | | /** |
| | | * 转义和反转义工具类 |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | public class EscapeUtil |
| | | { |
| | | public static final String RE_HTML_MARK = "(<[^<]*?>)|(<[\\s]*?/[^<]*?>)|(<[^<]*?/[\\s]*?>)"; |
| | | |
| | | private static final char[][] TEXT = new char[64][]; |
| | | |
| | | static |
| | | { |
| | | for (int i = 0; i < 64; i++) |
| | | { |
| | | TEXT[i] = new char[] { (char) i }; |
| | | } |
| | | |
| | | // special HTML characters |
| | | TEXT['\''] = "'".toCharArray(); // 单引号 |
| | | TEXT['"'] = """.toCharArray(); // 双引号 |
| | | TEXT['&'] = "&".toCharArray(); // &符 |
| | | TEXT['<'] = "<".toCharArray(); // 小于号 |
| | | TEXT['>'] = ">".toCharArray(); // 大于号 |
| | | } |
| | | |
| | | /** |
| | | * 转义文本中的HTML字符为安全的字符 |
| | | * |
| | | * @param text 被转义的文本 |
| | | * @return 转义后的文本 |
| | | */ |
| | | public static String escape(String text) |
| | | { |
| | | return encode(text); |
| | | } |
| | | |
| | | /** |
| | | * 还原被转义的HTML特殊字符 |
| | | * |
| | | * @param content 包含转义符的HTML内容 |
| | | * @return 转换后的字符串 |
| | | */ |
| | | public static String unescape(String content) |
| | | { |
| | | return decode(content); |
| | | } |
| | | |
| | | /** |
| | | * 清除所有HTML标签,但是不删除标签内的内容 |
| | | * |
| | | * @param content 文本 |
| | | * @return 清除标签后的文本 |
| | | */ |
| | | public static String clean(String content) |
| | | { |
| | | return new HTMLFilter().filter(content); |
| | | } |
| | | |
| | | /** |
| | | * Escape编码 |
| | | * |
| | | * @param text 被编码的文本 |
| | | * @return 编码后的字符 |
| | | */ |
| | | private static String encode(String text) |
| | | { |
| | | if (StringUtils.isEmpty(text)) |
| | | { |
| | | return StringUtils.EMPTY; |
| | | } |
| | | |
| | | final StringBuilder tmp = new StringBuilder(text.length() * 6); |
| | | char c; |
| | | for (int i = 0; i < text.length(); i++) |
| | | { |
| | | c = text.charAt(i); |
| | | if (c < 256) |
| | | { |
| | | tmp.append("%"); |
| | | if (c < 16) |
| | | { |
| | | tmp.append("0"); |
| | | } |
| | | tmp.append(Integer.toString(c, 16)); |
| | | } |
| | | else |
| | | { |
| | | tmp.append("%u"); |
| | | if (c <= 0xfff) |
| | | { |
| | | // issue#I49JU8@Gitee |
| | | tmp.append("0"); |
| | | } |
| | | tmp.append(Integer.toString(c, 16)); |
| | | } |
| | | } |
| | | return tmp.toString(); |
| | | } |
| | | |
| | | /** |
| | | * Escape解码 |
| | | * |
| | | * @param content 被转义的内容 |
| | | * @return 解码后的字符串 |
| | | */ |
| | | public static String decode(String content) |
| | | { |
| | | if (StringUtils.isEmpty(content)) |
| | | { |
| | | return content; |
| | | } |
| | | |
| | | StringBuilder tmp = new StringBuilder(content.length()); |
| | | int lastPos = 0, pos = 0; |
| | | char ch; |
| | | while (lastPos < content.length()) |
| | | { |
| | | pos = content.indexOf("%", lastPos); |
| | | if (pos == lastPos) |
| | | { |
| | | if (content.charAt(pos + 1) == 'u') |
| | | { |
| | | ch = (char) Integer.parseInt(content.substring(pos + 2, pos + 6), 16); |
| | | tmp.append(ch); |
| | | lastPos = pos + 6; |
| | | } |
| | | else |
| | | { |
| | | ch = (char) Integer.parseInt(content.substring(pos + 1, pos + 3), 16); |
| | | tmp.append(ch); |
| | | lastPos = pos + 3; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (pos == -1) |
| | | { |
| | | tmp.append(content.substring(lastPos)); |
| | | lastPos = content.length(); |
| | | } |
| | | else |
| | | { |
| | | tmp.append(content.substring(lastPos, pos)); |
| | | lastPos = pos; |
| | | } |
| | | } |
| | | } |
| | | return tmp.toString(); |
| | | } |
| | | |
| | | public static void main(String[] args) |
| | | { |
| | | String html = "<script>alert(1);</script>"; |
| | | String escape = EscapeUtil.escape(html); |
| | | // String html = "<scr<script>ipt>alert(\"XSS\")</scr<script>ipt>"; |
| | | // String html = "<123"; |
| | | // String html = "123>"; |
| | | System.out.println("clean: " + EscapeUtil.clean(html)); |
| | | System.out.println("escape: " + escape); |
| | | System.out.println("unescape: " + EscapeUtil.unescape(escape)); |
| | | } |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.utils.html; |
| | | |
| | | import java.util.*; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.concurrent.ConcurrentMap; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | | /** |
| | | * HTML过滤器,用于去除XSS漏洞隐患。 |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | public final class HTMLFilter |
| | | { |
| | | /** |
| | | * regex flag union representing /si modifiers in php |
| | | **/ |
| | | private static final int REGEX_FLAGS_SI = Pattern.CASE_INSENSITIVE | Pattern.DOTALL; |
| | | private static final Pattern P_COMMENTS = Pattern.compile("<!--(.*?)-->", Pattern.DOTALL); |
| | | private static final Pattern P_COMMENT = Pattern.compile("^!--(.*)--$", REGEX_FLAGS_SI); |
| | | private static final Pattern P_TAGS = Pattern.compile("<(.*?)>", Pattern.DOTALL); |
| | | private static final Pattern P_END_TAG = Pattern.compile("^/([a-z0-9]+)", REGEX_FLAGS_SI); |
| | | private static final Pattern P_START_TAG = Pattern.compile("^([a-z0-9]+)(.*?)(/?)$", REGEX_FLAGS_SI); |
| | | private static final Pattern P_QUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)=([\"'])(.*?)\\2", REGEX_FLAGS_SI); |
| | | private static final Pattern P_UNQUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)(=)([^\"\\s']+)", REGEX_FLAGS_SI); |
| | | private static final Pattern P_PROTOCOL = Pattern.compile("^([^:]+):", REGEX_FLAGS_SI); |
| | | private static final Pattern P_ENTITY = Pattern.compile("&#(\\d+);?"); |
| | | private static final Pattern P_ENTITY_UNICODE = Pattern.compile("&#x([0-9a-f]+);?"); |
| | | private static final Pattern P_ENCODE = Pattern.compile("%([0-9a-f]{2});?"); |
| | | private static final Pattern P_VALID_ENTITIES = Pattern.compile("&([^&;]*)(?=(;|&|$))"); |
| | | private static final Pattern P_VALID_QUOTES = Pattern.compile("(>|^)([^<]+?)(<|$)", Pattern.DOTALL); |
| | | private static final Pattern P_END_ARROW = Pattern.compile("^>"); |
| | | private static final Pattern P_BODY_TO_END = Pattern.compile("<([^>]*?)(?=<|$)"); |
| | | private static final Pattern P_XML_CONTENT = Pattern.compile("(^|>)([^<]*?)(?=>)"); |
| | | private static final Pattern P_STRAY_LEFT_ARROW = Pattern.compile("<([^>]*?)(?=<|$)"); |
| | | private static final Pattern P_STRAY_RIGHT_ARROW = Pattern.compile("(^|>)([^<]*?)(?=>)"); |
| | | private static final Pattern P_AMP = Pattern.compile("&"); |
| | | private static final Pattern P_QUOTE = Pattern.compile("\""); |
| | | private static final Pattern P_LEFT_ARROW = Pattern.compile("<"); |
| | | private static final Pattern P_RIGHT_ARROW = Pattern.compile(">"); |
| | | private static final Pattern P_BOTH_ARROWS = Pattern.compile("<>"); |
| | | |
| | | // @xxx could grow large... maybe use sesat's ReferenceMap |
| | | private static final ConcurrentMap<String, Pattern> P_REMOVE_PAIR_BLANKS = new ConcurrentHashMap<>(); |
| | | private static final ConcurrentMap<String, Pattern> P_REMOVE_SELF_BLANKS = new ConcurrentHashMap<>(); |
| | | |
| | | /** |
| | | * set of allowed html elements, along with allowed attributes for each element |
| | | **/ |
| | | private final Map<String, List<String>> vAllowed; |
| | | /** |
| | | * counts of open tags for each (allowable) html element |
| | | **/ |
| | | private final Map<String, Integer> vTagCounts = new HashMap<>(); |
| | | |
| | | /** |
| | | * html elements which must always be self-closing (e.g. "<img />") |
| | | **/ |
| | | private final String[] vSelfClosingTags; |
| | | /** |
| | | * html elements which must always have separate opening and closing tags (e.g. "<b></b>") |
| | | **/ |
| | | private final String[] vNeedClosingTags; |
| | | /** |
| | | * set of disallowed html elements |
| | | **/ |
| | | private final String[] vDisallowed; |
| | | /** |
| | | * attributes which should be checked for valid protocols |
| | | **/ |
| | | private final String[] vProtocolAtts; |
| | | /** |
| | | * allowed protocols |
| | | **/ |
| | | private final String[] vAllowedProtocols; |
| | | /** |
| | | * tags which should be removed if they contain no content (e.g. "<b></b>" or "<b />") |
| | | **/ |
| | | private final String[] vRemoveBlanks; |
| | | /** |
| | | * entities allowed within html markup |
| | | **/ |
| | | private final String[] vAllowedEntities; |
| | | /** |
| | | * flag determining whether comments are allowed in input String. |
| | | */ |
| | | private final boolean stripComment; |
| | | private final boolean encodeQuotes; |
| | | /** |
| | | * flag determining whether to try to make tags when presented with "unbalanced" angle brackets (e.g. "<b text </b>" |
| | | * becomes "<b> text </b>"). If set to false, unbalanced angle brackets will be html escaped. |
| | | */ |
| | | private final boolean alwaysMakeTags; |
| | | |
| | | /** |
| | | * Default constructor. |
| | | */ |
| | | public HTMLFilter() |
| | | { |
| | | vAllowed = new HashMap<>(); |
| | | |
| | | final ArrayList<String> a_atts = new ArrayList<>(); |
| | | a_atts.add("href"); |
| | | a_atts.add("target"); |
| | | vAllowed.put("a", a_atts); |
| | | |
| | | final ArrayList<String> img_atts = new ArrayList<>(); |
| | | img_atts.add("src"); |
| | | img_atts.add("width"); |
| | | img_atts.add("height"); |
| | | img_atts.add("alt"); |
| | | vAllowed.put("img", img_atts); |
| | | |
| | | final ArrayList<String> no_atts = new ArrayList<>(); |
| | | vAllowed.put("b", no_atts); |
| | | vAllowed.put("strong", no_atts); |
| | | vAllowed.put("i", no_atts); |
| | | vAllowed.put("em", no_atts); |
| | | |
| | | vSelfClosingTags = new String[] { "img" }; |
| | | vNeedClosingTags = new String[] { "a", "b", "strong", "i", "em" }; |
| | | vDisallowed = new String[] {}; |
| | | vAllowedProtocols = new String[] { "http", "mailto", "https" }; // no ftp. |
| | | vProtocolAtts = new String[] { "src", "href" }; |
| | | vRemoveBlanks = new String[] { "a", "b", "strong", "i", "em" }; |
| | | vAllowedEntities = new String[] { "amp", "gt", "lt", "quot" }; |
| | | stripComment = true; |
| | | encodeQuotes = true; |
| | | alwaysMakeTags = false; |
| | | } |
| | | |
| | | /** |
| | | * Map-parameter configurable constructor. |
| | | * |
| | | * @param conf map containing configuration. keys match field names. |
| | | */ |
| | | @SuppressWarnings("unchecked") |
| | | public HTMLFilter(final Map<String, Object> conf) |
| | | { |
| | | |
| | | assert conf.containsKey("vAllowed") : "configuration requires vAllowed"; |
| | | assert conf.containsKey("vSelfClosingTags") : "configuration requires vSelfClosingTags"; |
| | | assert conf.containsKey("vNeedClosingTags") : "configuration requires vNeedClosingTags"; |
| | | assert conf.containsKey("vDisallowed") : "configuration requires vDisallowed"; |
| | | assert conf.containsKey("vAllowedProtocols") : "configuration requires vAllowedProtocols"; |
| | | assert conf.containsKey("vProtocolAtts") : "configuration requires vProtocolAtts"; |
| | | assert conf.containsKey("vRemoveBlanks") : "configuration requires vRemoveBlanks"; |
| | | assert conf.containsKey("vAllowedEntities") : "configuration requires vAllowedEntities"; |
| | | |
| | | vAllowed = Collections.unmodifiableMap((HashMap<String, List<String>>) conf.get("vAllowed")); |
| | | vSelfClosingTags = (String[]) conf.get("vSelfClosingTags"); |
| | | vNeedClosingTags = (String[]) conf.get("vNeedClosingTags"); |
| | | vDisallowed = (String[]) conf.get("vDisallowed"); |
| | | vAllowedProtocols = (String[]) conf.get("vAllowedProtocols"); |
| | | vProtocolAtts = (String[]) conf.get("vProtocolAtts"); |
| | | vRemoveBlanks = (String[]) conf.get("vRemoveBlanks"); |
| | | vAllowedEntities = (String[]) conf.get("vAllowedEntities"); |
| | | stripComment = conf.containsKey("stripComment") ? (Boolean) conf.get("stripComment") : true; |
| | | encodeQuotes = conf.containsKey("encodeQuotes") ? (Boolean) conf.get("encodeQuotes") : true; |
| | | alwaysMakeTags = conf.containsKey("alwaysMakeTags") ? (Boolean) conf.get("alwaysMakeTags") : true; |
| | | } |
| | | |
| | | private void reset() |
| | | { |
| | | vTagCounts.clear(); |
| | | } |
| | | |
| | | // --------------------------------------------------------------- |
| | | // my versions of some PHP library functions |
| | | public static String chr(final int decimal) |
| | | { |
| | | return String.valueOf((char) decimal); |
| | | } |
| | | |
| | | public static String htmlSpecialChars(final String s) |
| | | { |
| | | String result = s; |
| | | result = regexReplace(P_AMP, "&", result); |
| | | result = regexReplace(P_QUOTE, """, result); |
| | | result = regexReplace(P_LEFT_ARROW, "<", result); |
| | | result = regexReplace(P_RIGHT_ARROW, ">", result); |
| | | return result; |
| | | } |
| | | |
| | | // --------------------------------------------------------------- |
| | | |
| | | /** |
| | | * given a user submitted input String, filter out any invalid or restricted html. |
| | | * |
| | | * @param input text (i.e. submitted by a user) than may contain html |
| | | * @return "clean" version of input, with only valid, whitelisted html elements allowed |
| | | */ |
| | | public String filter(final String input) |
| | | { |
| | | reset(); |
| | | String s = input; |
| | | |
| | | s = escapeComments(s); |
| | | |
| | | s = balanceHTML(s); |
| | | |
| | | s = checkTags(s); |
| | | |
| | | s = processRemoveBlanks(s); |
| | | |
| | | // s = validateEntities(s); |
| | | |
| | | return s; |
| | | } |
| | | |
| | | public boolean isAlwaysMakeTags() |
| | | { |
| | | return alwaysMakeTags; |
| | | } |
| | | |
| | | public boolean isStripComments() |
| | | { |
| | | return stripComment; |
| | | } |
| | | |
| | | private String escapeComments(final String s) |
| | | { |
| | | final Matcher m = P_COMMENTS.matcher(s); |
| | | final StringBuffer buf = new StringBuffer(); |
| | | if (m.find()) |
| | | { |
| | | final String match = m.group(1); // (.*?) |
| | | m.appendReplacement(buf, Matcher.quoteReplacement("<!--" + htmlSpecialChars(match) + "-->")); |
| | | } |
| | | m.appendTail(buf); |
| | | |
| | | return buf.toString(); |
| | | } |
| | | |
| | | private String balanceHTML(String s) |
| | | { |
| | | if (alwaysMakeTags) |
| | | { |
| | | // |
| | | // try and form html |
| | | // |
| | | s = regexReplace(P_END_ARROW, "", s); |
| | | // 不追加结束标签 |
| | | s = regexReplace(P_BODY_TO_END, "<$1>", s); |
| | | s = regexReplace(P_XML_CONTENT, "$1<$2", s); |
| | | |
| | | } |
| | | else |
| | | { |
| | | // |
| | | // escape stray brackets |
| | | // |
| | | s = regexReplace(P_STRAY_LEFT_ARROW, "<$1", s); |
| | | s = regexReplace(P_STRAY_RIGHT_ARROW, "$1$2><", s); |
| | | |
| | | // |
| | | // the last regexp causes '<>' entities to appear |
| | | // (we need to do a lookahead assertion so that the last bracket can |
| | | // be used in the next pass of the regexp) |
| | | // |
| | | s = regexReplace(P_BOTH_ARROWS, "", s); |
| | | } |
| | | |
| | | return s; |
| | | } |
| | | |
| | | private String checkTags(String s) |
| | | { |
| | | Matcher m = P_TAGS.matcher(s); |
| | | |
| | | final StringBuffer buf = new StringBuffer(); |
| | | while (m.find()) |
| | | { |
| | | String replaceStr = m.group(1); |
| | | replaceStr = processTag(replaceStr); |
| | | m.appendReplacement(buf, Matcher.quoteReplacement(replaceStr)); |
| | | } |
| | | m.appendTail(buf); |
| | | |
| | | // these get tallied in processTag |
| | | // (remember to reset before subsequent calls to filter method) |
| | | final StringBuilder sBuilder = new StringBuilder(buf.toString()); |
| | | for (String key : vTagCounts.keySet()) |
| | | { |
| | | for (int ii = 0; ii < vTagCounts.get(key); ii++) |
| | | { |
| | | sBuilder.append("</").append(key).append(">"); |
| | | } |
| | | } |
| | | s = sBuilder.toString(); |
| | | |
| | | return s; |
| | | } |
| | | |
| | | private String processRemoveBlanks(final String s) |
| | | { |
| | | String result = s; |
| | | for (String tag : vRemoveBlanks) |
| | | { |
| | | if (!P_REMOVE_PAIR_BLANKS.containsKey(tag)) |
| | | { |
| | | P_REMOVE_PAIR_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?></" + tag + ">")); |
| | | } |
| | | result = regexReplace(P_REMOVE_PAIR_BLANKS.get(tag), "", result); |
| | | if (!P_REMOVE_SELF_BLANKS.containsKey(tag)) |
| | | { |
| | | P_REMOVE_SELF_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?/>")); |
| | | } |
| | | result = regexReplace(P_REMOVE_SELF_BLANKS.get(tag), "", result); |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |
| | | private static String regexReplace(final Pattern regex_pattern, final String replacement, final String s) |
| | | { |
| | | Matcher m = regex_pattern.matcher(s); |
| | | return m.replaceAll(replacement); |
| | | } |
| | | |
| | | private String processTag(final String s) |
| | | { |
| | | // ending tags |
| | | Matcher m = P_END_TAG.matcher(s); |
| | | if (m.find()) |
| | | { |
| | | final String name = m.group(1).toLowerCase(); |
| | | if (allowed(name)) |
| | | { |
| | | if (!inArray(name, vSelfClosingTags)) |
| | | { |
| | | if (vTagCounts.containsKey(name)) |
| | | { |
| | | vTagCounts.put(name, vTagCounts.get(name) - 1); |
| | | return "</" + name + ">"; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // starting tags |
| | | m = P_START_TAG.matcher(s); |
| | | if (m.find()) |
| | | { |
| | | final String name = m.group(1).toLowerCase(); |
| | | final String body = m.group(2); |
| | | String ending = m.group(3); |
| | | |
| | | // debug( "in a starting tag, name='" + name + "'; body='" + body + "'; ending='" + ending + "'" ); |
| | | if (allowed(name)) |
| | | { |
| | | final StringBuilder params = new StringBuilder(); |
| | | |
| | | final Matcher m2 = P_QUOTED_ATTRIBUTES.matcher(body); |
| | | final Matcher m3 = P_UNQUOTED_ATTRIBUTES.matcher(body); |
| | | final List<String> paramNames = new ArrayList<>(); |
| | | final List<String> paramValues = new ArrayList<>(); |
| | | while (m2.find()) |
| | | { |
| | | paramNames.add(m2.group(1)); // ([a-z0-9]+) |
| | | paramValues.add(m2.group(3)); // (.*?) |
| | | } |
| | | while (m3.find()) |
| | | { |
| | | paramNames.add(m3.group(1)); // ([a-z0-9]+) |
| | | paramValues.add(m3.group(3)); // ([^\"\\s']+) |
| | | } |
| | | |
| | | String paramName, paramValue; |
| | | for (int ii = 0; ii < paramNames.size(); ii++) |
| | | { |
| | | paramName = paramNames.get(ii).toLowerCase(); |
| | | paramValue = paramValues.get(ii); |
| | | |
| | | // debug( "paramName='" + paramName + "'" ); |
| | | // debug( "paramValue='" + paramValue + "'" ); |
| | | // debug( "allowed? " + vAllowed.get( name ).contains( paramName ) ); |
| | | |
| | | if (allowedAttribute(name, paramName)) |
| | | { |
| | | if (inArray(paramName, vProtocolAtts)) |
| | | { |
| | | paramValue = processParamProtocol(paramValue); |
| | | } |
| | | params.append(' ').append(paramName).append("=\\\"").append(paramValue).append("\\\""); |
| | | } |
| | | } |
| | | |
| | | if (inArray(name, vSelfClosingTags)) |
| | | { |
| | | ending = " /"; |
| | | } |
| | | |
| | | if (inArray(name, vNeedClosingTags)) |
| | | { |
| | | ending = ""; |
| | | } |
| | | |
| | | if (ending == null || ending.length() < 1) |
| | | { |
| | | if (vTagCounts.containsKey(name)) |
| | | { |
| | | vTagCounts.put(name, vTagCounts.get(name) + 1); |
| | | } |
| | | else |
| | | { |
| | | vTagCounts.put(name, 1); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | ending = " /"; |
| | | } |
| | | return "<" + name + params + ending + ">"; |
| | | } |
| | | else |
| | | { |
| | | return ""; |
| | | } |
| | | } |
| | | |
| | | // comments |
| | | m = P_COMMENT.matcher(s); |
| | | if (!stripComment && m.find()) |
| | | { |
| | | return "<" + m.group() + ">"; |
| | | } |
| | | |
| | | return ""; |
| | | } |
| | | |
| | | private String processParamProtocol(String s) |
| | | { |
| | | s = decodeEntities(s); |
| | | final Matcher m = P_PROTOCOL.matcher(s); |
| | | if (m.find()) |
| | | { |
| | | final String protocol = m.group(1); |
| | | if (!inArray(protocol, vAllowedProtocols)) |
| | | { |
| | | // bad protocol, turn into local anchor link instead |
| | | s = "#" + s.substring(protocol.length() + 1); |
| | | if (s.startsWith("#//")) |
| | | { |
| | | s = "#" + s.substring(3); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return s; |
| | | } |
| | | |
| | | private String decodeEntities(String s) |
| | | { |
| | | StringBuffer buf = new StringBuffer(); |
| | | |
| | | Matcher m = P_ENTITY.matcher(s); |
| | | while (m.find()) |
| | | { |
| | | final String match = m.group(1); |
| | | final int decimal = Integer.decode(match).intValue(); |
| | | m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); |
| | | } |
| | | m.appendTail(buf); |
| | | s = buf.toString(); |
| | | |
| | | buf = new StringBuffer(); |
| | | m = P_ENTITY_UNICODE.matcher(s); |
| | | while (m.find()) |
| | | { |
| | | final String match = m.group(1); |
| | | final int decimal = Integer.valueOf(match, 16).intValue(); |
| | | m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); |
| | | } |
| | | m.appendTail(buf); |
| | | s = buf.toString(); |
| | | |
| | | buf = new StringBuffer(); |
| | | m = P_ENCODE.matcher(s); |
| | | while (m.find()) |
| | | { |
| | | final String match = m.group(1); |
| | | final int decimal = Integer.valueOf(match, 16).intValue(); |
| | | m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); |
| | | } |
| | | m.appendTail(buf); |
| | | s = buf.toString(); |
| | | |
| | | s = validateEntities(s); |
| | | return s; |
| | | } |
| | | |
| | | private String validateEntities(final String s) |
| | | { |
| | | StringBuffer buf = new StringBuffer(); |
| | | |
| | | // validate entities throughout the string |
| | | Matcher m = P_VALID_ENTITIES.matcher(s); |
| | | while (m.find()) |
| | | { |
| | | final String one = m.group(1); // ([^&;]*) |
| | | final String two = m.group(2); // (?=(;|&|$)) |
| | | m.appendReplacement(buf, Matcher.quoteReplacement(checkEntity(one, two))); |
| | | } |
| | | m.appendTail(buf); |
| | | |
| | | return encodeQuotes(buf.toString()); |
| | | } |
| | | |
| | | private String encodeQuotes(final String s) |
| | | { |
| | | if (encodeQuotes) |
| | | { |
| | | StringBuffer buf = new StringBuffer(); |
| | | Matcher m = P_VALID_QUOTES.matcher(s); |
| | | while (m.find()) |
| | | { |
| | | final String one = m.group(1); // (>|^) |
| | | final String two = m.group(2); // ([^<]+?) |
| | | final String three = m.group(3); // (<|$) |
| | | // 不替换双引号为",防止json格式无效 regexReplace(P_QUOTE, """, two) |
| | | m.appendReplacement(buf, Matcher.quoteReplacement(one + two + three)); |
| | | } |
| | | m.appendTail(buf); |
| | | return buf.toString(); |
| | | } |
| | | else |
| | | { |
| | | return s; |
| | | } |
| | | } |
| | | |
| | | private String checkEntity(final String preamble, final String term) |
| | | { |
| | | |
| | | return ";".equals(term) && isValidEntity(preamble) ? '&' + preamble : "&" + preamble; |
| | | } |
| | | |
| | | private boolean isValidEntity(final String entity) |
| | | { |
| | | return inArray(entity, vAllowedEntities); |
| | | } |
| | | |
| | | private static boolean inArray(final String s, final String[] array) |
| | | { |
| | | for (String item : array) |
| | | { |
| | | if (item != null && item.equals(s)) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | private boolean allowed(final String name) |
| | | { |
| | | return (vAllowed.isEmpty() || vAllowed.containsKey(name)) && !inArray(name, vDisallowed); |
| | | } |
| | | |
| | | private boolean allowedAttribute(final String name, final String paramName) |
| | | { |
| | | return allowed(name) && (vAllowed.isEmpty() || vAllowed.get(name).contains(paramName)); |
| | | } |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.utils.http; |
| | | |
| | | import org.apache.commons.lang3.exception.ExceptionUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | | import javax.servlet.ServletRequest; |
| | | import java.io.BufferedReader; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.InputStreamReader; |
| | | import java.nio.charset.StandardCharsets; |
| | | |
| | | /** |
| | | * 通用http工具封装 |
| | | * |
| | | */ |
| | | public class HttpHelper |
| | | { |
| | | private static final Logger LOGGER = LoggerFactory.getLogger(HttpHelper.class); |
| | | |
| | | public static String getBodyString(ServletRequest request) |
| | | { |
| | | StringBuilder sb = new StringBuilder(); |
| | | BufferedReader reader = null; |
| | | try (InputStream inputStream = request.getInputStream()) |
| | | { |
| | | reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); |
| | | String line = ""; |
| | | while ((line = reader.readLine()) != null) |
| | | { |
| | | sb.append(line); |
| | | } |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | LOGGER.warn("getBodyString出现问题!"); |
| | | } |
| | | finally |
| | | { |
| | | if (reader != null) |
| | | { |
| | | try |
| | | { |
| | | reader.close(); |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | LOGGER.error(ExceptionUtils.getMessage(e)); |
| | | } |
| | | } |
| | | } |
| | | return sb.toString(); |
| | | } |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.utils.http; |
| | | |
| | | import com.gkhy.assess.common.utils.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | | import javax.net.ssl.*; |
| | | import java.io.*; |
| | | import java.net.ConnectException; |
| | | import java.net.SocketTimeoutException; |
| | | import java.net.URL; |
| | | import java.net.URLConnection; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.security.cert.X509Certificate; |
| | | |
| | | /** |
| | | * 通用http发送方法 |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | public class HttpUtils |
| | | { |
| | | private static final Logger log = LoggerFactory.getLogger(HttpUtils.class); |
| | | |
| | | /** |
| | | * 向指定 URL 发送GET方法的请求 |
| | | * |
| | | * @param url 发送请求的 URL |
| | | * @return 所代表远程资源的响应结果 |
| | | */ |
| | | public static String sendGet(String url) |
| | | { |
| | | return sendGet(url, StringUtils.EMPTY); |
| | | } |
| | | |
| | | /** |
| | | * 向指定 URL 发送GET方法的请求 |
| | | * |
| | | * @param url 发送请求的 URL |
| | | * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 |
| | | * @return 所代表远程资源的响应结果 |
| | | */ |
| | | public static String sendGet(String url, String param) |
| | | { |
| | | return sendGet(url, param, "UTF-8"); |
| | | } |
| | | |
| | | /** |
| | | * 向指定 URL 发送GET方法的请求 |
| | | * |
| | | * @param url 发送请求的 URL |
| | | * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 |
| | | * @param contentType 编码类型 |
| | | * @return 所代表远程资源的响应结果 |
| | | */ |
| | | public static String sendGet(String url, String param, String contentType) |
| | | { |
| | | StringBuilder result = new StringBuilder(); |
| | | BufferedReader in = null; |
| | | try |
| | | { |
| | | String urlNameString = StringUtils.isNotBlank(param) ? url + "?" + param : url; |
| | | log.info("sendGet - {}", urlNameString); |
| | | URL realUrl = new URL(urlNameString); |
| | | URLConnection connection = realUrl.openConnection(); |
| | | connection.setRequestProperty("accept", "*/*"); |
| | | connection.setRequestProperty("connection", "Keep-Alive"); |
| | | connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); |
| | | connection.connect(); |
| | | in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType)); |
| | | String line; |
| | | while ((line = in.readLine()) != null) |
| | | { |
| | | result.append(line); |
| | | } |
| | | log.info("recv - {}", result); |
| | | } |
| | | catch (ConnectException e) |
| | | { |
| | | log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e); |
| | | } |
| | | catch (SocketTimeoutException e) |
| | | { |
| | | log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e); |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e); |
| | | } |
| | | finally |
| | | { |
| | | try |
| | | { |
| | | if (in != null) |
| | | { |
| | | in.close(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | log.error("调用in.close Exception, url=" + url + ",param=" + param, ex); |
| | | } |
| | | } |
| | | return result.toString(); |
| | | } |
| | | |
| | | /** |
| | | * 向指定 URL 发送POST方法的请求 |
| | | * |
| | | * @param url 发送请求的 URL |
| | | * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 |
| | | * @return 所代表远程资源的响应结果 |
| | | */ |
| | | public static String sendPost(String url, String param) |
| | | { |
| | | PrintWriter out = null; |
| | | BufferedReader in = null; |
| | | StringBuilder result = new StringBuilder(); |
| | | try |
| | | { |
| | | log.info("sendPost - {}", url); |
| | | URL realUrl = new URL(url); |
| | | URLConnection conn = realUrl.openConnection(); |
| | | conn.setRequestProperty("accept", "*/*"); |
| | | conn.setRequestProperty("connection", "Keep-Alive"); |
| | | conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); |
| | | conn.setRequestProperty("Accept-Charset", "utf-8"); |
| | | conn.setRequestProperty("contentType", "utf-8"); |
| | | conn.setDoOutput(true); |
| | | conn.setDoInput(true); |
| | | out = new PrintWriter(conn.getOutputStream()); |
| | | out.print(param); |
| | | out.flush(); |
| | | in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); |
| | | String line; |
| | | while ((line = in.readLine()) != null) |
| | | { |
| | | result.append(line); |
| | | } |
| | | log.info("recv - {}", result); |
| | | } |
| | | catch (ConnectException e) |
| | | { |
| | | log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e); |
| | | } |
| | | catch (SocketTimeoutException e) |
| | | { |
| | | log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e); |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e); |
| | | } |
| | | finally |
| | | { |
| | | try |
| | | { |
| | | if (out != null) |
| | | { |
| | | out.close(); |
| | | } |
| | | if (in != null) |
| | | { |
| | | in.close(); |
| | | } |
| | | } |
| | | catch (IOException ex) |
| | | { |
| | | log.error("调用in.close Exception, url=" + url + ",param=" + param, ex); |
| | | } |
| | | } |
| | | return result.toString(); |
| | | } |
| | | |
| | | public static String sendSSLPost(String url, String param) |
| | | { |
| | | StringBuilder result = new StringBuilder(); |
| | | String urlNameString = url + "?" + param; |
| | | try |
| | | { |
| | | log.info("sendSSLPost - {}", urlNameString); |
| | | SSLContext sc = SSLContext.getInstance("SSL"); |
| | | sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom()); |
| | | URL console = new URL(urlNameString); |
| | | HttpsURLConnection conn = (HttpsURLConnection) console.openConnection(); |
| | | conn.setRequestProperty("accept", "*/*"); |
| | | conn.setRequestProperty("connection", "Keep-Alive"); |
| | | conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); |
| | | conn.setRequestProperty("Accept-Charset", "utf-8"); |
| | | conn.setRequestProperty("contentType", "utf-8"); |
| | | conn.setDoOutput(true); |
| | | conn.setDoInput(true); |
| | | |
| | | conn.setSSLSocketFactory(sc.getSocketFactory()); |
| | | conn.setHostnameVerifier(new TrustAnyHostnameVerifier()); |
| | | conn.connect(); |
| | | InputStream is = conn.getInputStream(); |
| | | BufferedReader br = new BufferedReader(new InputStreamReader(is)); |
| | | String ret = ""; |
| | | while ((ret = br.readLine()) != null) |
| | | { |
| | | if (ret != null && !"".equals(ret.trim())) |
| | | { |
| | | result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8)); |
| | | } |
| | | } |
| | | log.info("recv - {}", result); |
| | | conn.disconnect(); |
| | | br.close(); |
| | | } |
| | | catch (ConnectException e) |
| | | { |
| | | log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e); |
| | | } |
| | | catch (SocketTimeoutException e) |
| | | { |
| | | log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e); |
| | | } |
| | | catch (IOException e) |
| | | { |
| | | log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e); |
| | | } |
| | | return result.toString(); |
| | | } |
| | | |
| | | private static class TrustAnyTrustManager implements X509TrustManager |
| | | { |
| | | @Override |
| | | public void checkClientTrusted(X509Certificate[] chain, String authType) |
| | | { |
| | | } |
| | | |
| | | @Override |
| | | public void checkServerTrusted(X509Certificate[] chain, String authType) |
| | | { |
| | | } |
| | | |
| | | @Override |
| | | public X509Certificate[] getAcceptedIssuers() |
| | | { |
| | | return new X509Certificate[] {}; |
| | | } |
| | | } |
| | | |
| | | private static class TrustAnyHostnameVerifier implements HostnameVerifier |
| | | { |
| | | @Override |
| | | public boolean verify(String hostname, SSLSession session) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | |
| | | package com.gkhy.assess.common.validate; |
| | | |
| | | import javax.validation.groups.Default; |
| | | |
| | | /** |
| | | * 机构校验分组 |
| | | */ |
| | | public interface AgencyGroup { |
| | | public interface AgencyGroup extends Default { |
| | | } |
| | |
| | | package com.gkhy.assess.common.validate; |
| | | |
| | | import javax.validation.groups.Default; |
| | | |
| | | /** |
| | | * 专家校验分组 |
| | | */ |
| | | public interface ExpertGroup { |
| | | public interface ExpertGroup extends Default { |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.common.validate; |
| | | |
| | | import javax.validation.groups.Default; |
| | | |
| | | /** |
| | | * 监管用户校验分组 |
| | | */ |
| | | public interface MonitorGroup extends Default { |
| | | } |
| | |
| | | package com.gkhy.assess.framework.aop; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.core.util.URLUtil; |
| | | import cn.hutool.extra.servlet.ServletUtil; |
| | | import cn.hutool.json.JSONObject; |
| | | import com.gkhy.assess.common.utils.StringUtils; |
| | | import com.gkhy.assess.system.utils.ShiroUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.aspectj.lang.JoinPoint; |
| | |
| | | StringBuffer requestURL = request.getRequestURL(); |
| | | JSONObject webLog = new JSONObject(); |
| | | String urlStr = request.getRequestURL().toString(); |
| | | webLog.put("basePath",StrUtil.removeSuffix(urlStr, URLUtil.url(urlStr).getPath())); |
| | | webLog.put("basePath", StringUtils.removeSuffix(urlStr, URLUtil.url(urlStr).getPath())); |
| | | webLog.put("ip", ServletUtil.getClientIP(request,null)); |
| | | webLog.put("method",request.getMethod()); |
| | | Object params=getParameter(method, joinPoint.getArgs()); |
| | |
| | | if (requestParam != null) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | String key = parameters[i].getName(); |
| | | if (StrUtil.isNotEmpty(requestParam.value())) { |
| | | if (StringUtils.isNotEmpty(requestParam.value())) { |
| | | key = requestParam.value(); |
| | | } |
| | | map.put(key, args[i]); |
| | |
| | | package com.gkhy.assess.framework.config; |
| | | |
| | | import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; |
| | | import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; |
| | | import org.mybatis.spring.annotation.MapperScan; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Conditional; |
| | |
| | | import org.springframework.web.cors.UrlBasedCorsConfigurationSource; |
| | | import org.springframework.web.filter.CorsFilter; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.TimeZone; |
| | | |
| | | /** |
| | |
| | | @MapperScan("com.gkhy.**.mapper") |
| | | public class ApplicationConfig |
| | | { |
| | | |
| | | @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}") |
| | | private String pattern; |
| | | |
| | | /** |
| | | * 时区配置 |
| | | */ |
| | | // @Bean |
| | | // public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() |
| | | // { |
| | | // return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault()); |
| | | // } |
| | | |
| | | @Bean |
| | | public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() |
| | | { |
| | | return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault()); |
| | | public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { |
| | | return builder -> { |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); |
| | | |
| | | //返回时间数据序列化 |
| | | builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(formatter)); |
| | | //接收时间数据反序列化 |
| | | builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(formatter)); |
| | | builder.timeZone(TimeZone.getDefault()); |
| | | }; |
| | | } |
| | | |
| | | |
| | | @Bean |
| | | public CorsFilter corsFilter() { |
| | | final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource(); |
对比新文件 |
| | |
| | | package com.gkhy.assess.framework.config; |
| | | |
| | | import com.gkhy.assess.common.filter.RepeatableFilter; |
| | | import com.gkhy.assess.common.filter.XssFilter; |
| | | import com.gkhy.assess.common.utils.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | | import org.springframework.boot.web.servlet.FilterRegistrationBean; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | import javax.servlet.DispatcherType; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * Filter配置 |
| | | * |
| | | */ |
| | | @Configuration |
| | | public class FilterConfig |
| | | { |
| | | @Value("${xss.excludes}") |
| | | private String excludes; |
| | | |
| | | @Value("${xss.urlPatterns}") |
| | | private String urlPatterns; |
| | | // |
| | | // @SuppressWarnings({ "rawtypes", "unchecked" }) |
| | | // @Bean |
| | | // @ConditionalOnProperty(value = "xss.enabled", havingValue = "true") |
| | | // public FilterRegistrationBean xssFilterRegistration() |
| | | // { |
| | | // FilterRegistrationBean registration = new FilterRegistrationBean(); |
| | | // registration.setDispatcherTypes(DispatcherType.REQUEST); |
| | | // registration.setFilter(new XssFilter()); |
| | | // registration.addUrlPatterns(String.valueOf(StringUtils.split(urlPatterns, ","))); |
| | | // registration.setName("xssFilter"); |
| | | // registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE); |
| | | // Map<String, String> initParameters = new HashMap<String, String>(); |
| | | // initParameters.put("excludes", excludes); |
| | | // registration.setInitParameters(initParameters); |
| | | // return registration; |
| | | // } |
| | | |
| | | @SuppressWarnings({ "rawtypes", "unchecked" }) |
| | | @Bean |
| | | public FilterRegistrationBean someFilterRegistration() |
| | | { |
| | | FilterRegistrationBean registration = new FilterRegistrationBean(); |
| | | registration.setFilter(new RepeatableFilter()); |
| | | registration.addUrlPatterns("/*"); |
| | | registration.setName("repeatableFilter"); |
| | | registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE); |
| | | return registration; |
| | | } |
| | | |
| | | } |
| | |
| | | package com.gkhy.assess.framework.config; |
| | | |
| | | import com.gkhy.assess.framework.interceptor.LogInterceptor; |
| | | import com.gkhy.assess.framework.interceptor.RepeatSubmitInterceptor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.context.annotation.Configuration; |
| | |
| | | |
| | | @Configuration |
| | | public class MyWebMvcConfig implements WebMvcConfigurer { |
| | | @Value("${image.root_path}") |
| | | private String uploadRootPath; |
| | | @Value("${image.upload_path}") |
| | | private String uploadPath; |
| | | |
| | | @Autowired |
| | | private LogInterceptor logInterceptor; |
| | | |
| | | @Autowired |
| | | private RepeatSubmitInterceptor repeatSubmitInterceptor; |
| | | |
| | | /** |
| | | * 配置图片访问路径 |
| | |
| | | @Override |
| | | public void addResourceHandlers(ResourceHandlerRegistry registry) { |
| | | String systemDir=System.getProperty("user.dir"); |
| | | registry.addResourceHandler("/api/assess_file/**").addResourceLocations("file:"+systemDir+ File.separator+uploadRootPath+File.separator); |
| | | registry.addResourceHandler("/upload/**").addResourceLocations("file:"+systemDir+ File.separator+uploadPath+File.separator); |
| | | } |
| | | |
| | | @Override |
| | | public void addInterceptors(InterceptorRegistry registry) { |
| | | registry.addInterceptor(logInterceptor) |
| | | .addPathPatterns("/**"); |
| | | registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**"); |
| | | |
| | | } |
| | | } |
| | |
| | | |
| | | @ExceptionHandler(value = ApiException.class) |
| | | public CommonResult handle(ApiException e){ |
| | | writeExceptionLogFile(e); |
| | | // writeExceptionLogFile(e); |
| | | if(e.getErrorCode()!=null){ |
| | | return CommonResult.failed(e.getErrorCode()); |
| | | } |
| | |
| | | /** |
| | | * @ClassName LogInterceptor |
| | | * @Description TODO |
| | | * @Date 2021/7/5 14:56 |
| | | **/ |
| | | @Component |
| | | public class LogInterceptor implements HandlerInterceptor { |
对比新文件 |
| | |
| | | package com.gkhy.assess.framework.interceptor; |
| | | |
| | | import com.gkhy.assess.common.annotation.RepeatSubmit; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.method.HandlerMethod; |
| | | import org.springframework.web.servlet.HandlerInterceptor; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.lang.reflect.Method; |
| | | |
| | | /** |
| | | * 防止器重复提交拦截 |
| | | * |
| | | */ |
| | | @Component |
| | | public abstract class RepeatSubmitInterceptor implements HandlerInterceptor |
| | | { |
| | | @Override |
| | | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception |
| | | { |
| | | if (handler instanceof HandlerMethod) |
| | | { |
| | | HandlerMethod handlerMethod = (HandlerMethod) handler; |
| | | Method method = handlerMethod.getMethod(); |
| | | RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class); |
| | | if (annotation != null) |
| | | { |
| | | if (this.isRepeatSubmit(request, annotation)) |
| | | { |
| | | throw new ApiException(annotation.message()); |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 验证是否重复提交由子类实现具体的防重复提交的规则 |
| | | * |
| | | * @param request 请求对象 |
| | | * @param annotation 防复注解 |
| | | * @return 结果 |
| | | */ |
| | | public abstract boolean isRepeatSubmit(HttpServletRequest request, RepeatSubmit annotation) throws Exception; |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.framework.interceptor; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.gkhy.assess.common.annotation.RepeatSubmit; |
| | | import com.gkhy.assess.common.constant.CacheConstant; |
| | | import com.gkhy.assess.common.filter.RepeatedlyRequestWrapper; |
| | | import com.gkhy.assess.common.utils.JwtTokenUtil; |
| | | import com.gkhy.assess.common.utils.RedisUtils; |
| | | import com.gkhy.assess.common.utils.StringUtils; |
| | | import com.gkhy.assess.common.utils.http.HttpHelper; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * 判断请求url和数据是否和上一次相同, |
| | | * 如果和上次相同,则是重复提交表单。 有效时间为10秒内。 |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | @Component |
| | | public class SameUrlDataInterceptor extends RepeatSubmitInterceptor |
| | | { |
| | | public final String REPEAT_PARAMS = "repeatParams"; |
| | | |
| | | public final String REPEAT_TIME = "repeatTime"; |
| | | |
| | | |
| | | @Autowired |
| | | private RedisUtils redisUtils; |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | @Override |
| | | public boolean isRepeatSubmit(HttpServletRequest request, RepeatSubmit annotation) throws Exception { |
| | | String nowParams = ""; |
| | | if (request instanceof RepeatedlyRequestWrapper) |
| | | { |
| | | RepeatedlyRequestWrapper repeatedlyRequest = (RepeatedlyRequestWrapper) request; |
| | | nowParams = HttpHelper.getBodyString(repeatedlyRequest); |
| | | } |
| | | |
| | | // body参数为空,获取Parameter的数据 |
| | | if (StringUtils.isBlank(nowParams)) |
| | | { |
| | | nowParams = JSONObject.toJSONString(request.getParameterMap()); |
| | | } |
| | | Map<String, Object> nowDataMap = new HashMap<String, Object>(); |
| | | nowDataMap.put(REPEAT_PARAMS, nowParams); |
| | | nowDataMap.put(REPEAT_TIME, System.currentTimeMillis()); |
| | | |
| | | // 请求地址(作为存放cache的key值) |
| | | String url = request.getRequestURI(); |
| | | |
| | | // 唯一值(没有消息头则使用请求地址) |
| | | String submitKey = StringUtils.trimToEmpty(request.getHeader(JwtTokenUtil.USER_LOGIN_TOKEN)); |
| | | |
| | | // 唯一标识(指定key + url + 消息头) |
| | | String cacheRepeatKey = CacheConstant.REPEAT_SUBMIT_KEY + url + submitKey; |
| | | |
| | | Object sessionObj = redisUtils.get(cacheRepeatKey); |
| | | if (sessionObj != null) |
| | | { |
| | | Map<String, Object> sessionMap = (Map<String, Object>) sessionObj; |
| | | if (sessionMap.containsKey(url)) |
| | | { |
| | | Map<String, Object> preDataMap = (Map<String, Object>) sessionMap.get(url); |
| | | if (compareParams(nowDataMap, preDataMap) && compareTime(nowDataMap, preDataMap, annotation.interval())) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | Map<String, Object> cacheMap = new HashMap<String, Object>(); |
| | | cacheMap.put(url, nowDataMap); |
| | | redisUtils.set(cacheRepeatKey, cacheMap, annotation.interval(), TimeUnit.MILLISECONDS); |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 判断参数是否相同 |
| | | */ |
| | | private boolean compareParams(Map<String, Object> nowMap, Map<String, Object> preMap) |
| | | { |
| | | String nowParams = (String) nowMap.get(REPEAT_PARAMS); |
| | | String preParams = (String) preMap.get(REPEAT_PARAMS); |
| | | return nowParams.equals(preParams); |
| | | } |
| | | |
| | | /** |
| | | * 判断两次间隔时间 |
| | | */ |
| | | private boolean compareTime(Map<String, Object> nowMap, Map<String, Object> preMap, int interval) |
| | | { |
| | | long time1 = (Long) nowMap.get(REPEAT_TIME); |
| | | long time2 = (Long) preMap.get(REPEAT_TIME); |
| | | if ((time1 - time2) < interval) |
| | | { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | } |
| | |
| | | chain.addPathDefinition("/swagger-resources/**","anon"); |
| | | chain.addPathDefinition("/doc.html", "anon"); |
| | | chain.addPathDefinition("/v2/api-docs", "anon"); |
| | | chain.addPathDefinition("/favicon.ico","anon"); |
| | | chain.addPathDefinition("/static/**", "anon"); |
| | | // 配置shiro错误从定向问题 /error 路径的错误处理 |
| | | chain.addPathDefinition("/error", "anon"); |
| | | chain.addPathDefinition("/upload/**", "anon"); |
| | | |
| | | chain.addPathDefinition("/account/login","anon"); |
| | | // chain.addPathDefinition("/api/account/login","anon"); |
| | | chain.addPathDefinition("/logout", "logout"); |
| | | |
| | | chain.addPathDefinition("/system/notice/noticeList","anon"); |
| | | chain.addPathDefinition("/system/notice/getNoticeById","anon"); |
| | | chain.addPathDefinition("/notice/noticeList","anon"); |
| | | chain.addPathDefinition("/notice/getNoticeById","anon"); |
| | | chain.addPathDefinition("/law/lawList","anon"); |
| | | chain.addPathDefinition("/law/getLawById","anon"); |
| | | chain.addPathDefinition("/agency/agencyList","anon"); |
| | | chain.addPathDefinition("/agency/getAgencyById","anon"); |
| | | |
| | | chain.addPathDefinition("/system/law/lawList","anon"); |
| | | chain.addPathDefinition("/system/law/getLawById","anon"); |
| | | chain.addPathDefinition("/system/dictType/getDictDataByType","anon"); |
| | | |
| | | chain.addPathDefinition("/system/agency/agencyList","anon"); |
| | | chain.addPathDefinition("/system/agency/getAgencyById","anon"); |
| | | |
| | | chain.addPathDefinition("/system/user/agencyRegister","anon"); |
| | | |
| | | chain.addPathDefinition("/system/agency/checkAgencyNameUnique","anon"); |
| | | chain.addPathDefinition("/system/user/addAgency","anon"); |
| | | chain.addPathDefinition("/system/user/checkUserNameUnique","anon"); |
| | | chain.addPathDefinition("/system/user/checkPhoneUnique","anon"); |
| | | chain.addPathDefinition("/system/captcha/captchaImage","anon"); |
| | | |
| | | chain.addPathDefinition("/system/region/regionTree","anon"); |
| | | |
| | | chain.addPathDefinition("/system/common/uploadFile","anon"); |
| | | chain.addPathDefinition("/system/common/removeFile","anon"); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | //除了以上的请求外,其它请求都需要登录 |
| | | chain.addPathDefinition("/**", "jwtFilter,authc"); // 需登录才能访问 |
| | | |
| | |
| | | package com.gkhy.assess.framework.shiro.realm; |
| | | |
| | | import com.gkhy.assess.common.enums.UserIdentityEnum; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import com.gkhy.assess.common.utils.RequestUtil; |
| | | import com.gkhy.assess.common.utils.SpringContextUtils; |
| | | import com.gkhy.assess.framework.shiro.JwtToken; |
| | |
| | | package com.gkhy.assess.framework.shiro.service; |
| | | |
| | | import com.gkhy.assess.common.constant.CacheConstant; |
| | | import com.gkhy.assess.common.enums.ApproveStatusEnum; |
| | | import com.gkhy.assess.common.enums.UserIdentityEnum; |
| | | import com.gkhy.assess.common.enums.UserStatusEnum; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import com.gkhy.assess.common.utils.JwtTokenUtil; |
| | |
| | | |
| | | public void validUser(SysUser sysUser){ |
| | | if(sysUser==null) { |
| | | throw new ApiException("用户不存在"); |
| | | throw new AuthenticationException("用户不存在"); |
| | | } |
| | | if(UserStatusEnum.DELETED.getCode().equals(sysUser.getDelFlag())){ |
| | | throw new ApiException("用户已被删除"); |
| | | throw new AuthenticationException("用户已被删除"); |
| | | } |
| | | if(UserStatusEnum.DISABLE.getCode().equals(sysUser.getStatus())){ |
| | | throw new ApiException("用户已被停用"); |
| | | throw new AuthenticationException("用户已被停用"); |
| | | } |
| | | if(UserIdentityEnum.AGENCY.getCode().equals(sysUser.getIdentity())){ |
| | | if(!ApproveStatusEnum.APPROVED.getCode().equals(sysUser.getState())){ |
| | | throw new AuthenticationException("机构账户审批还未通过"); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | * @return |
| | | */ |
| | | public boolean jwtTokenRefresh(String jwtToken,String username,String passWord){ |
| | | String key=redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+JwtTokenUtil.md5Encode(jwtToken)); |
| | | String cacheToken= (String) redisUtils.get(key); |
| | | String tokenKey=redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+JwtTokenUtil.md5Encode(jwtToken)); |
| | | String userKey=redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+username); |
| | | String cacheToken= (String) redisUtils.get(tokenKey); |
| | | if(StringUtils.isNotEmpty(cacheToken)){ |
| | | // 校验token有效性 |
| | | if(!JwtTokenUtil.verify(cacheToken,username,passWord)){ |
| | | String newToken=JwtTokenUtil.sign(username,passWord); |
| | | // 设置超时时间 |
| | | redisUtils.set(key,newToken); |
| | | redisUtils.expire(key,JwtTokenUtil.EXPIRATION*2/1000); |
| | | redisUtils.set(tokenKey,newToken); |
| | | redisUtils.expire(tokenKey,JwtTokenUtil.EXPIRATION*2/1000); |
| | | redisUtils.expire(userKey,(JwtTokenUtil.EXPIRATION*2/1000)+2); |
| | | } |
| | | return true; |
| | | } |
| | |
| | | package com.gkhy.assess.framework.shiro.service; |
| | | |
| | | import com.gkhy.assess.common.constant.CacheConstant; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import com.gkhy.assess.common.utils.JwtTokenUtil; |
| | | import com.gkhy.assess.common.utils.RedisUtils; |
| | | import com.gkhy.assess.system.domain.SysUser; |
| | | import org.apache.shiro.crypto.hash.Md5Hash; |
| | | import org.apache.shiro.authc.AuthenticationException; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | @Value(value = "${user.password.maxRetryCount:5}") |
| | | private Integer maxRetryCount; |
| | | |
| | | public void validate(SysUser user, String password){ |
| | | public void validate(SysUser user, String password) throws AuthenticationException { |
| | | String username=user.getUsername(); |
| | | String key= redisUtils.generateKey(CacheConstant.SYS_LOGIN_RECORD_CACHE+":"+username); |
| | | AtomicInteger retryCount= (AtomicInteger) redisUtils.get(key); |
| | | Integer retryCount= (Integer) redisUtils.get(key); |
| | | if(retryCount==null){ |
| | | retryCount=new AtomicInteger(0); |
| | | redisUtils.set(key,retryCount); |
| | | retryCount=0; |
| | | } |
| | | if(retryCount.incrementAndGet()>maxRetryCount){ |
| | | throw new ApiException("登录次数已达上限"); |
| | | ++retryCount; |
| | | if(retryCount>maxRetryCount){ |
| | | throw new AuthenticationException("登录次数已达上限,5分钟之后再试"); |
| | | } |
| | | if(!matches(user,password)){ |
| | | redisUtils.set(key,retryCount); |
| | | throw new ApiException("登录密码错误"); |
| | | redisUtils.set(key,retryCount,60*5);//5分钟后释放 |
| | | throw new AuthenticationException("登录密码错误"); |
| | | }else{ |
| | | redisUtils.del(key); |
| | | } |
| | |
| | | } |
| | | |
| | | public boolean matches(SysUser sysUser,String newPassword){ |
| | | return sysUser.getPassword().equals(encryptPassword(sysUser.getUsername(),newPassword,sysUser.getSalt())); |
| | | return sysUser.getPassword().equals(JwtTokenUtil.encryptPassword(sysUser.getUsername(),newPassword,sysUser.getSalt())); |
| | | } |
| | | |
| | | public String encryptPassword(String username,String password,String salt){ |
| | | return new Md5Hash(username+password+salt).toHex(); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import java.io.Serializable; |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.fasterxml.jackson.annotation.JsonInclude; |
| | | import com.gkhy.assess.common.domain.BaseEntity; |
| | | import com.gkhy.assess.common.validate.AgencyGroup; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Getter; |
| | | import lombok.Setter; |
| | | import lombok.experimental.Accessors; |
| | | import org.hibernate.validator.constraints.Length; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import javax.validation.Valid; |
| | | import javax.validation.constraints.NotBlank; |
| | | import javax.validation.constraints.NotNull; |
| | | |
| | |
| | | @Setter |
| | | @TableName("sys_agency") |
| | | @ApiModel(value = "SysAgency对象", description = "机构表") |
| | | @Accessors(chain = true) |
| | | @JsonInclude(NON_NULL) |
| | | public class SysAgency extends BaseEntity { |
| | | |
| | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | |
| | | @NotBlank(message = "机构名称不能为空") |
| | | @ApiModelProperty("机构名称") |
| | | @TableField("name") |
| | | private String name; |
| | | |
| | | |
| | | @NotBlank(message = "社会信用代码不能为空") |
| | | @ApiModelProperty(value = "社会信用代码",required = true) |
| | | @TableField("credit_code") |
| | | private String creditCode; |
| | | |
| | | |
| | | @NotNull(message = "机构属性不能为空") |
| | | @ApiModelProperty(value = "机构属性(0疆内,1疆外,默认0)",required = true) |
| | | @TableField("attribute") |
| | | private Integer attribute; |
| | | |
| | | |
| | | @ApiModelProperty("省") |
| | | @TableField("province") |
| | | private String province; |
| | | |
| | | |
| | | @NotBlank(message = "市不能为空") |
| | | @ApiModelProperty(value = "市",required = true) |
| | | @TableField("city") |
| | | private String city; |
| | | |
| | | @NotBlank(message = "区不能为空") |
| | | // @NotBlank(message = "区不能为空") |
| | | @ApiModelProperty(value = "区",required = true) |
| | | @TableField("district") |
| | | private String district; |
| | | |
| | | |
| | | @NotBlank(message = "经营地址不能为空") |
| | | @ApiModelProperty(value = "经营地址",required = true) |
| | |
| | | @TableField("web") |
| | | private String web; |
| | | |
| | | |
| | | @NotBlank(message = "法定代表人不能为空") |
| | | @ApiModelProperty(value = "法定代表人",required = true) |
| | | @TableField("legal_person") |
| | | private String legalPerson; |
| | | |
| | | |
| | | @NotBlank(message = "法人电话不能为空") |
| | | @Length(min = 11, max = 11, message = "手机号只能为11位") |
| | | @ApiModelProperty(value = "法人电话",required = true) |
| | | @TableField("legal_phone") |
| | | private String legalPhone; |
| | | |
| | | |
| | | @NotBlank(message = "机构负责人不能为空") |
| | | @ApiModelProperty(value = "机构负责人",required = true) |
| | | @TableField("manager") |
| | | private String manager; |
| | | |
| | | |
| | | @NotBlank(message = "负责人电话不能为空") |
| | | @Length(min = 11, max = 11, message = "手机号只能为11位") |
| | | @ApiModelProperty(value = "负责人电话",required = true) |
| | | @TableField("manager_phone") |
| | | private String managerPhone; |
| | | |
| | | |
| | | @NotBlank(message = "资质证书编号不能为空") |
| | | @ApiModelProperty(value = "资质证书编号",required = true) |
| | | @TableField("cert_number") |
| | | private String certNumber; |
| | | |
| | | @NotBlank(message = "发证日期不能为空") |
| | | |
| | | @NotNull(message = "发证日期不能为空") |
| | | @ApiModelProperty(value = "发证日期",required = true) |
| | | @TableField("issue_date") |
| | | @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime issueDate; |
| | | |
| | | @NotBlank(message = "有效日期不能为空") |
| | | |
| | | @NotNull(message = "有效日期不能为空") |
| | | @ApiModelProperty(value = "有效日期",required = true) |
| | | @TableField("valid_date") |
| | | @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime validDate; |
| | | |
| | | |
| | | @NotBlank(message = "固定资产总值不能为空") |
| | | @ApiModelProperty(value = "固定资产总值",required = true) |
| | | @TableField("asset_value") |
| | | private String assetValue; |
| | | |
| | | |
| | | @NotBlank(message = "工作场所建筑面积不能为空") |
| | | @ApiModelProperty(value = "工作场所建筑面积",required = true) |
| | | @TableField("work_area") |
| | | private String workArea; |
| | | |
| | | |
| | | @NotBlank(message = "档案室面积不能为空") |
| | | @ApiModelProperty(value = "档案室面积",required = true) |
| | | @TableField("archive_area") |
| | | private String archiveArea; |
| | | |
| | | |
| | | @NotBlank(message = "注册地址不能为空") |
| | | @ApiModelProperty(value = "注册地址",required = true) |
| | | @TableField("reg_address") |
| | | private String regAddress; |
| | | |
| | | |
| | | @NotBlank(message = "业务范围不能为空") |
| | | @ApiModelProperty(value = "业务范围",required = true) |
| | | @ApiModelProperty(value = "业务范围,字典id,多个逗号隔开",required = true) |
| | | @TableField("business") |
| | | private String business; |
| | | |
| | | |
| | | @NotBlank(message = "机构信息上报表存放路径不能为空") |
| | | @ApiModelProperty(value = "机构信息上报表存放路径",required = true) |
| | |
| | | @TableField("del_flag") |
| | | private Integer delFlag; |
| | | |
| | | @ApiModelProperty("是否公示(0代表公示,1代表不公示,默认0)") |
| | | @TableField("publication") |
| | | private Integer publication; |
| | | |
| | | @ApiModelProperty(value = "业务范围,字典对应的名称") |
| | | @TableField(exist = false) |
| | | private List<String> businessNames; |
| | | |
| | | @ApiModelProperty(value = "注册用户") |
| | | @TableField(exist = false) |
| | | private SysUser user; |
| | | |
| | | } |
| | |
| | | @Getter |
| | | @Setter |
| | | @TableName("sys_attach") |
| | | @ApiModel(value = "SysAttach对象", description = "系统配置表") |
| | | @ApiModel(value = "SysAttach对象", description = "系统上传文件表,用户信息相关的") |
| | | @JsonInclude(NON_NULL) |
| | | public class SysAttach implements Serializable { |
| | | |
| | |
| | | @TableField("type") |
| | | private Integer type; |
| | | |
| | | @NotBlank(message = "类型不能为空") |
| | | @ApiModelProperty(value = "用户id",required = true) |
| | | |
| | | @ApiModelProperty(value = "用户id") |
| | | @TableField("user_id") |
| | | private Long userId; |
| | | |
| | |
| | | import java.io.Serializable; |
| | | import java.time.LocalDateTime; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonInclude; |
| | | import com.gkhy.assess.common.domain.BaseEntity; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | |
| | | import lombok.Setter; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | |
| | | import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Setter |
| | | @TableName("sys_dict_data") |
| | | @ApiModel(value = "SysDictData对象", description = "字典数据表") |
| | | @JsonInclude(NON_NULL) |
| | | public class SysDictData extends BaseEntity { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | |
| | | import java.io.Serializable; |
| | | import java.time.LocalDateTime; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonInclude; |
| | | import com.gkhy.assess.common.domain.BaseEntity; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Getter; |
| | | import lombok.Setter; |
| | | import lombok.experimental.Accessors; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | |
| | | import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Setter |
| | | @TableName("sys_dict_type") |
| | | @ApiModel(value = "SysDictType对象", description = "字典类型表") |
| | | @Accessors(chain = true) |
| | | @JsonInclude(NON_NULL) |
| | | public class SysDictType extends BaseEntity { |
| | | |
| | | private static final long serialVersionUID = 1L; |
对比新文件 |
| | |
| | | package com.gkhy.assess.system.domain; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import java.io.Serializable; |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonInclude; |
| | | import com.gkhy.assess.common.domain.BaseEntity; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Getter; |
| | | import lombok.Setter; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | |
| | | import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; |
| | | |
| | | /** |
| | | * <p> |
| | | * 系统专家分类表 |
| | | * </p> |
| | | * |
| | | * @author kzy |
| | | * @since 2023-11-27 16:33:33 |
| | | */ |
| | | @Getter |
| | | @Setter |
| | | @TableName("sys_expert_classify") |
| | | @ApiModel(value = "SysExpertClassify对象", description = "系统专家分类表") |
| | | @JsonInclude(NON_NULL) |
| | | public class SysExpertClassify extends BaseEntity { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty("主键") |
| | | @TableId(value = "classify_id", type = IdType.AUTO) |
| | | private Long classifyId; |
| | | |
| | | @NotBlank(message = "分类名称不能为空") |
| | | @ApiModelProperty(value = "分类名称",required = true) |
| | | @TableField("classify_name") |
| | | private String classifyName; |
| | | |
| | | @ApiModelProperty("父id") |
| | | @TableField("parent_id") |
| | | private Long parentId; |
| | | |
| | | @ApiModelProperty("删除标志(0代表存在,1代表删除,默认0)") |
| | | @TableField("del_flag") |
| | | private Integer delFlag; |
| | | |
| | | @ApiModelProperty("子分类") |
| | | @TableField(exist = false) |
| | | private List<SysExpertClassify> children; |
| | | |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.system.domain; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import java.io.Serializable; |
| | | import java.time.LocalDateTime; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonInclude; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Getter; |
| | | import lombok.Setter; |
| | | import lombok.experimental.Accessors; |
| | | |
| | | import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; |
| | | |
| | | /** |
| | | * <p> |
| | | * 系统专家信息表 |
| | | * </p> |
| | | * |
| | | * @author kzy |
| | | * @since 2023-11-27 16:33:33 |
| | | */ |
| | | @Getter |
| | | @Setter |
| | | @TableName("sys_expert_info") |
| | | @Accessors(chain = true) |
| | | @ApiModel(value = "SysExpertInfo对象", description = "系统专家信息表") |
| | | @JsonInclude(NON_NULL) |
| | | public class SysExpertInfo implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty("主键") |
| | | @TableId(value = "expert_id", type = IdType.AUTO) |
| | | private Long expertId; |
| | | |
| | | @ApiModelProperty("专家名称") |
| | | @TableField("name") |
| | | private String name; |
| | | |
| | | @ApiModelProperty("性别(0男,1女,2未知,默认2)") |
| | | @TableField("sex") |
| | | private Integer sex; |
| | | |
| | | @ApiModelProperty("类别id") |
| | | @TableField("big_classify") |
| | | private Long bigClassify; |
| | | |
| | | @ApiModelProperty("类别id") |
| | | @TableField("small_classify") |
| | | private Long smallClassify; |
| | | |
| | | @ApiModelProperty("出生日期") |
| | | @TableField("birthday") |
| | | private LocalDateTime birthday; |
| | | |
| | | @ApiModelProperty("手机号") |
| | | @TableField("phone") |
| | | private String phone; |
| | | |
| | | @ApiModelProperty("职称") |
| | | @TableField("title") |
| | | private String title; |
| | | |
| | | @ApiModelProperty("电子照片") |
| | | @TableField("electronic_photo") |
| | | private String electronicPhoto; |
| | | |
| | | @ApiModelProperty("身份证号码") |
| | | @TableField("id_card") |
| | | private String idCard; |
| | | |
| | | @ApiModelProperty("在职状态") |
| | | @TableField("duty_status") |
| | | private Integer dutyStatus; |
| | | |
| | | @ApiModelProperty("公司名称") |
| | | @TableField("company_name") |
| | | private String companyName; |
| | | |
| | | @ApiModelProperty("公司地址") |
| | | @TableField("company_address") |
| | | private String companyAddress; |
| | | |
| | | @ApiModelProperty("部门名称") |
| | | @TableField("dept_name") |
| | | private String deptName; |
| | | |
| | | @ApiModelProperty("职务") |
| | | @TableField("job") |
| | | private String job; |
| | | |
| | | @ApiModelProperty("公司电话") |
| | | @TableField("company_telephone") |
| | | private String companyTelephone; |
| | | |
| | | @ApiModelProperty("传真") |
| | | @TableField("fax_num") |
| | | private String faxNum; |
| | | |
| | | @ApiModelProperty("邮箱") |
| | | @TableField("email") |
| | | private String email; |
| | | |
| | | @ApiModelProperty("毕业学校") |
| | | @TableField("graduation_school") |
| | | private String graduationSchool; |
| | | |
| | | @ApiModelProperty("学历") |
| | | @TableField("degree") |
| | | private String degree; |
| | | |
| | | @ApiModelProperty("专业") |
| | | @TableField("speciality") |
| | | private String speciality; |
| | | |
| | | @ApiModelProperty("当前专业") |
| | | @TableField("current_profession") |
| | | private String currentProfession; |
| | | |
| | | @ApiModelProperty("支撑安全") |
| | | @TableField("support_direction_safety") |
| | | private String supportDirectionSafety; |
| | | |
| | | @ApiModelProperty("支撑预防") |
| | | @TableField("support_direction_prevention") |
| | | private String supportDirectionPrevention; |
| | | |
| | | @ApiModelProperty("支持应急") |
| | | @TableField("support_direction_emergency") |
| | | private String supportDirectionEmergency; |
| | | |
| | | @ApiModelProperty("简述") |
| | | @TableField("resume_key") |
| | | private String resumeKey; |
| | | |
| | | @TableField("paper_situation_key") |
| | | private String paperSituationKey; |
| | | |
| | | @TableField("reward_key") |
| | | private String rewardKey; |
| | | |
| | | @TableField("achievement_key") |
| | | private String achievementKey; |
| | | |
| | | @TableField("personal_opinion_key") |
| | | private String personalOpinionKey; |
| | | |
| | | @TableField("recommend_unit_opinion_key") |
| | | private String recommendUnitOpinionKey; |
| | | |
| | | @ApiModelProperty("删除标志(0代表存在,1代表删除,默认0)") |
| | | @TableField("del_flag") |
| | | private Integer delFlag; |
| | | |
| | | @ApiModelProperty("创建人") |
| | | @TableField("create_by") |
| | | private String createBy; |
| | | |
| | | @ApiModelProperty("创建时间") |
| | | @TableField("create_time") |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty("修改人") |
| | | @TableField("update_by") |
| | | private String updateBy; |
| | | |
| | | @ApiModelProperty("修改时间") |
| | | @TableField("update_time") |
| | | private LocalDateTime updateTime; |
| | | |
| | | @TableField("remark") |
| | | private String remark; |
| | | |
| | | |
| | | } |
| | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Getter; |
| | | import lombok.Setter; |
| | | import lombok.experimental.Accessors; |
| | | |
| | | import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; |
| | | |
| | |
| | | @Setter |
| | | @TableName("sys_law") |
| | | @ApiModel(value = "SysLaw对象", description = "法律法规表") |
| | | @Accessors(chain = true) |
| | | @JsonInclude(NON_NULL) |
| | | public class SysLaw implements Serializable { |
| | | |
| | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Getter; |
| | | import lombok.Setter; |
| | | import lombok.experimental.Accessors; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | |
| | |
| | | @Setter |
| | | @TableName("sys_notice") |
| | | @ApiModel(value = "SysNotice对象", description = "通知表") |
| | | @Accessors(chain = true) |
| | | @JsonInclude(NON_NULL) |
| | | public class SysNotice implements Serializable { |
| | | |
| | |
| | | @TableField("sort") |
| | | private Integer sort; |
| | | |
| | | @ApiModelProperty("地区类型(0是疆内,1是疆外,默认0)") |
| | | @TableField("region_type") |
| | | private Integer regionType; |
| | | |
| | | @TableField(exist = false) |
| | | private List<SysRegion> children; |
| | |
| | | import com.gkhy.assess.common.domain.BaseEntity; |
| | | import com.gkhy.assess.common.validate.AgencyGroup; |
| | | import com.gkhy.assess.common.validate.ExpertGroup; |
| | | import com.gkhy.assess.common.validate.MonitorGroup; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Getter; |
| | |
| | | import lombok.experimental.Accessors; |
| | | import org.hibernate.validator.constraints.Length; |
| | | |
| | | import javax.validation.Valid; |
| | | import javax.validation.constraints.NotBlank; |
| | | import javax.validation.constraints.NotNull; |
| | | import javax.validation.constraints.Pattern; |
| | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | @NotBlank(message = "登录账号不能为空") |
| | | @ApiModelProperty(value = "登录账号",required = true) |
| | | @NotBlank(message = "用户名不能为空") |
| | | @ApiModelProperty(value = "用户名",required = true) |
| | | @Length(min=5,max=16,message = "用户名长度需要在{min}和{max}之间") |
| | | @Pattern(regexp = "^[A-Za-z0-9]+$",message = "用户名只能由英文字母或者数字组成!") |
| | | @TableField("username") |
| | | private String username; |
| | | |
| | |
| | | @TableField("identity") |
| | | private Integer identity; |
| | | |
| | | @ApiModelProperty("用户类型(0代表工作人员,1代表领导,默认0)") |
| | | @NotNull(message = "用户类型不能为空",groups ={MonitorGroup.class} ) |
| | | @ApiModelProperty("用户类型(0代表工作人员,1代表领导,默认0)监管用户") |
| | | @TableField("user_type") |
| | | private Integer userType; |
| | | |
| | |
| | | |
| | | @NotBlank(message = "手机号码不能为空") |
| | | @Length(min = 11, max = 11, message = "手机号只能为11位") |
| | | @Pattern(regexp = "^1[345678]\\\\d{9}$",message = "手机号码有误!") |
| | | @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$",message = "手机号码有误!") |
| | | @ApiModelProperty(value = "手机号码",required = true) |
| | | @TableField("phone") |
| | | private String phone; |
| | |
| | | private String avatar; |
| | | |
| | | @NotBlank(message = "密码不能为空") |
| | | @ApiModelProperty(value = "密码",required = true) |
| | | @ApiModelProperty(value = "密码(base64)",required = true) |
| | | @TableField("password") |
| | | private String password; |
| | | |
| | |
| | | @TableField("del_flag") |
| | | private Integer delFlag; |
| | | |
| | | @NotBlank(message = "管辖区域不能为空",groups ={MonitorGroup.class} ) |
| | | @ApiModelProperty("管辖区域") |
| | | @TableField("manage_region") |
| | | private String manageRegion; |
| | |
| | | private Long agencyId; |
| | | |
| | | @NotNull(message = "专家类型不能为空",groups ={ExpertGroup.class} ) |
| | | @ApiModelProperty("专家类型") |
| | | @ApiModelProperty("专家类型(专家用户)(1安全评价,2检验检测)") |
| | | @TableField("expert_type") |
| | | private Integer expertType; |
| | | |
| | |
| | | @TableField("major") |
| | | private String major; |
| | | |
| | | @ApiModelProperty("审批状态(0审批通过,1待审批,2未通过 默认1)") |
| | | @TableField("approve") |
| | | private Integer approve; |
| | | @ApiModelProperty("审批状态(0暂存,1审核中,2审批通过,3审批驳回,4已作废 默认1)") |
| | | @TableField("state") |
| | | private Integer state; |
| | | |
| | | @ApiModelProperty("最后登录ip") |
| | | @TableField("login_ip") |
| | |
| | | @TableField("pwd_update_date") |
| | | private LocalDateTime pwdUpdateDate; |
| | | |
| | | @Valid |
| | | @NotNull(message = "机构不能为空",groups ={AgencyGroup.class} ) |
| | | @ApiModelProperty("机构对象") |
| | | @ApiModelProperty("机构对象,只限创建机构用户传") |
| | | @TableField(exist = false) |
| | | private SysAgency agency; |
| | | |
| | | @NotNull(message = "社保照片不能为空",groups ={ExpertGroup.class} ) |
| | | @ApiModelProperty("社保照片路径列表") |
| | | @ApiModelProperty("社保照片路径列表,创建专家传") |
| | | @TableField(exist = false) |
| | | private List<SysAttach> socialAttach; |
| | | |
| | | @NotNull(message = "医保照片不能为空",groups ={ExpertGroup.class} ) |
| | | @ApiModelProperty("医保照片路径列表") |
| | | @ApiModelProperty("医保照片路径列表,创建专家传") |
| | | @TableField(exist = false) |
| | | private List<SysAttach> medicalAttach; |
| | | |
| | | @NotNull(message = "工资照片不能为空",groups ={ExpertGroup.class} ) |
| | | @ApiModelProperty("工资照片路径列表") |
| | | @ApiModelProperty("工资照片路径列表,创建专家传") |
| | | @TableField(exist = false) |
| | | private List<SysAttach> salaryAttach; |
| | | |
| | |
| | | @Accessors(chain = true) //链式写法 |
| | | @ApiModel(value = "上传文件返回对象", description = "上传文件返回对象") |
| | | public class UploadObjectVO { |
| | | @ApiModelProperty("文件名称,前端访问图片链接格式:http://ip:port/api/images/文件保存相对路径") |
| | | @ApiModelProperty("文件名称,前端访问图片链接格式:http://ip:port/api/文件保存相对路径") |
| | | private String filename; |
| | | |
| | | @ApiModelProperty("文件保存相对路径") |
对比新文件 |
| | |
| | | package com.gkhy.assess.system.mapper; |
| | | |
| | | import com.gkhy.assess.system.domain.SysExpertClassify; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * 系统专家分类表 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author kzy |
| | | * @since 2023-11-27 16:33:33 |
| | | */ |
| | | @Mapper |
| | | public interface SysExpertClassifyMapper extends BaseMapper<SysExpertClassify> { |
| | | |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.system.mapper; |
| | | |
| | | import com.gkhy.assess.system.domain.SysExpertInfo; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 系统专家信息表 Mapper 接口 |
| | | * </p> |
| | | * |
| | | * @author kzy |
| | | * @since 2023-11-27 16:33:33 |
| | | */ |
| | | @Mapper |
| | | public interface SysExpertInfoMapper extends BaseMapper<SysExpertInfo> { |
| | | /** |
| | | * 根据条件获取专家信息列表 |
| | | * @param expertInfo |
| | | * @return |
| | | */ |
| | | List<SysExpertInfo> expertInfoList(SysExpertInfo expertInfo); |
| | | |
| | | /** |
| | | * 根据id card获取专家信息 |
| | | * @param idCard |
| | | * @return |
| | | */ |
| | | SysExpertInfo checkIdcardUnique(String idCard); |
| | | |
| | | /** |
| | | * 批量删除专家信息 |
| | | * @param expertIds |
| | | * @return |
| | | */ |
| | | int deleteBatchByIds(Long[] expertIds); |
| | | } |
| | |
| | | * @param name |
| | | * @return |
| | | */ |
| | | SysRegion checkRegionUnique(@Param("name") String name, @Param("parentId")Long parentId); |
| | | SysRegion checkRegionUnique(@Param("name") String name,@Param("regionType")Integer regionType, @Param("parentId")Long parentId); |
| | | } |
| | |
| | | */ |
| | | SysUser checkEmailUnique(String email); |
| | | |
| | | /** |
| | | * 根据id获取用户详情 |
| | | * @param userId |
| | | * @return |
| | | */ |
| | | SysUser getUserInfoById(Long userId); |
| | | } |
| | |
| | | * @param agency |
| | | * @return |
| | | */ |
| | | Boolean checkAgencyNameUnique(SysAgency agency); |
| | | boolean checkAgencyNameUnique(SysAgency agency); |
| | | |
| | | /** |
| | | * 根据id获取机构详情 |
| | |
| | | * @return |
| | | */ |
| | | SysAgency getAgencyById(Long agencyId); |
| | | |
| | | /** |
| | | * 修改公示状态 |
| | | * @param agency |
| | | * @return |
| | | */ |
| | | boolean changePublic(SysAgency agency); |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.system.service; |
| | | |
| | | import com.gkhy.assess.system.domain.SysExpertClassify; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 系统专家分类表 服务类 |
| | | * </p> |
| | | * |
| | | * @author kzy |
| | | * @since 2023-11-27 16:33:33 |
| | | */ |
| | | public interface SysExpertClassifyService extends IService<SysExpertClassify> { |
| | | /** |
| | | * 专家分类列表 |
| | | * @param expertClassify |
| | | * @return |
| | | */ |
| | | List<SysExpertClassify> classifyTree(SysExpertClassify expertClassify); |
| | | |
| | | /** |
| | | * 修改分类 |
| | | * @param expertClassify |
| | | * @return |
| | | */ |
| | | int modClassify(SysExpertClassify expertClassify); |
| | | |
| | | /** |
| | | * 删除分类 |
| | | * @param classifyId |
| | | * @return |
| | | */ |
| | | int delClassify(Long classifyId); |
| | | |
| | | /** |
| | | * 新增分类 |
| | | * @param expertClassify |
| | | * @return |
| | | */ |
| | | int addClassify(SysExpertClassify expertClassify); |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.system.service; |
| | | |
| | | import com.gkhy.assess.common.api.CommonPage; |
| | | import com.gkhy.assess.system.domain.SysExpertInfo; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * 系统专家信息表 服务类 |
| | | * </p> |
| | | * |
| | | * @author kzy |
| | | * @since 2023-11-27 16:33:33 |
| | | */ |
| | | public interface SysExpertInfoService extends IService<SysExpertInfo> { |
| | | /** |
| | | * 分页获取专家信息 |
| | | * @param expertInfo |
| | | * @return |
| | | */ |
| | | CommonPage exportInfoList(SysExpertInfo expertInfo); |
| | | |
| | | /** |
| | | * 新增专家信息 |
| | | * @param expertInfo |
| | | * @return |
| | | */ |
| | | int addExpertInfo(SysExpertInfo expertInfo); |
| | | |
| | | /** |
| | | * 修改专家信息 |
| | | * @param expertInfo |
| | | * @return |
| | | */ |
| | | int modExpertInfo(SysExpertInfo expertInfo); |
| | | |
| | | /** |
| | | * 删除专家信息 |
| | | * @param expertId |
| | | * @return |
| | | */ |
| | | int delExpertInfo(Long expertId); |
| | | |
| | | /** |
| | | * 批量删除专家信息 |
| | | * @param expertIds |
| | | * @return |
| | | */ |
| | | int delExpertInfoBatch(Long[] expertIds); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | int changeLawStatus(SysLaw law); |
| | | |
| | | /** |
| | | * 校验法律法规数据 |
| | | * @param lawId |
| | | * @return |
| | | */ |
| | | SysLaw checkLawDataScope(Long lawId); |
| | | } |
| | |
| | | */ |
| | | int changeNoticeStatus(SysNotice notice); |
| | | |
| | | /** |
| | | * 校验数据 |
| | | * @param noticeId |
| | | * @return |
| | | */ |
| | | SysNotice checkNoticeDataScope(Long noticeId); |
| | | |
| | | } |
| | |
| | | SysUser getUserByUsernamePhone(String username); |
| | | |
| | | /** |
| | | * 新增监管用户 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | int addMonitor(SysUser user); |
| | | |
| | | /** |
| | | * 机构用户注册 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | int agencyRegister(SysUser user); |
| | | int addAgency(SysUser user); |
| | | |
| | | /** |
| | | * 创建专家 |
| | |
| | | */ |
| | | int deleteUserById(Long userId); |
| | | |
| | | /** |
| | | * 编辑监管用户 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | int editMonitor(SysUser user); |
| | | |
| | | /** |
| | | * 编辑机构用户 |
| | |
| | | * 校验用户是否有数据权限 |
| | | * @param userId |
| | | */ |
| | | void checkUserDataScope(Long userId); |
| | | SysUser checkUserDataScope(Long userId); |
| | | |
| | | /** |
| | | * 导入用户数据 |
| | |
| | | */ |
| | | boolean changeApprove(SysUser user); |
| | | |
| | | /** |
| | | * 根据id获取用户详情信息 |
| | | * @param userId |
| | | * @return |
| | | */ |
| | | SysUser getUserInfoById(Long userId); |
| | | |
| | | } |
| | |
| | | package com.gkhy.assess.system.service.impl; |
| | | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gkhy.assess.common.api.CommonPage; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import com.gkhy.assess.common.utils.PageUtil; |
| | | import com.gkhy.assess.system.domain.SysAgency; |
| | | import com.gkhy.assess.system.domain.SysUser; |
| | | import com.gkhy.assess.system.mapper.SysAgencyMapper; |
| | | import com.gkhy.assess.system.service.SysAgencyService; |
| | | import com.gkhy.assess.system.utils.ShiroUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Boolean checkAgencyNameUnique(SysAgency agency) { |
| | | public boolean checkAgencyNameUnique(SysAgency agency) { |
| | | Long agencyId = agency.getId()==null? -1L : agency.getId(); |
| | | SysAgency info = baseMapper.checkAgencyNameUnique(agency.getName()); |
| | | if (info!=null && info.getId().longValue() != agencyId.longValue()) |
| | |
| | | public SysAgency getAgencyById(Long agencyId) { |
| | | return baseMapper.getAgencyById(agencyId); |
| | | } |
| | | |
| | | @Override |
| | | public boolean changePublic(SysAgency agency) { |
| | | checkAgencyDataScope(agency.getId()); |
| | | SysAgency ay=new SysAgency().setId(agency.getId()).setPublication(agency.getPublication()); |
| | | ay.setUpdateBy(ShiroUtils.getSysUser().getUsername()); |
| | | return updateById(ay); |
| | | } |
| | | |
| | | public SysAgency checkAgencyDataScope(Long agencyId) { |
| | | if(agencyId==null){ |
| | | throw new ApiException("机构id为空!"); |
| | | } |
| | | SysAgency agency = baseMapper.getAgencyById(agencyId); |
| | | if (ObjectUtil.isNull(agency)) |
| | | { |
| | | throw new ApiException("机构数据不存在!"); |
| | | } |
| | | return agency; |
| | | } |
| | | } |
| | |
| | | package com.gkhy.assess.system.service.impl; |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import com.gkhy.assess.system.domain.vo.UploadObjectVO; |
| | | import com.gkhy.assess.system.service.SysCommonService; |
| | |
| | | import java.io.File; |
| | | import java.io.FileNotFoundException; |
| | | import java.io.IOException; |
| | | import java.util.Date; |
| | | import java.util.UUID; |
| | | |
| | | @Service |
| | | public class SysCommonServiceImpl implements SysCommonService { |
| | | |
| | | @Value("${image.upload_file}") |
| | | private String uploadFilePath; |
| | | |
| | | @Value("${image.upload_image}") |
| | | private String uploadImagePath; |
| | | @Value("${image.upload_path}") |
| | | private String uploadPath; |
| | | |
| | | @Override |
| | | public UploadObjectVO uploadFile(MultipartFile file) { |
| | |
| | | String systemDir=System.getProperty("user.dir"); |
| | | String filePath=systemDir+File.separator+path; |
| | | File dirFile=new File(filePath); |
| | | if(!dirFile.isFile()){ |
| | | throw new ApiException("非文件,不能删除"); |
| | | } |
| | | if(!dirFile.exists()){ |
| | | throw new ApiException("文件不存在"); |
| | | } |
| | | if(!dirFile.isFile()){ |
| | | throw new ApiException("非文件,不能删除"); |
| | | } |
| | | dirFile.delete(); |
| | | return true; |
| | |
| | | String subfix=filename.substring(filename.lastIndexOf(".")); |
| | | filename= UUID.randomUUID().toString().replace("-","")+subfix; |
| | | String systemDir=System.getProperty("user.dir"); |
| | | String filePath=""; |
| | | if(checkImageType(subfix)){ |
| | | filePath=uploadImagePath; |
| | | }else{ |
| | | filePath=uploadFilePath; |
| | | } |
| | | String dateStr= DateUtil.format(new Date(),"yyyyMMdd"); |
| | | String filePath=uploadPath+File.separator+dateStr; |
| | | File dirFile=new File(filePath); |
| | | if(!dirFile.exists()){ |
| | | dirFile.mkdirs(); |
| | |
| | | } catch (IOException e) { |
| | | throw new ApiException("发生错误,请联系管理员"); |
| | | } |
| | | filePath=filePath.replace("\\","/"); |
| | | UploadObjectVO uploadObjectVO=new UploadObjectVO().setFilename(filename) |
| | | .setPath(filePath); |
| | | return uploadObjectVO; |
| | |
| | | ".jpeg".equalsIgnoreCase(subfix)|| |
| | | ".png".equalsIgnoreCase(subfix)|| |
| | | ".bmp".equalsIgnoreCase(subfix)|| |
| | | ".tif".equalsIgnoreCase(subfix) |
| | | ".tif".equalsIgnoreCase(subfix)|| |
| | | ".jfif".equalsIgnoreCase(subfix)|| |
| | | ".webp".equalsIgnoreCase(subfix)|| |
| | | ".gif".equalsIgnoreCase(subfix) |
| | | ){ |
| | | return true; |
| | | } |
| | |
| | | package com.gkhy.assess.system.service.impl; |
| | | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gkhy.assess.common.constant.CacheConstant; |
| | | import com.gkhy.assess.common.utils.RedisUtils; |
| | | import com.gkhy.assess.common.utils.StringUtils; |
| | | import com.gkhy.assess.system.domain.SysConfig; |
| | | import com.gkhy.assess.system.mapper.SysConfigMapper; |
| | | import com.gkhy.assess.system.service.SysConfigService; |
| | |
| | | public String getConfigByKey(String configKey) { |
| | | String redisKey=getCacheKey(configKey); |
| | | String configValue= (String) redisUtils.get(redisKey); |
| | | if(StrUtil.isNotEmpty(configValue)){ |
| | | if(StringUtils.isNotEmpty(configValue)){ |
| | | return configValue; |
| | | } |
| | | SysConfig retConfig=baseMapper.getConfig(new SysConfig().setConfigKey(configKey)); |
| | |
| | | redisUtils.set(redisKey,retConfig.getConfigValue()); |
| | | return retConfig.getConfigValue(); |
| | | } |
| | | return StrUtil.EMPTY; |
| | | return StringUtils.EMPTY; |
| | | } |
| | | |
| | | private String getCacheName(){ |
| | |
| | | import com.gkhy.assess.system.mapper.SysDictTypeMapper; |
| | | import com.gkhy.assess.system.service.SysDictTypeService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gkhy.assess.system.utils.ShiroUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = RuntimeException.class) |
| | | // @Transactional(rollbackFor = RuntimeException.class) |
| | | public int editDictType(SysDictType dict) { |
| | | SysDictType oldDict= baseMapper.getDictTypeById(dict.getId()); |
| | | dictDataMapper.updateDictDataDictType(oldDict.getDictType(), dict.getDictType()); |
| | | dict.setDictType(oldDict.getDictType());//字典类型不能修改 |
| | | boolean b=updateById(dict); |
| | | if(!b){ |
| | | throw new ApiException("修改数据字典类型失败"); |
| | |
| | | |
| | | @Override |
| | | public int changeDictTypeStatus(SysDictType dictType) { |
| | | boolean b=updateById(dictType); |
| | | if(!b){ |
| | | throw new ApiException("修改数据字典类型失败"); |
| | | } |
| | | return 1; |
| | | SysDictType dt=new SysDictType().setId(dictType.getId()).setDictType(dictType.getDictType()); |
| | | dt.setUpdateBy(ShiroUtils.getSysUser().getUsername()); |
| | | return baseMapper.updateById(dt); |
| | | } |
| | | |
| | | @Override |
对比新文件 |
| | |
| | | package com.gkhy.assess.system.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gkhy.assess.common.enums.DeleteFlagEnum; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import com.gkhy.assess.common.utils.StringUtils; |
| | | import com.gkhy.assess.system.domain.SysExpertClassify; |
| | | import com.gkhy.assess.system.mapper.SysExpertClassifyMapper; |
| | | import com.gkhy.assess.system.service.SysExpertClassifyService; |
| | | import com.gkhy.assess.system.utils.ShiroUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | | * 系统专家分类表 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author kzy |
| | | * @since 2023-11-27 16:33:33 |
| | | */ |
| | | @Service |
| | | public class SysExpertClassifyServiceImpl extends ServiceImpl<SysExpertClassifyMapper, SysExpertClassify> implements SysExpertClassifyService { |
| | | |
| | | @Override |
| | | public List<SysExpertClassify> classifyTree(SysExpertClassify expertClassify) { |
| | | LambdaQueryWrapper<SysExpertClassify> lambdaQueryWrapper = Wrappers.<SysExpertClassify>lambdaQuery(); |
| | | if(StringUtils.isNotBlank(expertClassify.getClassifyName())){ |
| | | lambdaQueryWrapper.like(SysExpertClassify::getClassifyName,expertClassify.getClassifyName()); |
| | | } |
| | | List<SysExpertClassify> classifies= list(lambdaQueryWrapper); |
| | | //筛选出所有一级标签 |
| | | return classifies.stream() |
| | | .filter(classifyEntity -> classifyEntity.getParentId()==0L) |
| | | .peek(classifyEntity -> classifyEntity.setChildren(this.listClassifyChildren(classifyEntity,classifies))) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | public List<SysExpertClassify> listClassifyChildren(SysExpertClassify classify,List<SysExpertClassify> classifies){ |
| | | //递归查找子类 |
| | | return classifies.stream() |
| | | .filter(classifyEntity -> Objects.equals(classifyEntity.getParentId(), classify.getClassifyId())) |
| | | .peek(classifyEntity -> classifyEntity.setChildren(this.listClassifyChildren(classifyEntity,classifies))) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public int modClassify(SysExpertClassify expertClassify) { |
| | | expertClassify.setUpdateBy(ShiroUtils.getSysUser().getUsername()); |
| | | boolean b=updateById(expertClassify); |
| | | if(!b){ |
| | | throw new ApiException("修改专家分类失败"); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | @Override |
| | | public int delClassify(Long classifyId) { |
| | | SysExpertClassify classify = new SysExpertClassify(); |
| | | classify.setClassifyId(classifyId); |
| | | classify.setDelFlag(DeleteFlagEnum.DELETED.getCode()); |
| | | boolean b=updateById(classify); |
| | | if(!b){ |
| | | throw new ApiException("删除专家分类失败"); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | @Override |
| | | public int addClassify(SysExpertClassify expertClassify) { |
| | | expertClassify.setCreateBy(ShiroUtils.getSysUser().getUsername()); |
| | | boolean b=save(expertClassify); |
| | | if(!b){ |
| | | throw new ApiException("新增专家分类失败"); |
| | | } |
| | | return 1; |
| | | } |
| | | } |
对比新文件 |
| | |
| | | package com.gkhy.assess.system.service.impl; |
| | | |
| | | import com.gkhy.assess.common.api.CommonPage; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import com.gkhy.assess.common.utils.PageUtil; |
| | | import com.gkhy.assess.system.domain.SysAgency; |
| | | import com.gkhy.assess.system.domain.SysExpertInfo; |
| | | import com.gkhy.assess.system.domain.SysUser; |
| | | import com.gkhy.assess.system.mapper.SysExpertInfoMapper; |
| | | import com.gkhy.assess.system.service.SysExpertInfoService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gkhy.assess.system.utils.ShiroUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 系统专家信息表 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author kzy |
| | | * @since 2023-11-27 16:33:33 |
| | | */ |
| | | @Service |
| | | public class SysExpertInfoServiceImpl extends ServiceImpl<SysExpertInfoMapper, SysExpertInfo> implements SysExpertInfoService { |
| | | |
| | | @Override |
| | | public CommonPage exportInfoList(SysExpertInfo expertInfo) { |
| | | PageUtil.startPage(); |
| | | List<SysExpertInfo> agencyList=baseMapper.expertInfoList(expertInfo); |
| | | return CommonPage.restPage(agencyList); |
| | | } |
| | | |
| | | @Override |
| | | public int addExpertInfo(SysExpertInfo expertInfo) { |
| | | if(!checkIdCardUnique(new SysExpertInfo().setIdCard(expertInfo.getIdCard()))){ |
| | | throw new ApiException(expertInfo.getIdCard()+"身份证号码已经存在"); |
| | | } |
| | | expertInfo.setCreateBy(ShiroUtils.getSysUser().getUsername()); |
| | | boolean b=save(expertInfo); |
| | | if(!b){ |
| | | throw new ApiException("新增专家信息失败"); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | @Override |
| | | public int modExpertInfo(SysExpertInfo expertInfo) { |
| | | if(!checkIdCardUnique(expertInfo)){ |
| | | throw new ApiException(expertInfo.getIdCard()+"身份证号码已经存在"); |
| | | } |
| | | boolean b=updateById(expertInfo); |
| | | if(!b){ |
| | | throw new ApiException("修改专家信息失败"); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | @Override |
| | | public int delExpertInfo(Long expertId) { |
| | | SysExpertInfo expertInfo = new SysExpertInfo(); |
| | | expertInfo.setExpertId(expertId); |
| | | expertInfo.setDelFlag(1); |
| | | boolean b= updateById(expertInfo); |
| | | if(!b){ |
| | | throw new ApiException("删除专家信息失败"); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | @Override |
| | | public int delExpertInfoBatch(Long[] expertIds) { |
| | | return baseMapper.deleteBatchByIds(expertIds); |
| | | } |
| | | |
| | | public boolean checkIdCardUnique(SysExpertInfo expertInfo){ |
| | | Long expertId = expertInfo.getExpertId()==null? -1L : expertInfo.getExpertId(); |
| | | SysExpertInfo info = baseMapper.checkIdcardUnique(expertInfo.getIdCard()); |
| | | if (info!=null && info.getExpertId().longValue() != expertId.longValue()) |
| | | { |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | |
| | | package com.gkhy.assess.system.service.impl; |
| | | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.gkhy.assess.common.api.CommonPage; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import com.gkhy.assess.common.utils.PageUtil; |
| | |
| | | import com.gkhy.assess.system.mapper.SysLawMapper; |
| | | import com.gkhy.assess.system.service.SysLawService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gkhy.assess.system.utils.ShiroUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | |
| | | |
| | | @Override |
| | | public int changeLawStatus(SysLaw law) { |
| | | return editLaw(law); |
| | | checkLawDataScope(law.getId()); |
| | | SysLaw lw=new SysLaw().setId(law.getId()).setStatus(law.getStatus()); |
| | | lw.setUpdateBy(ShiroUtils.getSysUser().getUsername()); |
| | | return baseMapper.updateById(lw); |
| | | } |
| | | |
| | | @Override |
| | | public SysLaw checkLawDataScope(Long lawId) { |
| | | if(lawId==null){ |
| | | throw new ApiException("法律法规id为空!"); |
| | | } |
| | | SysLaw law = baseMapper.getLawById(lawId); |
| | | if (ObjectUtil.isNull(law)) |
| | | { |
| | | throw new ApiException("law数据不存在!"); |
| | | } |
| | | return law; |
| | | } |
| | | } |
| | |
| | | package com.gkhy.assess.system.service.impl; |
| | | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gkhy.assess.common.api.CommonPage; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import com.gkhy.assess.common.utils.PageUtil; |
| | | import com.gkhy.assess.system.domain.SysNotice; |
| | | import com.gkhy.assess.system.domain.SysUser; |
| | | import com.gkhy.assess.system.mapper.SysNoticeMapper; |
| | | import com.gkhy.assess.system.service.SysNoticeService; |
| | | import com.gkhy.assess.system.utils.ShiroUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | |
| | | |
| | | @Override |
| | | public int changeNoticeStatus(SysNotice notice) { |
| | | return editNotice(notice); |
| | | checkNoticeDataScope(notice.getId()); |
| | | SysNotice nc=new SysNotice().setId(notice.getId()).setStatus(notice.getStatus()); |
| | | nc.setUpdateBy(ShiroUtils.getSysUser().getUsername()); |
| | | return baseMapper.updateById(nc); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public SysNotice checkNoticeDataScope(Long noticeId) { |
| | | if(noticeId==null){ |
| | | throw new ApiException("通知id为空!"); |
| | | } |
| | | SysNotice notice = baseMapper.getNoticeById(noticeId); |
| | | if (ObjectUtil.isNull(notice)) |
| | | { |
| | | throw new ApiException("通知数据不存在!"); |
| | | } |
| | | return notice; |
| | | } |
| | | } |
| | |
| | | package com.gkhy.assess.system.service.impl; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gkhy.assess.common.constant.CacheConstant; |
| | | import com.gkhy.assess.common.enums.RegionTypeEnum; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import com.gkhy.assess.common.utils.RedisUtils; |
| | | import com.gkhy.assess.common.utils.StringUtils; |
| | | import com.gkhy.assess.system.domain.SysRegion; |
| | | import com.gkhy.assess.system.domain.SysUser; |
| | | import com.gkhy.assess.system.mapper.SysRegionMapper; |
| | | import com.gkhy.assess.system.service.SysRegionService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.data.domain.Sort; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.Comparator; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | @Service |
| | | public class SysRegionServiceImpl extends ServiceImpl<SysRegionMapper, SysRegion> implements SysRegionService { |
| | | |
| | | @Autowired |
| | | private RedisUtils redisUtils; |
| | | @Override |
| | | public List<SysRegion> regionTree(SysRegion region) { |
| | | LambdaQueryWrapper<SysRegion> lambdaQueryWrapper = Wrappers.<SysRegion>lambdaQuery(); |
| | | if(StrUtil.isNotBlank(region.getName())){ |
| | | if(StringUtils.isNotBlank(region.getName())){ |
| | | lambdaQueryWrapper.like(SysRegion::getName,region.getName()); |
| | | } |
| | | Integer regionType=region.getRegionType(); |
| | | if(regionType==null){ |
| | | regionType= RegionTypeEnum.INSIDE.getCode(); |
| | | } |
| | | String key=redisUtils.generateKey(CacheConstant.SYS_REGION_KEY+regionType); |
| | | List<SysRegion> regionList= (List<SysRegion>) redisUtils.get(key); |
| | | if(regionList!=null&®ionList.size()>0){ |
| | | return regionList; |
| | | } |
| | | lambdaQueryWrapper.eq(SysRegion::getRegionType,regionType); |
| | | lambdaQueryWrapper.orderBy(true, true,SysRegion::getSort); |
| | | List<SysRegion> regions= list(lambdaQueryWrapper); |
| | | //筛选出所有一级标签 |
| | | return regions.stream() |
| | | .filter(tagEntity -> tagEntity.getParentId()==0L) |
| | | .peek(tagEntity -> tagEntity.setChildren(this.listRegionChildren(tagEntity,regions))) |
| | | regionList= regions.stream() |
| | | .filter(regionEntity -> regionEntity.getParentId()==0L) |
| | | .peek(regionEntity -> regionEntity.setChildren(this.listRegionChildren(regionEntity,regions))) |
| | | .sorted(Comparator.comparing(SysRegion::getSort)) |
| | | .collect(Collectors.toList()); |
| | | redisUtils.set(key,regionList,60, TimeUnit.MINUTES); |
| | | return regionList; |
| | | } |
| | | |
| | | public List<SysRegion> listRegionChildren(SysRegion region,List<SysRegion> regions){ |
| | |
| | | |
| | | @Override |
| | | public int addRegion(SysRegion region) { |
| | | if(!checkRegionUnique(new SysRegion().setName(region.getName()))){ |
| | | if(!checkRegionUnique(new SysRegion().setName(region.getName()).setRegionType(RegionTypeEnum.INSIDE.getCode()))){ |
| | | throw new ApiException("已存在相同地区名称"); |
| | | } |
| | | region.setRegionType(RegionTypeEnum.INSIDE.getCode()); |
| | | boolean b=save(region); |
| | | if(!b){ |
| | | throw new ApiException("新增地区失败"); |
| | | } |
| | | deleteRedisCache(RegionTypeEnum.INSIDE.getCode()); |
| | | return 0; |
| | | } |
| | | |
| | | private void deleteRedisCache(Integer regionType){ |
| | | String key=redisUtils.generateKey(CacheConstant.SYS_REGION_KEY+regionType); |
| | | redisUtils.del(key); |
| | | } |
| | | |
| | | public boolean checkRegionUnique(SysRegion region){ |
| | | Long userId = region.getId()==null? -1L : region.getId(); |
| | | SysRegion info = baseMapper.checkRegionUnique(region.getName(),region.getParentId()==null?0L:region.getParentId()); |
| | | SysRegion info = baseMapper.checkRegionUnique(region.getName(),region.getRegionType(),region.getParentId()==null?0L:region.getParentId()); |
| | | if (info!=null && info.getId().longValue() != userId.longValue()) |
| | | { |
| | | return false; |
| | |
| | | |
| | | @Override |
| | | public int editRegion(SysRegion region) { |
| | | if(!checkRegionUnique(new SysRegion().setName(region.getName()))){ |
| | | if(!region.getRegionType().equals(RegionTypeEnum.INSIDE.getCode())){ |
| | | throw new ApiException("疆外数据不能修改"); |
| | | } |
| | | if(!checkRegionUnique(region)){ |
| | | throw new ApiException("已存在相同地区名称"); |
| | | } |
| | | boolean b=updateById(region); |
| | | if(!b){ |
| | | throw new ApiException("修改地区失败"); |
| | | } |
| | | deleteRedisCache(RegionTypeEnum.INSIDE.getCode()); |
| | | return 0; |
| | | } |
| | | |
| | |
| | | Long count=count(Wrappers.<SysRegion>lambdaQuery() |
| | | .eq(true,SysRegion::getParentId,reginId)); |
| | | if(count>0){ |
| | | throw new ApiException("下级存在区县数据"); |
| | | throw new ApiException("下级存在地区数据,不能删除"); |
| | | } |
| | | SysRegion region=getById(reginId); |
| | | if(region.getRegionType().equals(RegionTypeEnum.OUTSIDE.getCode())){ |
| | | throw new ApiException("疆外地区数据,不能删除"); |
| | | } |
| | | boolean b=removeById(reginId); |
| | | if(!b){ |
| | | throw new ApiException("删除地区失败"); |
| | | } |
| | | deleteRedisCache(RegionTypeEnum.INSIDE.getCode()); |
| | | return 0; |
| | | } |
| | | |
| | |
| | | package com.gkhy.assess.system.service.impl; |
| | | |
| | | import cn.hutool.core.codec.Base64; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gkhy.assess.common.api.CommonPage; |
| | | import com.gkhy.assess.common.constant.CacheConstant; |
| | |
| | | import com.gkhy.assess.common.domain.vo.LoginBody; |
| | | import com.gkhy.assess.common.enums.AttachTypeEnum; |
| | | import com.gkhy.assess.common.enums.UserIdentityEnum; |
| | | import com.gkhy.assess.common.enums.UserTypeEnum; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import com.gkhy.assess.common.utils.BeanValidators; |
| | | import com.gkhy.assess.common.utils.JwtTokenUtil; |
| | | import com.gkhy.assess.common.utils.PageUtil; |
| | | import com.gkhy.assess.common.utils.RedisUtils; |
| | | import com.gkhy.assess.system.domain.*; |
| | | import com.gkhy.assess.common.utils.*; |
| | | import com.gkhy.assess.system.domain.SysAgency; |
| | | import com.gkhy.assess.system.domain.SysAttach; |
| | | import com.gkhy.assess.system.domain.SysUser; |
| | | import com.gkhy.assess.system.mapper.SysAgencyMapper; |
| | | import com.gkhy.assess.system.mapper.SysUserMapper; |
| | | import com.gkhy.assess.system.service.SysAgencyService; |
| | | import com.gkhy.assess.system.service.SysAttachService; |
| | | import com.gkhy.assess.system.service.SysConfigService; |
| | | import com.gkhy.assess.system.utils.ShiroUtils; |
| | | import com.gkhy.assess.system.service.SysUserService; |
| | | import com.gkhy.assess.system.utils.ShiroUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.apache.shiro.authc.*; |
| | | import org.apache.shiro.subject.Subject; |
| | |
| | | import javax.validation.Validator; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | |
| | | /** |
| | |
| | | private HttpServletRequest request; |
| | | @Autowired |
| | | private SysAgencyMapper agencyMapper; |
| | | |
| | | @Autowired |
| | | private SysAgencyService agencyService; |
| | | @Autowired |
| | | private SysAttachService attachService; |
| | | |
| | |
| | | @Override |
| | | public AccountVO login(LoginBody loginBody) { |
| | | // 验证码校验 |
| | | // validateCaptcha(loginBody.getUsername(), loginBody.getCode(), loginBody.getUuid()); |
| | | UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(loginBody.getUsername(), loginBody.getPassword(), false); |
| | | // validateCaptcha(loginBody.getUsername(), loginBody.getCode(), loginBody.getUuid()); |
| | | UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(loginBody.getUsername(), Base64.decodeStr(loginBody.getPassword()), false); |
| | | Subject subject= SecurityUtils.getSubject(); |
| | | String msg ; |
| | | try { |
| | |
| | | |
| | | String token = JwtTokenUtil.sign(sysUser.getUsername(),sysUser.getPassword()); |
| | | accountVO.setToken(token); |
| | | String key= redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+JwtTokenUtil.md5Encode(token)); |
| | | // 设置超时时间 |
| | | redisUtils.set(key,token); |
| | | redisUtils.expire(key,JwtTokenUtil.EXPIRATION*2/1000); |
| | | cacheUserToken(sysUser.getUsername(),token); |
| | | return accountVO; |
| | | }catch (UnknownAccountException | IncorrectCredentialsException uae){ |
| | | throw new ApiException("用户名/密码错误,请重新输入"); |
| | | } catch (LockedAccountException lae) { // 账号已被锁定 |
| | | msg = "账号已被锁定"; |
| | | throw new ApiException(msg); |
| | | } catch (AuthenticationException ae) { // 其他身份验证异常 |
| | | msg = "用户认证失败"; |
| | | }catch (AuthenticationException ae) { // 其他身份验证异常 |
| | | msg = "用户认证失败:"+ae.getMessage(); |
| | | throw new ApiException(msg); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 清空旧的登录信息,保证同时只有一个用户再登录,后登录用户会挤掉前一个用户 |
| | | * @param username |
| | | */ |
| | | public void cacheUserToken(String username,String newToken){ |
| | | |
| | | // String userKey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + username); |
| | | // String oldToken = (String) redisUtils.get(userKey); |
| | | // if (StrUtil.isNotBlank(oldToken)) { |
| | | // String oldTokenkey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + JwtTokenUtil.md5Encode(oldToken)); |
| | | // redisUtils.del(oldTokenkey); |
| | | // redisUtils.del(userKey); |
| | | // } |
| | | // redisUtils.set(userKey, newToken,(JwtTokenUtil.EXPIRATION*2/1000)+2); |
| | | |
| | | |
| | | String tokenKey= redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+JwtTokenUtil.md5Encode(newToken)); |
| | | // 设置超时时间 |
| | | redisUtils.set(tokenKey,newToken); |
| | | redisUtils.expire(tokenKey,JwtTokenUtil.EXPIRATION*2/1000); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | public void validateCaptcha(String username, String code, String uuid) |
| | | { |
| | | if(StrUtil.isBlank(code)||StrUtil.isBlank(uuid)){ |
| | | if(StringUtils.isBlank(code)||StringUtils.isBlank(uuid)){ |
| | | throw new ApiException("验证码或验证码标识为空"); |
| | | } |
| | | String verifyKey = CacheConstant.CAPTCHA_CODE_KEY +uuid; |
| | | String captcha = (String) redisUtils.get(verifyKey); |
| | | redisUtils.del(verifyKey); |
| | | if (StrUtil.isBlank(captcha)) |
| | | if (StringUtils.isBlank(captcha)) |
| | | { |
| | | throw new ApiException("验证码已失效"); |
| | | } |
| | |
| | | return sysUser; |
| | | } |
| | | |
| | | public void delCacheByUsername(String username){ |
| | | String key=redisUtils.generateKey(CacheConstant.SYS_USER_NAME+":"+username); |
| | | redisUtils.del(key); |
| | | } |
| | | |
| | | @Override |
| | | public SysUser getUserByUsernamePhone(String username) { |
| | | String key=redisUtils.generateKey(CacheConstant.SYS_USER_NAME+":"+username); |
| | |
| | | return sysUser; |
| | | } |
| | | |
| | | public void validatorPassword(String password){ |
| | | if(password.length()<5||password.length()>30){ |
| | | throw new ApiException("密码长度须在5-30之间"); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = RuntimeException.class) |
| | | public int agencyRegister(SysUser user) { |
| | | public int addMonitor(SysUser user) { |
| | | //校验用户信息 |
| | | if(!checkUsernameUnique(new SysUser().setUsername(user.getUsername()))){ |
| | | throw new ApiException("用户名已存在"); |
| | |
| | | if(!checkPhoneUnique(new SysUser().setUsername(user.getPhone()))){ |
| | | throw new ApiException("手机号已存在"); |
| | | } |
| | | String originPsword=Base64.decodeStr(user.getPassword()); |
| | | validatorPassword(originPsword); |
| | | user.setPassword(JwtTokenUtil.encryptPassword(user.getUsername(),originPsword,user.getSalt())); |
| | | user.setIdentity(UserIdentityEnum.MONITOR.getCode()); |
| | | boolean b=save(user); |
| | | if(!b){ |
| | | throw new ApiException("创建监管用户信息失败"); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = RuntimeException.class) |
| | | public int addAgency(SysUser user) { |
| | | //校验用户信息 |
| | | if(!checkUsernameUnique(new SysUser().setUsername(user.getUsername()))){ |
| | | throw new ApiException("用户名已存在"); |
| | | } |
| | | if(!checkPhoneUnique(new SysUser().setUsername(user.getPhone()))){ |
| | | throw new ApiException("手机号已存在"); |
| | | } |
| | | String originPsword=Base64.decodeStr(user.getPassword()); |
| | | validatorPassword(originPsword); |
| | | SysAgency agency=user.getAgency(); |
| | | if(ObjectUtil.isNull(agency)){ |
| | | throw new ApiException("机构信息不能为空"); |
| | | } |
| | | |
| | | //查询机构信息是否存在 |
| | | if(ObjectUtil.isNotNull(agencyMapper.checkAgencyNameUnique(agency.getName()))){ |
| | | if(!agencyService.checkAgencyNameUnique(new SysAgency().setName(agency.getName()))){ |
| | | throw new ApiException("机构名称已存在"); |
| | | } |
| | | |
| | | int i=agencyMapper.insert(agency); |
| | | if(i<1){ |
| | | throw new ApiException("保存机构信息失败"); |
| | | } |
| | | |
| | | user.setIdentity(UserIdentityEnum.AGENCY.getCode()); |
| | | user.setAgencyId(agency.getId()); |
| | | user.setUserType(UserIdentityEnum.AGENCY.getCode()); |
| | | user.setPassword(JwtTokenUtil.encryptPassword(user.getUsername(),originPsword,user.getSalt())); |
| | | |
| | | boolean b=save(user); |
| | | if(!b){ |
| | | throw new ApiException("创建机构用户信息失败"); |
| | |
| | | if(!checkPhoneUnique(new SysUser().setUsername(user.getPhone()))){ |
| | | throw new ApiException("手机号已存在"); |
| | | } |
| | | user.setUserType(UserIdentityEnum.EXPERT.getCode()); |
| | | String originPsword=Base64.decodeStr(user.getPassword()); |
| | | validatorPassword(originPsword); |
| | | user.setIdentity(UserIdentityEnum.EXPERT.getCode()); |
| | | user.setCreateBy(ShiroUtils.getSysUser().getUsername()); |
| | | user.setPassword(JwtTokenUtil.encryptPassword(user.getUsername(),originPsword,user.getSalt())); |
| | | boolean b=save(user); |
| | | if(!b){ |
| | | throw new ApiException("创建专家信息失败"); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public SysUser getUserInfoById(Long userId) { |
| | | return baseMapper.getUserInfoById(userId); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = RuntimeException.class) |
| | | public int deleteUserById(Long userId) { |
| | | SysUser user=getUserById(userId); |
| | | if(user==null){ |
| | | throw new ApiException("用户不存在"); |
| | | } |
| | | if(Objects.equals(ShiroUtils.getUserId(), userId)){ |
| | | throw new ApiException("不能删除自己账号"); |
| | | } |
| | | //机构用户,将机构信息设置成删除状态 |
| | | if(user.getUserType().equals(UserIdentityEnum.AGENCY.getCode())){ |
| | | if(user.getIdentity().equals(UserIdentityEnum.AGENCY.getCode())){ |
| | | if(user.getAgencyId()==null){ |
| | | throw new ApiException("获取机构id为空"); |
| | | } |
| | | agencyMapper.deleteAgencyById(user.getAgencyId()); |
| | | } |
| | | delCacheByUsername(user.getUsername()); |
| | | return baseMapper.deleteUserById(userId); |
| | | } |
| | | |
| | | @Override |
| | | public int editMonitor(SysUser user) { |
| | | //校验用户信息 |
| | | if(!checkUsernameUnique(user)){ |
| | | throw new ApiException("用户名已存在"); |
| | | } |
| | | if(!checkPhoneUnique(user)){ |
| | | throw new ApiException("手机号已存在"); |
| | | } |
| | | delCacheByUsername(user.getUsername()); |
| | | user.setPassword(null); |
| | | boolean b=updateById(user); |
| | | if(!b){ |
| | | throw new ApiException("更新监管用户信息失败"); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | |
| | |
| | | throw new ApiException("手机号已存在"); |
| | | } |
| | | SysAgency agency=user.getAgency(); |
| | | if(ObjectUtil.isNull(agency)){ |
| | | throw new ApiException("机构信息不能为空"); |
| | | if(ObjectUtil.isNull(agency)||agency.getId()==null){ |
| | | throw new ApiException("机构信息或者id不能为空"); |
| | | } |
| | | |
| | | //查询机构信息是否存在 |
| | | if(ObjectUtil.isNotNull(agency)){ |
| | | if(!agencyService.checkAgencyNameUnique(agency)){ |
| | | throw new ApiException("机构名称已存在"); |
| | | } |
| | | agencyMapper.updateById(agency); |
| | | |
| | | delCacheByUsername(user.getUsername()); |
| | | agencyService.updateById(agency); |
| | | user.setPassword(null); |
| | | boolean b=updateById(user); |
| | | if(!b){ |
| | | throw new ApiException("更新用户失败"); |
| | |
| | | if(!checkPhoneUnique(user)){ |
| | | throw new ApiException("手机号已存在"); |
| | | } |
| | | user.setPassword(null); |
| | | boolean b=updateById(user); |
| | | if(!b){ |
| | | throw new ApiException("更新专家信息失败"); |
| | |
| | | attaches.add(attach); |
| | | } |
| | | attachService.saveBatch(attaches); |
| | | |
| | | delCacheByUsername(user.getUsername()); |
| | | return 1; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public boolean resetUserPwd(SysUser user) { |
| | | return updateById(user); |
| | | String originPsword=Base64.decodeStr(user.getPassword()); |
| | | validatorPassword(originPsword); |
| | | checkUserAllowed(user); |
| | | SysUser oldUser=checkUserDataScope(user.getId()); |
| | | SysUser newUser=new SysUser().setId(user.getId()).setPassword(JwtTokenUtil.encryptPassword(oldUser.getUsername(),originPsword,oldUser.getSalt())); |
| | | newUser.setUpdateBy(ShiroUtils.getSysUser().getUsername()); |
| | | delCacheByUsername(oldUser.getUsername()); |
| | | return updateById(newUser); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void checkUserDataScope(Long userId) { |
| | | public SysUser checkUserDataScope(Long userId) { |
| | | if(userId==null){ |
| | | throw new ApiException("用户id为空!"); |
| | | } |
| | | SysUser user = baseMapper.getUserById(userId); |
| | | if (ObjectUtil.isNull(user)) |
| | | { |
| | | throw new ApiException("用户数据不存在!"); |
| | | } |
| | | return user; |
| | | } |
| | | |
| | | @Override |
| | |
| | | @Override |
| | | public boolean changeUserStatus(SysUser user) { |
| | | checkUserAllowed(user); |
| | | checkUserDataScope(user.getId()); |
| | | return updateById(user); |
| | | SysUser existUser=checkUserDataScope(user.getId()); |
| | | SysUser su=new SysUser().setId(user.getId()).setStatus(user.getStatus()); |
| | | su.setUpdateBy(ShiroUtils.getSysUser().getUsername()); |
| | | delCacheByUsername(existUser.getUsername()); |
| | | return updateById(su); |
| | | } |
| | | |
| | | @Override |
| | | public boolean changeApprove(SysUser user) { |
| | | checkUserAllowed(user); |
| | | checkUserDataScope(user.getId()); |
| | | return updateById(user); |
| | | SysUser existUser=checkUserDataScope(user.getId()); |
| | | SysUser su=new SysUser().setId(user.getId()).setState(user.getState()); |
| | | su.setUpdateBy(ShiroUtils.getSysUser().getUsername()); |
| | | delCacheByUsername(existUser.getUsername()); |
| | | return updateById(su); |
| | | } |
| | | } |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.gkhy.assess.system.mapper.SysAgencyMapper"> |
| | | <resultMap type="com.gkhy.assess.system.domain.SysAgency" id="SysAgencyResult"> |
| | | <id property="id" column="id" /> |
| | | <result property="name" column="name" /> |
| | | <result property="creditCode" column="credit_code" /> |
| | | <result property="attribute" column="attribute" /> |
| | | <result property="province" column="province" /> |
| | | <result property="city" column="city" /> |
| | | <result property="district" column="district" /> |
| | | <result property="address" column="address" /> |
| | | <result property="web" column="web" /> |
| | | <result property="legalPerson" column="legal_person" /> |
| | | <result property="legalPhone" column="legal_phone" /> |
| | | <result property="manager" column="manager" /> |
| | | <result property="managerPhone" column="manager_phone" /> |
| | | <result property="certNumber" column="cert_number" /> |
| | | <result property="issueDate" column="issue_date" /> |
| | | <result property="validDate" column="valid_date" /> |
| | | <result property="assetValue" column="asset_value" /> |
| | | <result property="workArea" column="work_area" /> |
| | | <result property="archiveArea" column="archive_area" /> |
| | | <result property="regAddress" column="reg_address" /> |
| | | <result property="business" column="business" /> |
| | | <result property="reportPath" column="report_path" /> |
| | | <result property="delFlag" column="del_flag" /> |
| | | <result property="publication" column="publication" /> |
| | | <result property="createTime" column="create_time" /> |
| | | <result property="remark" column="remark" /> |
| | | <association property="user" javaType="com.gkhy.assess.system.domain.SysUser" resultMap="userResult" /> |
| | | <collection property="businessNames" ofType="java.lang.String" select="getBusinessById" column="{business=business}"/> |
| | | </resultMap> |
| | | |
| | | <resultMap id="userResult" type="com.gkhy.assess.system.domain.SysUser"> |
| | | <id property="id" column="user_id" /> |
| | | <result property="username" column="username" /> |
| | | <result property="phone" column="phone" /> |
| | | </resultMap> |
| | | |
| | | |
| | | <sql id="selectAgencyVo"> |
| | | select a.id,a.name,a.credit_code,a.attribute,a.city,a.district,a.address,a.web,a.legal_person,a.legal_phone,a.manager,a.manager_phone,a.cert_number,a.issue_date,a.valid_date,a.asset_value,a.work_area,a.archive_area,a.reg_address,a.business,a.report_path,a.del_flag,a.create_time,a.remark |
| | | select a.id,a.name,a.credit_code,a.attribute,a.province,a.city,a.district,a.address,a.web,a.legal_person, |
| | | a.legal_phone,a.manager,a.manager_phone,a.cert_number,a.issue_date,a.valid_date,a.asset_value,a.work_area,a.archive_area, |
| | | a.reg_address,a.business,a.report_path,a.del_flag,a.publication,a.create_time,a.remark, |
| | | b.id as user_id,b.username,b.phone |
| | | from sys_agency a |
| | | left join sys_user b on b.agency_id=a.id and b.identity=1 and b.del_flag=0 |
| | | </sql> |
| | | |
| | | <select id="checkAgencyNameUnique" resultType="com.gkhy.assess.system.domain.SysAgency"> |
| | | select id,name from sys_agency where name=#{name} and del_flag=0 limit 1 |
| | | </select> |
| | | |
| | | <select id="agencyList" resultType="com.gkhy.assess.system.domain.SysAgency"> |
| | | select a.id,a.name,a.create_time,a.business,a.city from sys_agency a |
| | | <select id="agencyList" resultMap="SysAgencyResult"> |
| | | select a.id,a.name,a.credit_code,a.attribute,a.cert_number,a.issue_date,a.valid_date,a.create_time,a.business,a.province,a.city,a.district,a.publication from sys_agency a |
| | | <where> |
| | | and a.del_flag = 0 |
| | | <if test="name != null and name != ''"> |
| | |
| | | AND a.city=#{city} |
| | | </if> |
| | | <if test="business != null and business != ''"> |
| | | AND a.business=#{business} |
| | | AND a.business like concat("%",#{business},"%") |
| | | </if> |
| | | </where> |
| | | order by a.create_time desc |
| | | </select> |
| | | |
| | | <select id="getAgencyById" resultType="com.gkhy.assess.system.domain.SysAgency"> |
| | | <select id="getAgencyById" resultMap="SysAgencyResult"> |
| | | <include refid="selectAgencyVo"/> |
| | | where a.del_flag = 0 and a.id=#{agencyId} |
| | | </select> |
| | |
| | | <delete id="deleteAgencyById" parameterType="java.lang.Long"> |
| | | update sys_agency set del_flag=1 where id=#{agencyId} |
| | | </delete> |
| | | |
| | | |
| | | <select id="getBusinessById" resultType="java.lang.String"> |
| | | select label from sys_dict_data where id in |
| | | <foreach item="item" index="index" collection="business.split(',')" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </select> |
| | | </mapper> |
| | |
| | | <delete id="deleteAttachsByUserId"> |
| | | delete from sys_attach |
| | | <where> |
| | | and user_id=#{user_id} |
| | | and user_id=#{userId} |
| | | <if test="type!=null and type!=''"> |
| | | and type=#{type} |
| | | </if> |
对比新文件 |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.gkhy.assess.system.mapper.SysExpertClassifyMapper"> |
| | | |
| | | </mapper> |
对比新文件 |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.gkhy.assess.system.mapper.SysExpertInfoMapper"> |
| | | |
| | | <sql id="selectExpertInfoVo"> |
| | | select expert_id,name,sex,birthday,phone,title,electronic_photo,id_card,duty_status, |
| | | company_name,company_address,dept_name,job,company_telephone,fax_num,email, |
| | | graduation_school,degree,speciality,current_profession,support_direction_safety, |
| | | support_direction_prevention,support_direction_emergency,resume_key,paper_situation_key, |
| | | reward_key,achievement_key,personal_opinion_key,recommend_unit_opinion_key,remark,create_by, |
| | | create_time,big_classify,small_classify,del_flag |
| | | from sys_agency |
| | | </sql> |
| | | |
| | | <delete id="deleteBatchByIds"> |
| | | update expert_info set del_flag = 1 where expert_id in |
| | | <foreach collection="expertIds" item="expertId" separator="," open="(" close=")"> |
| | | #{expertId} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <select id="expertInfoList" resultType="com.gkhy.assess.system.domain.SysExpertInfo"> |
| | | <include refid="selectExpertInfoVo"/> |
| | | <where> |
| | | and del_flag = 0 |
| | | <if test="name != null and name != ''"> |
| | | and name like concat('%', #{name}, '%') |
| | | </if> |
| | | <if test="bigClassify != null"> |
| | | and big_classify = #{bigClassify} |
| | | </if> |
| | | <if test="smallClassify != null"> |
| | | and small_classify = #{smallClassify} |
| | | </if> |
| | | <if test="dutyStatus != null"> |
| | | and duty_status = #{dutyStatus} |
| | | </if> |
| | | <if test="params.startTime != null "><!-- 开始时间检索 --> |
| | | and date_format(create_time,'%y%m%d') >= date_format(#{params.startTime},'%y%m%d') |
| | | </if> |
| | | <if test="params.endTime != null "><!-- 结束时间检索 --> |
| | | and date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') |
| | | </if> |
| | | </where> |
| | | order by create_time desc |
| | | </select> |
| | | <select id="checkIdcardUnique" resultType="com.gkhy.assess.system.domain.SysExpertInfo"> |
| | | select expert_id,name from sys_expert_info where del_flag=0 limit 1 |
| | | </select> |
| | | </mapper> |
| | |
| | | </sql> |
| | | |
| | | <select id="lawList" resultType="com.gkhy.assess.system.domain.SysLaw"> |
| | | select l.id,l.title,l.create_time from sys_law l |
| | | select l.id,l.title,l.sub_title,l.law_type,l.pub_agency,l.pub_date,l.create_time from sys_law l |
| | | <where> |
| | | <if test="title != null and title != ''"> |
| | | AND l.title like concat('%', #{title}, '%') |
| | |
| | | <mapper namespace="com.gkhy.assess.system.mapper.SysNoticeMapper"> |
| | | |
| | | <sql id="selectNoticeVo"> |
| | | select n.id,n.title,n.content,n.status,n.create_time,n.remark |
| | | select n.id,n.title,n.content,n.status,n.create_time,n.update_time,n.remark |
| | | from sys_notice n |
| | | </sql> |
| | | |
| | | <select id="noticeList" resultType="com.gkhy.assess.system.domain.SysNotice"> |
| | | select n.id,n.title,n.create_time from sys_notice n |
| | | select n.id,n.title,n.create_time,n.update_time from sys_notice n |
| | | <where> |
| | | <if test="title != null and title != ''"> |
| | | AND n.title like concat('%', #{title}, '%') |
| | |
| | | <mapper namespace="com.gkhy.assess.system.mapper.SysRegionMapper"> |
| | | |
| | | <select id="checkRegionUnique" resultType="com.gkhy.assess.system.domain.SysRegion"> |
| | | select * from sys_region where name=#{name} and parent_id=#{parentId} |
| | | select * from sys_region where name=#{name} and parent_id=#{parentId} and region_type=#{regionType} |
| | | </select> |
| | | </mapper> |
| | |
| | | <result property="expertType" column="expert_type" /> |
| | | <result property="jobTitle" column="job_title" /> |
| | | <result property="major" column="major" /> |
| | | <result property="approve" column="approve" /> |
| | | <result property="state" column="state" /> |
| | | <result property="loginIp" column="login_ip" /> |
| | | <result property="loginDate" column="login_date" /> |
| | | <result property="pwdUpdateDate" column="pwd_update_date" /> |
| | |
| | | <result property="updateTime" column="update_time" /> |
| | | <result property="remark" column="remark" /> |
| | | <association property="agency" javaType="com.gkhy.assess.system.domain.SysAgency" resultMap="agencyResult" /> |
| | | <collection property="socialAttach" ofType="com.gkhy.assess.system.domain.SysAttach" select="getAttachByUserId" column="{userId=id}"/> |
| | | <collection property="medicalAttach" ofType="com.gkhy.assess.system.domain.SysAttach" select="getAttachByUserId" column="{userId=id}"/> |
| | | <collection property="salaryAttach" ofType="com.gkhy.assess.system.domain.SysAttach" select="getAttachByUserId" column="{userId=id}"/> |
| | | <collection property="socialAttach" ofType="com.gkhy.assess.system.domain.SysAttach" select="getSocialAttachByUserId" column="{userId=id}"/> |
| | | <collection property="medicalAttach" ofType="com.gkhy.assess.system.domain.SysAttach" select="getMedicalAttachByUserId" column="{userId=id}"/> |
| | | <collection property="salaryAttach" ofType="com.gkhy.assess.system.domain.SysAttach" select="getSalaryAttachByUserId" column="{userId=id}"/> |
| | | </resultMap> |
| | | |
| | | |
| | |
| | | </resultMap> |
| | | |
| | | <sql id="selectUserVo"> |
| | | select u.id,u.username, u.name,u.identity,u.user_type,u.phone,u.sex,u.status,u.del_flag,u.manage_region,u.expert_type,u.agency_id,u.post,u.job_title,u.major,u.approve,u.create_time,u.remark,a.id as agency_id,a.name as agency_name,a.credit_code |
| | | select u.id,u.username, u.name,u.identity,u.user_type,u.phone,u.sex,u.status,u.del_flag,u.manage_region,u.expert_type,u.agency_id,u.post,u.job_title,u.major,u.state,u.create_time,u.remark,a.id as agency_id,a.name as agency_name,a.credit_code |
| | | from sys_user u |
| | | left join sys_agency a on u.agency_id=a.id |
| | | </sql> |
| | |
| | | </delete> |
| | | |
| | | <select id="getUserByUsername" resultMap="SysUserResult"> |
| | | select id,username,name,password,salt,identity,status,del_flag from sys_user |
| | | select id,username,name,password,salt,identity,state,status,del_flag from sys_user |
| | | where username=#{username} and del_flag=0 |
| | | </select> |
| | | |
| | | <select id="monitorList" resultType="com.gkhy.assess.system.domain.SysUser"> |
| | | <include refid="selectUserVo"/> |
| | | <where> |
| | | and u.del_flag = 0 and u.user_type=0 |
| | | and u.del_flag = 0 and u.identity=0 |
| | | <if test="username != null and username != ''"> |
| | | AND u.username like concat('%', #{username}, '%') |
| | | </if> |
| | |
| | | <select id="agencyList" resultMap="SysUserResult"> |
| | | <include refid="selectUserVo"/> |
| | | <where> |
| | | and u.del_flag = 0 and u.user_type=1 |
| | | and u.del_flag = 0 and u.identity=1 |
| | | <if test="username != null and username != ''"> |
| | | AND u.username like concat('%', #{username}, '%') |
| | | </if> |
| | |
| | | <select id="expertList" resultMap="SysUserResult"> |
| | | <include refid="selectUserVo"/> |
| | | <where> |
| | | and u.del_flag = 0 and u.user_type=2 |
| | | and u.del_flag = 0 and u.identity=2 |
| | | <if test="username != null and username != ''"> |
| | | AND u.username like concat('%', #{username}, '%') |
| | | </if> |
| | |
| | | <if test="phone != null and phone != ''"> |
| | | AND u.phone like concat('%', #{phone}, '%') |
| | | </if> |
| | | <if test="expertType != null and expertType != ''"> |
| | | AND u.expert_type =#{expertType} |
| | | </if> |
| | | </where> |
| | | order by u.create_time desc |
| | | </select> |
| | |
| | | |
| | | |
| | | <select id="getUserByPhone" resultMap="SysUserResult"> |
| | | select id,username,name,password,salt,identity,status,del_flag from sys_user |
| | | select id,username,name,password,salt,identity,state,status,del_flag from sys_user |
| | | where phone=#{phone} and del_flag=0 |
| | | </select> |
| | | |
| | | <select id="getUserByEmail" resultMap="SysUserResult"> |
| | | select id,username,name,password,salt,identity,status,del_flag from sys_user |
| | | select id,username,name,password,salt,identity,state,status,del_flag from sys_user |
| | | where email=#{email} and del_flag=0 |
| | | </select> |
| | | |
| | | <select id="getUserById" resultMap="SysUserResult"> |
| | | select id,username,name,password,salt,identity,status,del_flag from sys_user |
| | | select id,username,name,password,salt,identity,status,del_flag,agency_id from sys_user |
| | | where id=#{userId} |
| | | </select> |
| | | |
| | |
| | | </select> |
| | | |
| | | <select id="getUserByUsernamePhone" resultType="com.gkhy.assess.system.domain.SysUser"> |
| | | select id,username,name,password,salt,identity,status,del_flag from sys_user |
| | | select id,username,name,password,salt,identity,state,status,del_flag from sys_user |
| | | where (username=#{username} or phone=#{username}) and del_flag=0 |
| | | </select> |
| | | |
| | | |
| | | <select id="getAttachByUserId" resultType="com.gkhy.assess.system.domain.SysAttach"> |
| | | select id,name,path,type,user_id,create_time from sys_attach where user_id=#{userId} order by create_time desc limit 1 |
| | | <select id="getSocialAttachByUserId" resultType="com.gkhy.assess.system.domain.SysAttach"> |
| | | select id,name,path,type,user_id,create_time from sys_attach where user_id=#{userId} and type=1 order by create_time desc |
| | | </select> |
| | | |
| | | <select id="getMedicalAttachByUserId" resultType="com.gkhy.assess.system.domain.SysAttach"> |
| | | select id,name,path,type,user_id,create_time from sys_attach where user_id=#{userId} and type=2 order by create_time desc |
| | | </select> |
| | | |
| | | <select id="getSalaryAttachByUserId" resultType="com.gkhy.assess.system.domain.SysAttach"> |
| | | select id,name,path,type,user_id,create_time from sys_attach where user_id=#{userId} and type=3 order by create_time desc |
| | | </select> |
| | | |
| | | <select id="getUserInfoById" resultMap="SysUserResult"> |
| | | <include refid="selectUserVo"/> |
| | | where u.id=#{userId} |
| | | </select> |
| | | </mapper> |
| | |
| | | <fastjson.version>1.2.76</fastjson.version> |
| | | <caffeine.version>2.9.3</caffeine.version> |
| | | <kaptcha.version>2.3.2</kaptcha.version> |
| | | <commons.io.version>2.13.0</commons.io.version> |
| | | </properties> |
| | | <dependencyManagement> |
| | | <dependencies> |
| | |
| | | <version>${kaptcha.version}</version> |
| | | </dependency> |
| | | |
| | | <!-- io常用工具类 --> |
| | | <dependency> |
| | | <groupId>commons-io</groupId> |
| | | <artifactId>commons-io</artifactId> |
| | | <version>${commons.io.version}</version> |
| | | </dependency> |
| | | |
| | | </dependencies> |
| | | </dependencyManagement> |
| | | |