jiangping
2023-12-07 c30cfcc106111b8087691557ee8143f6be9c4e5d
海康接口对接开发
已添加1个文件
已修改9个文件
1214 ■■■■ 文件已修改
server/dmvisit_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java 995 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/utils/IdCardTool.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ProblemLog.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEventServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
@@ -136,7 +136,7 @@
        systemUser.setSalt(salt);
        // åˆ›å»ºç”¨æˆ·è®°å½•
        systemUser.setType(Constants.UserType.SYSTEM.getKey());
        systemUser.setType(Constants.ZERO);
        Integer userId = systemUserService.create(systemUser);
        // è®¾ç½®éƒ¨é—¨
        if (systemUser.getDepartmentId() != null) {
server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -1,12 +1,12 @@
package com.doumee.core.utils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.text.SimpleDateFormat;
import  java.util.Date;
public class Constants {
@@ -22,6 +22,55 @@
    public static final String HK_PUSH_URL = "HK_PUSH_URL";
    public static final String HK_ROOTORG_CODE ="HK_ROOTORG_CODE" ;
    //被拜访人信息校验方式(0手机号单独校验 1手机号和姓名组合校验)
    public static final String BEVISITED_USER_VALID = "BEVISITED_USER_VALID";
    public static final String SELECT_DOORS_VISIT_REQUIRED = "SELECT_DOORS_VISIT_REQUIRED";
    public static final String SELECT_DOORS_LW_REQUIRED = "SELECT_DOORS_LW_REQUIRED";
    public static final String PROBLEM_LW_REQUIRED = "PROBLEM_LW_REQUIRED";
    public static final String PROBLEM_VISIT_REQUIRED = "PROBLEM_VISIT_REQUIRED";
    public static final String MDJ_LW_REQUIRED = "MDJ_LW_REQUIRED";
    public static final String MDJ_VISIT_REQUIRED = "MDJ_VISIT_REQUIRED";
    public static final String EDS_PWD ="!@#$%^&QWERTY" ;
    public static  Date  getBirthdyByCardNo(String idCard){
    if(idCard ==null || idCard.length()<14){
        return null;
    }
    Date birthday = null; // è§£æžä¸ºæ—¥æœŸå¯¹è±¡
    String birthdayString = idCard.substring(6, 14); // æˆªå–身份证号的前六位数字作为出生日期
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
    try {
        birthday = dateFormat.parse(birthdayString);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return  birthday;
}
    public static  String  getTuominStr(String s){
        if(StringUtils.isEmpty(s)){
            return "";
        }
        int l = s.length();
        if(l <= 2){
            return s.substring(0,1)+"****";
        }
        if(l <= 5){
            return s.substring(0,2)+"***";
        }
        if(l <= 10){
            return s.substring(0,3)+"***"+s.substring(l-3,l);
        }
        if(l <= 11){
            return s.substring(0,3)+"****"+s.substring(l-4,l);
        }
        if(l <= 15){
            return s.substring(0,3)+"****"+s.substring(l-4,l);
        }
        return s.substring(0,5)+"*******"+s.substring(l-6,l);
}
    /**
     * mq tag
     */
@@ -33,6 +82,11 @@
         String activity_looknum = "looknum";
         String activity_signup = "signup";
    }
    public interface DeviceRoleType{
         int lw = 0;//劳务访客
         int fk = 1;//普通访客
         int nb = 2;//内部访客
    }
    public interface DOOR_ROLE_TYPE{
         int lw = 0;
         int fk = 1;
@@ -41,9 +95,6 @@
    public static final String SUCCESS_STR = "SUCCESS" ;
    //开门时间有效期(分钟)
    public static final String QR_OPENBOOK_VALIDTIME="QR_OPENBOOK_VALIDTIME";
    public static final String QR_OPENROOM_VALIDTIME="QR_OPENROOM_VALIDTIME";
    public static final String ADVANCE_IN="ADVANCE_IN";
    public static final String ACCESS_ID="ACCESS_ID";
    public static final String BUCKETNAME = "BUCKETNAME";
    public static final String OSS = "OSS";
@@ -53,49 +104,12 @@
    public static final String ENDPOINT = "ENDPOINT";
    public static final String RESOURCE_PATH = "RESOURCE_PATH";
    //发送会议开始  å®šæ—¶æå‰å¤šå°‘分钟发送
    public static final String NOTICE_TIME = "NOTICE_TIME";
    public static final String INITIAL_PASSWORD = "INITIAL_PASSWORD";
    public static final String ACCESS_TOKEN = "ACCESS_TOKEN";
    public static final String INITIAL_ROLE = "INITIAL_ROLE";
    public static final String PLAT_ADDR="PLAT_ADDR";
    public static final String ADDR_PHONE="ADDR_PHONE";
    public static final String ADDR_NAME="ADDR_NAME";
    public static final String ADDR_INFO="ADDR_INFO";
    public static final String SYSTEM ="SYSTEM";
    public static final String DEFAULT_PASSWORD = "DEFAULT_PASSWORD" ;
    public static final String CREATION_ROLE = "CREATION_ROLE";
    public static final String ORG_ROLE = "ORG_ROLE";
    public static final String USER_AGREEMENT = "USER_AGREEMENT";
    public static final String ABOUT_USER = "ABOUT_USER";
    public static final String RECHARGE_MONEY = "RECHARGE_MONEY";
    public static final String PLATFORM_ADDRESS = "PLATFORM_ADDRESS";
    public static final String PROJECT_HEAD_IMG = "PROJECT_HEAD_IMG";
    public static final String COFFEE_BEAN_TASK ="COFFEE_BEAN_TASK";
    public static final String  SIGN_BOARD="SIGN_BOARD";//每日签到
    public static final String  SHARE_INFO="SHARE_INFO";//分享资讯
    public static final String  SHARE_INVITE_BILL="SHARE_INVITE_BILL";//分享邀请海报
    public static final String  INVITE_USER_LOGIN="INVITE_USER_LOGIN";///邀请新用户注册
    public static final String  POST_COMMENTS="POST_COMMENTS";//发布评论
    public static final String  COFFEE_MAP_CONSUME="COFFEE_MAP_CONSUME";//咖啡地图消费
        // æœåŠ¡é¡¹ç›®
    public static final String PROJECTS = "PROJECTS";
    //用户头像
    public static final String SYSUSER = "SYSUSER";
    public static final String  ROOT_PATH="ROOT_PATH";//本地文件上传地址配置
    public static final String  FILE_DIR="FILE_DIR";//本地文件访问地址配置
@@ -105,13 +119,7 @@
        public static final String ACTIVITY_SIGN_KEY = "actcode_";
        public static final String AFTERSALE_KEY = "salecode_";
    }
    /**
     * ä¼ä¸šæ•°æ®æ¥æº 0平台注册 1后台导入
     */
    public interface ORIGIN{
        public static final  int platformRegister  = 0;
        public static final  int backstageImport  = 1;
    }
    public static BigDecimal formatBigdecimal(BigDecimal d) {
        if (d == null) {
@@ -162,894 +170,9 @@
        return d.longValue();
    }
public interface  UserRelObjType{
      int objTypeRoom = 0;
      int objTypeBook = 1;
}
public interface  RoomRecordObjType{
      int objTypeRoom = 0;//管理员开门
      int objTypeBook_in = 1;//参会人员开门
      int objTypeBook_out = 2;//访客开门
}
    public static void main(String[] args) {
        String t = URLDecoder.decode("https://lsqw.gtja.com/qwcos/v-index.html#/loginforProperty?corpId=ww4b7aefafeb430e4b&corpId=ww4b7aefafeb430e4b&agentId=1000005&agentId=1000005&fromRoute=&userCode=013561&userCode=&userId=zz&userId=&encryptUserCode=&custQwId=wmIUuSDgAAR8MhtVY8w90EyKltvoK5fA&custCode=&openId=op1wZwD1dKuBQywmWWS5957zUOJI&name=%E8%B9%84%E8%B9%84&headUrl=http%3A%2F%2Fwx.qlogo.cn%2Fmmhead%2FQ3auHgzwzM4QlibSOAvYcvRMdsoyF3Ua7duLOYSJfB3dsGsYxIYonBw%2F0&dbHeadUrl=https%3A%2F%2Ftgf.gtja.com%2Ff%2F%2Fqwoms%2F2022512%2Fqwoms_1652332606613_8.jpg");
        System.out.println(t);
    }
    /**
     * ç”¨æˆ·ç±»åž‹
     */
    public  enum UserType {
        SYSTEM(0, "系统用户", "管理员",Arrays.asList(0)),
        ORG(1, "机构", "机构",Arrays.asList(1)),
        CREATION(2, "创作中心", "创作中心",Arrays.asList(2))
        ;
        // æˆå‘˜å˜é‡
        private String name;
        private int key;
        private List<Integer> historyStatus;
        private String noteinfo;// æè¿°
        // æž„造方法
        UserType(int key, String name, String noteinfo,List<Integer> historyStatus) {
            this.name = name;
            this.key = key;
            this.noteinfo = noteinfo;
            this.historyStatus=historyStatus;
        }
        // æ™®é€šæ–¹æ³•
        public static String getName(int index) {
            for (UserType c : UserType.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        // æ™®é€šæ–¹æ³•
        public static String getInfo(int index) {
            for (UserType c : UserType.values()) {
                if (c.getKey() == index) {
                    return c.noteinfo;
                }
            }
            return null;
        }
        // æ™®é€šæ–¹æ³•
        public static List<Integer> getHistoryStatus(int index) {
            for (UserType c : UserType.values()) {
                if (c.getKey() == index) {
                    return c.historyStatus;
                }
            }
            return null;
        }
        // get set æ–¹æ³•
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getKey() {
            return key;
        }
        public List<Integer> getHistoryStatus() {
            return historyStatus;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getNoteinfo() {
            return noteinfo;
        }
    }
    /**
     * æ•°æ®çŠ¶æ€æžšä¸¾
     *
     */
    public enum Status {
        /** ç”¨æˆ·å¯ç”¨ç¦ç”¨æžšä¸¾å€¼*/
        ENABLE(0,"正常"),
        DISABLE(1,"禁用");
        private  Integer value;
        private  String des;
        Status(Integer value, String des) {
            this.value = value;
            this.des = des;
        }
        public Integer getValue() {
            return value;
        }
        public void setValue(Integer value) {
            this.value = value;
        }
        public String getDes() {
            return des;
        }
        public void setDes(String des) {
            this.des = des;
        }
    }
    /**
     * å…³è”对象类型 0活动轮播图 1活动详情图 2门店评价3订单评价 4平台商品轮播 5探店多图 6店铺新鲜事多图 7商家图片多图
     */
    public  enum MultiFile{
        ACTIVITY_ROTATION(0, "活动轮播图", "活动轮播图"),
        ACTIVITY_DETAIL(1, "活动详情图", "活动详情图"),
        SHOP_APPRAISE(2, "门店评价", "门店评价"),
        ORDER_APPRAISE(3, "订单评价", "订单评价"),
        PLATFORM_GOOD_ROTATION(4, "平台商品轮播", "平台商品轮播"),
        TANDIAN_PICTURE(5, "探店多图", "探店多图"),
        SHOP_HOT_PICTURE(6, "店铺新鲜事多图", "店铺新鲜事多图"),
        SHOP_PICTURE(7, "商家图片多图", "商家图片多图"),
        AFTERSALE_APPLY(8, "申请售后补充说明附件", "申请售后补充说明附件"),
        AFTERSALE_KD(9, "申请售后邮寄说明附件", "申请售后邮寄说明附件"),
        ;
        // æˆå‘˜å˜é‡
        private String name;
        private int key;
        private String noteinfo;// æè¿°
        // æž„造方法
        MultiFile(int key, String name, String noteinfo) {
            this.name = name;
            this.key = key;
            this.noteinfo = noteinfo;
        }
        // æ™®é€šæ–¹æ³•
        public static String getName(int index) {
            for (MultiFile c : MultiFile.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        // æ™®é€šæ–¹æ³•
        public static String getInfo(int index) {
            for (MultiFile c : MultiFile.values()) {
                if (c.getKey() == index) {
                    return c.noteinfo;
                }
            }
            return null;
        }
        // get set æ–¹æ³•
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getNoteinfo() {
            return noteinfo;
        }
    }
    /**
     * è®¢å•管理
     * çŠ¶æ€ 0申请中 1已支付  2已取消
     */
    public  enum ActivitySignupStatus{
        APPLY_ING(0, "申请中", "申请中"),
        PAY_DONE(1, "已支付", "已支付"),
        CANCEL(2, "已取消", "已取消"),
        ;
        // æˆå‘˜å˜é‡
        private String name;
        private int key;
        private String noteinfo;// æè¿°
        // æž„造方法
        ActivitySignupStatus(int key, String name, String noteinfo) {
            this.name = name;
            this.key = key;
            this.noteinfo = noteinfo;
        }
        // æ™®é€šæ–¹æ³•
        public static String getName(int index) {
            for (ActivitySignupStatus c : ActivitySignupStatus.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        // æ™®é€šæ–¹æ³•
        public static String getInfo(int index) {
            for (ActivitySignupStatus c : ActivitySignupStatus.values()) {
                if (c.getKey() == index) {
                    return c.noteinfo;
                }
            }
            return null;
        }
        // get set æ–¹æ³•
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getNoteinfo() {
            return noteinfo;
        }
    }
    /**
     * å”®åŽçŠ¶æ€
     * çŠ¶æ€ 0待处理 1待邮寄 2已寄出 3商家已退款 4商家已发货5售后已完成6商家拒绝 7已取消
     */
    public  enum AftersaleStatus{
        APPLY_ING(0, "待处理", "待处理"),
        WAIT_SEND(1, "待邮寄", "待邮寄"),
        SENDED(2, "客户已寄出", "客户已寄出"),
        REFUND(3, "已退款", "已退款"),
        SHOP_SENDED(4, "平台已发货", "平台已发货"),
        DONE(5, "售后已完成", "售后已完成"),
        SHOP_REFUSE(6, "已拒绝", "平台拒绝"),
        CANCEL(7, "已取消", "客户取消售后"),
        ;
        // æˆå‘˜å˜é‡
        private String name;
        private int key;
        private String noteinfo;// æè¿°
        // æž„造方法
        AftersaleStatus(int key, String name, String noteinfo) {
            this.name = name;
            this.key = key;
            this.noteinfo = noteinfo;
        }
        // æ™®é€šæ–¹æ³•
        public static String getName(int index) {
            for (AftersaleStatus c : AftersaleStatus.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        // æ™®é€šæ–¹æ³•
        public static String getInfo(int index) {
            for (AftersaleStatus c : AftersaleStatus.values()) {
                if (c.getKey() == index) {
                    return c.noteinfo;
                }
            }
            return null;
        }
        // get set æ–¹æ³•
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getNoteinfo() {
            return noteinfo;
        }
    }
    /**
     * å”®åŽç±»åž‹
     *  å”®åŽç±»åž‹ 0退款 1退货退款 2换货
     */
    public  enum AftersaleType{
        TK(0, "退款", "退款"),
        THTK(1, "退货退款", "退货退款"),
        HH(2, "换货", "换货"),
        ;
        // æˆå‘˜å˜é‡
        private String name;
        private int key;
        private String noteinfo;// æè¿°
        // æž„造方法
        AftersaleType(int key, String name, String noteinfo) {
            this.name = name;
            this.key = key;
            this.noteinfo = noteinfo;
        }
        // æ™®é€šæ–¹æ³•
        public static String getName(int index) {
            for (AftersaleType c : AftersaleType.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        // æ™®é€šæ–¹æ³•
        public static String getInfo(int index) {
            for (AftersaleType c : AftersaleType.values()) {
                if (c.getKey() == index) {
                    return c.noteinfo;
                }
            }
            return null;
        }
        // get set æ–¹æ³•
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getNoteinfo() {
            return noteinfo;
        }
    }
    /**
     * è®¢å•管理
     * çŠ¶æ€ 0待支付 1待发货 2待收货 3交易完成 4已关闭 5部分发货
     */
    public  enum OrderStatus{
        WAIT_PAY(0, "待支付", "待支付"),
        PAY_DONE(1, "待发货", "已支付代发货"),
        WAIT_RECEIVE(2, "待收货", "已发货待收货"),
        DONE(3, "交易完成", "交易完成"),
        CLOSE(4, "已关闭", "已关闭"),
        PART_DONE(5, "部分发货", "部分发货"),
        ;
        // æˆå‘˜å˜é‡
        private String name;
        private int key;
        private String noteinfo;// æè¿°
        // æž„造方法
        OrderStatus(int key, String name, String noteinfo) {
            this.name = name;
            this.key = key;
            this.noteinfo = noteinfo;
        }
        // æ™®é€šæ–¹æ³•
        public static String getName(int index) {
            for (OrderStatus c : OrderStatus.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        // æ™®é€šæ–¹æ³•
        public static String getInfo(int index) {
            for (OrderStatus c : OrderStatus.values()) {
                if (c.getKey() == index) {
                    return c.noteinfo;
                }
            }
            return null;
        }
        // get set æ–¹æ³•
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getNoteinfo() {
            return noteinfo;
        }
    }
    /**
     * è®¢å•类型
     *  è®¢å•类型 0平台商城 1咖豆商城 2咖啡计划编码
     */
    public  enum OrderType{
        ADMINPLAT(0, "平台商城 ", "平台商城 "),
        KADOUPLAT(1, "咖豆商城", "咖豆商城"),
        COFFERPLAN(2, "2咖啡计划编码", "2咖啡计划编码")
        ;
        // æˆå‘˜å˜é‡
        private String name;
        private int key;
        private String noteinfo;// æè¿°
        // æž„造方法
        OrderType(int key, String name, String noteinfo) {
            this.name = name;
            this.key = key;
            this.noteinfo = noteinfo;
        }
        // æ™®é€šæ–¹æ³•
        public static String getName(int index) {
            for (OrderType c : OrderType.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        // æ™®é€šæ–¹æ³•
        public static String getInfo(int index) {
            for (OrderType c : OrderType.values()) {
                if (c.getKey() == index) {
                    return c.noteinfo;
                }
            }
            return null;
        }
        // get set æ–¹æ³•
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getNoteinfo() {
            return noteinfo;
        }
    }
    public enum ShareType{
//    0活动1探店2咨询3店铺 4商品5分享邀请海报
        SHARE_ACTIVITY_ACTIVITY(0,"活动","活动"),
        SHARE_ACTIVITY_VISITSHOP(1,"探店","咨询"),
        SHARE_ACTIVITY_NEW(2,"咨询","咨询"),
        SHARE_SHOP(3,"店铺","店铺" ),
        SHARE_GOODS(4,"商品","商品"),
        SHARE_POSTER(5,"分享邀请海报","分享邀请海报")
        ;
        private Integer key;
        private String name;
        private String des;
        ShareType(Integer key, String name, String des) {
            this.key = key;
            this.name = name;
            this.des = des;
        }
        public Integer getKey() {
            return key;
        }
        public void setKey(Integer key) {
            this.key = key;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getDes() {
            return des;
        }
        public void setDes(String des) {
            this.des = des;
        }
    }
    /**
     * å’–豆任务
     */
    public enum CoffeeBeanTask{
        SIGN_BOARD(1,"SIGN_BOARD","每日签到"),
        SHARE_INFO(6,"SHARE_INFO","分享资讯"),
        SHARE_INVITE_BILL(2,"SHARE_INVITE_BILL","分享邀请海报"),
        INVITE_USER_LOGIN(3,"INVITE_USER_LOGIN","邀请新用户注册"),
        EXCHANGE_GOODS(4,"INVITE_USER_LOGIN","兑换商品"),
        EXCHANGE_COUPON(5,"INVITE_USER_LOGIN","兑换优惠券"),
        POST_COMMENTS(7,"POST_COMMENTS","发布评论"),
        COFFEE_MAP_CONSUME(8,"COFFEE_MAP_CONSUME","咖啡地图消费"),
        ;
        //  0平台注册 1签到 2分享邀请 3邀请新用户 4兑换商品 5兑换优惠券
        // æˆå‘˜å˜é‡
        private Integer key;
        private String name;
        private String des;// æè¿°
        CoffeeBeanTask(Integer key, String name, String des) {
            this.key = key;
            this.name = name;
            this.des = des;
        }
        public Integer getKey() {
            return key;
        }
        public void setKey(Integer key) {
            this.key = key;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getDes() {
            return des;
        }
        public void setDes(String des) {
            this.des = des;
        }
    }
    public enum NoticeType{
//        0订单通知 1系统消息 2互动消息 3优惠券提醒 4官方客服 5活动推荐 6我的关注
        NOTICE_ORDER(0,"0订单通知","0订单通知"),
        NOTICE_SYSTEM(1,"1系统消息","1系统消息"),
        NOTICE_INTERACTION(2,"互动消息","互动消息"),
        NOTICE_MEMBER_COUPON(3,"优惠券提醒","优惠券提醒"),
        NOTICE_ACTIVITY(5,"活动推荐","活动推荐"),
        NOTICE_MEMBER_FOLLOW(6,"我的关注","我的关注")
        ;
        private Integer key;
        private String type;
        private String content;
        NoticeType(Integer key, String type, String content) {
            this.key = key;
            this.type = type;
            this.content = content;
        }
    }
    /**
     * ç§¯åˆ†ç±»åž‹
     */
    public  enum IntegralObjType {
        REGISTER(0, "平台注册", "平台注册",0),
        SIGNIN(1, "签到", "签到",0),
        SHARE(2, "分享邀请", "分享邀请",0),
        INVITENEWUSER(3, "邀请新用户", "邀请新用户",0),
        EXCHANGEGOODS(4, "兑换商品", "兑换商品",1),
        EXCHANGECOUPON(5, "兑换优惠券", "兑换优惠券",1),
        SHARE_INFO(6,"分享资讯","分享资讯",0),
        POST_COMMENTS(7,"发布评论","发布评论",0),
        COFFEE_MAP_CONSUME(8,"咖啡地图消费","咖啡地图消费",0),
        SHOP_ORDER(9,"余额抵扣商品","余额抵扣商品",1),
        AFTERSALE_BACK(10,"售后退款","售后退款",1),
        EXCHANGE_CARD(11,"卡充值","卡充值",0),
        SYSTEM_RECHARGE(12,"平台充值","平台充值",0),
        SYSTEM_DEDUCT(13,"平台扣款","平台扣款",0),
        SHOP_ORDER_CANCEL(14,"余额抵扣商品退还","余额抵扣商品退还",0)
        ;
        // æˆå‘˜å˜é‡
        private String name;
        private int key;
        private String noteinfo;// æè¿°
        private Integer addTitle; // 0 = æ–°å¢žï¼›1 = ä¸æ–°å¢ž
        // æž„造方法
        IntegralObjType(int key, String name, String noteinfo ,Integer addTitle) {
            this.name = name;
            this.key = key;
            this.noteinfo = noteinfo;
            this.addTitle = addTitle;
        }
        // æ™®é€šæ–¹æ³•
        public static String getName(int index) {
            for (IntegralObjType c : IntegralObjType.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        // æ™®é€šæ–¹æ³•
        public static String getInfo(int index) {
            for (IntegralObjType c : IntegralObjType.values()) {
                if (c.getKey() == index) {
                    return c.noteinfo;
                }
            }
            return null;
        }
        // get set æ–¹æ³•
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getNoteinfo() {
            return noteinfo;
        }
        public int getAddTitle() {
            return this.addTitle;
        }
        public void setAddTitle(Integer addTitle) {
            this.addTitle = addTitle;
        }
    }
    /**
     * æ ‡ç­¾ç±»åž‹
     */
    public  enum LabelsType {
        GOODSTYPE(0, "商品分类", "商品分类"),
        GOODSBRAND(1, "商品品牌", "商品品牌"),
        BUSNESSLABEL(2, "商家标签", "商家标签"),
        EXPRESSDELIVERY(3, "快递", "快递"),
        RETURNOPTIONS(4, "退货选项", "退货选项"),
        EXCHANGEOPTIONS(5, "换货选项", "换货选项"),
        REFUNDOPTIONS(6, "退款选项", "退款选项"),
        CANCELORDEROPTIONS(7, "取消订单选项", "取消订单选项"),
        COFFERBEANTYPE(8, "咖啡百科分类", "咖啡百科分类"),
        INFOTYPE(9, "咨询分类", "咨询分类"),
        ACTIVITYMATCHTYPE(10, "活动赛事分类", "活动赛事分类"),
        DARENTANDIANTYPE(11, "达人探店分类", "达人探店分类"),
        HOMEZHUANQU(12, "首页专区", "首页专区"),
        ;
        // æˆå‘˜å˜é‡
        private String name;
        private int key;
        private String noteinfo;// æè¿°
        // æž„造方法
        LabelsType(int key, String name, String noteinfo) {
            this.name = name;
            this.key = key;
            this.noteinfo = noteinfo;
        }
        // æ™®é€šæ–¹æ³•
        public static String getName(int index) {
            for (LabelsType c : LabelsType.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        // æ™®é€šæ–¹æ³•
        public static String getInfo(int index) {
            for (LabelsType c : LabelsType.values()) {
                if (c.getKey() == index) {
                    return c.noteinfo;
                }
            }
            return null;
        }
        // get set æ–¹æ³•
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getNoteinfo() {
            return noteinfo;
        }
    }
    /**
     * æ´»åŠ¨ç±»åž‹
     */
    public  enum ActivityType {
        SHOPACTIVITY(0, "商家活动", "商家活动"),
        PLATACTIVITY(1, "平台活动", "平台活动"),
        TANDIAN(2, "探店", "探店"),
        CONSULT(3, "资讯", "资讯"),
        ;
        // æˆå‘˜å˜é‡
        private String name;
        private int key;
        private String noteinfo;// æè¿°
        // æž„造方法
        ActivityType(int key, String name, String noteinfo) {
            this.name = name;
            this.key = key;
            this.noteinfo = noteinfo;
        }
        // æ™®é€šæ–¹æ³•
        public static String getName(int index) {
            for (ActivityType c : ActivityType.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        // æ™®é€šæ–¹æ³•
        public static String getInfo(int index) {
            for (ActivityType c : ActivityType.values()) {
                if (c.getKey() == index) {
                    return c.noteinfo;
                }
            }
            return null;
        }
        // get set æ–¹æ³•
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getNoteinfo() {
            return noteinfo;
        }
    }
}
server/dmvisit_service/src/main/java/com/doumee/core/utils/IdCardTool.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
package com.doumee.core.utils;
public class IdCardTool {
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java
@@ -204,6 +204,10 @@
    @ExcelColumn(name="身份证id")
    private String idNum;
    @ApiModelProperty(value = "证件显示信息")
    @ExcelColumn(name="证件显示信息")
    private String idcardDecode;
    @ApiModelProperty(value = "身份证签发机关")
    @ExcelColumn(name="身份证签发机关")
    private String issuingAuthority;
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -195,5 +196,8 @@
    @ApiModelProperty(value = "ERP组织编码")
    @ExcelColumn(name="ERP组织编码")
    private String erpOrgId;
    @ApiModelProperty(value = "组织名称")
    @TableField(exist = false)
    private String companyName;
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ProblemLog.java
@@ -62,7 +62,7 @@
    @ApiModelProperty(value = "绑定申请编码")
    @ExcelColumn(name="绑定申请编码")
    private String logId;
    private Integer logId;
    @ApiModelProperty(value = "得分", example = "1")
    @ExcelColumn(name="得分")
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -9,6 +10,7 @@
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.util.List;
/**
 * è®¿å®¢ç”³è¯·ä¿¡æ¯è¡¨
@@ -106,12 +108,10 @@
    @ApiModelProperty(value = "门禁有效期开始")
    @ExcelColumn(name="门禁有效期开始")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date starttime;
    @ApiModelProperty(value = "门禁有效期截止")
    @ExcelColumn(name="门禁有效期截止")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endtime;
    @ApiModelProperty(value = "来访事由")
@@ -159,7 +159,9 @@
    @ApiModelProperty(value = "终审备注")
    @ExcelColumn(name="终审备注")
    private String endCheckInfo;
    @ApiModelProperty(value = "证件显示信息")
    @ExcelColumn(name="证件显示信息")
    private String idcardDecode;
    @ApiModelProperty(value = "证件类型 0身份证 1港澳证件 2护照", example = "1")
    @ExcelColumn(name="证件类型 0身份证 1港澳证件 2护照")
    private Integer idcardType;
@@ -192,5 +194,11 @@
    @ApiModelProperty(value = "ERP申请记录编码")
    @ExcelColumn(name="ERP申请记录编码")
    private String erpId;
    @ApiModelProperty(value = "普通访客申请随访人员")
    @TableField(exist = false)
    private List<Visits> withUserList;
    @ApiModelProperty(value = "劳务访客申请随访人员")
    @TableField(exist = false)
    private List<Integer> lwWithUserList;
}
server/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
@@ -19,6 +19,7 @@
     * @return Integer
     */
    Integer create(Visits visits);
    Integer createFk(Visits visits);
    /**
     * ä¸»é”®åˆ é™¤
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -1,19 +1,35 @@
package com.doumee.service.business.impl;
import cn.hutool.core.util.IdcardUtil;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.DeviceRoleMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.ProblemLogMapper;
import com.doumee.dao.business.VisitsMapper;
import com.doumee.dao.business.model.DeviceRole;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.ProblemLog;
import com.doumee.dao.business.model.Visits;
import com.doumee.service.business.VisitsService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.DigestUtils;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
@@ -26,13 +42,183 @@
    @Autowired
    private VisitsMapper visitsMapper;
    @Autowired
    private DeviceRoleMapper deviceRoleMapper;
    @Autowired
    private ProblemLogMapper problemLogMapper ;
    @Autowired
    private MemberMapper memberMapper ;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Override
    public Integer create(Visits visits) {
        visitsMapper.insert(visits);
        return visits.getId();
    }
    /**
     * æ™®é€šè®¿å®¢ç”³è¯·
     * @param visits
     * @return
     */
    @Override
    public Integer createFk(Visits visits) {
        if(visits.getStarttime() == null
                || visits.getEndtime() == null
                ||  StringUtils.isBlank(visits.getReason())
                ||  StringUtils.isBlank( visits.getName())
                ||  StringUtils.isBlank( visits.getPhone())
                ||  visits.getIdcardType() == null
                ||  StringUtils.isBlank( visits.getFaceImg() )
                ||  StringUtils.isBlank( visits.getIdcardNo() )
                || visits.getReceptMemberId() == null){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,信息填写不正确!");
        }
        //检查是否必须答题,并且符合答题要求
        ProblemLog problemLog = isValidProblemLog(visits);
        //获取申请的海康访问门禁组信息
        String[] hkIds = getHkDeviceRoles(visits);
        //检验拜访人是否合法
        isValideVisitedUser(visits.getReceptMemberId());
        //检查随访人员是否合法,生成随访人员新增集合
        List<Member> withUsers = isValideWithUsers(visits.getWithUserList());
        if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType()) &&!IdcardUtil.isValidCard(visits.getIdcardNo())){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,身份证号码有误,请核实后重试!");
        }
        Date date = new Date();
        visits.setBirthday(Constants.getBirthdyByCardNo(visits.getIdcardNo()));
        //身份证号存储密文
        visits.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, visits.getIdcardNo()));//身份证号加密
        visits.setIdcardDecode(Constants.getTuominStr(visits.getIdcardNo()));//脱敏手机号
        visits.setCreateDate(date);
        //访客信息(使用身份证号查询是否已存在改普通访客,没有则新增,存在则更新openid等信息)
        Member member = getMemberByIdcardno(visits);
        visitsMapper.insert(visits);
        updateProblemLog(visits,problemLog,member);
        return visits.getId();
    }
    private Member getMemberByIdcardno(Visits idcardNo) {
        Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
//                .eq(Member::getType,Constants.MEMBER_TYPE)
                .eq(Member::getIdcardNo,idcardNo.getIdcardNo())
        );
        return  null;
    }
    private List<Member> isValideWithUsers(List<Visits> withUserList) {
        if(withUserList!= null && withUserList .size()>0){
            for(Visits model:withUserList){
            }
        }
        return null;
    }
    /**
     * å¦‚果有答题记录,更新答题记录关联数据
     * @param visits
     * @param problemLog
     * @param member
     */
    private void updateProblemLog(Visits visits, ProblemLog problemLog,Member member) {
        if(problemLog!=null){
            problemLog.setEditDate(visits.getCreateDate());
            problemLog.setName(visits.getName());
            problemLog.setUserId(member.getId());
            problemLog.setPhone(member.getPhone());
            problemLog.setLogId(visits.getId());
            problemLogMapper.updateById(problemLog);
        }
    }
    /**
     *   æ£€æŸ¥è®¿äººæ˜¯å¦åˆæ³•
     * @param receptMemberId
     */
    private Member isValideVisitedUser(Integer receptMemberId) {
        Member member = memberMapper.selectById(receptMemberId);
        if(member == null || Constants.equalsInteger(Constants.ZERO,member.getIsdeleted())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,该拜访人暂时不能接受您的拜访申请!");
        }
        if(!Constants.equalsInteger(member.getStatus(), Constants.ZERO)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,该拜访人暂时不能接受您的拜访申请.");
        }
        if(!Constants.equalsInteger(Constants.ONE, member.getCanVisit())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,该拜访人暂时不能接受您的拜访申请~");
        }
        return  member;
    }
    private ProblemLog isValidProblemLog(Visits visits) {
        String required = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROBLEM_VISIT_REQUIRED).getCode();
        if(StringUtils.equals(required,Constants.ONE+"")){
            //如果必须答题,查找答题记录
            if(visits.getUserAnswerId() == null){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请先按要求进行安全知识答题!");
            }
            ProblemLog log = problemLogMapper.selectById(visits.getUserAnswerId());
            if(log == null){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请先按要求进行安全知识答题.");
            }
            if(log.getLogId() !=null){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请先按要求进行安全知识答题~");
            }
            return  log;
        }
        return null;
    }
    /**
     * èŽ·å–ç”³è¯·çš„æµ·åº·è®¿é—®é—¨ç¦ç»„ä¿¡æ¯
     * @param visits
     * @return
     */
    private String[] getHkDeviceRoles(Visits visits) {
        String mustSelectDoors = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SELECT_DOORS_VISIT_REQUIRED).getCode();
        List<DeviceRole> roles = null;
        if(StringUtils.equals(mustSelectDoors,Constants.ZERO+"")){
            //如果必须选择门禁,但未选择
            if(StringUtils.isBlank(visits.getDoors())){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请选择访问门禁!");
            }
            //校验门禁组信息是否正确
            String[] dIds = visits.getDoors().split(",");
            roles = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
                    .eq(DeviceRole::getIsdeleted,Constants.ZERO)
                    .eq(DeviceRole::getType,Constants.DeviceRoleType.fk)
                    .in(DeviceRole::getId, Arrays.asList(dIds)));
            if(roles == null || roles.size()==0 || roles.size() != dIds.length){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请选择有效访问门禁!");
            }
        }else{
            //如果设置不选择门禁,则提供默认门禁组信息
            String[] dIds = visits.getDoors().split(",");
            roles = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
                    .eq(DeviceRole::getIsdeleted,Constants.ZERO)
                    .eq(DeviceRole::getIsDefault,Constants.ZERO)
                    .eq(DeviceRole::getType,Constants.DeviceRoleType.fk));
            if(roles.size() ==0){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,暂不存在可访问的访客门禁,无法进行申请操作!");
            }
        }
        String[] ids =new String[roles.size()];
        for (int i = 0; i < roles.size(); i++) {
            ids[i] = roles.get(i).getHkId();
        }
        return  ids;
    }
    @Override
    public void deleteById(Integer id) {
        visitsMapper.deleteById(id);
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEventServiceImpl.java
@@ -65,7 +65,6 @@
                }
            }
        }
    }
    /**