소스 검색

新增微信小程序api

wangliang 1 년 전
부모
커밋
3ad962b6a2
19개의 변경된 파일756개의 추가작업 그리고 1792개의 파일을 삭제
  1. 6 1
      sop-api/src/main/java/com/qmth/sop/server/api/SysController.java
  2. 64 0
      sop-api/src/main/java/com/qmth/sop/server/api/WxappController.java
  3. 12 0
      sop-api/src/main/java/com/qmth/sop/server/auth/WxappAccessTokenService.java
  4. 38 0
      sop-api/src/main/java/com/qmth/sop/server/auth/impl/WxappAccessTokenServiceImpl.java
  5. 42 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TWxappAccessToken.java
  6. 50 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TWxappInfo.java
  7. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TWxappAccessTokenMapper.java
  8. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TWxappInfoMapper.java
  9. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/TWxappAccessTokenService.java
  10. 45 0
      sop-business/src/main/java/com/qmth/sop/business/service/TWxappInfoService.java
  11. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TWxappAccessTokenServiceImpl.java
  12. 238 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TWxappInfoServiceImpl.java
  13. 0 1790
      sop-business/src/main/resources/db/install/sop_db.sql
  14. 28 1
      sop-business/src/main/resources/db/log/wangliang_update_log.sql
  15. 5 0
      sop-business/src/main/resources/mapper/TWxappAccessTokenMapper.xml
  16. 5 0
      sop-business/src/main/resources/mapper/TWxappInfoMapper.xml
  17. 13 0
      sop-common/src/main/java/com/qmth/sop/common/contant/SystemConstant.java
  18. 116 0
      sop-common/src/main/java/com/qmth/sop/common/util/ByteUtil.java
  19. 26 0
      sop-common/src/main/java/com/qmth/sop/common/util/ShaUtils.java

+ 6 - 1
sop-api/src/main/java/com/qmth/sop/server/api/SysController.java

@@ -115,6 +115,9 @@ public class SysController {
             }
             sysUser = sysUserList.get(0);
 
+            if (!sysUser.getEnable()) {
+                throw ExceptionResultEnum.ERROR.exception("该用户已禁用");
+            }
             if (!Objects.equals(sysUser.getPassword(), login.getPassword())) {
                 throw ExceptionResultEnum.ERROR.exception("用户名或密码错误");
             }
@@ -133,7 +136,9 @@ public class SysController {
                 throw ExceptionResultEnum.ERROR.exception("查出多个用户");
             }
             sysUser = sysUserList.get(0);
-
+            if (!sysUser.getEnable()) {
+                throw ExceptionResultEnum.ERROR.exception("该用户已禁用");
+            }
             // 校验验证码
             sysUserService.checkSmsCode(sysUser.getId(), sysUser.getMobileNumber(), login.getCode());
 

+ 64 - 0
sop-api/src/main/java/com/qmth/sop/server/api/WxappController.java

@@ -0,0 +1,64 @@
+package com.qmth.sop.server.api;
+
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.sop.business.bean.result.LoginResult;
+import com.qmth.sop.business.service.TWxappInfoService;
+import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.util.Result;
+import com.qmth.sop.common.util.ResultUtil;
+import io.swagger.annotations.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * <p>
+ * 微信 前端控制器
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Api(tags = "微信Controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_WXAPP)
+public class WxappController {
+    private final static Logger log = LoggerFactory.getLogger(WxappController.class);
+
+    @Resource
+    TWxappInfoService tWxappInfoService;
+
+    @ApiOperation(value = "微信登录")
+    @RequestMapping(value = "/login", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "微信用户信息", response = LoginResult.class)})
+    @Aac(auth = false)
+    public Result login(@ApiParam(value = "登录代码", required = true) @RequestParam String loginCode) throws NoSuchAlgorithmException {
+        return ResultUtil.ok(tWxappInfoService.wxappLogin(loginCode));
+    }
+
+    @ApiOperation(value = "绑定微信手机号并登录(新api)")
+    @RequestMapping(value = "/login/phone_code", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "微信用户信息", response = LoginResult.class)})
+    @Aac(auth = false)
+    public Result loginWxAppByPhoneCode(@ApiParam(value = "登录代码", required = true) @RequestParam String loginCode,
+                                        @ApiParam(value = "手机代码", required = true) @RequestParam String phoneCode) throws NoSuchAlgorithmException {
+        return ResultUtil.ok(tWxappInfoService.wxappLoginByPhoneCode(loginCode, phoneCode));
+    }
+
+    @ApiOperation(value = "绑定微信手机号并登录(旧api)")
+    @RequestMapping(value = "/login/encrypted_data", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "微信用户信息", response = LoginResult.class)})
+    @Aac(auth = false)
+    public Result loginWxAppByEncryptedData(@ApiParam(value = "登录代码", required = true) @RequestParam String loginCode,
+                                            @ApiParam(value = "加密数据", required = true) @RequestParam String encryptedData,
+                                            @ApiParam(value = "base64数据", required = true) @RequestParam String iv) throws NoSuchAlgorithmException {
+        return ResultUtil.ok(tWxappInfoService.wxappLoginByEncryptedData(loginCode, encryptedData, iv));
+    }
+}

+ 12 - 0
sop-api/src/main/java/com/qmth/sop/server/auth/WxappAccessTokenService.java

@@ -0,0 +1,12 @@
+package com.qmth.sop.server.auth;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.boot.core.solar.model.WxappAccessToken;
+import com.qmth.sop.business.entity.TWxappAccessToken;
+
+public interface WxappAccessTokenService extends IService<TWxappAccessToken> {
+
+    WxappAccessToken getWxappAccessToken();
+
+    void saveWxappAccessToken(String accessToken, Long expiresTime);
+}

+ 38 - 0
sop-api/src/main/java/com/qmth/sop/server/auth/impl/WxappAccessTokenServiceImpl.java

@@ -0,0 +1,38 @@
+package com.qmth.sop.server.auth.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.core.solar.model.WxappAccessToken;
+import com.qmth.sop.business.entity.TWxappAccessToken;
+import com.qmth.sop.business.mapper.TWxappAccessTokenMapper;
+import com.qmth.sop.server.auth.WxappAccessTokenService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+public class WxappAccessTokenServiceImpl extends ServiceImpl<TWxappAccessTokenMapper, TWxappAccessToken> implements WxappAccessTokenService {
+    private static WxappAccessToken wt;
+
+    @Override
+    public WxappAccessToken getWxappAccessToken() {
+        if (wt != null) {
+            return wt;
+        }
+        TWxappAccessToken e = this.getById(1L);
+        wt = new WxappAccessToken();
+        wt.setAccessToken(e.getAccessToken());
+        wt.setExpireTime(e.getExpiresTime());
+        return wt;
+    }
+
+    @Transactional
+    @Override
+    public void saveWxappAccessToken(String accessToken, Long expiresTime) {
+        wt.setAccessToken(accessToken);
+        wt.setExpireTime(expiresTime);
+        TWxappAccessToken e = this.getById(1L);
+        e.setAccessToken(accessToken);
+        e.setExpiresTime(expiresTime);
+        this.updateById(e);
+    }
+
+}

+ 42 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TWxappAccessToken.java

@@ -0,0 +1,42 @@
+package com.qmth.sop.business.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 微信token表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-09-15
+ */
+@ApiModel(value = "TWxappAccessToken对象", description = "微信token表")
+public class TWxappAccessToken implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "token")
+    private String accessToken;
+
+    @ApiModelProperty(value = "过期时间")
+    private Long expiresTime;
+
+    public String getAccessToken() {
+        return accessToken;
+    }
+
+    public void setAccessToken(String accessToken) {
+        this.accessToken = accessToken;
+    }
+
+    public Long getExpiresTime() {
+        return expiresTime;
+    }
+
+    public void setExpiresTime(Long expiresTime) {
+        this.expiresTime = expiresTime;
+    }
+}

+ 50 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TWxappInfo.java

@@ -0,0 +1,50 @@
+package com.qmth.sop.business.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 微信信息表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-09-15
+ */
+@ApiModel(value = "TWxappInfo对象", description = "微信信息表")
+public class TWxappInfo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "openId")
+    private String openId;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    public TWxappInfo() {
+
+    }
+
+    public TWxappInfo(String openId, String phone) {
+        this.openId = openId;
+        this.phone = phone;
+    }
+
+    public String getOpenId() {
+        return openId;
+    }
+
+    public void setOpenId(String openId) {
+        this.openId = openId;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TWxappAccessTokenMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.TWxappAccessToken;
+
+/**
+ * <p>
+ * 微信token表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-09-15
+ */
+public interface TWxappAccessTokenMapper extends BaseMapper<TWxappAccessToken> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TWxappInfoMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.TWxappInfo;
+
+/**
+ * <p>
+ * 微信信息表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-09-15
+ */
+public interface TWxappInfoMapper extends BaseMapper<TWxappInfo> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TWxappAccessTokenService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TWxappAccessToken;
+
+/**
+ * <p>
+ * 微信token表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-09-15
+ */
+public interface TWxappAccessTokenService extends IService<TWxappAccessToken> {
+
+}

+ 45 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TWxappInfoService.java

@@ -0,0 +1,45 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.bean.result.LoginResult;
+import com.qmth.sop.business.entity.TWxappInfo;
+
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * <p>
+ * 微信信息表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-09-15
+ */
+public interface TWxappInfoService extends IService<TWxappInfo> {
+
+    /**
+     * 微信登录
+     *
+     * @param loginCode
+     * @return
+     */
+    LoginResult wxappLogin(String loginCode) throws NoSuchAlgorithmException;
+
+    /**
+     * 绑定微信手机号并登录(新api)
+     *
+     * @param loginCode
+     * @param phoneCode
+     * @return
+     */
+    LoginResult wxappLoginByPhoneCode(String loginCode, String phoneCode) throws NoSuchAlgorithmException;
+
+    /**
+     * 绑定微信手机号并登录(旧api)
+     *
+     * @param loginCode
+     * @param encryptedData
+     * @param iv
+     * @return
+     */
+    LoginResult wxappLoginByEncryptedData(String loginCode, String encryptedData, String iv) throws NoSuchAlgorithmException;
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TWxappAccessTokenServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.TWxappAccessToken;
+import com.qmth.sop.business.mapper.TWxappAccessTokenMapper;
+import com.qmth.sop.business.service.TWxappAccessTokenService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 微信token表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-09-15
+ */
+@Service
+public class TWxappAccessTokenServiceImpl extends ServiceImpl<TWxappAccessTokenMapper, TWxappAccessToken> implements TWxappAccessTokenService {
+
+}

+ 238 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TWxappInfoServiceImpl.java

@@ -0,0 +1,238 @@
+package com.qmth.sop.business.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.core.solar.model.WxappAccessToken;
+import com.qmth.boot.core.solar.service.SolarService;
+import com.qmth.sop.business.bean.result.LoginResult;
+import com.qmth.sop.business.cache.CommonCacheService;
+import com.qmth.sop.business.entity.SysConfig;
+import com.qmth.sop.business.entity.SysUser;
+import com.qmth.sop.business.entity.TWxappInfo;
+import com.qmth.sop.business.mapper.TWxappInfoMapper;
+import com.qmth.sop.business.service.SysUserService;
+import com.qmth.sop.business.service.TWxappInfoService;
+import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.enums.AppSourceEnum;
+import com.qmth.sop.common.enums.ExceptionResultEnum;
+import com.qmth.sop.common.util.ByteUtil;
+import com.qmth.sop.common.util.HttpUtil;
+import com.qmth.sop.common.util.JacksonUtil;
+import com.qmth.sop.common.util.ShaUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import sun.misc.BASE64Decoder;
+
+import javax.annotation.Resource;
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import java.security.NoSuchAlgorithmException;
+import java.util.*;
+
+/**
+ * <p>
+ * 微信信息表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-09-15
+ */
+@Service
+public class TWxappInfoServiceImpl extends ServiceImpl<TWxappInfoMapper, TWxappInfo> implements TWxappInfoService {
+
+    @Resource
+    SysUserService sysUserService;
+
+    @Resource
+    SolarService solarService;
+
+    @Resource
+    CommonCacheService commonCacheService;
+
+    @Resource
+    TWxappInfoService tWxappInfoService;
+
+    /**
+     * 微信登录
+     *
+     * @param loginCode
+     * @return
+     */
+    @Override
+    public LoginResult wxappLogin(String loginCode) throws NoSuchAlgorithmException {
+        JSONObject auth = getAuthorization(loginCode);
+        String openid = ByteUtil.toHexAscii(ShaUtils.sha256(auth.getString("openid")));
+        TWxappInfo tWxappInfo = tWxappInfoService.getOne(new QueryWrapper<TWxappInfo>().lambda().eq(TWxappInfo::getOpenId, openid));
+        Optional.ofNullable(tWxappInfo).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("微信用户未绑定"));
+        List<SysUser> sysUserList = sysUserService.list(new QueryWrapper<SysUser>().lambda().eq(SysUser::getMobileNumber, tWxappInfo.getPhone()));
+        if (CollectionUtils.isEmpty(sysUserList)) {
+            throw ExceptionResultEnum.ERROR.exception("用户不存在");
+        }
+        if (sysUserList.size() > 1) {
+            throw ExceptionResultEnum.ERROR.exception("查出多个用户");
+        }
+        SysUser sysUser = sysUserList.get(0);
+        if (!sysUser.getEnable()) {
+            throw ExceptionResultEnum.ERROR.exception("该用户已禁用");
+        }
+        return sysUserService.login(sysUser.getPassword(), sysUser, AppSourceEnum.SYSTEM);
+    }
+
+    /**
+     * 绑定微信手机号并登录(新api)
+     *
+     * @param loginCode
+     * @param phoneCode
+     * @return
+     */
+    @Override
+    @Transactional
+    public LoginResult wxappLoginByPhoneCode(String loginCode, String phoneCode) throws NoSuchAlgorithmException {
+        SysConfig sysConfigWxappId = commonCacheService.addSysConfigCache(SystemConstant.WXAPP_APP_ID);
+        Optional.ofNullable(sysConfigWxappId).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置微信小程序appid"));
+
+        SysConfig sysConfigWxappUrl = commonCacheService.addSysConfigCache(SystemConstant.WXAPP_PHONE_BIND_NEW_URL);
+        Optional.ofNullable(sysConfigWxappUrl).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置微信小程序手机绑定url"));
+
+        Map<String, Object> params = new HashMap<>();
+        params.put(SystemConstant.CODE, phoneCode);
+        String ret;
+        try {
+            WxappAccessToken wxappAccessToken = solarService.getWxappAccessToken(sysConfigWxappId.getConfigValue());
+            Optional.ofNullable(wxappAccessToken).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未查询到微信accessToken"));
+
+            ret = HttpUtil.postJson(sysConfigWxappUrl.getConfigValue() + wxappAccessToken.getAccessToken(), JacksonUtil.parseJson(params), null, null, false);
+        } catch (Exception e) {
+            throw ExceptionResultEnum.ERROR.exception("登录失败");
+        }
+        JSONObject jo = JSONObject.parseObject(ret);
+        if (Objects.nonNull(jo.getInteger("errcode")) && jo.getInteger("errcode").intValue() != 0) {
+            throw ExceptionResultEnum.ERROR.exception("登录失败," + jo.getString("errmsg"));
+        }
+        String phone = jo.getJSONObject("phone_info").getString("purePhoneNumber");
+        List<SysUser> sysUserList = sysUserService.list(new QueryWrapper<SysUser>().lambda().eq(SysUser::getMobileNumber, phone));
+        if (CollectionUtils.isEmpty(sysUserList)) {
+            throw ExceptionResultEnum.ERROR.exception("用户不存在");
+        }
+        if (sysUserList.size() > 1) {
+            throw ExceptionResultEnum.ERROR.exception("查出多个用户");
+        }
+        SysUser sysUser = sysUserList.get(0);
+        if (!sysUser.getEnable()) {
+            throw ExceptionResultEnum.ERROR.exception("该用户已禁用");
+        }
+        JSONObject auth = getAuthorization(loginCode);
+        String openid = ByteUtil.toHexAscii(ShaUtils.sha256(auth.getString("openid")));
+        TWxappInfo tWxappInfo = tWxappInfoService.getOne(new QueryWrapper<TWxappInfo>().lambda().eq(TWxappInfo::getOpenId, openid));
+        tWxappInfo = Objects.isNull(tWxappInfo) ? new TWxappInfo(openid, phone) : tWxappInfo;
+        tWxappInfoService.saveOrUpdate(tWxappInfo);
+        return sysUserService.login(sysUser.getPassword(), sysUser, AppSourceEnum.SYSTEM);
+    }
+
+    /**
+     * 绑定微信手机号并登录(旧api)
+     *
+     * @param loginCode
+     * @param encryptedData
+     * @param iv
+     * @return
+     */
+    @Override
+    @Transactional
+    public LoginResult wxappLoginByEncryptedData(String loginCode, String encryptedData, String iv) throws NoSuchAlgorithmException {
+        JSONObject auth = getAuthorization(loginCode);
+        String openid = ByteUtil.toHexAscii(ShaUtils.sha256(auth.getString("openid")));
+        JSONObject jo = decrypt(encryptedData, iv, auth.getString("session_key"));
+        String phone = jo.getString("purePhoneNumber");
+        List<SysUser> sysUserList = sysUserService.list(new QueryWrapper<SysUser>().lambda().eq(SysUser::getMobileNumber, phone));
+        if (CollectionUtils.isEmpty(sysUserList)) {
+            throw ExceptionResultEnum.ERROR.exception("用户不存在");
+        }
+        if (sysUserList.size() > 1) {
+            throw ExceptionResultEnum.ERROR.exception("查出多个用户");
+        }
+        SysUser sysUser = sysUserList.get(0);
+        if (!sysUser.getEnable()) {
+            throw ExceptionResultEnum.ERROR.exception("该用户已禁用");
+        }
+        TWxappInfo tWxappInfo = tWxappInfoService.getOne(new QueryWrapper<TWxappInfo>().lambda().eq(TWxappInfo::getOpenId, openid));
+        tWxappInfo = Objects.isNull(tWxappInfo) ? new TWxappInfo(openid, phone) : tWxappInfo;
+        tWxappInfoService.saveOrUpdate(tWxappInfo);
+        return sysUserService.login(sysUser.getPassword(), sysUser, AppSourceEnum.SYSTEM);
+    }
+
+    /**
+     * 解密
+     *
+     * @param encryptedData
+     * @param iv
+     * @param sessionKey
+     * @return
+     */
+    private JSONObject decrypt(String encryptedData, String iv, String sessionKey) {
+        String cipherString = "AES/CBC/PKCS5Padding";
+        String jsonStr;
+        try {
+            BASE64Decoder base64Decoder = new BASE64Decoder();
+            /**
+             * 小程序加密数据解密算法
+             * https://developers.weixin.qq.com/miniprogram/dev/api/signature.html#wxchecksessionobject
+             * 1.对称解密的目标密文为 Base64_Decode(encryptedData)。 2.对称解密秘钥 aeskey =
+             * Base64_Decode(session_key), aeskey 是16字节。 3.对称解密算法初始向量
+             * 为Base64_Decode(iv),其中iv由数据接口返回。
+             */
+            byte[] encryptedByte = base64Decoder.decodeBuffer(encryptedData);
+            byte[] sessionKeyByte = base64Decoder.decodeBuffer(sessionKey);
+            byte[] ivByte = base64Decoder.decodeBuffer(iv);
+            /**
+             * 以下为AES-128-CBC解密算法
+             */
+            SecretKeySpec skeySpec = new SecretKeySpec(sessionKeyByte, "AES");
+            Cipher cipher = Cipher.getInstance(cipherString);
+            IvParameterSpec ivParameterSpec = new IvParameterSpec(ivByte);
+            cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivParameterSpec);
+            byte[] original = cipher.doFinal(encryptedByte);
+            jsonStr = new String(original);
+        } catch (Exception e) {
+            throw ExceptionResultEnum.ERROR.exception("登录失败");
+        }
+        return JSONObject.parseObject(jsonStr);
+    }
+
+    /**
+     * 获取鉴权
+     *
+     * @param loginCode
+     * @return
+     */
+    private JSONObject getAuthorization(String loginCode) {
+        SysConfig sysConfigWxappId = commonCacheService.addSysConfigCache(SystemConstant.WXAPP_APP_ID);
+        Optional.ofNullable(sysConfigWxappId).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置微信小程序appid"));
+
+        SysConfig sysConfigWxappRequestUrl = commonCacheService.addSysConfigCache(SystemConstant.WXAPP_REQUEST_URL);
+        Optional.ofNullable(sysConfigWxappRequestUrl).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置微信小程序请求url"));
+
+        WxappAccessToken wxappAccessToken = solarService.getWxappAccessToken(sysConfigWxappId.getConfigValue());
+        Optional.ofNullable(wxappAccessToken).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未查询到微信accessToken"));
+
+        Map<String, Object> params = new HashMap<>();
+        params.put(SystemConstant.APP_ID, sysConfigWxappId.getConfigValue());
+        params.put(SystemConstant.SECRET, wxappAccessToken.getAccessToken());
+        params.put(SystemConstant.JS_CODE, loginCode);
+        params.put(SystemConstant.GRANT_TYPE, SystemConstant.AUTHORIZATION_CODE);
+        String ret = null;
+        try {
+            ret = HttpUtil.get(sysConfigWxappRequestUrl.getConfigValue(), params, null, null);
+        } catch (Exception e) {
+            throw ExceptionResultEnum.ERROR.exception("登录失败");
+        }
+        JSONObject jo = JSONObject.parseObject(ret);
+        if (jo.containsKey("errcode")) {
+            throw ExceptionResultEnum.ERROR.exception("登录失败," + jo.getString("errmsg"));
+        }
+        return jo;
+    }
+}

+ 0 - 1790
sop-business/src/main/resources/db/install/sop_db.sql

@@ -1,1790 +0,0 @@
-USE sop_db;
--- ----------------------------
--- Table structure for basic_attachment
--- ----------------------------
-DROP TABLE IF EXISTS `basic_attachment`;
-CREATE TABLE `basic_attachment` (
-                                    `id` bigint NOT NULL COMMENT '主键',
-                                    `org_id` bigint DEFAULT NULL COMMENT '机构id',
-                                    `name` varchar(100) NOT NULL COMMENT '文件名',
-                                    `type` varchar(10) NOT NULL COMMENT '文件类型',
-                                    `size` DECIMAL(8, 2) NOT NULL COMMENT '单位(KB)',
-                                    `md5` varchar(32) NOT NULL COMMENT '文件md5值',
-                                    `path` varchar(2000) NOT NULL COMMENT '存储路径',
-                                    `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                                    `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                    `update_id` bigint DEFAULT NULL COMMENT '更新人',
-                                    `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                    `obj_id` bigint DEFAULT NULL COMMENT '关联业务id',
-                                    PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='所有附件记录表';
-
--- ----------------------------
--- Table structure for basic_school
--- ----------------------------
-DROP TABLE IF EXISTS `basic_school`;
-CREATE TABLE `basic_school` (
-                                `id` bigint NOT NULL COMMENT '主键',
-                                `code` varchar(20) NOT NULL COMMENT '学校编码',
-                                `domain_name` varchar(20) DEFAULT NULL COMMENT '域名',
-                                `name` varchar(100) DEFAULT NULL COMMENT '学校名称',
-                                `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,false:停用,true:启用',
-                                `access_key` varchar(50) DEFAULT NULL COMMENT '访问key',
-                                `access_secret` varchar(50) DEFAULT NULL COMMENT '访问秘钥',
-                                `remark` text COMMENT '备注',
-                                `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                                `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                `update_id` bigint DEFAULT NULL COMMENT '更新人',
-                                `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                `logo` mediumtext COMMENT '学校logo',
-                                PRIMARY KEY (`id`) USING BTREE,
-                                UNIQUE KEY `code` (`code`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学校表';
-
--- ----------------------------
--- Table structure for basic_sms_message
--- ----------------------------
-DROP TABLE IF EXISTS `basic_sms_message`;
-CREATE TABLE `basic_sms_message` (
-                                     `id` bigint NOT NULL COMMENT '主键',
-                                     `org_id` bigint DEFAULT NULL COMMENT '机构id',
-                                     `user_id` bigint NOT NULL COMMENT '消息接收人用户',
-                                     `user_name` varchar(100) DEFAULT NULL COMMENT '用户名称',
-                                     `mobile_number` varchar(11) DEFAULT NULL COMMENT '电话号码',
-                                     `message_type` varchar(45) DEFAULT NULL COMMENT '消息类型',
-                                     `business_operate` varchar(45) NOT NULL COMMENT '业务操作',
-                                     `template_code` varchar(45) NOT NULL COMMENT '消息模板代码',
-                                     `variable_params` text COMMENT '变量参数内容',
-                                     `template_content` mediumtext COMMENT '模板内容',
-                                     `send_status` varchar(45) DEFAULT NULL COMMENT '消息发送状态',
-                                     `send_result` varchar(200) DEFAULT NULL COMMENT '消息发送结果',
-                                     `remark` text COMMENT '备注',
-                                     `resend_count` int DEFAULT NULL COMMENT '重试次数',
-                                     `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                                     `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                     `update_id` bigint DEFAULT NULL COMMENT '更新人',
-                                     `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                     PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='短信通知表';
-
--- ----------------------------
--- Table structure for basic_verify_code
--- ----------------------------
-DROP TABLE IF EXISTS `basic_verify_code`;
-CREATE TABLE `basic_verify_code` (
-                                     `id` bigint NOT NULL COMMENT '主键',
-                                     `org_id` bigint DEFAULT NULL COMMENT '机构id',
-                                     `user_id` bigint NOT NULL COMMENT '用户ID',
-                                     `mobile_number` varchar(11) NOT NULL COMMENT '手机号',
-                                     `expire_time` bigint NOT NULL COMMENT '到期时间',
-                                     `valid_period` int NOT NULL COMMENT '单位(分)',
-                                     `verify_code` varchar(4) NOT NULL COMMENT '4位数字',
-                                     `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                                     `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                     `update_id` bigint DEFAULT NULL COMMENT '更新人',
-                                     `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                     PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='短信验证码记录表';
-
--- ----------------------------
--- Table structure for qrtz_blob_triggers
--- ----------------------------
-DROP TABLE IF EXISTS `qrtz_blob_triggers`;
-CREATE TABLE `qrtz_blob_triggers` (
-                                      `SCHED_NAME` varchar(120) NOT NULL,
-                                      `TRIGGER_NAME` varchar(200) NOT NULL,
-                                      `TRIGGER_GROUP` varchar(200) NOT NULL,
-                                      `BLOB_DATA` blob,
-                                      PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`) USING BTREE,
-                                      KEY `SCHED_NAME` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for qrtz_calendars
--- ----------------------------
-DROP TABLE IF EXISTS `qrtz_calendars`;
-CREATE TABLE `qrtz_calendars` (
-                                  `SCHED_NAME` varchar(120) NOT NULL,
-                                  `CALENDAR_NAME` varchar(200) NOT NULL,
-                                  `CALENDAR` blob NOT NULL,
-                                  PRIMARY KEY (`SCHED_NAME`,`CALENDAR_NAME`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for qrtz_cron_triggers
--- ----------------------------
-DROP TABLE IF EXISTS `qrtz_cron_triggers`;
-CREATE TABLE `qrtz_cron_triggers` (
-                                      `SCHED_NAME` varchar(120) NOT NULL,
-                                      `TRIGGER_NAME` varchar(200) NOT NULL,
-                                      `TRIGGER_GROUP` varchar(200) NOT NULL,
-                                      `CRON_EXPRESSION` varchar(120) NOT NULL,
-                                      `TIME_ZONE_ID` varchar(80) DEFAULT NULL,
-                                      PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for qrtz_fired_triggers
--- ----------------------------
-DROP TABLE IF EXISTS `qrtz_fired_triggers`;
-CREATE TABLE `qrtz_fired_triggers` (
-                                       `SCHED_NAME` varchar(120) NOT NULL,
-                                       `ENTRY_ID` varchar(95) NOT NULL,
-                                       `TRIGGER_NAME` varchar(200) NOT NULL,
-                                       `TRIGGER_GROUP` varchar(200) NOT NULL,
-                                       `INSTANCE_NAME` varchar(200) NOT NULL,
-                                       `FIRED_TIME` bigint NOT NULL,
-                                       `SCHED_TIME` bigint NOT NULL,
-                                       `PRIORITY` int NOT NULL,
-                                       `STATE` varchar(16) NOT NULL,
-                                       `JOB_NAME` varchar(200) DEFAULT NULL,
-                                       `JOB_GROUP` varchar(200) DEFAULT NULL,
-                                       `IS_NONCONCURRENT` varchar(1) DEFAULT NULL,
-                                       `REQUESTS_RECOVERY` varchar(1) DEFAULT NULL,
-                                       PRIMARY KEY (`SCHED_NAME`,`ENTRY_ID`) USING BTREE,
-                                       KEY `IDX_QRTZ_FT_TRIG_INST_NAME` (`SCHED_NAME`,`INSTANCE_NAME`) USING BTREE,
-                                       KEY `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY` (`SCHED_NAME`,`INSTANCE_NAME`,`REQUESTS_RECOVERY`) USING BTREE,
-                                       KEY `IDX_QRTZ_FT_J_G` (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`) USING BTREE,
-                                       KEY `IDX_QRTZ_FT_JG` (`SCHED_NAME`,`JOB_GROUP`) USING BTREE,
-                                       KEY `IDX_QRTZ_FT_T_G` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`) USING BTREE,
-                                       KEY `IDX_QRTZ_FT_TG` (`SCHED_NAME`,`TRIGGER_GROUP`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for qrtz_job_details
--- ----------------------------
-DROP TABLE IF EXISTS `qrtz_job_details`;
-CREATE TABLE `qrtz_job_details` (
-                                    `SCHED_NAME` varchar(120) NOT NULL,
-                                    `JOB_NAME` varchar(200) NOT NULL,
-                                    `JOB_GROUP` varchar(200) NOT NULL,
-                                    `DESCRIPTION` varchar(250) DEFAULT NULL,
-                                    `JOB_CLASS_NAME` varchar(250) NOT NULL,
-                                    `IS_DURABLE` varchar(1) NOT NULL,
-                                    `IS_NONCONCURRENT` varchar(1) NOT NULL,
-                                    `IS_UPDATE_DATA` varchar(1) NOT NULL,
-                                    `REQUESTS_RECOVERY` varchar(1) NOT NULL,
-                                    `JOB_DATA` blob,
-                                    PRIMARY KEY (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`) USING BTREE,
-                                    KEY `IDX_QRTZ_J_REQ_RECOVERY` (`SCHED_NAME`,`REQUESTS_RECOVERY`) USING BTREE,
-                                    KEY `IDX_QRTZ_J_GRP` (`SCHED_NAME`,`JOB_GROUP`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for qrtz_locks
--- ----------------------------
-DROP TABLE IF EXISTS `qrtz_locks`;
-CREATE TABLE `qrtz_locks` (
-                              `SCHED_NAME` varchar(120) NOT NULL,
-                              `LOCK_NAME` varchar(40) NOT NULL,
-                              PRIMARY KEY (`SCHED_NAME`,`LOCK_NAME`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for qrtz_paused_trigger_grps
--- ----------------------------
-DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`;
-CREATE TABLE `qrtz_paused_trigger_grps` (
-                                            `SCHED_NAME` varchar(120) NOT NULL,
-                                            `TRIGGER_GROUP` varchar(200) NOT NULL,
-                                            PRIMARY KEY (`SCHED_NAME`,`TRIGGER_GROUP`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for qrtz_scheduler_state
--- ----------------------------
-DROP TABLE IF EXISTS `qrtz_scheduler_state`;
-CREATE TABLE `qrtz_scheduler_state` (
-                                        `SCHED_NAME` varchar(120) NOT NULL,
-                                        `INSTANCE_NAME` varchar(200) NOT NULL,
-                                        `LAST_CHECKIN_TIME` bigint NOT NULL,
-                                        `CHECKIN_INTERVAL` bigint NOT NULL,
-                                        PRIMARY KEY (`SCHED_NAME`,`INSTANCE_NAME`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for qrtz_simple_triggers
--- ----------------------------
-DROP TABLE IF EXISTS `qrtz_simple_triggers`;
-CREATE TABLE `qrtz_simple_triggers` (
-                                        `SCHED_NAME` varchar(120) NOT NULL,
-                                        `TRIGGER_NAME` varchar(200) NOT NULL,
-                                        `TRIGGER_GROUP` varchar(200) NOT NULL,
-                                        `REPEAT_COUNT` bigint NOT NULL,
-                                        `REPEAT_INTERVAL` bigint NOT NULL,
-                                        `TIMES_TRIGGERED` bigint NOT NULL,
-                                        PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for qrtz_simprop_triggers
--- ----------------------------
-DROP TABLE IF EXISTS `qrtz_simprop_triggers`;
-CREATE TABLE `qrtz_simprop_triggers` (
-                                         `SCHED_NAME` varchar(120) NOT NULL,
-                                         `TRIGGER_NAME` varchar(200) NOT NULL,
-                                         `TRIGGER_GROUP` varchar(200) NOT NULL,
-                                         `STR_PROP_1` varchar(512) DEFAULT NULL,
-                                         `STR_PROP_2` varchar(512) DEFAULT NULL,
-                                         `STR_PROP_3` varchar(512) DEFAULT NULL,
-                                         `INT_PROP_1` int DEFAULT NULL,
-                                         `INT_PROP_2` int DEFAULT NULL,
-                                         `LONG_PROP_1` bigint DEFAULT NULL,
-                                         `LONG_PROP_2` bigint DEFAULT NULL,
-                                         `DEC_PROP_1` decimal(13,4) DEFAULT NULL,
-                                         `DEC_PROP_2` decimal(13,4) DEFAULT NULL,
-                                         `BOOL_PROP_1` varchar(1) DEFAULT NULL,
-                                         `BOOL_PROP_2` varchar(1) DEFAULT NULL,
-                                         PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for qrtz_triggers
--- ----------------------------
-DROP TABLE IF EXISTS `qrtz_triggers`;
-CREATE TABLE `qrtz_triggers` (
-                                 `SCHED_NAME` varchar(120) NOT NULL,
-                                 `TRIGGER_NAME` varchar(200) NOT NULL,
-                                 `TRIGGER_GROUP` varchar(200) NOT NULL,
-                                 `JOB_NAME` varchar(200) NOT NULL,
-                                 `JOB_GROUP` varchar(200) NOT NULL,
-                                 `DESCRIPTION` varchar(250) DEFAULT NULL,
-                                 `NEXT_FIRE_TIME` bigint DEFAULT NULL,
-                                 `PREV_FIRE_TIME` bigint DEFAULT NULL,
-                                 `PRIORITY` int DEFAULT NULL,
-                                 `TRIGGER_STATE` varchar(16) NOT NULL,
-                                 `TRIGGER_TYPE` varchar(8) NOT NULL,
-                                 `START_TIME` bigint NOT NULL,
-                                 `END_TIME` bigint DEFAULT NULL,
-                                 `CALENDAR_NAME` varchar(200) DEFAULT NULL,
-                                 `MISFIRE_INSTR` smallint DEFAULT NULL,
-                                 `JOB_DATA` blob,
-                                 PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`) USING BTREE,
-                                 KEY `IDX_QRTZ_T_J` (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`) USING BTREE,
-                                 KEY `IDX_QRTZ_T_JG` (`SCHED_NAME`,`JOB_GROUP`) USING BTREE,
-                                 KEY `IDX_QRTZ_T_C` (`SCHED_NAME`,`CALENDAR_NAME`) USING BTREE,
-                                 KEY `IDX_QRTZ_T_G` (`SCHED_NAME`,`TRIGGER_GROUP`) USING BTREE,
-                                 KEY `IDX_QRTZ_T_STATE` (`SCHED_NAME`,`TRIGGER_STATE`) USING BTREE,
-                                 KEY `IDX_QRTZ_T_N_STATE` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`,`TRIGGER_STATE`) USING BTREE,
-                                 KEY `IDX_QRTZ_T_N_G_STATE` (`SCHED_NAME`,`TRIGGER_GROUP`,`TRIGGER_STATE`) USING BTREE,
-                                 KEY `IDX_QRTZ_T_NEXT_FIRE_TIME` (`SCHED_NAME`,`NEXT_FIRE_TIME`) USING BTREE,
-                                 KEY `IDX_QRTZ_T_NFT_ST` (`SCHED_NAME`,`TRIGGER_STATE`,`NEXT_FIRE_TIME`) USING BTREE,
-                                 KEY `IDX_QRTZ_T_NFT_MISFIRE` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`) USING BTREE,
-                                 KEY `IDX_QRTZ_T_NFT_ST_MISFIRE` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`,`TRIGGER_STATE`) USING BTREE,
-                                 KEY `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`,`TRIGGER_GROUP`,`TRIGGER_STATE`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for sys_config
--- ----------------------------
-DROP TABLE IF EXISTS `sys_config`;
-CREATE TABLE `sys_config` (
-                              `id` bigint NOT NULL COMMENT '主键',
-                              `org_id` bigint DEFAULT NULL COMMENT '机构id',
-                              `config_key` varchar(100) NOT NULL COMMENT '参数键名',
-                              `config_name` varchar(100) NOT NULL COMMENT '参数名称',
-                              `config_value` varchar(100) DEFAULT NULL COMMENT '参数键值',
-                              `remark` varchar(100) DEFAULT NULL COMMENT '备注',
-                              `enable` tinyint DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                              `sort` int DEFAULT '1' COMMENT '排序',
-                              `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                              `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                              `update_id` bigint DEFAULT NULL COMMENT '更新人',
-                              `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                              PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='参数表';
-
--- ----------------------------
--- Records of sys_config
--- ----------------------------
-BEGIN;
-INSERT INTO `sys_config` VALUES (1, NULL, 'sys.user.initPassword', '初始密码', '123456', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (2, NULL, 'sys.warning.days', '预警天数', '3', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (3, NULL, 'sys.code.enable', '是否启用短信验证码', 'true', 'true-启用,false-禁用', 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (4, NULL, 'sys.message.enable', '是否启用短信消息提示', 'true', 'true-启用,false-禁用', 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (5, NULL, 'sys.message.resendCount', '失败短信重试次数', '3', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (6, NULL, 'attachment.type', '附件类型', '[.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip,.mp3,.wav,.dll,.exe,.ftl,.bpmn,.xml]', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (7, NULL, 'attachment.length', '附件名称长度', '100', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (8, NULL, 'attachment.size', '附件大小 ', '200', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (9, NULL, 'thread.pool.core.size', '自定义线程池大小', '200', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (10, NULL, 'custom.thread.pool.core.size', '是否自定义线程池大小', 'true', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (11, NULL, 'session.active', 'session会话时长', '6h', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (12, NULL, 'sms.normal.code', '万能短信验证码', 'qmth', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (13, NULL, 'code.expired.time', '短信验证码有效时间', '2', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (14, NULL, 'code.send.interval', '短信验证码发送间隔', '60', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (15, NULL, 'sys.txt.charset', 'txt文件编码', 'UTF-8', NULL, 1, 1, 1, NULL, NULL, 1684994975313);
-INSERT INTO `sys_config` VALUES (16, NULL, 'admin.logo.url', '超级管理员logo', 'http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/wx_logo.png', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (17, NULL, 'sms.sign.name', '短信签名', '逸教云', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (18, NULL, 'sms.tpl.code', '登录短信验证码', 'SMS_147416565', NULL, 1, 2, 1, NULL, NULL, NULL);
-COMMIT;
-
--- ----------------------------
--- Table structure for sys_custom
--- ----------------------------
-DROP TABLE IF EXISTS `sys_custom`;
-CREATE TABLE `sys_custom` (
-                              `id` bigint NOT NULL COMMENT '主键',
-                              `name` varchar(100) NOT NULL COMMENT '名称',
-                              `code` varchar(100) DEFAULT NULL COMMENT '编码',
-                              `type` varchar(20) DEFAULT NULL COMMENT '类型,OFFICE:教务处,CLOUD_MARK:云阅卷',
-                              `province` varchar(100) NOT NULL COMMENT '省份',
-                              `city` varchar(100) NOT NULL COMMENT '城市',
-                              `area` varchar(100) DEFAULT NULL COMMENT '县区',
-                              `address` varchar(150) DEFAULT NULL COMMENT '地址',
-                              `manager_id` bigint DEFAULT NULL COMMENT '客户经理id',
-                              `level_id` bigint DEFAULT NULL COMMENT '档位id',
-                              `peoper_day` int DEFAULT NULL COMMENT '标准人天',
-                              `sync` tinyint NOT NULL DEFAULT '0' COMMENT '是否crm同步,0:否,1:是',
-                              `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                              `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                              `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                              `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                              `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                              PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户表';
-
--- ----------------------------
--- Table structure for sys_device
--- ----------------------------
-DROP TABLE IF EXISTS `sys_device`;
-CREATE TABLE `sys_device` (
-                              `id` bigint NOT NULL COMMENT '主键',
-                              `name` varchar(100) NOT NULL COMMENT '名称',
-                              `serial_no` varchar(100) NOT NULL COMMENT '序列号',
-                              `brand` varchar(100) NOT NULL COMMENT '品牌',
-                              `buy_time` bigint NOT NULL COMMENT '购买时间',
-                              `supplier` varchar(100) DEFAULT NULL COMMENT '供应商',
-                              `status` varchar(20) DEFAULT NULL COMMENT '状态,NORMAL:正常,BREAK_DOWN:故障',
-                              `location` varchar(100) DEFAULT NULL COMMENT '当前所在地',
-                              `scan_count` bigint DEFAULT NULL COMMENT '总扫描量',
-                              `sync` tinyint NOT NULL DEFAULT '0' COMMENT '是否crm同步,0:否,1:是',
-                              `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                              `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                              `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                              `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                              `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                              PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备配置表';
-
--- ----------------------------
--- Table structure for sys_ding_group
--- ----------------------------
-DROP TABLE IF EXISTS `sys_ding_group`;
-CREATE TABLE `sys_ding_group` (
-                                  `id` bigint NOT NULL COMMENT '主键',
-                                  `service_id` bigint NOT NULL COMMENT '服务单元id',
-                                  `name` varchar(100) NOT NULL COMMENT '名称',
-                                  `supplier_id` bigint NOT NULL COMMENT '供应商id',
-                                  `sign_in_time` varchar(50) NOT NULL COMMENT '签到时段',
-                                  `sign_out_time` varchar(50) NOT NULL COMMENT '签退时段',
-                                  `face_open` tinyint NOT NULL DEFAULT '1' COMMENT '是否开启人脸,0:不开启,1:开启',
-                                  `reissue_card_count` int DEFAULT NULL COMMENT '允许补卡次数',
-                                  `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                                  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                  `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                                  `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤组表';
-
--- ----------------------------
--- Table structure for sys_ding_obj
--- ----------------------------
-DROP TABLE IF EXISTS `sys_ding_obj`;
-CREATE TABLE `sys_ding_obj` (
-                                `id` bigint NOT NULL COMMENT '主键',
-                                `ding_group_id` bigint NOT NULL COMMENT '考勤组id',
-                                `role_id` bigint NOT NULL COMMENT '角色id',
-                                `type` varchar(20) NOT NULL COMMENT '类型,DING:考勤,APPROVE:审核',
-                                PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤组对象表';
-
--- ----------------------------
--- Table structure for sys_job
--- ----------------------------
-DROP TABLE IF EXISTS `sys_job`;
-CREATE TABLE `sys_job` (
-                           `id` bigint NOT NULL COMMENT '主键',
-                           `crm_no` varchar(100) DEFAULT NULL COMMENT 'crm单号',
-                           `sop_no` varchar(100) DEFAULT NULL COMMENT 'sop单号',
-                           `service_id` bigint DEFAULT NULL COMMENT '服务单元id',
-                           `user_id` bigint NOT NULL COMMENT '责任人id',
-                           `job_time` bigint NOT NULL COMMENT '任务时间',
-                           `type` varchar(20) NOT NULL COMMENT '类型,BEFORE:任务前提醒,AFTER:任务后提醒',
-                           `unit` varchar(20) NOT NULL COMMENT '单位,HOUR:小时,MINUTE:分钟',
-                           `status` varchar(20) NOT NULL COMMENT '状态,NOT_EXEC:未执行,EXEC:已执行',
-                           `exec_time` bigint NOT NULL COMMENT '执行时间',
-                           `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                           PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统任务表';
-
--- ----------------------------
--- Table structure for sys_level
--- ----------------------------
-DROP TABLE IF EXISTS `sys_level`;
-CREATE TABLE `sys_level` (
-                             `id` bigint NOT NULL COMMENT '主键',
-                             `level` varchar(50) NOT NULL COMMENT '档位',
-                             `type` varchar(20) NOT NULL COMMENT '类型,OFFICE:教务处,CLOUD_MARK:云阅卷',
-                             `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                             `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                             `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                             PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='档位表';
-
--- ----------------------------
--- Table structure for sys_level_role
--- ----------------------------
-DROP TABLE IF EXISTS `sys_level_role`;
-CREATE TABLE `sys_level_role` (
-                                  `id` bigint NOT NULL COMMENT '主键',
-                                  `level_id` bigint NOT NULL COMMENT '服务档位id',
-                                  `role_id` bigint NOT NULL COMMENT '角色id',
-                                  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务档位角色配置表';
-
--- ----------------------------
--- Table structure for sys_log
--- ----------------------------
-DROP TABLE IF EXISTS `sys_log`;
-CREATE TABLE `sys_log` (
-                           `id` bigint NOT NULL COMMENT '主键',
-                           `type` varchar(20) NOT NULL COMMENT '类别,LOGIN:登录,LOGOUT:退出以及数据库DDL和DML操作',
-                           `obj_name` varchar(1000) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '实体名称',
-                           `obj_id` bigint DEFAULT NULL COMMENT '实体id',
-                           `content` varchar(200) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '内容',
-                           `update_before_obj` mediumtext CHARACTER SET utf8mb4 COMMENT '更改前内容',
-                           `update_after_obj` mediumtext CHARACTER SET utf8mb4 COMMENT '更改后内容',
-                           `create_time` bigint NOT NULL COMMENT '创建时间',
-                           PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统日志';
-
--- ----------------------------
--- Table structure for sys_message
--- ----------------------------
-DROP TABLE IF EXISTS `sys_message`;
-CREATE TABLE `sys_message` (
-                               `id` bigint NOT NULL COMMENT '主键',
-                               `crm_no` varchar(100) DEFAULT NULL COMMENT 'crm单号',
-                               `type` varchar(20) NOT NULL COMMENT '类型,DELAY:延期提醒,EXCEPTION_APPROVE:异常审核提醒,VIOLATION:违规提醒,SYSTEM_PLAN_CHANGE:系统计划变更提醒,SYSTEM:系统公告',
-                               `notice_id` bigint DEFAULT NULL COMMENT '公告id',
-                               `service_id` bigint DEFAULT NULL COMMENT '服务单元id',
-                               `form_user_id` bigint DEFAULT NULL COMMENT '发送人id',
-                               `receive_user_id` bigint NOT NULL COMMENT '接收人id',
-                               `content` varchar(1000) NOT NULL COMMENT '消息内容',
-                               `send_time` bigint NOT NULL COMMENT '发送时间',
-                               `receive_time` bigint DEFAULT NULL COMMENT '接收时间',
-                               `status` tinyint NOT NULL DEFAULT '0' COMMENT '是否已阅,0:未阅,1:已阅',
-                               PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统消息';
-
--- ----------------------------
--- Table structure for sys_notice
--- ----------------------------
-DROP TABLE IF EXISTS `sys_notice`;
-CREATE TABLE `sys_notice` (
-                              `id` bigint NOT NULL COMMENT '主键',
-                              `service_id` bigint DEFAULT NULL COMMENT '服务单元id',
-                              `title` varchar(200) CHARACTER SET utf8mb4 NOT NULL COMMENT '标题',
-                              `content` varchar(1000) NOT NULL COMMENT '内容',
-                              `type` varchar(20) DEFAULT NULL COMMENT '类型,SYSTEM:公告,SUPPLIER:供应商,SERVICE:服务单元',
-                              `status` varchar(20) DEFAULT NULL COMMENT '状态,PUBLISH:已发布,UN_PUBLISH:未发布',
-                              `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                              `publish_time` bigint DEFAULT NULL COMMENT '发布日期',
-                              `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                              `create_time` bigint DEFAULT NULL COMMENT '创建人时间',
-                              `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                              `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                              PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公告表';
-
--- ----------------------------
--- Table structure for sys_org
--- ----------------------------
-DROP TABLE IF EXISTS `sys_org`;
-CREATE TABLE `sys_org` (
-                           `id` bigint NOT NULL COMMENT '主键',
-                           `type` varchar(50) DEFAULT NULL COMMENT '类型',
-                           `code` varchar(20) DEFAULT NULL COMMENT '机构代码',
-                           `name` varchar(100) NOT NULL COMMENT '机构名称',
-                           `parent_id` bigint DEFAULT NULL COMMENT '上级机构id',
-                           `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                           `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                           `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                           `update_id` bigint DEFAULT NULL COMMENT '修改人',
-                           `update_time` bigint DEFAULT NULL COMMENT '修改时间',
-                           PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='组织架构表';
-
--- ----------------------------
--- Table structure for sys_privilege
--- ----------------------------
-DROP TABLE IF EXISTS `sys_privilege`;
-CREATE TABLE `sys_privilege` (
-                                 `id` bigint NOT NULL COMMENT '主键',
-                                 `name` varchar(100) NOT NULL COMMENT '菜单名称',
-                                 `url` varchar(100) NOT NULL COMMENT 'URL地址',
-                                 `type` varchar(50) NOT NULL COMMENT '类型,MENU:菜单,BUTTON:按钮,LINK:链接,URL:接口地址,LIST:列表,CONDITION:查询条件',
-                                 `parent_id` bigint DEFAULT NULL COMMENT '上级菜单',
-                                 `sequence` int NOT NULL COMMENT '序号',
-                                 `property` varchar(30) DEFAULT NULL COMMENT '属性,NO_AUTH:无需鉴权,AUTH:鉴权,SYS:系统公用',
-                                 `related` text COMMENT '关联属性,type为URL且property为AUTH才有',
-                                 `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                                 `default_auth` tinyint DEFAULT '1' COMMENT '默认权限,0:否,1:是',
-                                 `front_display` tinyint(1) DEFAULT '1' COMMENT '是否前端展示',
-                                 PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单权限表';
-
--- ----------------------------
--- Records of sys_privilege
--- ----------------------------
-BEGIN;
-INSERT INTO `sys_privilege` VALUES (1, '系统管理', 'systemManage', 'MENU', NULL, 8, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (2, '配置管理', 'configureManage', 'MENU', 1, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (3, '客户配置', 'custom', 'MENU', 2, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (4, '供应商配置', 'supplier', 'MENU', 2, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (5, '设备配置', 'device', 'MENU', 2, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (6, '服务档位配置', 'level', 'MENU', 2, 4, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (7, '考勤配置', 'dingConfigure', 'MENU', 2, 5, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (8, '系统日志', 'logManage', 'MENU', 1, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (9, '通知公告管理', 'notice', 'MENU', 8, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (10, '日志查询', 'log', 'MENU', 8, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (11, '用户管理', 'userManage', 'MENU', NULL, 7, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (12, '组织架构管理', 'orgManage', 'MENU', 11, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (13, '组织架构管理', 'org', 'MENU', 12, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (14, '用户权限管理', 'userPrivilegeManage', 'MENU', 11, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (15, '用户管理', 'user', 'MENU', 14, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (16, '角色管理', 'role', 'MENU', 14, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (17, '密码管理', 'pwdManage', 'MENU', 11, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (18, '密码修改', 'pwd', 'MENU', 17, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (19, '项目质量管理', 'projectQualityManage', 'MENU', NULL, 6, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (20, '项目质量管理', 'projectChildQualityManage', 'MENU', 19, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (21, '质量问题反馈', 'qualityProblem', 'MENU', 20, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (22, '质量问题查询', 'qualityProblemQuery', 'MENU', 20, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (23, '质量监控分析', 'qualityProblemControl', 'MENU', 20, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (24, '工时管理', 'hoursManage', 'MENU', NULL, 5, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (25, '工时管理', 'hoursChildManage', 'MENU', 24, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (26, '考勤打卡', 'ding', 'MENU', 25, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (27, '异常审核', 'exception', 'MENU', 25, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (28, '考勤提交', 'dingSubmit', 'MENU', 25, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (29, '工时提交', 'hourSubmit', 'MENU', 25, 4, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (30, '考勤监控预警', 'dingWarn', 'MENU', 25, 5, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (31, '资源保障', 'resourceManage', 'MENU', NULL, 4, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (32, '人资保障', 'humanManage', 'MENU', 31, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (33, '人员档案管理', 'userArchives', 'MENU', 32, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (34, '人员调配', 'userAllocate', 'MENU', 32, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (35, '人资监控', 'userArchivesControl', 'MENU', 32, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (36, '设备保障', 'deviceManage', 'MENU', 31, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (37, '出入库登记查询', 'deviceInOut', 'MENU', 36, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (38, '设备资源监控', 'deviceControl', 'MENU', 36, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (39, 'SOP管理', 'sopManage', 'MENU', NULL, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (40, 'SOP管理', 'sopChildManage', 'MENU', 39, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (41, '教务处SOP管理', 'office', 'MENU', 40, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (42, '云阅卷SOP管理', 'cloudMark', 'MENU', 40, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (43, '设备出入库登记', 'deviceInOutSop', 'MENU', 40, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (44, '项目计划变更报备', 'projectExchange', 'MENU', 40, 4, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (45, 'SOP监控', 'sopControlManage', 'MENU', 39, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (46, 'SOP监控台', 'sopControl', 'MENU', 45, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (47, '延期预警', 'delayWarn', 'MENU', 45, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (48, '违规登记', 'violation', 'MENU', 45, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (49, '服务单元管理', 'serviceManage', 'MENU', NULL, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (50, '派单管理', 'crmManage', 'MENU', 49, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (51, '派单管理', 'crm', 'MENU', 50, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (52, '统计查询', 'crmCount', 'MENU', 50, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (53, '服务单元管理', 'serviceChildManage', 'MENU', 49, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (54, '服务单元管理', 'service', 'MENU', 53, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (55, '服务范围管理', 'serviceScope', 'MENU', 53, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (56, '服务区域规划', 'serviceRegion', 'MENU', 53, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (57, '统计查询', 'serviceCount', 'MENU', 53, 4, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (58, '我的工作台', 'workManage', 'MENU', NULL, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (59, '工作台', 'workChildManage', 'MENU', 58, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (60, '消息提醒', 'message', 'MENU', 59, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (61, '待办任务', 'work', 'MENU', 59, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (62, '通知公告', 'notice', 'MENU', 59, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (63, '公共接口', 'common', 'MENU', NULL, 9, NULL, NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (64, '权限管理', 'menuManage', 'MENU', 63, 1, NULL, NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (65, '用户登录', '/api/admin/common/login', 'URL', 64, 1, 'NO_AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (66, '用户登出', '/api/admin/common/logout', 'URL', 64, 2, 'SYS', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (67, '文件上传', '/api/admin/common/file/upload', 'URL', 64, 3, 'SYS', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (68, '文件下载', '/api/admin/common/file/download', 'URL', 64, 4, 'SYS', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (69, '文件预览', '/api/admin/common/file/preview', 'URL', 64, 5, 'SYS', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (70, '人员档案导入', '/api/admin/user/archives/import', 'URL', 33, 1, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (71, '人员档案导出', '/api/admin/user/archives/export', 'URL', 33, 2, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (72, '任务管理查询', '/api/admin/task/query', 'URL', 240, 1, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (73, '下载导入模板', '/api/admin/common/download_import_template', 'URL', 64, 6, 'SYS', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (74, '列表', 'List', 'LIST', 3, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (75, '查询', 'Select', 'BUTTON', 3, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (76, '查询条件', 'Condition', 'CONDITION', 3, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (77, '修改', 'Update', 'LINK', 3, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (78, '删除', 'Delete', 'LINK', 3, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (79, '新增', 'Add', 'BUTTON', 3, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (80, '批量导入', 'BatchImport', 'BUTTON', 3, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (81, '新增', 'Add', 'BUTTON', 4, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (82, '列表', 'List', 'LIST', 4, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (83, '修改', 'Update', 'LINK', 4, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (84, '启用/禁用', 'Enable', 'LINK', 4, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (85, '列表', 'List', 'LIST', 5, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (86, '查询条件', 'Condition', 'CONDITION', 5, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (87, '新增', 'Add', 'BUTTON', 5, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (88, '作废', 'Cancel', 'BUTTON', 5, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (89, '列表', 'List', 'LIST', 6, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (90, '新增', 'Add', 'BUTTON', 6, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (91, '修改', 'Update', 'LINK', 6, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (92, '删除', 'Delete', 'LINK', 6, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (93, '列表', 'List', 'LIST', 7, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (94, '新增', 'Add', 'BUTTON', 7, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (95, '修改', 'Update', 'LINK', 7, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (96, '删除', 'Delete', 'LINK', 7, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (97, '查询条件', 'Condition', 'CONDITION', 7, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (98, '列表', 'List', 'LIST', 9, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (99, '新增', 'Add', 'BUTTON', 9, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (100, '撤销', 'Cancel', 'LINK', 9, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (101, '回执查询', 'Select', 'LINK', 9, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (102, '查询条件', 'Condition', 'CONDITION', 9, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (103, '修改', 'Update', 'LINK', 9, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (104, '发布', 'Publish', 'LINK', 9, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (105, '查询', 'Select', 'BUTTON', 5, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (106, '查询', 'Select', 'BUTTON', 7, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (107, '查询', 'Select', 'BUTTON', 9, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (108, '列表', 'List', 'LIST', 10, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (109, '查询条件', 'Condition', 'CONDITION', 10, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (110, '查询', 'Select', 'BUTTON', 10, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (111, '列表', 'List', 'LIST', 13, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (112, '新增', 'Add', 'BUTTON', 13, 1, 'AUTH', '249', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (113, '查询条件', 'Condition', 'CONDITION', 13, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (114, '修改', 'Update', 'LINK', 13, 1, 'AUTH', '249', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (115, '启用/禁用', 'Enable', 'LINK', 13, 2, 'AUTH', '250', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (116, '查询', 'Select', 'BUTTON', 13, 2, 'AUTH', '248', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (117, '列表', 'List', 'LIST', 15, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (118, '新增', 'Add', 'BUTTON', 15, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (119, '查询条件', 'Condition', 'CONDITION', 15, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (120, '修改', 'Update', 'LINK', 15, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (121, '启用/禁用', 'Enable', 'LINK', 15, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (122, '查询', 'Select', 'BUTTON', 15, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (123, '列表', 'List', 'LIST', 16, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (124, '新增', 'Add', 'BUTTON', 16, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (125, '修改', 'Update', 'LINK', 16, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (126, '删除', 'Delete', 'LINK', 16, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (127, '列表', 'List', 'LIST', 21, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (128, '作废', 'Cancel', 'BUTTON', 21, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (129, '查询条件', 'Condition', 'CONDITION', 21, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (130, '查询', 'Select', 'BUTTON', 21, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (131, '待审核-列表', 'List', 'LIST', 27, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (132, '待审核-批量通过', 'BatchPass', 'BUTTON', 27, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (133, '待审核-查询条件', 'Condition', 'CONDITION', 27, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (134, '待审核-查询', 'Select', 'BUTTON', 27, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (135, '待审核-批量拒绝', 'BatchReject', 'BUTTON', 27, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (136, '待审核-通过', 'Pass', 'LINK', 27, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (137, '待审核-拒绝', 'Reject', 'LINK', 27, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (138, '已审核-列表', 'List', 'LIST', 27, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (139, '已审核-查询条件', 'Condition', 'CONDITION', 27, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (140, '已审核-查询', 'Select', 'BUTTON', 27, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (141, '列表', 'List', 'LIST', 28, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (142, '批量提交', 'BatchSubmit', 'BUTTON', 28, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (143, '查询条件', 'Condition', 'CONDITION', 28, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (144, '查询', 'Select', 'BUTTON', 28, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (145, '批量导出', 'BatchExport', 'BUTTON', 28, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (146, '提交', 'Submit', 'LINK', 28, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (147, '撤回/取消撤回', 'Reject', 'LINK', 28, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (148, '列表', 'List', 'LIST', 29, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (149, '导出', 'Export', 'BUTTON', 29, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (150, '查询条件', 'Condition', 'CONDITION', 29, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (151, '查询', 'Select', 'BUTTON', 29, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (152, '撤回/取消撤回', 'Reject', 'LINK', 29, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (153, '列表', 'List', 'LIST', 33, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (154, '新增', 'Add', 'BUTTON', 33, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (155, '批量导入', 'BatchImport', 'BUTTON', 33, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (156, '查询条件', 'Condition', 'CONDITION', 33, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (157, '查询', 'Select', 'BUTTON', 33, 5, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (158, '批量导出', 'BatchExport', 'BUTTON', 33, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (159, '作废', 'Cancel', 'BUTTON', 33, 4, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (160, '修改', 'Update', 'LINK', 33, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (161, '列表', 'List', 'LIST', 34, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (162, '查询条件', 'Condition', 'CONDITION', 34, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (163, '查询', 'Select', 'BUTTON', 34, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (164, '调配', 'Allocate', 'LINK', 34, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (165, '发布SOP', 'Publish', 'LINK', 34, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (166, '撤销发布', 'UnPublish', 'LINK', 34, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (167, '列表', 'List', 'LIST', 37, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (168, '查询条件', 'Condition', 'CONDITION', 37, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (169, '查询', 'Select', 'BUTTON', 37, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (170, '列表', 'List', 'LIST', 38, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (171, '列表', 'List', 'LIST', 41, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (172, '查询条件', 'Condition', 'CONDITION', 41, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (173, '作废', 'Cancel', 'BUTTON', 41, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (174, '查询', 'Select', 'BUTTON', 41, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (175, '填报', 'Fill', 'LINK', 41, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (176, '计划变更报备', 'ProjectExchange', 'LINK', 41, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (177, '新增SOP', 'AddSop', 'LINK', 41, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (178, '新增违规 ', 'AddViolation', 'LINK', 41, 4, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (179, '上报质量问题', 'ProblemSubmit', 'LINK', 41, 5, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (180, '列表', 'List', 'LIST', 42, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (181, '查询条件', 'Condition', 'CONDITION', 42, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (182, '作废', 'Cancel', 'BUTTON', 42, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (183, '查询', 'Select', 'BUTTON', 42, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (184, '填报', 'Fill', 'LINK', 42, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (185, '计划变更报备', 'ProjectExchange', 'LINK', 42, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (186, '新增违规 ', 'AddViolation', 'LINK', 42, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (187, '上报质量问题', 'ProblemSubmit', 'LINK', 42, 4, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (188, '列表', 'List', 'LIST', 43, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (189, '查询条件', 'Condition', 'CONDITION', 43, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (190, '新增', 'Add', 'BUTTON', 43, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (191, '作废', 'Cancel', 'BUTTON', 43, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (192, '查询', 'Select', 'BUTTON', 43, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (193, '列表', 'List', 'LIST', 44, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (194, '查询条件', 'Condition', 'CONDITION', 44, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (195, '作废', 'Cancel', 'BUTTON', 44, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (196, '查询', 'Select', 'BUTTON', 44, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (197, '列表', 'List', 'LIST', 47, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (198, '查询条件', 'Condition', 'CONDITION', 47, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (199, '查询', 'Select', 'BUTTON', 47, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (200, '跟进', 'Follow', 'LINK', 47, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (201, '关闭', 'Close', 'LINK', 47, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (202, '重启', 'Restart', 'LINK', 47, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (203, '列表', 'List', 'LIST', 48, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (204, '查询条件', 'Condition', 'CONDITION', 48, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (205, '查询', 'Select', 'BUTTON', 48, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (206, '跟进', 'Follow', 'LINK', 48, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (207, '关闭', 'Close', 'LINK', 48, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (208, '重启', 'Restart', 'LINK', 48, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (209, '列表', 'List', 'LIST', 51, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (210, '查询条件', 'Condition', 'CONDITION', 51, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (211, '新增', 'Add', 'BUTTON', 51, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (212, '作废', 'Cancel', 'BUTTON', 51, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (213, '批量划定', 'BatchDelimit', 'BUTTON', 51, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (214, '查询', 'Select', 'BUTTON', 51, 4, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (215, '划定', 'Delimit', 'LINK', 51, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (216, '修改', 'Update', 'LINK', 51, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (217, '重新划定', 'ReDelimit', 'LINK', 51, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (218, '列表', 'List', 'LIST', 54, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (219, '查询条件', 'Condition', 'CONDITION', 54, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (220, '新增', 'Add', 'BUTTON', 54, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (221, '查询', 'Select', 'BUTTON', 54, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (222, '修改', 'Update', 'LINK', 54, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (223, '作废', 'Cancel', 'LINK', 54, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (224, '设置考勤组', 'Set', 'LINK', 54, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (225, '发布', 'Publish', 'LINK', 54, 4, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (226, '重启', 'Restart', 'LINK', 54, 5, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (227, '关闭', 'Close', 'LINK', 54, 6, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (228, '列表', 'List', 'LIST', 55, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (229, '查询条件', 'Condition', 'CONDITION', 55, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (230, '新增', 'Add', 'BUTTON', 55, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (231, '查询', 'Select', 'BUTTON', 55, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (232, '移除', 'Delete', 'LINK', 55, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (233, '列表', 'List', 'LIST', 56, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (234, '查询条件', 'Condition', 'CONDITION', 56, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (235, '新增', 'Add', 'BUTTON', 56, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (236, '查询', 'Select', 'BUTTON', 56, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (237, '修改', 'Update', 'LINK', 56, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (238, '删除', 'Delete', 'LINK', 56, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (239, '任务管理', 'taskManage', 'MENU', 1, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (240, '任务管理', 'task', 'MENU', 239, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (241, '列表', 'List', 'LIST', 240, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (242, '查询条件', 'Condition', 'CONDITION', 240, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (243, '查询', 'Select', 'BUTTON', 240, 2, 'AUTH', '72', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (244, '导出日志', 'Export', 'LINK', 240, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (245, '下载文件', 'Download', 'LINK', 240, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (246, '获取菜单权限', '/api/admin/sys/privilege/list', 'URL', 64, 7, 'SYS', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (247, '获取用户权限', '/api/admin/common/get_menu', 'URL', 64, 8, 'SYS', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (248, '组织架构查询', '/api/admin/org/list', 'URL', 13, 1, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (249, '组织架构保存/修改', '/api/admin/org/save', 'URL', 13, 2, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (250, '组织架构启用/禁用', '/api/admin/org/enable', 'URL', 13, 3, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (251, '获取机构下所有用户', '/api/admin/common/get_org_user_list', 'URL', 64, 9, 'SYS', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (252, '用户查询', '/api/admin/user/list', 'URL', 15, 1, 'AUTH', '122', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (253, '服务档位删除', '/api/sys/level/delete', 'URL', 6, 2, 'AUTH', '92', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (254, '服务档位', '/api/sys/level/get', 'URL', 6, 3, 'AUTH', '90,91', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (255, '服务档位列表', '/api/sys/level/list', 'URL', 6, 4, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (256, '服务档位列表', '/api/sys/level/query', 'URL', 6, 5, 'AUTH', '89', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (257, '服务档位修改', '/api/sys/level/update', 'URL', 6, 6, 'AUTH', '91', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (258, '客户新增', '/api/sys/custom/add', 'URL', 3, 1, 'AUTH', '79', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (259, '客户删除', '/api/sys/custom/delete', 'URL', 3, 2, 'AUTH', '78', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (260, '客户查询', '/api/sys/custom/get', 'URL', 3, 3, 'AUTH', '77,78', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (261, '客户批量导入', '/api/sys/custom/import', 'URL', 3, 4, 'AUTH', '80', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (262, '客户查询条件', '/api/sys/custom/query', 'URL', 3, 5, 'AUTH', '75', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (263, '客户修改', '/api/sys/custom/update', 'URL', 3, 6, 'AUTH', '77', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (264, '供应商新增', '/api/sys/supplier/add', 'URL', 4, 1, 'AUTH', '81', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (265, '供应商启用/禁用', '/api/sys/supplier/enable', 'URL', 4, 2, 'AUTH', '84', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (266, '供应商列表', '/api/sys/supplier/get', 'URL', 4, 3, 'AUTH', '81,83', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (267, '供应商列表', '/api/sys/supplier/list', 'URL', 4, 4, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (268, '供应商列表', '/api/sys/supplier/query', 'URL', 4, 5, 'AUTH', '82', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (269, '供应商修改', '/api/sys/supplier/update', 'URL', 4, 6, 'AUTH', '83', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (270, '设备新增', '/api/sys/device/add', 'URL', 5, 1, 'AUTH', '87', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (271, '设备作废', '/api/sys/device/delete', 'URL', 5, 2, 'AUTH', '88', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (272, '设备作废', '/api/sys/device/disable', 'URL', 5, 3, 'AUTH', '88', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (273, '设备查询条件', '/api/sys/device/get', 'URL', 5, 4, 'AUTH', '86', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (274, '设备列表', '/api/sys/device/list', 'URL', 5, 5, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (275, '设备查询条件', '/api/sys/device/query', 'URL', 5, 6, 'AUTH', '85,86', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (276, '设备新增', '/api/sys/device/update', 'URL', 5, 7, 'AUTH', '87', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (277, '考勤新增', '/api/sys/ding/group/add', 'URL', 7, 1, 'AUTH', '94', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (278, '考勤删除', '/api/sys/ding/group/delete', 'URL', 7, 2, 'AUTH', '96', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (279, '考勤查询', '/api/sys/ding/group/get', 'URL', 7, 3, 'AUTH', '94,95', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (280, '考勤查询', '/api/sys/ding/group/list', 'URL', 7, 4, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (281, '考勤查询条件', '/api/sys/ding/group/query', 'URL', 7, 5, 'AUTH', '106', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (282, '考勤修改', '/api/sys/ding/group/update', 'URL', 7, 6, 'AUTH', '95', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (283, '用户新增/修改', '/api/admin/user/save', 'URL', 15, 2, 'AUTH', '120', 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (284, '用户启用/禁用', '/api/admin/user/enable', 'URL', 15, 3, 'AUTH', '121', 1, 1, 0);
-COMMIT;
-
--- ----------------------------
--- Table structure for sys_role
--- ----------------------------
-DROP TABLE IF EXISTS `sys_role`;
-CREATE TABLE `sys_role` (
-                            `id` bigint NOT NULL COMMENT '主键',
-                            `org_id` bigint DEFAULT NULL COMMENT '机构id',
-                            `name` varchar(50) NOT NULL COMMENT '角色名称',
-                            `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                            `type` varchar(20) DEFAULT NULL COMMENT '角色类别,ADMIN:超级管理员,PMO:总负责人,BUSSINESS:业务线负责人,REGION_MANAGER:大区经理,REGION_COORDINATOR:区域协调人,EFFECT_ENGINEER:实施工程师,ASSISTANT_ENGINEER:助理工程师,QA:QA,CUSTOM:技术客服',
-                            `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                            `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                            `update_id` bigint DEFAULT NULL COMMENT '修改人',
-                            `update_time` bigint DEFAULT NULL COMMENT '修改时间',
-                            `default_role` tinyint NOT NULL DEFAULT '0' COMMENT '是否系统内置角色,1:是,0:不是',
-                            `interpret` varchar(1000) DEFAULT NULL COMMENT '角色说明',
-                            PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
-
--- ----------------------------
--- Records of sys_role
--- ----------------------------
-BEGIN;
-INSERT INTO `sys_role` VALUES (1, NULL, '系统管理员', 1, 'ADMIN', NULL, NULL, NULL, NULL, 1, '系统角色');
-INSERT INTO `sys_role` VALUES (2, NULL, '总负责人', 1, 'PMO', NULL, NULL, NULL, NULL, 1, '系统角色');
-INSERT INTO `sys_role` VALUES (3, NULL, '业务线负责人', 1, 'BUSSINESS', NULL, NULL, NULL, NULL, 1, '系统角色');
-INSERT INTO `sys_role` VALUES (4, NULL, '大区经理', 1, 'REGION_MANAGER', NULL, NULL, NULL, NULL, 1, '系统角色');
-INSERT INTO `sys_role` VALUES (5, NULL, '区域协调人', 1, 'REGION_COORDINATOR', NULL, NULL, NULL, NULL, 1, '外包角色');
-INSERT INTO `sys_role` VALUES (6, NULL, '实施工程师', 1, 'EFFECT_ENGINEER', NULL, NULL, NULL, NULL, 1, '外包角色');
-INSERT INTO `sys_role` VALUES (7, NULL, '助理工程师', 1, 'ASSISTANT_ENGINEER', NULL, NULL, NULL, NULL, 1, '外包角色');
-INSERT INTO `sys_role` VALUES (8, NULL, 'QA', 1, 'QA', NULL, NULL, NULL, NULL, 1, '系统角色');
-INSERT INTO `sys_role` VALUES (9, NULL, '技术客服', 1, 'CUSTOM', NULL, NULL, NULL, NULL, 1, '系统角色');
-COMMIT;
-
--- ----------------------------
--- Table structure for sys_role_privilege
--- ----------------------------
-DROP TABLE IF EXISTS `sys_role_privilege`;
-CREATE TABLE `sys_role_privilege` (
-                                      `id` bigint NOT NULL COMMENT '主键',
-                                      `role_id` bigint NOT NULL COMMENT '角色id',
-                                      `privilege_id` bigint NOT NULL COMMENT '菜单id',
-                                      `enable` tinyint DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                                      PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色和菜单关联表';
-
--- ----------------------------
--- Records of sys_role_privilege
--- ----------------------------
-BEGIN;
-INSERT INTO `sys_role_privilege` VALUES (1, 2, 58, 1);
-INSERT INTO `sys_role_privilege` VALUES (2, 2, 59, 1);
-INSERT INTO `sys_role_privilege` VALUES (3, 2, 60, 1);
-INSERT INTO `sys_role_privilege` VALUES (4, 2, 61, 1);
-INSERT INTO `sys_role_privilege` VALUES (5, 3, 58, 1);
-INSERT INTO `sys_role_privilege` VALUES (6, 3, 59, 1);
-INSERT INTO `sys_role_privilege` VALUES (7, 3, 60, 1);
-INSERT INTO `sys_role_privilege` VALUES (8, 3, 61, 1);
-INSERT INTO `sys_role_privilege` VALUES (9, 4, 58, 1);
-INSERT INTO `sys_role_privilege` VALUES (10, 4, 59, 1);
-INSERT INTO `sys_role_privilege` VALUES (11, 4, 60, 1);
-INSERT INTO `sys_role_privilege` VALUES (12, 4, 61, 1);
-INSERT INTO `sys_role_privilege` VALUES (13, 5, 58, 1);
-INSERT INTO `sys_role_privilege` VALUES (14, 5, 59, 1);
-INSERT INTO `sys_role_privilege` VALUES (15, 5, 60, 1);
-INSERT INTO `sys_role_privilege` VALUES (16, 5, 61, 1);
-INSERT INTO `sys_role_privilege` VALUES (17, 6, 58, 1);
-INSERT INTO `sys_role_privilege` VALUES (18, 6, 59, 1);
-INSERT INTO `sys_role_privilege` VALUES (19, 6, 60, 1);
-INSERT INTO `sys_role_privilege` VALUES (20, 6, 61, 1);
-INSERT INTO `sys_role_privilege` VALUES (21, 7, 58, 1);
-INSERT INTO `sys_role_privilege` VALUES (22, 7, 59, 1);
-INSERT INTO `sys_role_privilege` VALUES (23, 7, 60, 1);
-INSERT INTO `sys_role_privilege` VALUES (24, 7, 61, 1);
-INSERT INTO `sys_role_privilege` VALUES (25, 8, 58, 1);
-INSERT INTO `sys_role_privilege` VALUES (26, 8, 59, 1);
-INSERT INTO `sys_role_privilege` VALUES (27, 8, 60, 1);
-INSERT INTO `sys_role_privilege` VALUES (28, 8, 61, 1);
-INSERT INTO `sys_role_privilege` VALUES (29, 9, 58, 1);
-INSERT INTO `sys_role_privilege` VALUES (30, 9, 59, 1);
-INSERT INTO `sys_role_privilege` VALUES (31, 9, 60, 1);
-INSERT INTO `sys_role_privilege` VALUES (32, 9, 61, 1);
-INSERT INTO `sys_role_privilege` VALUES (33, 1, 11, 1);
-INSERT INTO `sys_role_privilege` VALUES (34, 1, 12, 1);
-INSERT INTO `sys_role_privilege` VALUES (35, 1, 13, 1);
-INSERT INTO `sys_role_privilege` VALUES (36, 1, 14, 1);
-INSERT INTO `sys_role_privilege` VALUES (37, 1, 15, 1);
-INSERT INTO `sys_role_privilege` VALUES (38, 1, 16, 1);
-INSERT INTO `sys_role_privilege` VALUES (39, 1, 17, 1);
-INSERT INTO `sys_role_privilege` VALUES (40, 1, 18, 1);
-INSERT INTO `sys_role_privilege` VALUES (41, 1, 1, 1);
-INSERT INTO `sys_role_privilege` VALUES (42, 1, 2, 1);
-INSERT INTO `sys_role_privilege` VALUES (43, 1, 3, 1);
-INSERT INTO `sys_role_privilege` VALUES (44, 1, 4, 1);
-INSERT INTO `sys_role_privilege` VALUES (45, 1, 5, 1);
-INSERT INTO `sys_role_privilege` VALUES (46, 1, 6, 1);
-INSERT INTO `sys_role_privilege` VALUES (47, 1, 7, 1);
-INSERT INTO `sys_role_privilege` VALUES (48, 1, 8, 1);
-INSERT INTO `sys_role_privilege` VALUES (49, 1, 9, 1);
-INSERT INTO `sys_role_privilege` VALUES (50, 1, 10, 1);
-INSERT INTO `sys_role_privilege` VALUES (51, 1, 49, 1);
-INSERT INTO `sys_role_privilege` VALUES (52, 1, 50, 1);
-INSERT INTO `sys_role_privilege` VALUES (53, 1, 51, 1);
-INSERT INTO `sys_role_privilege` VALUES (54, 1, 52, 1);
-INSERT INTO `sys_role_privilege` VALUES (55, 1, 53, 1);
-INSERT INTO `sys_role_privilege` VALUES (56, 1, 54, 1);
-INSERT INTO `sys_role_privilege` VALUES (57, 1, 55, 1);
-INSERT INTO `sys_role_privilege` VALUES (58, 1, 56, 1);
-INSERT INTO `sys_role_privilege` VALUES (59, 1, 57, 1);
-INSERT INTO `sys_role_privilege` VALUES (60, 1, 24, 1);
-INSERT INTO `sys_role_privilege` VALUES (61, 1, 25, 1);
-INSERT INTO `sys_role_privilege` VALUES (62, 1, 27, 1);
-INSERT INTO `sys_role_privilege` VALUES (63, 1, 28, 1);
-INSERT INTO `sys_role_privilege` VALUES (64, 1, 29, 1);
-INSERT INTO `sys_role_privilege` VALUES (65, 1, 30, 1);
-INSERT INTO `sys_role_privilege` VALUES (66, 1, 39, 1);
-INSERT INTO `sys_role_privilege` VALUES (67, 1, 40, 1);
-INSERT INTO `sys_role_privilege` VALUES (68, 1, 41, 1);
-INSERT INTO `sys_role_privilege` VALUES (69, 1, 42, 1);
-INSERT INTO `sys_role_privilege` VALUES (70, 1, 43, 1);
-INSERT INTO `sys_role_privilege` VALUES (71, 1, 44, 1);
-INSERT INTO `sys_role_privilege` VALUES (72, 1, 45, 1);
-INSERT INTO `sys_role_privilege` VALUES (73, 1, 46, 1);
-INSERT INTO `sys_role_privilege` VALUES (74, 1, 47, 1);
-INSERT INTO `sys_role_privilege` VALUES (75, 1, 48, 1);
-INSERT INTO `sys_role_privilege` VALUES (76, 2, 49, 1);
-INSERT INTO `sys_role_privilege` VALUES (77, 2, 50, 1);
-INSERT INTO `sys_role_privilege` VALUES (78, 2, 51, 1);
-INSERT INTO `sys_role_privilege` VALUES (79, 3, 24, 1);
-INSERT INTO `sys_role_privilege` VALUES (80, 2, 53, 1);
-INSERT INTO `sys_role_privilege` VALUES (81, 2, 54, 1);
-INSERT INTO `sys_role_privilege` VALUES (82, 2, 55, 1);
-INSERT INTO `sys_role_privilege` VALUES (83, 2, 56, 1);
-INSERT INTO `sys_role_privilege` VALUES (84, 3, 25, 1);
-INSERT INTO `sys_role_privilege` VALUES (85, 2, 31, 1);
-INSERT INTO `sys_role_privilege` VALUES (86, 2, 32, 1);
-INSERT INTO `sys_role_privilege` VALUES (87, 2, 33, 1);
-INSERT INTO `sys_role_privilege` VALUES (88, 2, 34, 1);
-INSERT INTO `sys_role_privilege` VALUES (89, 3, 31, 1);
-INSERT INTO `sys_role_privilege` VALUES (90, 2, 36, 1);
-INSERT INTO `sys_role_privilege` VALUES (91, 2, 37, 1);
-INSERT INTO `sys_role_privilege` VALUES (92, 2, 38, 1);
-INSERT INTO `sys_role_privilege` VALUES (93, 1, 19, 1);
-INSERT INTO `sys_role_privilege` VALUES (94, 1, 20, 1);
-INSERT INTO `sys_role_privilege` VALUES (95, 1, 21, 1);
-INSERT INTO `sys_role_privilege` VALUES (96, 1, 22, 1);
-INSERT INTO `sys_role_privilege` VALUES (97, 1, 23, 1);
-INSERT INTO `sys_role_privilege` VALUES (98, 2, 24, 1);
-INSERT INTO `sys_role_privilege` VALUES (99, 2, 25, 1);
-INSERT INTO `sys_role_privilege` VALUES (100, 2, 27, 1);
-INSERT INTO `sys_role_privilege` VALUES (101, 3, 28, 1);
-INSERT INTO `sys_role_privilege` VALUES (102, 3, 29, 1);
-INSERT INTO `sys_role_privilege` VALUES (103, 3, 27, 1);
-INSERT INTO `sys_role_privilege` VALUES (104, 2, 39, 1);
-INSERT INTO `sys_role_privilege` VALUES (105, 2, 40, 1);
-INSERT INTO `sys_role_privilege` VALUES (106, 2, 41, 1);
-INSERT INTO `sys_role_privilege` VALUES (107, 2, 42, 1);
-INSERT INTO `sys_role_privilege` VALUES (108, 2, 43, 1);
-INSERT INTO `sys_role_privilege` VALUES (109, 2, 44, 1);
-INSERT INTO `sys_role_privilege` VALUES (110, 2, 45, 1);
-INSERT INTO `sys_role_privilege` VALUES (111, 2, 47, 1);
-INSERT INTO `sys_role_privilege` VALUES (112, 2, 48, 1);
-INSERT INTO `sys_role_privilege` VALUES (113, 2, 19, 1);
-INSERT INTO `sys_role_privilege` VALUES (114, 2, 20, 1);
-INSERT INTO `sys_role_privilege` VALUES (115, 2, 21, 1);
-INSERT INTO `sys_role_privilege` VALUES (116, 3, 19, 1);
-INSERT INTO `sys_role_privilege` VALUES (117, 3, 20, 1);
-INSERT INTO `sys_role_privilege` VALUES (118, 3, 49, 1);
-INSERT INTO `sys_role_privilege` VALUES (119, 3, 50, 1);
-INSERT INTO `sys_role_privilege` VALUES (120, 3, 51, 1);
-INSERT INTO `sys_role_privilege` VALUES (121, 3, 53, 1);
-INSERT INTO `sys_role_privilege` VALUES (122, 3, 55, 1);
-INSERT INTO `sys_role_privilege` VALUES (123, 3, 56, 1);
-INSERT INTO `sys_role_privilege` VALUES (124, 3, 32, 1);
-INSERT INTO `sys_role_privilege` VALUES (125, 3, 33, 1);
-INSERT INTO `sys_role_privilege` VALUES (126, 3, 34, 1);
-INSERT INTO `sys_role_privilege` VALUES (127, 3, 36, 1);
-INSERT INTO `sys_role_privilege` VALUES (128, 3, 37, 1);
-INSERT INTO `sys_role_privilege` VALUES (129, 3, 38, 1);
-INSERT INTO `sys_role_privilege` VALUES (130, 2, 28, 1);
-INSERT INTO `sys_role_privilege` VALUES (131, 2, 29, 1);
-INSERT INTO `sys_role_privilege` VALUES (132, 3, 39, 1);
-INSERT INTO `sys_role_privilege` VALUES (133, 3, 40, 1);
-INSERT INTO `sys_role_privilege` VALUES (134, 3, 41, 1);
-INSERT INTO `sys_role_privilege` VALUES (135, 3, 42, 1);
-INSERT INTO `sys_role_privilege` VALUES (136, 3, 43, 1);
-INSERT INTO `sys_role_privilege` VALUES (137, 3, 44, 1);
-INSERT INTO `sys_role_privilege` VALUES (138, 3, 45, 1);
-INSERT INTO `sys_role_privilege` VALUES (139, 3, 47, 1);
-INSERT INTO `sys_role_privilege` VALUES (140, 3, 48, 1);
-INSERT INTO `sys_role_privilege` VALUES (141, 3, 21, 1);
-INSERT INTO `sys_role_privilege` VALUES (142, 4, 31, 1);
-INSERT INTO `sys_role_privilege` VALUES (143, 4, 32, 1);
-INSERT INTO `sys_role_privilege` VALUES (144, 4, 34, 1);
-INSERT INTO `sys_role_privilege` VALUES (145, 4, 24, 1);
-INSERT INTO `sys_role_privilege` VALUES (146, 4, 25, 1);
-INSERT INTO `sys_role_privilege` VALUES (147, 4, 27, 1);
-INSERT INTO `sys_role_privilege` VALUES (148, 4, 28, 1);
-INSERT INTO `sys_role_privilege` VALUES (149, 4, 29, 1);
-INSERT INTO `sys_role_privilege` VALUES (150, 4, 39, 1);
-INSERT INTO `sys_role_privilege` VALUES (151, 4, 40, 1);
-INSERT INTO `sys_role_privilege` VALUES (152, 4, 41, 1);
-INSERT INTO `sys_role_privilege` VALUES (153, 4, 42, 1);
-INSERT INTO `sys_role_privilege` VALUES (154, 4, 43, 1);
-INSERT INTO `sys_role_privilege` VALUES (155, 4, 44, 1);
-INSERT INTO `sys_role_privilege` VALUES (156, 4, 45, 1);
-INSERT INTO `sys_role_privilege` VALUES (157, 4, 47, 1);
-INSERT INTO `sys_role_privilege` VALUES (158, 4, 48, 1);
-INSERT INTO `sys_role_privilege` VALUES (159, 4, 19, 1);
-INSERT INTO `sys_role_privilege` VALUES (160, 4, 20, 1);
-INSERT INTO `sys_role_privilege` VALUES (161, 4, 21, 1);
-INSERT INTO `sys_role_privilege` VALUES (162, 5, 24, 1);
-INSERT INTO `sys_role_privilege` VALUES (163, 5, 25, 1);
-INSERT INTO `sys_role_privilege` VALUES (164, 5, 27, 1);
-INSERT INTO `sys_role_privilege` VALUES (165, 5, 28, 1);
-INSERT INTO `sys_role_privilege` VALUES (166, 5, 29, 1);
-INSERT INTO `sys_role_privilege` VALUES (167, 5, 39, 1);
-INSERT INTO `sys_role_privilege` VALUES (168, 5, 40, 1);
-INSERT INTO `sys_role_privilege` VALUES (169, 5, 41, 1);
-INSERT INTO `sys_role_privilege` VALUES (170, 5, 42, 1);
-INSERT INTO `sys_role_privilege` VALUES (171, 5, 43, 1);
-INSERT INTO `sys_role_privilege` VALUES (172, 5, 44, 1);
-INSERT INTO `sys_role_privilege` VALUES (173, 5, 45, 1);
-INSERT INTO `sys_role_privilege` VALUES (174, 5, 47, 1);
-INSERT INTO `sys_role_privilege` VALUES (175, 5, 48, 1);
-INSERT INTO `sys_role_privilege` VALUES (176, 5, 19, 1);
-INSERT INTO `sys_role_privilege` VALUES (177, 5, 20, 1);
-INSERT INTO `sys_role_privilege` VALUES (178, 5, 21, 1);
-INSERT INTO `sys_role_privilege` VALUES (179, 8, 39, 1);
-INSERT INTO `sys_role_privilege` VALUES (180, 8, 40, 1);
-INSERT INTO `sys_role_privilege` VALUES (181, 8, 41, 1);
-INSERT INTO `sys_role_privilege` VALUES (182, 8, 42, 1);
-INSERT INTO `sys_role_privilege` VALUES (183, 8, 43, 1);
-INSERT INTO `sys_role_privilege` VALUES (184, 8, 44, 1);
-INSERT INTO `sys_role_privilege` VALUES (185, 8, 45, 1);
-INSERT INTO `sys_role_privilege` VALUES (186, 8, 47, 1);
-INSERT INTO `sys_role_privilege` VALUES (187, 8, 48, 1);
-INSERT INTO `sys_role_privilege` VALUES (188, 8, 19, 1);
-INSERT INTO `sys_role_privilege` VALUES (189, 8, 20, 1);
-INSERT INTO `sys_role_privilege` VALUES (190, 8, 21, 1);
-INSERT INTO `sys_role_privilege` VALUES (191, 6, 24, 1);
-INSERT INTO `sys_role_privilege` VALUES (192, 6, 25, 1);
-INSERT INTO `sys_role_privilege` VALUES (193, 6, 26, 1);
-INSERT INTO `sys_role_privilege` VALUES (194, 6, 39, 1);
-INSERT INTO `sys_role_privilege` VALUES (195, 6, 40, 1);
-INSERT INTO `sys_role_privilege` VALUES (196, 6, 41, 1);
-INSERT INTO `sys_role_privilege` VALUES (197, 6, 42, 1);
-INSERT INTO `sys_role_privilege` VALUES (198, 6, 19, 1);
-INSERT INTO `sys_role_privilege` VALUES (199, 6, 20, 1);
-INSERT INTO `sys_role_privilege` VALUES (200, 6, 21, 1);
-INSERT INTO `sys_role_privilege` VALUES (201, 9, 19, 1);
-INSERT INTO `sys_role_privilege` VALUES (202, 9, 20, 1);
-INSERT INTO `sys_role_privilege` VALUES (203, 9, 21, 1);
-COMMIT;
-
--- ----------------------------
--- Table structure for sys_supplier
--- ----------------------------
-DROP TABLE IF EXISTS `sys_supplier`;
-CREATE TABLE `sys_supplier` (
-                                `id` bigint NOT NULL COMMENT '主键',
-                                `name` varchar(100) NOT NULL COMMENT '名称',
-                                `code` varchar(100) NOT NULL COMMENT '编码',
-                                `type` varchar(20) NOT NULL COMMENT '类型,HUMAN:人力,DEVICE:设备',
-                                `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                                `remark` varchar(500) DEFAULT NULL COMMENT '备注',
-                                `sync` tinyint NOT NULL DEFAULT '0' COMMENT '是否crm同步,0:否,1:是',
-                                `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                                `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商表';
-
--- ----------------------------
--- Table structure for sys_user
--- ----------------------------
-DROP TABLE IF EXISTS `sys_user`;
-CREATE TABLE `sys_user` (
-                            `id` bigint NOT NULL COMMENT '主键',
-                            `login_name` varchar(100) NOT NULL COMMENT '用户名',
-                            `real_name` varchar(100) NOT NULL COMMENT '姓名',
-                            `code` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '工号',
-                            `password` varchar(50) NOT NULL COMMENT '密码',
-                            `mobile_number` varchar(30) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '手机号',
-                            `org_id` bigint DEFAULT NULL COMMENT '机构id',
-                            `gender` varchar(20) DEFAULT NULL COMMENT '性别,MAN:男,WOMAN:女',
-                            `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                            `pwd_count` tinyint DEFAULT '0' COMMENT '密码修改次数,默认为0',
-                            `pwd_update_time` bigint DEFAULT NULL COMMENT '密码修改时间',
-                            `remark` varchar(200) DEFAULT NULL COMMENT '备注',
-                            `source` varchar(20) CHARACTER SET utf8mb4 DEFAULT 'SYSTEM' COMMENT '来源,SYSTEM:系统自带,ARCHIVES:档案',
-                            `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                            `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                            `update_id` bigint DEFAULT NULL COMMENT '修改人',
-                            `update_time` bigint DEFAULT NULL COMMENT '修改时间',
-                            PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
-
--- ----------------------------
--- Records of sys_user
--- ----------------------------
-BEGIN;
-INSERT INTO `sys_user` VALUES (1, 'sysadmin', 'sysadmin', NULL, 'MTIzNDU2', NULL, NULL, NULL, 1, 1, 1629353956868, NULL, 'SYSTEM', NULL, NULL, NULL, 1629353956881);
-INSERT INTO `sys_user` VALUES (2, 'admin1', 'admin1', NULL, 'MTIzNDU2', null, 419897427273711616, 'MAN', 1, 1, 1629353956868, NULL, 'SYSTEM', NULL, NULL, NULL, 1629353956881);
-COMMIT;
-
--- ----------------------------
--- Table structure for sys_user_role
--- ----------------------------
-DROP TABLE IF EXISTS `sys_user_role`;
-CREATE TABLE `sys_user_role` (
-                                 `id` bigint NOT NULL COMMENT '主键',
-                                 `user_id` bigint NOT NULL COMMENT '用户id',
-                                 `role_id` bigint NOT NULL COMMENT '角色id',
-                                 `privilege_id` bigint DEFAULT NULL COMMENT '权限id',
-                                 `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                                 PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户和角色关联表';
-
--- ----------------------------
--- Records of sys_user_role
--- ----------------------------
-BEGIN;
-INSERT INTO `sys_user_role` VALUES (1, 1, 1, NULL, 1);
-INSERT INTO `sys_user_role` VALUES (2, 2, 2, NULL, 1);
-COMMIT;
-
--- ----------------------------
--- Table structure for t_b_crm
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_crm`;
-CREATE TABLE `t_b_crm` (
-                           `id` bigint NOT NULL COMMENT '主键',
-                           `crm_no` varchar(100) NOT NULL COMMENT '项目单号',
-                           `name` varchar(100) NOT NULL COMMENT '项目名称',
-                           `begin_time` bigint NOT NULL COMMENT '派单时间',
-                           `service_id` bigint NOT NULL COMMENT '服务单元id',
-                           `crm_user_id` bigint NOT NULL COMMENT '派单人id',
-                           `custom_id` bigint NOT NULL COMMENT '客户id',
-                           `exam_start_time` bigint DEFAULT NULL COMMENT '考试开始时间',
-                           `exam_end_time` bigint DEFAULT NULL COMMENT '考试结束时间',
-                           `product_id` bigint NOT NULL COMMENT '产品id',
-                           `lead_id` bigint DEFAULT NULL COMMENT '区域经理id',
-                           `sync` tinyint NOT NULL DEFAULT '0' COMMENT '是否crm同步,false:否,true:是',
-                           `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                           `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                           `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                           `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                           `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                           PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='派单信息表';
-
--- ----------------------------
--- Table structure for t_b_delay_warn
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_delay_warn`;
-CREATE TABLE `t_b_delay_warn` (
-                                  `id` bigint NOT NULL COMMENT '主键',
-                                  `crm_no` varchar(100) DEFAULT NULL COMMENT 'crm单号',
-                                  `sop_no` varchar(100) DEFAULT NULL COMMENT 'sop单号',
-                                  `service_id` bigint DEFAULT NULL COMMENT '服务单元id',
-                                  `message_id` bigint DEFAULT NULL COMMENT '消息id',
-                                  `code` varchar(20) NOT NULL COMMENT '编号',
-                                  `warn_time` bigint DEFAULT NULL COMMENT '预警时间',
-                                  `user_id` bigint DEFAULT NULL COMMENT '负责人id',
-                                  `type` varchar(20) NOT NULL COMMENT '类型,PLAN:关键信息及计划,TIME:处理时限',
-                                  `field_obj` mediumtext COMMENT '预警字段',
-                                  `status` varchar(20) NOT NULL COMMENT '状态,NOT_START:未跟进,FOLLOW:跟进,CLOSE:关闭,RESTART:重启',
-                                  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                  `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                                  `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='延期预警跟进表';
-
--- ----------------------------
--- Table structure for t_b_delay_warn_detail
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_delay_warn_detail`;
-CREATE TABLE `t_b_delay_warn_detail` (
-                                         `id` bigint NOT NULL COMMENT '主键',
-                                         `delay_warn_id` bigint NOT NULL COMMENT '延期预警id',
-                                         `remark` varchar(500) NOT NULL COMMENT '跟进说明',
-                                         `attachment_ids` varchar(500) DEFAULT NULL COMMENT '附件ids',
-                                         `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                         `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                         PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='延期预警明细表';
-
--- ----------------------------
--- Table structure for t_b_device_in_out
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_device_in_out`;
-CREATE TABLE `t_b_device_in_out` (
-                                     `id` bigint NOT NULL COMMENT '主键',
-                                     `service_id` bigint NOT NULL COMMENT '服务单元id',
-                                     `crm_no` varchar(100) DEFAULT NULL COMMENT 'crm单号',
-                                     `sop_no` varchar(100) DEFAULT NULL COMMENT 'sop单号',
-                                     `in_out_time` bigint NOT NULL COMMENT '出/入库时间',
-                                     `user_id` bigint NOT NULL COMMENT '登记人id',
-                                     `custom_name` varchar(100) DEFAULT NULL COMMENT '客户名称',
-                                     `type` varchar(20) DEFAULT NULL COMMENT '类型,IN:入库,OUT:出库',
-                                     `device_no` varchar(50) DEFAULT NULL COMMENT '设备编号',
-                                     `supplier_name` varchar(100) DEFAULT NULL COMMENT '供应商名称',
-                                     `address` varchar(100) DEFAULT NULL COMMENT '发往地',
-                                     `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                     `create_time` bigint DEFAULT NULL COMMENT '创建人时间',
-                                     PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备出入库登记';
-
--- ----------------------------
--- Table structure for t_b_ding
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_ding`;
-CREATE TABLE `t_b_ding` (
-                            `id` bigint NOT NULL COMMENT '主键',
-                            `sop_no` varchar(100) DEFAULT NULL COMMENT 'sop单号',
-                            `crm_no` varchar(100) DEFAULT NULL COMMENT 'crm单号',
-                            `service_id` bigint DEFAULT NULL COMMENT '服务单元id',
-                            `user_id` bigint NOT NULL COMMENT '用户id',
-                            `flow_id` bigint DEFAULT NULL COMMENT '流程id',
-                            `task_id` bigint DEFAULT NULL COMMENT '流程任务id',
-                            `sign_date` varchar(20) NOT NULL COMMENT '签到日期',
-                            `sign_in_time` bigint DEFAULT NULL COMMENT '签到时间',
-                            `axis_in_x` varchar(20) DEFAULT NULL COMMENT '坐标轴X',
-                            `axis_in_y` varchar(20) DEFAULT NULL COMMENT '坐标轴Y',
-                            `face_in_error` tinyint DEFAULT NULL COMMENT '人脸识别是否通过,0:未通过,1:通过',
-                            `sign_out_time` bigint DEFAULT NULL COMMENT '签退时间',
-                            `axis_out_x` varchar(20) DEFAULT NULL COMMENT '坐标轴X',
-                            `axis_out_Y` varchar(20) DEFAULT NULL COMMENT '坐标轴Y',
-                            `face_out_error` tinyint DEFAULT NULL COMMENT '人脸识别是否通过,0:未通过,1:通过',
-                            `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                            `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                            `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                            `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                            PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤打卡表';
-
--- ----------------------------
--- Table structure for t_b_ding_apply
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_ding_apply`;
-CREATE TABLE `t_b_ding_apply` (
-                                  `id` bigint NOT NULL COMMENT '主键',
-                                  `ding_id` bigint NOT NULL COMMENT '考勤id',
-                                  `type` varchar(20) NOT NULL COMMENT '类型,IN:签到,OUT:签退',
-                                  `apply_time` bigint NOT NULL COMMENT '补卡时间',
-                                  `reason` varchar(500) NOT NULL COMMENT '补卡原因',
-                                  `attachment_id` bigint DEFAULT NULL COMMENT '附件id',
-                                  `flow_id` bigint DEFAULT NULL COMMENT '流程id',
-                                  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                  `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤补卡申请表';
-
--- ----------------------------
--- Table structure for t_b_ding_history
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_ding_history`;
-CREATE TABLE `t_b_ding_history` (
-                                    `id` bigint NOT NULL COMMENT '主键',
-                                    `ding_id` bigint NOT NULL COMMENT '考勤id',
-                                    `sign_date` varchar(20) NOT NULL COMMENT '签到日期',
-                                    `sign_in_time` bigint DEFAULT NULL COMMENT '签到时间',
-                                    `axis_in_x` varchar(20) DEFAULT NULL COMMENT '坐标轴X',
-                                    `axis_in_y` varchar(20) DEFAULT NULL COMMENT '坐标轴Y',
-                                    `face_in_error` tinyint DEFAULT NULL COMMENT '人脸识别是否通过,0:未通过,1:通过',
-                                    `sign_out_time` bigint DEFAULT NULL COMMENT '签退时间',
-                                    `axis_out_x` varchar(20) DEFAULT NULL COMMENT '坐标轴X',
-                                    `axis_out_Y` varchar(20) DEFAULT NULL COMMENT '坐标轴Y',
-                                    `face_out_error` tinyint DEFAULT NULL COMMENT '人脸识别是否通过,0:未通过,1:通过',
-                                    `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                    `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                    PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤打卡表';
-
--- ----------------------------
--- Table structure for t_b_engineer_allocation
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_engineer_allocation`;
-CREATE TABLE `t_b_engineer_allocation` (
-                                           `id` bigint NOT NULL COMMENT '主键',
-                                           `service_id` bigint DEFAULT NULL COMMENT '服务单元id',
-                                           `sop_no` varchar(100) DEFAULT NULL COMMENT 'sop单号',
-                                           `crm_no` varchar(100) DEFAULT NULL COMMENT 'crm单号',
-                                           `engineer_user_id` bigint NOT NULL COMMENT '用户id',
-                                           `role_id` bigint NOT NULL COMMENT '角色id',
-                                           PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='sop工程师分配表';
-
--- ----------------------------
--- Table structure for t_b_product
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_product`;
-CREATE TABLE `t_b_product` (
-                               `id` bigint NOT NULL COMMENT '主键',
-                               `name` varchar(100) NOT NULL COMMENT '名称',
-                               `code` varchar(100) NOT NULL COMMENT '编码,CLOUD_MARK:云阅卷',
-                               `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                               `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                               `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                               PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品表';
-
--- ----------------------------
--- Table structure for t_b_project_exchange
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_project_exchange`;
-CREATE TABLE `t_b_project_exchange` (
-                                        `id` bigint NOT NULL COMMENT '主键',
-                                        `sop_no` varchar(100) DEFAULT NULL COMMENT 'sop单号',
-                                        `crm_no` varchar(100) DEFAULT NULL COMMENT 'crm单号',
-                                        `service_id` bigint DEFAULT NULL COMMENT '服务单元id',
-                                        `type` varchar(20) NOT NULL COMMENT '变更类型,PLAN:项目信息及计划,TIME:处理时限,CANCEL:项目取消',
-                                        `reason` varchar(500) NOT NULL COMMENT '变更原因',
-                                        `content_json` mediumtext COMMENT '变更内容json',
-                                        `enable` tinyint NOT NULL DEFAULT '0' COMMENT '是否启用,0:停用,1:启用',
-                                        `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                        `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                        PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目变更计划表';
-
--- ----------------------------
--- Table structure for t_b_quality_problem_apply
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_quality_problem_apply`;
-CREATE TABLE `t_b_quality_problem_apply` (
-                                             `id` bigint NOT NULL COMMENT '主键',
-                                             `sop_no` varchar(100) DEFAULT NULL COMMENT 'sop单号',
-                                             `crm_no` varchar(100) DEFAULT NULL COMMENT 'crm单号',
-                                             `service_id` bigint DEFAULT NULL COMMENT '服务单元id',
-                                             `summary` varchar(1000) NOT NULL COMMENT '问题简要',
-                                             `user_id` bigint NOT NULL COMMENT '责任人id',
-                                             `type` varchar(20) NOT NULL COMMENT '问题类型,UPDATE:修正类,OPTIMIZE:优化类,NO_PROBLEM:不是问题',
-                                             `reason` varchar(20) NOT NULL COMMENT '问题原因类型,EXEC:执行类,MANAGER:管理协调类,FLOW:流程制度类,PRODUCT_PROBLEM:产品缺陷类,PRODUCT_MANAGER:产品运维类,OTHER:其它',
-                                             `attachment_id` bigint DEFAULT NULL COMMENT '附件id',
-                                             `Influence_degree` varchar(20) DEFAULT NULL COMMENT '影响度:A,B,C,D',
-                                             `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                             `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                             PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='质量问题反馈表';
-
--- ----------------------------
--- Table structure for t_b_service
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_service`;
-CREATE TABLE `t_b_service` (
-                               `id` bigint NOT NULL COMMENT '主键',
-                               `name` varchar(100) NOT NULL COMMENT '名称',
-                               `type` varchar(20) NOT NULL COMMENT '类型,OFFICE:教务处,CLOUD_MARK:云阅卷',
-                               `start_time` bigint NOT NULL COMMENT '开始时间',
-                               `end_time` bigint NOT NULL COMMENT '结束时间',
-                               `region_people_count` int NOT NULL COMMENT '区域协调人数量',
-                               `region_project_count` int NOT NULL COMMENT '区域项目数量',
-                               `service_lead_id` bigint NOT NULL COMMENT '服务单元负责人id',
-                               `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                               `status` varchar(20) NOT NULL COMMENT '状态,NEW:新建,PUBLISH:已发布,FINISH:已完结,CANCEL:已作废',
-                               `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                               `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                               `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                               `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                               PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务单元表';
-
--- ----------------------------
--- Table structure for t_b_service_region
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_service_region`;
-CREATE TABLE `t_b_service_region` (
-                                      `id` bigint NOT NULL COMMENT '主键',
-                                      `service_id` bigint NOT NULL COMMENT '服务单元id',
-                                      `lead_id` bigint NOT NULL COMMENT '区域经理id',
-                                      `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                                      `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                      `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                      `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                                      `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                      PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务区域规划表';
-
--- ----------------------------
--- Table structure for t_b_service_region_deatil
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_service_region_deatil`;
-CREATE TABLE `t_b_service_region_deatil` (
-                                             `id` bigint NOT NULL COMMENT '主键',
-                                             `service_region_id` bigint NOT NULL COMMENT '服务区域规划id',
-                                             `country` varchar(100) NOT NULL DEFAULT '中国' COMMENT '国家',
-                                             `province` varchar(100) NOT NULL COMMENT '省份',
-                                             `city` varchar(100) NOT NULL COMMENT '城市',
-                                             `area` varchar(100) DEFAULT NULL COMMENT '县区',
-                                             `address` varchar(150) DEFAULT NULL COMMENT '地址',
-                                             PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务区域规划明细表';
-
--- ----------------------------
--- Table structure for t_b_service_scope
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_service_scope`;
-CREATE TABLE `t_b_service_scope` (
-                                     `id` bigint NOT NULL COMMENT '主键',
-                                     `service_id` bigint NOT NULL COMMENT '服务单元id',
-                                     `crm_no` varchar(100) NOT NULL COMMENT 'crm单号',
-                                     `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                     `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                     PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务单元范围管理表';
-
--- ----------------------------
--- Table structure for t_b_session
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_session`;
-CREATE TABLE `t_b_session` (
-                               `id` varchar(100) NOT NULL COMMENT '主键',
-                               `org_id` bigint DEFAULT NULL COMMENT '机构id',
-                               `identity` varchar(100) NOT NULL COMMENT '用户标识',
-                               `type` varchar(50) NOT NULL COMMENT '用户类型',
-                               `source` varchar(50) NOT NULL COMMENT '访问来源',
-                               `platform` varchar(50) NOT NULL COMMENT '设备分类',
-                               `device_id` varchar(100) NOT NULL COMMENT '设备标识',
-                               `address` varchar(100) NOT NULL COMMENT '登录IP地址',
-                               `access_token` varchar(50) NOT NULL COMMENT '访问令牌',
-                               `last_access_time` bigint DEFAULT NULL COMMENT '最近访问时间',
-                               `last_access_ip` varchar(100) DEFAULT NULL COMMENT '最近访问IP地址',
-                               `update_time` bigint DEFAULT NULL COMMENT '令牌更新时间',
-                               `expire_time` bigint DEFAULT NULL COMMENT '令牌强制失效时间',
-                               `app_source` varchar(50) DEFAULT NULL COMMENT '应用来源',
-                               PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会话表';
-
--- ----------------------------
--- Table structure for t_b_sop_info
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_sop_info`;
-CREATE TABLE `t_b_sop_info` (
-                                `id` bigint NOT NULL COMMENT '主键',
-                                `crm_no` varchar(100) NOT NULL COMMENT 'crm单号',
-                                `sop_no` varchar(100) NOT NULL COMMENT 'sop单号',
-                                `service_id` bigint NOT NULL COMMENT '服务单元id',
-                                `custom_id` bigint NOT NULL COMMENT '客户id',
-                                `college_name` varchar(50) NOT NULL COMMENT '学院名称',
-                                `project_name` bigint NOT NULL COMMENT '项目名称',
-                                `project_id` bigint NOT NULL COMMENT '产品id',
-                                `region_user_id` bigint DEFAULT NULL COMMENT '区域负责人id',
-                                `cloud_mark_user_id` bigint DEFAULT NULL COMMENT '阅卷负责人id',
-                                `type` varchar(20) NOT NULL COMMENT '类型,OFFICE:教务处,CLOUD_MARK:云阅卷',
-                                `user_id` bigint NOT NULL COMMENT '提交人id',
-                                `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                                `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='sop表';
-
--- ----------------------------
--- Table structure for t_b_task
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_task`;
-CREATE TABLE `t_b_task` (
-                            `id` bigint NOT NULL COMMENT '主键',
-                            `type` varchar(50) NOT NULL COMMENT '任务类型,USER_ARCHIVES_IMPORT:人员档案导入,USER_ARCHIVES_EXPORT:人员档案导出,CUSTOM_IMPORT:客户导入',
-                            `entity_id` bigint DEFAULT NULL COMMENT '关联业务对象id',
-                            `status` varchar(30) NOT NULL COMMENT '任务状态,INIT:未开始,RUNNING:进行中,FINISH:已完成',
-                            `summary` text COMMENT '实时摘要信息',
-                            `progress` double DEFAULT NULL COMMENT '执行进度',
-                            `result` varchar(30) DEFAULT NULL COMMENT '数据结果,SUCCESS:成功,ERROR:失败',
-                            `enable` tinyint NOT NULL DEFAULT '1' COMMENT '是否启用,false:停用,true:启用',
-                            `import_file_name` varchar(100) DEFAULT NULL COMMENT '导入文件名',
-                            `import_file_path` varchar(500) DEFAULT NULL COMMENT '导入文件路径',
-                            `result_file_path` varchar(500) DEFAULT NULL COMMENT '导出文件路径',
-                            `report_file_path` varchar(500) DEFAULT NULL COMMENT '报告路径',
-                            `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                            `update_id` bigint DEFAULT NULL COMMENT '更新人',
-                            `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                            `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                            `org_id` bigint DEFAULT NULL COMMENT '机构id',
-                            `remark` mediumtext COMMENT '备注',
-                            `obj_name` varchar(500) DEFAULT NULL COMMENT '实体名称',
-                            `reset_count` int DEFAULT '0' COMMENT '重试次数',
-                            `version` int DEFAULT '0' COMMENT '更新版本号',
-                            `error_message` varchar(500) DEFAULT NULL COMMENT '人工错误原因',
-                            PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='导入导出任务表';
-
--- ----------------------------
--- Table structure for t_b_user_archives
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_user_archives`;
-CREATE TABLE `t_b_user_archives` (
-                                     `id` bigint NOT NULL COMMENT '主键',
-                                     `code` varchar(50) NOT NULL COMMENT '编号',
-                                     `name` varchar(100) NOT NULL COMMENT '姓名',
-                                     `country` varchar(100) NOT NULL DEFAULT '中国' COMMENT '国家',
-                                     `province` varchar(100) NOT NULL COMMENT '省份',
-                                     `city` varchar(100) NOT NULL COMMENT '城市',
-                                     `area` varchar(100) DEFAULT NULL COMMENT '县区',
-                                     `address` varchar(150) DEFAULT NULL COMMENT '地址',
-                                     `identity` varchar(50) NOT NULL COMMENT '身份证号',
-                                     `gender` varchar(20) NOT NULL COMMENT '性别,MAN:男,WOMAN:女',
-                                     `education` varchar(20) DEFAULT NULL COMMENT '学历',
-                                     `mobile_number` varchar(30) NOT NULL COMMENT '手机号',
-                                     `email` varchar(30) NOT NULL COMMENT '邮箱',
-                                     `base_photo_path` varchar(500) NOT NULL COMMENT '底照保存地址',
-                                     `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                     `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                     `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                                     `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                     PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员档案表';
-
--- ----------------------------
--- Table structure for t_b_user_archives_allocation
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_user_archives_allocation`;
-CREATE TABLE `t_b_user_archives_allocation` (
-                                                `id` bigint NOT NULL COMMENT '主键',
-                                                `service_id` bigint DEFAULT NULL COMMENT '服务单元id',
-                                                `sop_no` varchar(100) DEFAULT NULL COMMENT 'sop单号',
-                                                `crm_no` varchar(100) DEFAULT NULL COMMENT 'crm单号',
-                                                `region_user_id` bigint NOT NULL COMMENT '区域协调人id',
-                                                `user_id` bigint NOT NULL COMMENT '工程师id',
-                                                `role_id` bigint NOT NULL COMMENT '角色id',
-                                                PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员分配表';
-
--- ----------------------------
--- Table structure for t_b_user_archives_supplier
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_user_archives_supplier`;
-CREATE TABLE `t_b_user_archives_supplier` (
-                                              `id` bigint NOT NULL COMMENT '主键',
-                                              `user_archives_id` bigint NOT NULL COMMENT '人员档案id',
-                                              `archives_time` bigint NOT NULL COMMENT '入档时间',
-                                              `authentication_time` bigint DEFAULT NULL COMMENT '认证时间',
-                                              `authentication_score` double DEFAULT NULL COMMENT '认证成绩',
-                                              `authentication_valid_time` bigint DEFAULT NULL COMMENT '认证有效时间',
-                                              `remark` varchar(500) DEFAULT NULL COMMENT '备注',
-                                              PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员档案与供应商表';
-
--- ----------------------------
--- Table structure for t_b_violation
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_violation`;
-CREATE TABLE `t_b_violation` (
-                                 `id` bigint NOT NULL COMMENT '主键',
-                                 `crm_no` varchar(100) DEFAULT NULL COMMENT 'crm单号',
-                                 `sop_no` varchar(100) DEFAULT NULL COMMENT 'sop单号',
-                                 `service_id` bigint DEFAULT NULL COMMENT '服务单元id',
-                                 `user_id` bigint NOT NULL COMMENT '负责人id',
-                                 `type` varchar(20) NOT NULL COMMENT '类型,CONTENT_ERROR:内容错误虚假,LOGIC_ERROR:逻辑不合理,OTHER:其它',
-                                 `content` varchar(500) NOT NULL COMMENT '违规情况',
-                                 `status` varchar(20) NOT NULL COMMENT '状态,NOT_START:未跟进,FOLLOW:跟进,CLOSE:关闭,RESTART:重启',
-                                 `attachment_ids` varchar(500) DEFAULT NULL COMMENT '附件ids',
-                                 `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                 `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                 `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                                 `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                 PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='sop违规登记表';
-
--- ----------------------------
--- Table structure for t_b_violation_detail
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_violation_detail`;
-CREATE TABLE `t_b_violation_detail` (
-                                        `id` bigint NOT NULL COMMENT '主键',
-                                        `violation_id` bigint NOT NULL COMMENT '违规id',
-                                        `remark` varchar(500) NOT NULL COMMENT '跟进说明',
-                                        `attachment_ids` varchar(500) DEFAULT NULL COMMENT '附件ids',
-                                        `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                        `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                        PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='违规明细表';
-
--- ----------------------------
--- Table structure for t_d_form_widget
--- ----------------------------
-DROP TABLE IF EXISTS `t_d_form_widget`;
-CREATE TABLE `t_d_form_widget` (
-                                   `id` bigint NOT NULL COMMENT '主键',
-                                   `parent_id` bigint DEFAULT NULL COMMENT '父id',
-                                   `code` varchar(20) DEFAULT NULL COMMENT '编码,TEXT:文本,TEXTAREA:文本域,SELECT:下拉框,RADIO:单选框,CHECKBOX:复选框,DATE:日期,BUTTON:按钮,IMG:图片,VIDEO:视频,AUDIO:音频,FILE:文件,POP_SELECT:弹出选择框,LABEL:标签,TABLE:表格,SIGN:签名,CASCADE_ADDRESS:城市选择控件,OTHER:其它',
-                                   `type` varchar(20) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '类型,FORM:表单,TABLE:表格,OTHER:其它',
-                                   `fit` varchar(20) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '适用,PC:电脑端,MOBILE:移动端,COMMON:共用',
-                                   `form_id` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '表单id',
-                                   `form_name` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '表单名称',
-                                   `title` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '标题',
-                                   `input_type` varchar(20) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '输入类型,STRING:字符串,INT:整型,LONG:长整型,DOUBLE:浮点型,ENUM:枚举,DATE:日期,BOOL:布尔,BIGDECIMAL:精确浮点',
-                                   `required` tinyint DEFAULT '1' COMMENT '是否必填,0:非必填,1:必填',
-                                   `readable` tinyint DEFAULT '0' COMMENT '是否只读,0:非只读,1:只读',
-                                   `writable` tinyint DEFAULT '1' COMMENT '是否可写,0:非可写,1:可写',
-                                   `visable` tinyint DEFAULT '1' COMMENT '是否可见,0:不可见,1:可见',
-                                   `scale` int DEFAULT NULL COMMENT '保留小数点几位',
-                                   `length` int DEFAULT NULL COMMENT '长度',
-                                   `binding` varchar(30) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '绑定字段',
-                                   `value` varchar(500) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '控件用值',
-                                   `data_grid` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '数据来源',
-                                   `tips` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '提示',
-                                   `format` varchar(20) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '格式',
-                                   `span` int DEFAULT '6' COMMENT '占宽符',
-                                   `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                   `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                   `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                                   `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='动态表单控件表';
-
--- ----------------------------
--- Table structure for t_d_table_prop
--- ----------------------------
-DROP TABLE IF EXISTS `t_d_table_prop`;
-CREATE TABLE `t_d_table_prop` (
-                                  `id` bigint NOT NULL COMMENT '主键',
-                                  `widget_id` bigint DEFAULT NULL COMMENT '控件id',
-                                  `td_index` int DEFAULT NULL COMMENT '序号',
-                                  `td_id` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '列id',
-                                  `td_name` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '列名称',
-                                  `title` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '标题',
-                                  `width` double DEFAULT NULL COMMENT '宽度',
-                                  `height` double DEFAULT NULL COMMENT '高度',
-                                  `color` varchar(20) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '颜色',
-                                  `rowspan` int DEFAULT NULL COMMENT '跨行',
-                                  `colspan` int DEFAULT NULL COMMENT '跨列',
-                                  `tips` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '提示',
-                                  `td_order` tinyint DEFAULT '1' COMMENT '是否排序,0:不排序,1:排序',
-                                  `td_search` tinyint DEFAULT '1' COMMENT '是否搜索,0:不搜索,1:搜索',
-                                  `edit_widget_id` bigint DEFAULT NULL COMMENT '编辑控件id',
-                                  `obj` mediumtext CHARACTER SET utf8mb4 COMMENT '实体内容',
-                                  `create_id` bigint DEFAULT NULL COMMENT '创建人id',
-                                  `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                  `update_id` bigint DEFAULT NULL COMMENT '更新人id',
-                                  `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='表格属性表';
-
--- ----------------------------
--- Table structure for t_f_custom_flow
--- ----------------------------
-DROP TABLE IF EXISTS `t_f_custom_flow`;
-CREATE TABLE `t_f_custom_flow` (
-                                   `id` bigint NOT NULL COMMENT '主键',
-                                   `org_id` bigint DEFAULT NULL COMMENT '机构id',
-                                   `name` varchar(100) NOT NULL COMMENT '流程名称',
-                                   `model_type` varchar(50) NOT NULL COMMENT '流程模式类型,USER_FIXED:指定人员,APPROVE_SET:发起人指定',
-                                   `type` varchar(100) NOT NULL COMMENT '流程类型,OFFICE_SOP_FLOW:教务处SOP,CLOUD_MARK_SOP_FLOW:云阅卷SOP,DING_EXCEPTION_FLOW:考勤异常审核流程,PROJECT_EXCHANGE_FLOW:项目计划变更流程,QUALITY_PROBLEM_FLOW:质量问题反馈流程',
-                                   `enable` tinyint DEFAULT '1' COMMENT '是否启用,0:停用,1:启用',
-                                   `publish` tinyint NOT NULL DEFAULT '1' COMMENT '是否发布,0:否,1:是',
-                                   `object_data` mediumtext COMMENT '自定义流程源数据',
-                                   `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                                   `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                   `update_id` bigint DEFAULT NULL COMMENT '更新人',
-                                   `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                   `version` int NOT NULL DEFAULT '1' COMMENT '版本号',
-                                   `flow_definition_id` varchar(50) DEFAULT NULL COMMENT '流程定义id',
-                                   `flow_deployment_id` varchar(50) DEFAULT NULL COMMENT '流程部署id',
-                                   `flow_process_var` mediumtext COMMENT '流程过程变量数据',
-                                   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自定义流程表';
-
--- ----------------------------
--- Table structure for t_f_custom_flow_entity
--- ----------------------------
-DROP TABLE IF EXISTS `t_f_custom_flow_entity`;
-CREATE TABLE `t_f_custom_flow_entity` (
-                                          `id` bigint NOT NULL COMMENT '主键',
-                                          `t_f_custom_flow_id` bigint NOT NULL COMMENT '自定义流程id',
-                                          `code` varchar(20) DEFAULT NULL COMMENT '编号',
-                                          `obj_id` bigint DEFAULT NULL COMMENT '实体id',
-                                          `flow_id` bigint DEFAULT NULL COMMENT '流程id',
-                                          `flow_process_var` mediumtext NOT NULL COMMENT '流程过程变量',
-                                          `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                                          `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                          `update_id` bigint DEFAULT NULL COMMENT '更新人',
-                                          `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                          PRIMARY KEY (`id`) USING BTREE,
-                                          KEY `flow_entity_flowId_idx` (`flow_id`),
-                                          KEY `flow_entity_custom_flowId_idx` (`t_f_custom_flow_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自定义流程实体数据';
-
--- ----------------------------
--- Table structure for t_f_flow_approve
--- ----------------------------
-DROP TABLE IF EXISTS `t_f_flow_approve`;
-CREATE TABLE `t_f_flow_approve` (
-                                    `id` bigint NOT NULL COMMENT '主键',
-                                    `org_id` bigint DEFAULT NULL COMMENT '机构id',
-                                    `flow_id` bigint NOT NULL COMMENT '流程id',
-                                    `approve_id` bigint DEFAULT NULL COMMENT '审核id',
-                                    `status` varchar(50) NOT NULL COMMENT '状态,START:已开始,AUDITING:审核中,REJECT:已驳回,END:已终止,FINISH:已结束',
-                                    `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                                    `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                    `update_id` bigint DEFAULT NULL COMMENT '更新人',
-                                    `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                    `setup` tinyint NOT NULL COMMENT '计划步骤',
-                                    `approve_setup` int DEFAULT NULL COMMENT '审批步骤',
-                                    `approve_max_setup` int DEFAULT NULL COMMENT '最大审批步骤',
-                                    `transfer_assignee` mediumtext COMMENT '流程转办',
-                                    `all_assignee` mediumtext COMMENT '会签审批人',
-                                    `reject_link` mediumtext COMMENT '驳回路线',
-                                    PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程审核表';
-
--- ----------------------------
--- Table structure for t_f_flow_log
--- ----------------------------
-DROP TABLE IF EXISTS `t_f_flow_log`;
-CREATE TABLE `t_f_flow_log` (
-                                `id` bigint NOT NULL COMMENT '主键',
-                                `org_id` bigint DEFAULT NULL COMMENT '机构id',
-                                `flow_id` bigint NOT NULL COMMENT '流程id',
-                                `object_table` varchar(100) DEFAULT NULL COMMENT '实体表',
-                                `object_id` bigint NOT NULL COMMENT '实体id',
-                                `approve_id` bigint DEFAULT NULL COMMENT '审核人id',
-                                `approve_setup` tinyint DEFAULT NULL COMMENT '审核步骤',
-                                `approve_remark` mediumtext COMMENT '审核意见',
-                                `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                                `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                                `update_id` bigint DEFAULT NULL COMMENT '更新人',
-                                `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                                `approve_operation` varchar(50) NOT NULL COMMENT '审批操作,SUBMIT:提交,APPROVE:审批,REJECT:驳回,END:终止',
-                                `pend_approve_id` mediumtext COMMENT '待审核人id',
-                                `attachment_ids` mediumtext COMMENT '附件id集合',
-                                `approve_multi_setup` int DEFAULT NULL COMMENT '审批步骤',
-                                `approve_user_approve_type` varchar(30) DEFAULT NULL COMMENT '审批用户类别,ORDER:依次审批,ALL:会签(所有人必须审批),SOME:或签(一名审批人同意或拒绝即可)',
-                                `task_id` bigint DEFAULT NULL COMMENT '流程节点id',
-                                PRIMARY KEY (`id`) USING BTREE,
-                                KEY `flow_log_objectId_idx` (`object_id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程流水表';
-
--- ----------------------------
--- Table structure for t_g_error
--- ----------------------------
-DROP TABLE IF EXISTS `t_g_error`;
-CREATE TABLE `t_g_error` (
-                             `id` bigint NOT NULL COMMENT '主键',
-                             `org_id` bigint DEFAULT NULL COMMENT '机构id',
-                             `obj_id` bigint DEFAULT NULL COMMENT '实体id',
-                             `summary` mediumtext COMMENT '实时摘要信息',
-                             `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                             PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='全局异常错误信息表';
-
--- ----------------------------
--- Table structure for t_s_auth
--- ----------------------------
-DROP TABLE IF EXISTS `t_s_auth`;
-CREATE TABLE `t_s_auth` (
-                            `id` bigint NOT NULL COMMENT '主键',
-                            `school_id` bigint DEFAULT NULL COMMENT '学校id',
-                            `access_key` varchar(255) DEFAULT NULL COMMENT 'accessKey',
-                            `access_secret` varchar(255) DEFAULT NULL COMMENT 'accessSecret',
-                            `description` text COMMENT '离线授权证书',
-                            `type` varchar(16) NOT NULL COMMENT '授权类型',
-                            `create_id` bigint DEFAULT NULL COMMENT '创建人',
-                            `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-                            `update_id` bigint DEFAULT NULL COMMENT '更新人',
-                            `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-                            `expire_time` bigint DEFAULT NULL COMMENT '过期时间',
-                            `file` mediumblob COMMENT '文件数据',
-                            PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='激活授权配置表';

+ 28 - 1
sop-business/src/main/resources/db/log/wangliang_update_log.sql

@@ -1144,4 +1144,31 @@ WHERE id=202;
 
 UPDATE sys_privilege
 SET name='考勤明细查询', url='dingDetail', `type`='MENU', parent_id=25, `sequence`=1, property=NULL, related='1041,1042,1043', enable=1, default_auth=0, front_display=1
-WHERE id=1044;
+WHERE id=1044;
+
+--2023.9.15update
+CREATE TABLE t_wxapp_info
+(
+    open_id VARCHAR(100)
+        COMMENT 'openId' NOT NULL,
+    phone VARCHAR(30)
+        COMMENT '手机号' NOT NULL
+);
+
+ALTER TABLE t_wxapp_info ADD CONSTRAINT pkt_wxapp_info
+    PRIMARY KEY (open_id);
+
+/* Add Comments */
+ALTER TABLE t_wxapp_info COMMENT = '微信信息表';
+
+/* Build Table Structure */
+CREATE TABLE t_wxapp_access_token
+(
+    access_token VARCHAR(100)
+        COMMENT 'token' NOT NULL,
+    expires_time BIGINT
+        COMMENT '过期时间' NOT NULL
+);
+
+/* Add Comments */
+ALTER TABLE t_wxapp_access_token COMMENT = '微信token表';

+ 5 - 0
sop-business/src/main/resources/mapper/TWxappAccessTokenMapper.xml

@@ -0,0 +1,5 @@
+<?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.qmth.sop.business.mapper.TWxappAccessTokenMapper">
+
+</mapper>

+ 5 - 0
sop-business/src/main/resources/mapper/TWxappInfoMapper.xml

@@ -0,0 +1,5 @@
+<?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.qmth.sop.business.mapper.TWxappInfoMapper">
+
+</mapper>

+ 13 - 0
sop-common/src/main/java/com/qmth/sop/common/contant/SystemConstant.java

@@ -105,6 +105,15 @@ public class SystemConstant {
 //    public static final String APPROVE_AUTO = "auto";
     public static final String SYSTEM_AUTO_APPROVE = "系统自动审批";
 
+    /**
+     * 微信app
+     */
+    public static final String AUTHORIZATION_CODE = "authorization_code";
+    public static final String APP_ID = "appid";
+    public static final String SECRET = "secret";
+    public static final String JS_CODE = "js_code";
+    public static final String GRANT_TYPE = "grant_type";
+
     /**
      * sop列表转换字段
      */
@@ -188,6 +197,9 @@ public class SystemConstant {
     public static final String SMS_FLOW_DING_EXCEPTION_FINISH_CODE = "sms.flow.ding.exception.finish.code";
     public static final String SMS_SOP_AFTER_REMIND_CODE = "sms.sop.after.remind.code";
     public static final String SMS_VIOLATION_REMIND_CODE = "sms.violation.remind.code";
+    public static final String WXAPP_APP_ID = "wxapp.appid";
+    public static final String WXAPP_REQUEST_URL = "wxapp.request.url";
+    public static final String WXAPP_PHONE_BIND_NEW_URL = "wxapp.phone.bind.new.url";
 
     /**
      * api前缀
@@ -195,6 +207,7 @@ public class SystemConstant {
     public static final String PREFIX_URL_WIDGET = "/admin/widget";
     public static final String PREFIX_FLOW = "/admin/flow";
     public static final String PREFIX_URL_COMMON = "/admin/common";
+    public static final String PREFIX_URL_WXAPP = "/admin/wxapp";
     public static final String PREFIX_URL_USER = "/admin/user";
     public static final String PREFIX_URL_USER_ARCHIVES = "/admin/user/archives";
     public static final String PREFIX_URL_USER_ARCHIVES_ALLOCATION = "/admin/user/archives/allocation";

+ 116 - 0
sop-common/src/main/java/com/qmth/sop/common/util/ByteUtil.java

@@ -0,0 +1,116 @@
+package com.qmth.sop.common.util;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+
+/**
+ * 字节转换工具
+ *
+ * @author 
+ * @date 2018年4月27日
+ */
+public class ByteUtil {
+	public final static short UNSIGNED_MAX_VALUE = (Byte.MAX_VALUE * 2) + 1;
+
+	private ByteUtil() {
+	}
+
+	public static int unsignedPromote(byte b) {
+		return b & 0xff;
+	}
+
+	public static String toHexAscii(byte b) {
+		StringWriter sw = new StringWriter(2);
+		addHexAscii(b, sw);
+		return sw.toString();
+	}
+
+	public static String toLowercaseHexAscii(byte b) {
+		StringWriter sw = new StringWriter(2);
+		addLowercaseHexAscii(b, sw);
+		return sw.toString();
+	}
+
+	public static String toHexAscii(byte[] bytes) {
+		int len = bytes.length;
+		StringWriter sw = new StringWriter(len * 2);
+		for (int i = 0; i < len; ++i)
+			addHexAscii(bytes[i], sw);
+		return sw.toString();
+	}
+
+	public static String toLowercaseHexAscii(byte[] bytes) {
+		int len = bytes.length;
+		StringWriter sw = new StringWriter(len * 2);
+		for (int i = 0; i < len; ++i)
+			addLowercaseHexAscii(bytes[i], sw);
+		return sw.toString();
+	}
+
+	public static byte[] fromHexAscii(String s) throws NumberFormatException {
+		try {
+			int len = s.length();
+			if ((len % 2) != 0)
+				throw new NumberFormatException("Hex ascii must be exactly two digits per byte.");
+
+			int out_len = len / 2;
+			byte[] out = new byte[out_len];
+			int i = 0;
+			StringReader sr = new StringReader(s);
+			while (i < out_len) {
+				int val = (16 * fromHexDigit(sr.read())) + fromHexDigit(sr.read());
+				out[i++] = (byte) val;
+			}
+			return out;
+		} catch (IOException e) {
+			throw new InternalError("IOException reading from StringReader?!?!");
+		}
+	}
+
+	static void addHexAscii(byte b, StringWriter sw) {
+		int ub = unsignedPromote(b);
+		int h1 = ub / 16;
+		int h2 = ub % 16;
+		sw.write(toHexDigit(h1));
+		sw.write(toHexDigit(h2));
+	}
+
+	static void addLowercaseHexAscii(byte b, StringWriter sw) {
+		int ub = unsignedPromote(b);
+		int h1 = ub / 16;
+		int h2 = ub % 16;
+		sw.write(toLowercaseHexDigit(h1));
+		sw.write(toLowercaseHexDigit(h2));
+	}
+
+	private static int fromHexDigit(int c) throws NumberFormatException {
+		if (c >= 0x30 && c < 0x3A)
+			return c - 0x30;
+		else if (c >= 0x41 && c < 0x47)
+			return c - 0x37;
+		else if (c >= 0x61 && c < 0x67)
+			return c - 0x57;
+		else
+			throw new NumberFormatException('\'' + c + "' is not a valid hexadecimal digit.");
+	}
+
+	private static char toHexDigit(int h) {
+		char out;
+		if (h <= 9)
+			out = (char) (h + 0x30);
+		else
+			out = (char) (h + 0x37);
+		return out;
+	}
+
+	private static char toLowercaseHexDigit(int h) {
+		char out;
+		if (h <= 9)
+			out = (char) (h + 0x30);
+		else
+			out = (char) (h + 0x57);
+		return out;
+	}
+
+}

+ 26 - 0
sop-common/src/main/java/com/qmth/sop/common/util/ShaUtils.java

@@ -0,0 +1,26 @@
+package com.qmth.sop.common.util;
+
+
+import com.qmth.sop.common.contant.SystemConstant;
+
+import java.security.MessageDigest;
+
+public class ShaUtils {
+
+    public static byte[] sha1(String input) {
+        try {
+            return MessageDigest.getInstance("SHA1").digest(input.getBytes(SystemConstant.CHARSET));
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    public static byte[] sha256(String input) {
+        try {
+            return MessageDigest.getInstance("SHA256").digest(input.getBytes(SystemConstant.CHARSET));
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+}