feat: 东区缴费分支初始化
This commit is contained in:
@@ -148,30 +148,18 @@
|
||||
<version>${wxpay.apiv3.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.github.wechatpay-apiv3</groupId>-->
|
||||
<!-- <artifactId>wechatpay-apache-httpclient</artifactId>-->
|
||||
<!-- <version>${wxpay.apiv3.version}</version>-->
|
||||
<!-- <scope>compile</scope>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>com.github.wechatpay-apiv3</groupId>
|
||||
<artifactId>wechatpay-apache-httpclient</artifactId>
|
||||
<version>${wxpay.apiv3.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<!-- 二维码依赖 -->
|
||||
<dependency>
|
||||
<groupId>com.google.zxing</groupId>
|
||||
<artifactId>javase</artifactId>
|
||||
<version>${qr.code.version}</version>
|
||||
</dependency>
|
||||
<!-- 百度api -->
|
||||
<dependency>
|
||||
<groupId>com.baidu.aip</groupId>
|
||||
<artifactId>java-sdk</artifactId>
|
||||
<version>${baidu.api.version}</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
-9
@@ -8,24 +8,15 @@ public enum ModuleName {
|
||||
AUTH("认证中心"),
|
||||
APPLY_PARODUCT("应用商品"),
|
||||
ATTENDANCE("考勤"),
|
||||
DEVICE("设备"),
|
||||
LETTER_BOX("校长信箱"),
|
||||
NOTICE("通知"),
|
||||
SCHOOL("校园主页"),
|
||||
STUDENT_EXAM("考试管理"),
|
||||
USER("用户管理"),
|
||||
STUDENT("学生管理"),
|
||||
STAFF("职工管理"),
|
||||
JOB("任务调度"),
|
||||
SYSTEM("系统管理"),
|
||||
DEPT("系统部门"),
|
||||
USER_DEPT("家校部门"),
|
||||
INSTRUCTION("系统指南"),
|
||||
ELECTRONIC_STUDENT_CARD("电子学生证"),
|
||||
TELEPHONE("亲情电话"),
|
||||
COURSE("课程表"),
|
||||
PRODUCT("商品管理"),
|
||||
TRANSATION("交易管理"),
|
||||
HEALTH("健康管理");
|
||||
@Getter
|
||||
String name;
|
||||
|
||||
-7
@@ -21,29 +21,22 @@ public enum ResultMsgType {
|
||||
IMPORT_EXCEL_FAIL("导入失败!", 500),
|
||||
FILE_TYPE_ERROR("导入文件类型错误", 500),
|
||||
ID_CARD_EXIST("身份证号码已存在!", 500),
|
||||
STUDENT_CARD_NUMBER_EXIST("校园学号已存在!", 500),
|
||||
STUDENT_NUMBER_EXIST("学号已存在!", 500),
|
||||
STUDENT_NUMBER_NOT_EXIST("学号不存在!", 500),
|
||||
CAMPUS_NAME_ERROR("学区名称错误", 500),
|
||||
SECTION_NAME_ERROR("学段名称错误", 500),
|
||||
GRADE_NAME_ERROR("年级名称错误", 500),
|
||||
CLASS_NAME_ERROR("班级名称错误", 500),
|
||||
START_DATE_ERROR("入学时间错误", 500),
|
||||
|
||||
SERVER_ERROR("服务器繁忙!请稍后再试", 500),
|
||||
|
||||
LOGIN_INFO_ERROR("用户登陆信息异常", 500),
|
||||
PAY_TYPE_ERROR("暂不支持此支付方式", 500),
|
||||
ORDER_FAIL("创建订单失败!请稍后再试", 500),
|
||||
ORDER_NOT_FOUND("未找到订单信息", 500),
|
||||
ORDER_INVALID("该订单已失效!无法执行该操作", 500),
|
||||
ORDER_QUERY_FAIL("订单查询失败", 500),
|
||||
ORDER_CLOSE_FAIL("关闭订单失败", 500),
|
||||
ORDER_REFUND_FAIL("订单退款失败", 500),
|
||||
REFUND_QUERY_FAIL("退款查询失败", 500),
|
||||
ORDER_MONEY_ERROR("订单金额异常", 500),
|
||||
|
||||
CARD_STATUS_ERROR("卡状态异常", 500),
|
||||
;
|
||||
|
||||
private final String value;
|
||||
|
||||
-6
@@ -91,12 +91,6 @@ public class CurrentUser implements Serializable {
|
||||
*/
|
||||
private String mainRolePerms;
|
||||
|
||||
|
||||
/**
|
||||
* 学校性质:0幼儿园,1小学,2中学,3九年一贯,4十二年一贯,5:高校
|
||||
*/
|
||||
private Integer schoolNature;
|
||||
|
||||
@JsonIgnore
|
||||
private EduUserLogo userLogo;
|
||||
}
|
||||
|
||||
-2
@@ -55,8 +55,6 @@ public class FebsAuthUser extends User {
|
||||
|
||||
private String status;
|
||||
|
||||
private Integer schoolNature;
|
||||
|
||||
private String deptIds;
|
||||
|
||||
private Long identityId;
|
||||
|
||||
-6
@@ -35,9 +35,6 @@ public class EduAttendanceRecord {
|
||||
|
||||
private String className;
|
||||
|
||||
@ApiModelProperty("0上学,1宿舍")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty("宿舍id")
|
||||
private Long dormId;
|
||||
|
||||
@@ -86,8 +83,5 @@ public class EduAttendanceRecord {
|
||||
@ApiModelProperty("该条记录使用的考勤时间段")
|
||||
private Long ruleTimeId;
|
||||
|
||||
@ApiModelProperty("考勤时间段类型:0开始时间,1结束时间")
|
||||
private Integer ruleTimeType;
|
||||
|
||||
private transient String deviceName;
|
||||
}
|
||||
|
||||
+1
-10
@@ -109,15 +109,9 @@ public class EduAttendanceResult {
|
||||
/**
|
||||
* 考勤结果,100-正常, 201-迟到,202-早退,203-迟到早退,204-旷课,205-请假, 211-晚归,212-异常晚归,213-旷宿,214-已被核查但学生还未归寝
|
||||
*/
|
||||
@ApiModelProperty(value = "考勤结果,100-正常,201-迟到,202-早退,203-迟到早退,204-旷课,205-请假,206-上班未打卡|下班正常,207-上班未打卡|下班早退,208-上班未打卡|下班未在有效打卡时间段内,209-上班未在有效打卡时间段内|下班早退,210-上班迟到|下班未打卡,211-晚归,212-异常晚归,213-旷宿,214-已被核查但学生还未归寝")
|
||||
@ApiModelProperty(value = "考勤结果,100-正常,201-迟到,202-早退,203-迟到早退,204-旷课,205-请假,211-晚归,212-异常晚归,213-旷宿,214-已被核查但学生还未归寝")
|
||||
@TableField("status")
|
||||
private Integer status;
|
||||
@ApiModelProperty(value = "开始时间考勤结果1正常,0异常,空未打卡")
|
||||
@TableField("begin_status")
|
||||
private Integer beginStatus;
|
||||
@ApiModelProperty(value = "结束时间考勤结果1正常,0异常,空未打卡")
|
||||
@TableField("end_status")
|
||||
private Integer endStatus;
|
||||
|
||||
/**
|
||||
* 核查时间
|
||||
@@ -171,7 +165,4 @@ public class EduAttendanceResult {
|
||||
|
||||
@ApiModelProperty("学号")
|
||||
private transient String stuNo;
|
||||
|
||||
@ApiModelProperty("类型:1宿舍考勤,0上学考勤")
|
||||
private transient Integer type;
|
||||
}
|
||||
|
||||
+1
-5
@@ -11,7 +11,6 @@ import java.time.LocalDateTime;
|
||||
@Data
|
||||
@ApiModel("规则设备")
|
||||
public class EduAttendanceRuleDevice {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@@ -24,12 +23,9 @@ public class EduAttendanceRuleDevice {
|
||||
@ApiModelProperty("设备编号")
|
||||
private String deviceSn;
|
||||
|
||||
@ApiModelProperty("设备名称")
|
||||
private String deviceName;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createDate;
|
||||
|
||||
|
||||
@ApiModelProperty("创建人ID")
|
||||
private Long createId;
|
||||
|
||||
|
||||
+1
-24
@@ -1,13 +1,11 @@
|
||||
package com.yida.data.common.core.entity.attendance;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
@@ -62,21 +60,10 @@ public class EduAttendanceStaffResult {
|
||||
/**
|
||||
* 考勤结果,0-正常,1-迟到,2-早退,3-旷工,4-迟到早退,5-上班未在打卡时间段,6-下班未在打卡时间段
|
||||
*/
|
||||
@ApiModelProperty(value = "考勤结果,0-正常,1-迟到,2-早退,3-旷工,4-迟到早退,5-上班未在打卡时间段,6-下班未在打卡时间段,7-上班未在打卡时间段|早退,8-上班迟到|下班未打卡")
|
||||
@ApiModelProperty(value = "考勤结果,0-正常,1-迟到,2-早退,3-旷工,4-迟到早退,5-上班未在打卡时间段,6-下班未在打卡时间段")
|
||||
@TableField("status")
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 上班考勤状态 0 正常 1 异常
|
||||
*/
|
||||
@TableField("start_status")
|
||||
private Integer startStatus;
|
||||
/**
|
||||
* 下班考勤状态 0 正常 1 异常
|
||||
*/
|
||||
@TableField("end_status")
|
||||
private Integer endStatus;
|
||||
|
||||
/**
|
||||
* 考勤日期
|
||||
*/
|
||||
@@ -105,14 +92,4 @@ public class EduAttendanceStaffResult {
|
||||
@DateTimeFormat(pattern = "HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
|
||||
private LocalTime endRealTime;
|
||||
|
||||
@TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@TableField(value = "UPDATE_TIME", fill = FieldFill.UPDATE)
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime updateTime;
|
||||
}
|
||||
|
||||
+1
-30
@@ -3,18 +3,9 @@ package com.yida.data.common.core.entity.constant;
|
||||
public interface AppConstant {
|
||||
|
||||
/**
|
||||
* 通讯录(用于操作) https://developer.work.weixin.qq.com/document/path/96078
|
||||
* 通讯录
|
||||
*/
|
||||
String CONTACT = "通讯录";
|
||||
|
||||
/**
|
||||
* 通讯录(用于查询) 职工端智慧迎新
|
||||
*/
|
||||
String CONTACT_SELECT = "contact_resources";
|
||||
|
||||
/**
|
||||
* 家校沟通
|
||||
*/
|
||||
String CONTACT_SCHOOL = "家校沟通";
|
||||
|
||||
/**
|
||||
@@ -89,28 +80,8 @@ public interface AppConstant {
|
||||
*/
|
||||
String TEACHER_LEAVE_REQUEST = "teacher_leave_request";
|
||||
|
||||
/**
|
||||
* 请假家长端
|
||||
*/
|
||||
String STUDENT_LEAVE_REQUEST = "student_leave_request";
|
||||
|
||||
/**
|
||||
* 访客教师端
|
||||
*/
|
||||
String VISITOR_STAFF = "visitor_staff";
|
||||
|
||||
/**
|
||||
* 微官网 家长端智慧迎新
|
||||
*/
|
||||
String INDEX_PARENT = "index_parent";
|
||||
|
||||
/**
|
||||
* 查寝
|
||||
*/
|
||||
String DORM_ATTENDANCE_STAFF = "dorm_attendance_staff";
|
||||
|
||||
/**
|
||||
* 智慧迎新职工端
|
||||
*/
|
||||
String SMART_WELCOME_STAFF = "smart_welcome_staff";
|
||||
}
|
||||
|
||||
+2
-323
@@ -2,31 +2,11 @@ package com.yida.data.common.core.entity.constant;
|
||||
|
||||
public interface CachePrefixConstant {
|
||||
|
||||
/**
|
||||
* 企业微信服务商缓存前缀
|
||||
*/
|
||||
String SYS_SERVICE_PROVIDER = "sys:service:provider.";
|
||||
|
||||
/**
|
||||
* 企业微信应用缓存前缀
|
||||
*/
|
||||
String SYS_APP = "sys:app.";
|
||||
|
||||
/**
|
||||
* 系统白名单信息
|
||||
*/
|
||||
String SYS_WHITE_LIST = "sys:white:list.";
|
||||
|
||||
/**
|
||||
* 部门对应的第三方系统功能
|
||||
*/
|
||||
String SYS_DEPT_FUNCTION = "sys:dept:function.";
|
||||
|
||||
/**
|
||||
* 企业微信应用模板缓存前缀
|
||||
*/
|
||||
String SYS_APP_TEMPLATE = "sys:app.template.";
|
||||
|
||||
/**
|
||||
* 部门公众号
|
||||
*/
|
||||
@@ -81,18 +61,6 @@ public interface CachePrefixConstant {
|
||||
String IMPORT_STUDENT_KEY = "import.student.";
|
||||
String IMPORT_STUDENT_FILE = "import.student.file.";
|
||||
|
||||
String IMPORT_STUDENT_CARD_NUMBER_KEY = "import.student.cardNo";
|
||||
|
||||
/**
|
||||
* 学生导出信息
|
||||
*/
|
||||
String EXPORT_STUDENT_DATA = "student:data:export.";
|
||||
|
||||
/**
|
||||
* 学生宿舍导出信息
|
||||
*/
|
||||
String EXPORT_STUDENT_DORM_DATA = "student:dorm:data:export.";
|
||||
|
||||
/**
|
||||
* 登录用户将要登录的部门id
|
||||
*/
|
||||
@@ -139,31 +107,6 @@ public interface CachePrefixConstant {
|
||||
*/
|
||||
String UNION_PAY_CONFIG = "sys:union.pay.config";
|
||||
|
||||
/**
|
||||
* 建行支付配置信息
|
||||
*/
|
||||
String CONSTRUCTION_PAY_CONFIG = "sys:construction.pay.config";
|
||||
|
||||
/**
|
||||
* 收钱吧支付配置信息
|
||||
*/
|
||||
String U_PAY_CONFIG = "sys:u.pay.config";
|
||||
|
||||
/**
|
||||
* 百度api配置信息
|
||||
*/
|
||||
String BAI_DU_API_CONFIG = "baidu:api.config";
|
||||
|
||||
/**
|
||||
* 学校收钱吧终端信息
|
||||
*/
|
||||
String DEPT_CONSUME_TERMINAL = "dept:consume:terminal.";
|
||||
|
||||
/**
|
||||
* 学校消费机服务器信息
|
||||
*/
|
||||
String CONSUME_CONFIG = "sys:consume.config";
|
||||
|
||||
//------------------学校-------------------
|
||||
/**
|
||||
* 导入寝室 进度信息
|
||||
@@ -183,20 +126,11 @@ public interface CachePrefixConstant {
|
||||
//------------------用户-------------------
|
||||
String STUDENT_DATA = "user:student.data";
|
||||
|
||||
//------------------用户-------------------
|
||||
String STUDENT_BASE_DATA = "user:student.base.data";
|
||||
|
||||
|
||||
/**
|
||||
* 导入住宿学生 进度信息
|
||||
*/
|
||||
String IMPORT_STUDENT_DORM = "user:studentDorm.import";
|
||||
|
||||
/**
|
||||
* 导入学生类型 进度信息
|
||||
*/
|
||||
String IMPORT_STUDENT_TYPE = "user:studentType.import";
|
||||
|
||||
/**
|
||||
* 学生在校离校,在寝不在寝状态
|
||||
*/
|
||||
@@ -229,11 +163,6 @@ public interface CachePrefixConstant {
|
||||
*/
|
||||
String ISSUE_FACE_ERROR_MSG = "user:face:issue.error.msg.";
|
||||
|
||||
/**
|
||||
* 设备组人脸下发成功数量
|
||||
*/
|
||||
String ISSUE_GROUP_USER_FACE_SUCCESS = "group.user.face.success.";
|
||||
|
||||
/**
|
||||
* 大华code与人员id对应
|
||||
*/
|
||||
@@ -256,11 +185,6 @@ public interface CachePrefixConstant {
|
||||
*/
|
||||
String DEVICE_DATA = "attendance:device:data";
|
||||
|
||||
/**
|
||||
* 设备数据
|
||||
*/
|
||||
String DEVICE_DATA_BY_ID = "attendance:device:id:data";
|
||||
|
||||
/**
|
||||
* 最新考勤记录时间
|
||||
*/
|
||||
@@ -276,31 +200,11 @@ public interface CachePrefixConstant {
|
||||
*/
|
||||
String ISSUE_FACE_GROUP_DEVICE = "attendance:device:face-group.";
|
||||
|
||||
/**
|
||||
* 设备下发的人脸组鼠标数量
|
||||
*/
|
||||
String ISSUE_FACE_GROUP_DEVICE_NUMBER = "attendance:device:face-group.number.";
|
||||
|
||||
/**
|
||||
* 海清设备批量编辑列表
|
||||
*/
|
||||
String HQ_EDIT_BATCH = "hq.edit.batch.";
|
||||
|
||||
/**
|
||||
* 海清人脸新增信息
|
||||
*/
|
||||
String HQ_BATCH_ADD = "hq.batch.add.";
|
||||
|
||||
/**
|
||||
* 海清人脸新编辑信息
|
||||
*/
|
||||
String HQ_BATCH_EDIT = "hq.batch.edit.";
|
||||
|
||||
/**
|
||||
* 接收的认证消息缓存
|
||||
*/
|
||||
String HQ_RECEIVE_INFO = "hq.receive.info.";
|
||||
|
||||
//--------------商品订单------------------
|
||||
|
||||
/**
|
||||
@@ -436,13 +340,6 @@ public interface CachePrefixConstant {
|
||||
* 宿舍信息
|
||||
*/
|
||||
String FACILITY_DORM_ROOM = "facility:dorm:room";
|
||||
|
||||
// --------------------宿舍数据-----------------
|
||||
/**
|
||||
* 宿舍信息
|
||||
*/
|
||||
String FACILITY_DORM_MASTER = "facility:dorm:master.";
|
||||
|
||||
// --------------------第二课堂----------------
|
||||
/**
|
||||
* 菜单配置
|
||||
@@ -469,7 +366,7 @@ public interface CachePrefixConstant {
|
||||
String BILL_ORDER = "bill.order.";
|
||||
|
||||
/**
|
||||
* 账单订单调起支付所需参数,微信jsapi为prepay_id,微信h5为支付地址,银联支付为支付地址
|
||||
* 账单订单调起支付所需参数,微信jsapi为prepay_id,微信h5为回调地址,银联支付为支付地址
|
||||
*/
|
||||
String BILL_ORDER_FLAG = "bill.order.flag.";
|
||||
|
||||
@@ -508,27 +405,6 @@ public interface CachePrefixConstant {
|
||||
*/
|
||||
String BILL_PAY_DETAIL_EXPORT_URL = "bill:pay:detail:export:url:";
|
||||
|
||||
// --------------------消费充值----------------
|
||||
/**
|
||||
* 学生消费订单缓存
|
||||
*/
|
||||
String CONSUME_ORDER_STUDENT = "consume.order.student.";
|
||||
|
||||
/**
|
||||
* 消费订单信息
|
||||
*/
|
||||
String CONSUME_ORDER = "consume.order.";
|
||||
|
||||
/**
|
||||
* 消费订单调起支付所需参数,微信jsapi为prepay_id,微信h5为支付地址,银联支付为支付地址,收钱吧为支付地址
|
||||
*/
|
||||
String CONSUME_ORDER_FLAG = "consume.order.flag.";
|
||||
|
||||
/**
|
||||
* 商品描述
|
||||
*/
|
||||
String CONSUME_ORDER_DESC = "充值缴费";
|
||||
|
||||
// -----------摄像头-------------------------
|
||||
/**
|
||||
* 摄像头
|
||||
@@ -542,41 +418,6 @@ public interface CachePrefixConstant {
|
||||
*/
|
||||
String USER_PIC_DOWNLOAD = "user:pic:downLoad.";
|
||||
|
||||
|
||||
/**
|
||||
* 职工通行记录下载
|
||||
*/
|
||||
String STAFF_ATTENDANCE_RECORD_DOWNLOAD = "staff:attendance:record:downLoad.";
|
||||
|
||||
/**
|
||||
* 职工考勤记录下载
|
||||
*/
|
||||
String STAFF_ATTENDANCE_RESULT_DOWNLOAD = "staff:attendance:result:downLoad.";
|
||||
|
||||
|
||||
/**
|
||||
* 学生宿舍考勤下载
|
||||
*/
|
||||
String STUDENT_DORM_ATTENDANCE_RESULT_DOWNLOAD = "student:dorm:attendance:result:downLoad.";
|
||||
|
||||
|
||||
/**
|
||||
* 通行记录下载
|
||||
*/
|
||||
String ATTENDANCE_RECORD_DOWNLOAD = "attendance:record:download.";
|
||||
|
||||
|
||||
/**
|
||||
* 考勤日报下载
|
||||
*/
|
||||
String ATTENDANCE_DAY_REPORT_DOWNLOAD = "attendance:day:report:download.";
|
||||
|
||||
|
||||
/**
|
||||
* 商品购买情况下载
|
||||
*/
|
||||
String PRODUCT_BUY_DATA_DOWNLOAD = "product:buy:data:downLoad.";
|
||||
|
||||
/**
|
||||
* 下载学生照片
|
||||
*/
|
||||
@@ -590,7 +431,7 @@ public interface CachePrefixConstant {
|
||||
/**
|
||||
* 学校对应关键功能点配置
|
||||
*/
|
||||
String SCHOOL_FUNCATION_CODE = "school:funcation:code:";
|
||||
String SCHOOL_FUNCATION_CODE = "school:funcation:code.";
|
||||
|
||||
String ATTENDANCE_DORMITORY_CLASS = "attendance:Dormitory:class.";
|
||||
|
||||
@@ -599,9 +440,6 @@ public interface CachePrefixConstant {
|
||||
String STAFF_MANGE_DEPT = "staff:mange:dept.";
|
||||
|
||||
|
||||
String STAFF_MANGE_CLASS = "staff:mange:class.";
|
||||
|
||||
|
||||
/**
|
||||
* 对应设备策略id(人脸组id)缓存
|
||||
*/
|
||||
@@ -641,165 +479,6 @@ public interface CachePrefixConstant {
|
||||
String ADD_MANUSCRIPT_PROGRESS = "add:manuscript:progress";
|
||||
|
||||
// --------------------智慧迎新-----------------
|
||||
/**
|
||||
* 花名册下载缓存
|
||||
*/
|
||||
String GUIDE_ROSTER_DATA_DOWNLOAD = "guide:roster:data:download.";
|
||||
|
||||
/**
|
||||
* 花名册身份证、通知书下载图片缓存
|
||||
*/
|
||||
String GUIDE_ROSTER_PIC_DATA_DOWNLOAD = "guide:roster:pic:data:download.";
|
||||
|
||||
// --------------------智慧迎新-----------------
|
||||
/**
|
||||
* 新生迎新步骤信息
|
||||
*/
|
||||
String GUIDE_ROSTER_STEP_DATA = "guide:roster:step:data.";
|
||||
|
||||
/**
|
||||
* 花名册人员迎新订单缓存
|
||||
*/
|
||||
String GUIDE_STEP_ORDER_ROSTER = "guide.step.order.roster.";
|
||||
|
||||
/**
|
||||
* 迎新步骤订单缓存
|
||||
*/
|
||||
String GUIDE_STEP_ORDER = "guide.step.order.";
|
||||
|
||||
/**
|
||||
* 迎新订单调起支付所需参数,微信jsapi为prepay_id,微信h5为支付地址,银联支付为支付地址,建行为支付地址
|
||||
*/
|
||||
String GUIDE_STEP_ORDER_FLAG = "guide.step.order.flag.";
|
||||
|
||||
|
||||
/**
|
||||
* 智慧迎新导入学生人脸
|
||||
*/
|
||||
String IMPORT_GUIDE_AVATAR_KEY = "guide:avatar:import.key.";
|
||||
|
||||
|
||||
/**
|
||||
* 智慧迎新导入花名册
|
||||
*/
|
||||
String IMPORT_GUIDE_ROSTER_KEY = "guide:roster:import.key.";
|
||||
|
||||
/**
|
||||
* 智慧迎新系部专业数据
|
||||
*/
|
||||
String WELCOME_DEPARTMENT_DATA = "welcome:department:data.";
|
||||
|
||||
/**
|
||||
* 智慧迎新预分班级数据
|
||||
*/
|
||||
String WELCOME_CLASS_DATA = "welcome:class:data.";
|
||||
|
||||
/**
|
||||
* 智慧迎新班级对应人员数量
|
||||
*/
|
||||
String WELCOME_CLASS_STUDENT_NUMBER = "welcome:class:student:number:";
|
||||
|
||||
/**
|
||||
* 智慧迎新预分宿舍数据
|
||||
*/
|
||||
String WELCOME_DORM_DATA = "welcome:dorm:data.";
|
||||
|
||||
|
||||
/**
|
||||
* 智慧迎新宿舍对应人员数量
|
||||
*/
|
||||
String WELCOME_DROM_STUDENT_NUMBER = "welcome:dorm:student:number:";
|
||||
|
||||
|
||||
/**
|
||||
* 智慧迎新宿舍对应人员数量
|
||||
*/
|
||||
String WELCOME_DROM_STUDENT_NUMBER_BUDING = "welcome:dorm:student:number:buding";
|
||||
|
||||
|
||||
/**
|
||||
* 智慧迎新预分班级导入进度
|
||||
*/
|
||||
String WELCOME_CLASS_IMPOST_PROGRESS = "welcome:class:import:progress:";
|
||||
|
||||
/**
|
||||
* 智慧迎新预分宿舍导入进度
|
||||
*/
|
||||
String WELCOME_DORM_IMPOST_PROGRESS = "welcome:dorm:import:progress:";
|
||||
|
||||
/**
|
||||
* 智慧迎新花名册信息
|
||||
*/
|
||||
String WELCOME_ROSTER = "welcome:roster";
|
||||
|
||||
|
||||
/**
|
||||
* 学生考勤结果 每月记录
|
||||
*/
|
||||
String ATTENDANCE_DATE_STATUS = "attendance:date:status.";
|
||||
|
||||
|
||||
/**
|
||||
* 管理员查看 每月记录
|
||||
*/
|
||||
String ATTENDANCE_MANAGE_DATE_STATUS = "attendance:manage:date:status.";
|
||||
|
||||
|
||||
/**
|
||||
* 学生考勤结果 每日记录
|
||||
*/
|
||||
String ATTENDANCE_STATUS_DAY_STUDENT = "attendance:status:day:student:";
|
||||
|
||||
|
||||
/**
|
||||
* 教职工考勤结果 每日记录
|
||||
*/
|
||||
String ATTENDANCE_STATUS_DAY_STAFF = "attendance:status:day:staff:";
|
||||
|
||||
/**
|
||||
* 考勤管理管理部门树
|
||||
*/
|
||||
String ATTENDANCE_USER_MANAGE_TREE = "attendance:user:manage:tree:";
|
||||
|
||||
/**
|
||||
* 考勤管理管理部门树
|
||||
*/
|
||||
String ATTENDANCE_STAFF_IDENTITY = "attendance:staff:identity:";
|
||||
|
||||
/**
|
||||
* 职工管理规则
|
||||
*/
|
||||
String ATTENDANCE_STAFF_MANAGE_RULE = "attendance:staff:manage:rule";
|
||||
|
||||
/**
|
||||
* 用户打卡记录
|
||||
*/
|
||||
String ATTENDANCE_USER_RECORD = "attendance:user:record";
|
||||
|
||||
/**
|
||||
* 学生匹配的考勤规则
|
||||
*/
|
||||
String ATTENDANCE_STUDENT_RULE = "attendance:student:rule";
|
||||
|
||||
/**
|
||||
* 校园主页信息
|
||||
*/
|
||||
String SCHOOL_HOME_INFO = "school:home:info";
|
||||
|
||||
/**
|
||||
* 学校小程序信息
|
||||
*/
|
||||
String DEPT_HOME_APP_INFO = "dept:home:app:info";
|
||||
|
||||
|
||||
/**
|
||||
* 用户对应微信小程序
|
||||
*/
|
||||
String USER_GENERATE_URL_LINK = "user:generate:url:link:";
|
||||
|
||||
|
||||
/**
|
||||
* 考勤规则
|
||||
*/
|
||||
String ATTENDANCE_RULE_DATA = "attendance:rule";
|
||||
}
|
||||
|
||||
+1
-11
@@ -79,20 +79,10 @@ public interface FebsConstant {
|
||||
String TP_TOKEN = "tupu.token.";
|
||||
|
||||
/**
|
||||
* 微信公众号 token key前缀 7200s
|
||||
* 微信公众号 token key前缀
|
||||
*/
|
||||
String WX_PUBLIC_ACCESS_TOKEN = "wx.public:access.token.";
|
||||
|
||||
/**
|
||||
* 微信 JS-SDK jsapi_ticket key前缀 7200s
|
||||
*/
|
||||
String WX_PUBLIC_JS_API_TICKET = "wx.public:jsapi.ticket.";
|
||||
|
||||
/**
|
||||
* 企业微信 JS-SDK jsapi_ticket key前缀 7200s
|
||||
*/
|
||||
String QYWX_WX_JS_API_TICKET = "qywx.wx:jsapi.ticket.";
|
||||
|
||||
/**
|
||||
* 几米 access_token key前缀
|
||||
*/
|
||||
|
||||
+2
-7
@@ -43,12 +43,7 @@ public interface LockPrefixConstant {
|
||||
String CARD_CMD_LOCK = "device:card:cmd-lock";
|
||||
|
||||
/**
|
||||
* 设备下发处理返回数据锁
|
||||
* 学生账单订单锁
|
||||
*/
|
||||
String ISSUE_FACE_DEVICE_LOCK = "user:face:issue.device.lock.";
|
||||
|
||||
/**
|
||||
* 设备组下发处理人脸数据锁
|
||||
*/
|
||||
String ISSUE_FACE_GROUP_LOCK = "user:face:group.lock.";
|
||||
String STUDENT_BILL_ORDER_LOCK = "student.bill.order.lock.";
|
||||
}
|
||||
|
||||
-43
@@ -38,21 +38,11 @@ public interface QywxConstant {
|
||||
*/
|
||||
String USER_DETAIL_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/get";
|
||||
|
||||
/**
|
||||
* 获取访问用户敏感信息 post https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail?access_token=ACCESS_TOKEN
|
||||
*/
|
||||
String USER_SENSITIVE_INFO_URL = "https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail?access_token=";
|
||||
|
||||
/**
|
||||
* 查询部门成员详情 get https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=ACCESS_TOKEN&department_id=DEPARTMENT_ID&fetch_child=FETCH_CHILD
|
||||
*/
|
||||
String USER_DETAIL_LIST_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/list";
|
||||
|
||||
/**
|
||||
* 获取成员ID列表 POST https://qyapi.weixin.qq.com/cgi-bin/user/list_id?access_token=ACCESS_TOKEN
|
||||
*/
|
||||
String USER_ID_LIST_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/list_id?access_token=";
|
||||
|
||||
/**
|
||||
* 创建部门 POST https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token=ACCESS_TOKEN
|
||||
*/
|
||||
@@ -73,16 +63,6 @@ public interface QywxConstant {
|
||||
*/
|
||||
String DEPT_LIST_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/list";
|
||||
|
||||
/**
|
||||
* 获取子部门ID列表 GET https://qyapi.weixin.qq.com/cgi-bin/department/simplelist?access_token=ACCESS_TOKEN&id=ID
|
||||
*/
|
||||
String SIMPLE_DEPT_LIST_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/simplelist";
|
||||
|
||||
/**
|
||||
* 获取单个部门详情 GET https://qyapi.weixin.qq.com/cgi-bin/department/get?access_token=ACCESS_TOKEN&id=ID
|
||||
*/
|
||||
String DEPT_INFO_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/get";
|
||||
|
||||
/**
|
||||
* 创建部门(家校沟通) POST https://qyapi.weixin.qq.com/cgi-bin/school/department/create?access_token=ACCESS_TOKEN
|
||||
*/
|
||||
@@ -225,39 +205,16 @@ public interface QywxConstant {
|
||||
*/
|
||||
String CONTACT_EVENT = "change_contact";
|
||||
|
||||
/**
|
||||
* 创建部门
|
||||
*/
|
||||
String DEPT_CREATE_TYPE = "create_party";
|
||||
|
||||
/**
|
||||
* 更新部门
|
||||
*/
|
||||
String DEPT_UPDATE_TYPE = "update_party";
|
||||
|
||||
/**
|
||||
* 删除部门
|
||||
*/
|
||||
String DEPT_DELETE_TYPE = "delete_party";
|
||||
|
||||
/**
|
||||
* 创建成员
|
||||
*/
|
||||
String USER_CREATE_TYPE = "create_user";
|
||||
|
||||
/**
|
||||
* 更新成员
|
||||
*/
|
||||
String USER_UPDATE_TYPE = "update_user";
|
||||
|
||||
/**
|
||||
* 删除成员
|
||||
*/
|
||||
String USER_DELETE_TYPE = "delete_user";
|
||||
|
||||
/**
|
||||
* 获取企业微信的jsapi_ticket
|
||||
* https://developer.work.weixin.qq.com/document/path/96909
|
||||
*/
|
||||
String GET_JS_API_TICKET_URL = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket";
|
||||
}
|
||||
|
||||
-6
@@ -61,10 +61,4 @@ public interface WxPublicConstant {
|
||||
* 获取微信小程序 URL Link
|
||||
*/
|
||||
String GENERATE_URL_LINK = "https://api.weixin.qq.com/wxa/generate_urllink";
|
||||
|
||||
/**
|
||||
* 获取JS-SDK jsapi_ticket
|
||||
* https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62
|
||||
*/
|
||||
String GET_JS_API_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket";
|
||||
}
|
||||
|
||||
+5
@@ -15,6 +15,11 @@ public class AppNotice {
|
||||
*/
|
||||
private List<String> userIds;
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private List<String> userIdList;
|
||||
|
||||
/**
|
||||
* 订阅号 消息内容
|
||||
*/
|
||||
|
||||
+1
@@ -63,4 +63,5 @@ public class PushMessage {
|
||||
public static final String AUDIO = "audio";
|
||||
public static final String NORMAL = "NORMAL";
|
||||
public static final String ACCOUNT = "MSG_ACCOUNT_MSG";
|
||||
public static final String H5_SUB_MSG_TYPE = "NEWSEDUCATION";
|
||||
}
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ import java.math.BigDecimal;
|
||||
@AllArgsConstructor
|
||||
public class UnionPayOrder implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -1580486861180880702L;
|
||||
private static final long serialVersionUID = -1548806861180880702L;
|
||||
|
||||
@ApiModelProperty("银联云闪付支付类型")
|
||||
private Integer unionPayType;
|
||||
|
||||
+2
-2
@@ -89,7 +89,7 @@ public class EduSchoolManuscript {
|
||||
@TableField("author_id")
|
||||
private Long authorId;
|
||||
|
||||
@ApiModelProperty("发布位置,0-城市书房, 1-第二课堂(精彩推荐),2-微信公众号,多个用逗号分割")
|
||||
@ApiModelProperty("发布位置,0-城市书房, 1-第二课堂(精彩推荐),2-微信公众号,多个用逗号分割,3-首页")
|
||||
@TableField("publish_path")
|
||||
private String publishPath;
|
||||
|
||||
@@ -132,7 +132,7 @@ public class EduSchoolManuscript {
|
||||
private transient String authorName;
|
||||
|
||||
// 新闻区
|
||||
public static final String NEWS_PATH = "0";
|
||||
public static final String NEWS_PATH = "3";
|
||||
// 第二课堂
|
||||
public static final String SECOND_CLASS_PATH = "1";
|
||||
// 公众号
|
||||
|
||||
+2
-6
@@ -54,7 +54,8 @@ public class Dept implements Serializable {
|
||||
@ApiModelProperty("部门简称")
|
||||
private String deptAbbreviation;
|
||||
/**
|
||||
* 部门类型,0表示学校,5公司,6部门, 7教育局, 8代理商 {@link DeptTypeEnum}
|
||||
* 部门类型,0表示学校,5公司,6部门, 7教育局, 8代理商
|
||||
* {@link DeptTypeEnum}
|
||||
*/
|
||||
@ApiModelProperty("部门类型,0表示学校,5公司,6部门, 7教育局, 8代理商")
|
||||
private Integer deptType;
|
||||
@@ -70,11 +71,6 @@ public class Dept implements Serializable {
|
||||
private String wxAesKey;
|
||||
@ApiModelProperty("学校关联类型类型,0-企业微信,1-易达app,2-大华平台 多类型使用','连接")
|
||||
private String schoolType;
|
||||
|
||||
@ApiModelProperty("学校性质:0小学,1中学,2九年一贯,3十二年一贯,4:高校")
|
||||
@TableField(value = "school_nature")
|
||||
private Integer schoolNature;
|
||||
|
||||
private Long wxId;
|
||||
private Long parentWxId;
|
||||
/**
|
||||
|
||||
-8
@@ -45,12 +45,4 @@ public class EduApp {
|
||||
@ApiModelProperty("应用地址")
|
||||
private String appSrc;
|
||||
|
||||
@ApiModelProperty("应用类型。0-自建应用, 1-服务商代开发应用")
|
||||
private Integer appType;
|
||||
|
||||
@ApiModelProperty("应用模板id")
|
||||
private String templateId;
|
||||
|
||||
@ApiModelProperty("服务商企业微信corpId")
|
||||
private String serviceCorpId;
|
||||
}
|
||||
|
||||
+1
-4
@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@@ -106,7 +105,5 @@ public class Menu implements Serializable {
|
||||
|
||||
private transient String createTimeFrom;
|
||||
private transient String createTimeTo;
|
||||
|
||||
@ApiModelProperty("菜单类型(0-合并, 1-剔除)")
|
||||
private transient Integer userMenuType;
|
||||
|
||||
}
|
||||
-5
@@ -244,9 +244,4 @@ public class SystemUser implements Serializable {
|
||||
private String mainRolePerms;
|
||||
|
||||
private transient EduUserLogo userLogo;
|
||||
|
||||
/**
|
||||
* 学校性质:0幼儿园,1小学,2中学,3九年一贯,4十二年一贯,5:高校
|
||||
*/
|
||||
private transient Integer schoolNature;
|
||||
}
|
||||
|
||||
-9
@@ -25,13 +25,4 @@ public class SystemUserMenu {
|
||||
@ApiModelProperty("菜单id")
|
||||
@TableField("menu_id")
|
||||
private Long menuId;
|
||||
|
||||
|
||||
@ApiModelProperty("菜单类型(0-合并, 1-剔除)")
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 权限串
|
||||
*/
|
||||
private transient String perms;
|
||||
}
|
||||
|
||||
+1
-3
@@ -27,9 +27,7 @@ public enum RoleEnum {
|
||||
|
||||
ROLE_CLASS_PRINCIPAL("role:class:principal", "班主任", 9, 5),
|
||||
|
||||
ROLE_EDUCATION_PRINCIPAL("role:education:principal", "教育局负责人", 8, 2),
|
||||
|
||||
ROLE_TEACHER("role:teacher", "教师基础角色", 10, 8);
|
||||
ROLE_EDUCATION_PRINCIPAL("role:education:principal", "教育局负责人", 8, 2);
|
||||
|
||||
/**
|
||||
* 角色标识值
|
||||
|
||||
-3
@@ -49,9 +49,6 @@ public class EduStaffDept {
|
||||
@ApiModelProperty(value = "")
|
||||
private String staffName;
|
||||
|
||||
@ApiModelProperty(value = "z职工用户头像")
|
||||
private String avatar;
|
||||
|
||||
/**
|
||||
* 部门id
|
||||
*/
|
||||
|
||||
-39
@@ -51,42 +51,6 @@ public class EduStudent implements Serializable {
|
||||
@ApiModelProperty("学生姓名")
|
||||
private String stuName;
|
||||
|
||||
@ApiModelProperty("曾用名")
|
||||
private String formerName;
|
||||
|
||||
@ApiModelProperty("考生号")
|
||||
private String stuExamNumber;
|
||||
|
||||
@ApiModelProperty("银行卡号")
|
||||
private String creditCardNumbers;
|
||||
|
||||
@ApiModelProperty("民族")
|
||||
private String nation;
|
||||
|
||||
@ApiModelProperty("QQ号")
|
||||
private String qqCode;
|
||||
|
||||
@ApiModelProperty("微信号")
|
||||
private String wxCode;
|
||||
|
||||
@ApiModelProperty("邮箱")
|
||||
private String email;
|
||||
|
||||
@ApiModelProperty("入学年级")
|
||||
private String startGrade;
|
||||
|
||||
@ApiModelProperty("政治面貌")
|
||||
private String politicsStatus;
|
||||
|
||||
@ApiModelProperty("邮政编码")
|
||||
private String postalCode;
|
||||
|
||||
@ApiModelProperty("籍贯")
|
||||
private String nativePlace;
|
||||
|
||||
@ApiModelProperty("现住址")
|
||||
private String presentAddress;
|
||||
|
||||
@ApiModelProperty("学生头像url")
|
||||
private String avatar;
|
||||
|
||||
@@ -136,9 +100,6 @@ public class EduStudent implements Serializable {
|
||||
@ApiModelProperty("学生当前状态,0=在校/在寝,1=离校/离寝")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty("学籍状态:关联字典表")
|
||||
private String studentStatus;
|
||||
|
||||
@ApiModelProperty("学生在寝状态,0-在寝,1-离寝")
|
||||
private Integer dormStatus;
|
||||
|
||||
|
||||
+4
-25
@@ -9,11 +9,13 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
||||
import lombok.Data;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 用户人脸图像 Entity
|
||||
*
|
||||
@@ -82,30 +84,7 @@ public class EduUserFace {
|
||||
private String picPath;
|
||||
|
||||
/**
|
||||
* 人脸组id
|
||||
* 人脸与人脸组的关联id
|
||||
*/
|
||||
private transient Long faceGroupUserId;
|
||||
|
||||
/**
|
||||
* 学生对应卡号
|
||||
*/
|
||||
private transient String rfidCard;
|
||||
|
||||
/**
|
||||
* 是否为会员 1=是,0=否(针对学生,教师全是会员)
|
||||
*/
|
||||
private transient Integer notes;
|
||||
/**
|
||||
* 会员开始时间
|
||||
*/
|
||||
private transient String cardValidBegin;
|
||||
/**
|
||||
* 会员结束时间
|
||||
*/
|
||||
private transient String cardValidEnd;
|
||||
|
||||
/**
|
||||
* 下发的设备名称
|
||||
*/
|
||||
private transient String deviceName;
|
||||
}
|
||||
-28
@@ -14,11 +14,6 @@ public enum AttendanceResult {
|
||||
*/
|
||||
NORMAL(100, "正常"),
|
||||
|
||||
/**
|
||||
* 异常状态
|
||||
*/
|
||||
ABNORMAL(999, "异常"),
|
||||
|
||||
/**
|
||||
* 上学未在打卡有效时间段
|
||||
*/
|
||||
@@ -45,33 +40,10 @@ public enum AttendanceResult {
|
||||
* 走读-旷课
|
||||
*/
|
||||
STU_NOTARRIVE(204, "旷课"),
|
||||
|
||||
/**
|
||||
* 走读-请假
|
||||
*/
|
||||
STU_REQUEST(205, "请假"),
|
||||
/**
|
||||
* 上班未打卡|下班正常
|
||||
*/
|
||||
STU_NOSTART_AND_END_NORMAL(206, "上班未打卡|下班正常"),
|
||||
|
||||
/**
|
||||
* 上班未打卡|下班正常
|
||||
*/
|
||||
STU_NOSTART_AND_END_LATE(207, "上班未打卡|下班早退"),
|
||||
/**
|
||||
* 上班未打卡|下班正常
|
||||
*/
|
||||
STU_NOSTART_AND_END_NOTIN(208, "上班未打卡|下班未在有效打卡时间段内"),
|
||||
/**
|
||||
* 上班未在有效打卡时间段内|下班早退
|
||||
*/
|
||||
STU_NOSTARTIN_AND_END_LEAVE(209, "上班未在有效打卡时间段内|下班早退"),
|
||||
|
||||
/**
|
||||
* 上班迟到|下班未打卡
|
||||
*/
|
||||
STU_NOSTARTIN_AND_END_NO(210, "上班迟到|下班未打卡"),
|
||||
/**
|
||||
* 住宿-晚归
|
||||
*/
|
||||
|
||||
+1
-3
@@ -6,10 +6,8 @@ import lombok.Getter;
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum MsgChannel {
|
||||
|
||||
MQTT("mqtt","mqtt(人脸设备)"),
|
||||
ACTIVE("activeMq","active(人脸设备)"),
|
||||
WIFI("WIFI", "WIFI打卡");
|
||||
ACTIVE("activeMq","active(人脸设备)");
|
||||
|
||||
private String value;
|
||||
private String name;
|
||||
|
||||
+2
-4
@@ -16,11 +16,9 @@ public enum PayWay {
|
||||
/**
|
||||
* 支付方式枚举
|
||||
*/
|
||||
WEI_XIN("1", "微信"),
|
||||
WEIXIN("1", "微信"),
|
||||
ALIPAY("2", "支付宝"),
|
||||
UNION("3", "银联"),
|
||||
U_PAY("4", "收钱吧"),
|
||||
CONSTRUCTION_PAY("5", "建行");
|
||||
UNION("3", "银联");
|
||||
|
||||
/**
|
||||
* 类型
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ public enum UnionPayTypeEnum {
|
||||
/**
|
||||
* 银联云闪付支付类型枚举
|
||||
*/
|
||||
WX_H5_TYPE(0, "微信H5", UnionPayConstant.UNION_H5_PAY),
|
||||
WX_H5_TYPE(0, "微信H5", UnionPayConstant.WX_H5_PAY),
|
||||
WX_TO_MINI_H5_TYPE(1, "微信H5转小程序", UnionPayConstant.WX_TO_MINI_H5_PAY),
|
||||
ALI_H5_TYPE(2, "支付宝H5", UnionPayConstant.ALI_H5_PAY),
|
||||
UNION_H5_TYPE(3, "银联H5", UnionPayConstant.UNION_H5_PAY);
|
||||
|
||||
+8
-5
@@ -5,8 +5,7 @@ import com.yida.data.common.core.entity.constant.StringConstant;
|
||||
import com.yida.data.common.core.exception.FebsException;
|
||||
import com.yida.data.common.core.exception.FileDownloadException;
|
||||
import com.yida.data.common.core.utils.FebsUtil;
|
||||
import feign.FeignException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.security.access.AccessDeniedException;
|
||||
@@ -19,11 +18,15 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.validation.ConstraintViolation;
|
||||
import javax.validation.ConstraintViolationException;
|
||||
import javax.validation.Path;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import feign.FeignException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* @author MrBird
|
||||
@@ -135,7 +138,7 @@ public class BaseExceptionHandler {
|
||||
@ExceptionHandler(value = HttpRequestMethodNotSupportedException.class)
|
||||
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
public FebsResponse handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
|
||||
log.error("error: ", e);
|
||||
log.error("error:{},{}", e.getMessage(), e.getStackTrace());
|
||||
String message = "该方法不支持" + StringUtils.substringBetween(e.getMessage(), "'", "'") + "请求方法";
|
||||
log.error(message);
|
||||
return new FebsResponse().message(message);
|
||||
|
||||
+53
-17
@@ -178,25 +178,55 @@ public class AppUtil {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 推送app消息
|
||||
*
|
||||
* @param appNotice 消息配置类
|
||||
* @param app app信息
|
||||
* @author ZYJ
|
||||
* @date 2023/7/14 16:04
|
||||
*/
|
||||
public static void sendPushMsg(AppNotice appNotice, EduYidaApp app) {
|
||||
StringBuilder url = new StringBuilder();
|
||||
AppNotice appNotice1 = new AppNotice();
|
||||
BeanUtils.copyProperties(appNotice, appNotice1);
|
||||
appNotice1.setMsgList(null);
|
||||
url.append(app.getAppUrl()).append(YidaAppConstant.JIGUANG_SEND_MSG);
|
||||
// url.append("http://10.143.132.192:8082/push/sendMulti").append(YidaAppConstant.JIGUANG_SEND_MSG);
|
||||
String body = JSONUtil.toJsonStr(appNotice1);
|
||||
// 1s后超时 不保证收到推送
|
||||
try {
|
||||
String res = HttpUtil.post(url.toString(), body, 1000);
|
||||
log.info("app消息推送,res:[{}],params:[{}]", res, body);
|
||||
} catch (Exception e) {
|
||||
log.error("app消息推送超时,url:[{}],params:[{}]", url, body);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送稿件
|
||||
*/
|
||||
public static String publishManuscript(EduSchoolManuscript manuscript, EduYidaApp yidaApp, String columnId,
|
||||
String yidaUserId) {
|
||||
JSONObject body = new JSONObject() {{
|
||||
set("title", manuscript.getTitle());
|
||||
set("fileType", manuscript.getCoverType());
|
||||
set("type", 1);
|
||||
set("isPush", 1);
|
||||
set("isSub", 1);
|
||||
set("isPublish", 1);
|
||||
set("from", 2);
|
||||
set("isTop", 0);
|
||||
set("titleFilePath", manuscript.getCoverUrl());
|
||||
set("areaId", yidaApp.getAppAreaId());
|
||||
set("createById", yidaUserId);
|
||||
}};
|
||||
JSONObject body = JSONUtil.createObj()
|
||||
.set("title", manuscript.getTitle())
|
||||
.set("fileType", manuscript.getCoverType())
|
||||
.set("type", 1)
|
||||
.set("isPush", 1)
|
||||
.set("isSub", 1)
|
||||
.set("isPublish", 1)
|
||||
.set("from", 2)
|
||||
.set("isTop", 0)
|
||||
.set("titleFilePath", manuscript.getCoverUrl())
|
||||
.set("areaId", yidaApp.getAppAreaId())
|
||||
.set("createById", yidaUserId);
|
||||
// 判断稿件id
|
||||
if (StrUtil.isNotBlank(manuscript.getYidaAppMunascriptId())) {
|
||||
body.set("id", manuscript.getYidaAppMunascriptId());
|
||||
body.set("isNewRecord", false);
|
||||
} else {
|
||||
body.set("isNewRecord", true);
|
||||
}
|
||||
// 是否发布到栏目
|
||||
if (StrUtil.isNotBlank(columnId)) {
|
||||
body.set("columnId", columnId);
|
||||
@@ -207,9 +237,9 @@ public class AppUtil {
|
||||
if (StrUtil.isNotBlank(manuscript.getContentUrl())) {
|
||||
body.set("contenUrl", manuscript.getContentUrl());
|
||||
}
|
||||
if (StrUtil.isNotBlank(manuscript.getYidaAppMunascriptId())) {
|
||||
body.set("id", manuscript.getYidaAppMunascriptId());
|
||||
}
|
||||
// if (StrUtil.isNotBlank(manuscript.getYidaAppMunascriptId())) {
|
||||
// body.set("id", manuscript.getYidaAppMunascriptId());
|
||||
// }
|
||||
String res = HttpUtil.post(yidaApp.getAppUrl() + YidaAppConstant.MANUSCRIPT_SAVE, body);
|
||||
JSONObject resJson = JSONUtil.parseObj(res);
|
||||
log.info("易达发送稿件,res:[{}],params:[{}]", res, body);
|
||||
@@ -258,10 +288,16 @@ public class AppUtil {
|
||||
/**
|
||||
* 删除稿件
|
||||
*/
|
||||
public static void manuscriptDel(List<String> ids, EduYidaApp yidaApp) {
|
||||
public static void manuscriptDel(List<String> ids, EduYidaApp yidaApp, String userId) {
|
||||
if (CollUtil.isEmpty(ids)) {
|
||||
log.info("易达删除稿件IDS为空");
|
||||
return;
|
||||
}
|
||||
JSONObject body = new JSONObject() {{
|
||||
set("ids", CollUtil.join(ids, ","));
|
||||
set("operateUserId", userId);
|
||||
}};
|
||||
log.info("易达删除稿件:params:{}", body);
|
||||
HttpUtil.post(yidaApp.getAppUrl() + YidaAppConstant.MANUSCRIPT_DEL, body);
|
||||
}
|
||||
|
||||
|
||||
-116
@@ -1,19 +1,14 @@
|
||||
package com.yida.data.common.core.utils;
|
||||
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 时间工具类
|
||||
@@ -99,115 +94,4 @@ public abstract class DateUtil {
|
||||
LocalTime now = LocalTime.now();
|
||||
return now.isAfter(from) && now.isBefore(to);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 计算两个时间点相差的天数
|
||||
*
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
public static Long daysBetween(Date beginDate, Date endDate) {
|
||||
return cn.hutool.core.date.DateUtil.between(beginDate, endDate, DateUnit.DAY);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取指定年指定月的开始天数和结束天数
|
||||
*
|
||||
* @param yearMonth
|
||||
* @return
|
||||
*/
|
||||
public static Map<String, Date> getFirstDayAndLastDayOfTheSpecifiedMonth(String yearMonth) {
|
||||
|
||||
int year = Integer.parseInt(yearMonth.split("-")[0]);
|
||||
int month = Integer.parseInt(yearMonth.split("-")[1]);
|
||||
// 获取当前分区的日历信息(这里可以使用参数指定时区)
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
// 设置年
|
||||
calendar.set(Calendar.YEAR, year);
|
||||
// 设置月,月份从0开始
|
||||
calendar.set(Calendar.MONTH, month - 1);
|
||||
// 设置为指定月的第一天
|
||||
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
||||
// 获取指定月第一天的时间
|
||||
Date start = calendar.getTime();
|
||||
// 设置日历天数为当前月实际天数的最大值,即指定月份的最后一天
|
||||
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
|
||||
// 获取最后一天的时间
|
||||
Date end = calendar.getTime();
|
||||
// 设置返回信息,返回样式根据需求自行格式化
|
||||
Map<String, Date> dateMap = new HashMap<>();
|
||||
dateMap.put("start", start);
|
||||
dateMap.put("end", end);
|
||||
return dateMap;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询日期间有几天一周中的某一天 日期格式 yyyy-MM-dd yyyy-MM-dd 1-7(表示周一到周日)
|
||||
*
|
||||
* @param startDate 准备查询的起始日期
|
||||
* @param endDate 准备查询的结束日期
|
||||
* @param dayOfWeek 准备查的一周中的某一天(准备查周几?)
|
||||
* @return 包含所查周几的天数
|
||||
* @throws ParseException 不支持跨年查询、不支持结束日期早于起始日期、周几输入错误等
|
||||
*/
|
||||
public static Integer getMondayNumber(LocalDate startDate, LocalDate endDate, int dayOfWeek) throws ParseException {
|
||||
try {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
int differenceDay = 0;
|
||||
//实例化起始和结束Calendar对象
|
||||
Calendar startCalendar = Calendar.getInstance();
|
||||
Calendar endCalendar = Calendar.getInstance();
|
||||
//分别设置Calendar对象的时间
|
||||
ZoneId zone = ZoneId.systemDefault();
|
||||
Instant instantStartDate = startDate.atStartOfDay().atZone(zone).toInstant();
|
||||
Instant instantEndDate = endDate.atStartOfDay().atZone(zone).toInstant();
|
||||
startCalendar.setTime(Date.from(instantStartDate));
|
||||
endCalendar.setTime(Date.from(instantEndDate));
|
||||
|
||||
//定义起始日期和结束日期分别属于第几周
|
||||
int startWeek = startCalendar.get(Calendar.WEEK_OF_YEAR);
|
||||
int endWeek = endCalendar.get(Calendar.WEEK_OF_YEAR);
|
||||
|
||||
//拿到起始日期是星期几
|
||||
int startDayOfWeek = startCalendar.get(Calendar.DAY_OF_WEEK);
|
||||
if (startDayOfWeek == 1) {
|
||||
startDayOfWeek = 7;
|
||||
startWeek--;
|
||||
} else {
|
||||
startDayOfWeek--;
|
||||
}
|
||||
|
||||
//拿到结束日期是星期几
|
||||
int endDayOfWeek = endCalendar.get(Calendar.DAY_OF_WEEK);
|
||||
if (endDayOfWeek == 1) {
|
||||
endDayOfWeek = 7;
|
||||
endWeek--;
|
||||
} else {
|
||||
endDayOfWeek--;
|
||||
}
|
||||
|
||||
//计算相差的周数
|
||||
int differenceWeek = endWeek - startWeek;
|
||||
|
||||
//开始计算
|
||||
if (startDayOfWeek <= dayOfWeek) {
|
||||
if (endDayOfWeek >= dayOfWeek) {
|
||||
differenceDay = differenceWeek + 1;
|
||||
}
|
||||
} else if (startDayOfWeek > dayOfWeek) {
|
||||
if (endDayOfWeek < dayOfWeek) {
|
||||
differenceDay = differenceWeek - 1;
|
||||
}
|
||||
} else {
|
||||
differenceDay = differenceWeek;
|
||||
}
|
||||
return differenceDay;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
+4
-92
@@ -9,10 +9,8 @@ import com.yida.data.common.core.entity.constant.PageConstant;
|
||||
import com.yida.data.common.core.entity.constant.RegexpConstant;
|
||||
import com.yida.data.common.core.entity.constant.StringConstant;
|
||||
import com.yida.data.common.core.exception.FebsException;
|
||||
import java.time.LocalDate;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.omg.CORBA.UNKNOWN;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.core.io.buffer.DataBuffer;
|
||||
import org.springframework.core.io.buffer.DataBufferUtils;
|
||||
@@ -49,7 +47,6 @@ import java.util.stream.IntStream;
|
||||
public abstract class FebsUtil {
|
||||
|
||||
private static final String UNKNOW = "unknown";
|
||||
private static final String UNKNOWN = "unknown";
|
||||
|
||||
/**
|
||||
* 驼峰转下划线
|
||||
@@ -216,18 +213,13 @@ public abstract class FebsUtil {
|
||||
public static String getHttpServletRequestIpAddress() {
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
String ip = request.getHeader("x-forwarded-for");
|
||||
if (ip != null && ip.length() != 0 && !UNKNOWN.equalsIgnoreCase(ip)) {
|
||||
if (ip.contains(StringConstant.COMMA)) {
|
||||
ip = ip.split(StringConstant.COMMA)[0];
|
||||
}
|
||||
}
|
||||
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
|
||||
if (ip == null || ip.length() == 0 || UNKNOW.equalsIgnoreCase(ip)) {
|
||||
ip = request.getHeader("Proxy-Client-IP");
|
||||
}
|
||||
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
|
||||
if (ip == null || ip.length() == 0 || UNKNOW.equalsIgnoreCase(ip)) {
|
||||
ip = request.getHeader("WL-Proxy-Client-IP");
|
||||
}
|
||||
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
|
||||
if (ip == null || ip.length() == 0 || UNKNOW.equalsIgnoreCase(ip)) {
|
||||
ip = request.getRemoteAddr();
|
||||
}
|
||||
return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip;
|
||||
@@ -409,91 +401,11 @@ public abstract class FebsUtil {
|
||||
res = "星期六";
|
||||
break;
|
||||
case 7:
|
||||
res = "星期日";
|
||||
res = "星期天";
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
public static boolean isWeek(String weekStr, Integer week) {
|
||||
boolean flag = false;
|
||||
switch (week) {
|
||||
case 1:
|
||||
if (weekStr.contains("星期一")) {
|
||||
flag = true;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (weekStr.contains("星期二")) {
|
||||
flag = true;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (weekStr.contains("星期三")) {
|
||||
flag = true;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (weekStr.contains("星期四")) {
|
||||
flag = true;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (weekStr.contains("星期五")) {
|
||||
flag = true;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (weekStr.contains("星期六")) {
|
||||
flag = true;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (weekStr.contains("星期日")) {
|
||||
flag = true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 通过身份证号码获取性别(sex)
|
||||
*
|
||||
* @param idCardNo 身份证号码
|
||||
* @return 性别格式:1:女,0:男
|
||||
*/
|
||||
public static Integer getSexByIdCardNo(String idCardNo) {
|
||||
Integer sexCode = null;
|
||||
char[] number = idCardNo.toCharArray();
|
||||
boolean flag = true;
|
||||
if (number.length == 15) {
|
||||
for (int x = 0; x < number.length; x++) {
|
||||
if (!flag) {
|
||||
return null;
|
||||
}
|
||||
flag = Character.isDigit(number[x]);
|
||||
}
|
||||
} else if (number.length == 18) {
|
||||
for (int x = 0; x < number.length - 1; x++) {
|
||||
if (!flag) {
|
||||
return null;
|
||||
}
|
||||
flag = Character.isDigit(number[x]);
|
||||
}
|
||||
}
|
||||
if (flag && idCardNo.length() == 15) {
|
||||
sexCode = Integer.parseInt(idCardNo.substring(idCardNo.length() - 3, idCardNo.length())) % 2 == 0 ? 1 : 0;
|
||||
} else if (flag && idCardNo.length() == 18) {
|
||||
sexCode = Integer.parseInt(idCardNo.substring(idCardNo.length() - 4, idCardNo.length() - 1)) % 2 == 0 ? 1 : 0;
|
||||
}
|
||||
|
||||
return sexCode;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-9
@@ -111,7 +111,7 @@ public abstract class FileUtil {
|
||||
put("source", 50);
|
||||
}
|
||||
});
|
||||
// log.info("上传响应,[{}]", resp);
|
||||
log.info("上传响应,[{}]", resp);
|
||||
JSONObject respJson = JSONUtil.parseObj(resp);
|
||||
if (!"200".equals(respJson.get("status").toString())) {
|
||||
throw new FebsException(respJson.getStr("message"));
|
||||
@@ -261,14 +261,6 @@ public abstract class FileUtil {
|
||||
public static String downloadToLocal(String url) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
String path = TEMP_DIR + now.getYear() + "/" + now.getMonthValue() + "/" + now.getDayOfMonth() + "/";
|
||||
// String filename = cn.hutool.core.io.FileUtil.getName(url);
|
||||
// if (filename.contains(".jpg") || filename.contains(".png")) {
|
||||
// if (filename.contains("?")) {
|
||||
// filename = filename.split("\\?")[0];
|
||||
// }
|
||||
// } else {
|
||||
// filename = UUID.randomUUID() + ".jpg";
|
||||
// }
|
||||
String filename = UUID.randomUUID() + ".jpg";
|
||||
try {
|
||||
HttpUtil.downloadFile(url, path + filename);
|
||||
|
||||
+43
-74
@@ -106,7 +106,7 @@ public class WxPublicUtil {
|
||||
|
||||
public String getAccessToken(String appId, String secret) {
|
||||
String accessToken =
|
||||
String.valueOf(redisService.get(FebsConstant.WX_PUBLIC_ACCESS_TOKEN + appId + "." + secret));
|
||||
String.valueOf(redisService.get(FebsConstant.WX_PUBLIC_ACCESS_TOKEN + appId + "." + secret));
|
||||
if ("null".equals(accessToken)) {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("grant_type", "client_credential");
|
||||
@@ -117,7 +117,7 @@ public class WxPublicUtil {
|
||||
JSONObject token = JSONUtil.parseObj(response);
|
||||
if (token.containsKey("errcode") && !"0".equals(token.get("errcode").toString())) {
|
||||
log.error("请求微信公众号access token失败,code:{},msg:{}", token.get("errcode").toString(),
|
||||
token.get("errmsg").toString());
|
||||
token.get("errmsg").toString());
|
||||
throw new FebsException("验证失败");
|
||||
}
|
||||
accessToken = token.get("access_token").toString();
|
||||
@@ -138,7 +138,7 @@ public class WxPublicUtil {
|
||||
JSONObject token = JSONUtil.parseObj(response);
|
||||
if (token.containsKey("errcode") && !"0".equals(token.get("errcode"))) {
|
||||
log.error("请微信求access token失败,code:{},msg:{}", token.get("errcode"),
|
||||
token.get("errmsg"));
|
||||
token.get("errmsg"));
|
||||
throw new FebsException("验证失败");
|
||||
}
|
||||
return token.getStr("openid");
|
||||
@@ -151,10 +151,10 @@ public class WxPublicUtil {
|
||||
Map<String, Object> body = new HashMap<>();
|
||||
body.put("media", img);
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(WxPublicConstant.UPLOAD_NEWS_IMG + "?access_token=" + token, body));
|
||||
post(WxPublicConstant.UPLOAD_NEWS_IMG + "?access_token=" + token, body));
|
||||
if (response.containsKey("errcode") && !"0".equals(response.get("errcode").toString())) {
|
||||
log.error("上传图片失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("上传图片失败");
|
||||
}
|
||||
return response.getStr("url");
|
||||
@@ -166,10 +166,10 @@ public class WxPublicUtil {
|
||||
public String uploadNews(News news, String token) {
|
||||
String body = JSONUtil.toJsonPrettyStr(news);
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(WxPublicConstant.UPLOAD_NEWS + "?access_token=" + token, body));
|
||||
post(WxPublicConstant.UPLOAD_NEWS + "?access_token=" + token, body));
|
||||
if (response.containsKey("errcode") && !"0".equals(response.get("errcode").toString())) {
|
||||
log.error("上传图文素材失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("上传图文素材失败");
|
||||
}
|
||||
return response.getStr("media_id");
|
||||
@@ -190,10 +190,10 @@ public class WxPublicUtil {
|
||||
put("send_ignore_reprint", 1);
|
||||
}};
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(WxPublicConstant.SEND_MSG + "?access_token=" + token, JSONUtil.toJsonStr(body)));
|
||||
post(WxPublicConstant.SEND_MSG + "?access_token=" + token, JSONUtil.toJsonStr(body)));
|
||||
if (response.containsKey("errcode") && !"0".equals(response.get("errcode").toString())) {
|
||||
log.error("群发图文消息失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("群发图文消息失败");
|
||||
}
|
||||
return response.getStr("msg_data_id");
|
||||
@@ -213,10 +213,10 @@ public class WxPublicUtil {
|
||||
set("msgtype", "text");
|
||||
}};
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(WxPublicConstant.SEND_MSG + "?access_token=" + token, body));
|
||||
post(WxPublicConstant.SEND_MSG + "?access_token=" + token, body));
|
||||
if (response.containsKey("errcode") && !"0".equals(response.get("errcode").toString())) {
|
||||
log.error("群发文本消息失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("群发文本消息失败");
|
||||
}
|
||||
return response.getStr("msg_data_id");
|
||||
@@ -236,10 +236,10 @@ public class WxPublicUtil {
|
||||
set("msgtype", "voice");
|
||||
}};
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(WxPublicConstant.SEND_MSG + "?access_token=" + token, body));
|
||||
post(WxPublicConstant.SEND_MSG + "?access_token=" + token, body));
|
||||
if (response.containsKey("errcode") && !"0".equals(response.get("errcode").toString())) {
|
||||
log.error("群发音频消息失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("群发音频消息失败");
|
||||
}
|
||||
return response.getStr("msg_data_id");
|
||||
@@ -259,10 +259,10 @@ public class WxPublicUtil {
|
||||
set("msgtype", "image");
|
||||
}};
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(WxPublicConstant.SEND_MSG + "?access_token=" + token, body));
|
||||
post(WxPublicConstant.SEND_MSG + "?access_token=" + token, body));
|
||||
if (response.containsKey("errcode") && !"0".equals(response.get("errcode").toString())) {
|
||||
log.error("群发音频消息失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("群发音频消息失败");
|
||||
}
|
||||
return response.getStr("msg_data_id");
|
||||
@@ -282,10 +282,10 @@ public class WxPublicUtil {
|
||||
set("msgtype", "mpvideo");
|
||||
}};
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(WxPublicConstant.SEND_MSG + "?access_token=" + token, body));
|
||||
post(WxPublicConstant.SEND_MSG + "?access_token=" + token, body));
|
||||
if (response.containsKey("errcode") && !"0".equals(response.get("errcode").toString())) {
|
||||
log.error("群发音频消息失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("群发音频消息失败");
|
||||
}
|
||||
return response.getStr("msg_data_id");
|
||||
@@ -305,10 +305,10 @@ public class WxPublicUtil {
|
||||
}}));
|
||||
}
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(WxPublicConstant.UPLOAD_MATERIAL + "?access_token=" + token + "&type=" + type, body));
|
||||
post(WxPublicConstant.UPLOAD_MATERIAL + "?access_token=" + token + "&type=" + type, body));
|
||||
if (response.containsKey("errcode") && !"0".equals(response.get("errcode").toString())) {
|
||||
log.error("上传永久素材失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("上传永久素材失败");
|
||||
}
|
||||
return response.getStr("media_id");
|
||||
@@ -322,10 +322,10 @@ public class WxPublicUtil {
|
||||
put("media_id", mediaId);
|
||||
}};
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(WxPublicConstant.DELETE_MATERIAL + "?access_token=" + token, JSONUtil.toJsonStr(body)));
|
||||
post(WxPublicConstant.DELETE_MATERIAL + "?access_token=" + token, JSONUtil.toJsonStr(body)));
|
||||
if (response.containsKey("errcode") && !"0".equals(response.get("errcode").toString())) {
|
||||
log.error("删除永久素材失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("删除永久素材失败");
|
||||
}
|
||||
}
|
||||
@@ -334,15 +334,15 @@ public class WxPublicUtil {
|
||||
* 上传临时素材 图片(image)、语音(voice)、视频(video)和缩略图(thumb)
|
||||
*/
|
||||
public String uploadTempMaterial(String type, File file,
|
||||
String token) {
|
||||
String token) {
|
||||
Map<String, Object> body = new HashMap<String, Object>() {{
|
||||
put("media", file);
|
||||
}};
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
HttpUtil.post(WxPublicConstant.UPLOAD_TEMP_MATERIAL + "?access_token=" + token + "&type=" + type, body));
|
||||
HttpUtil.post(WxPublicConstant.UPLOAD_TEMP_MATERIAL + "?access_token=" + token + "&type=" + type, body));
|
||||
if (response.containsKey("errcode") && !"0".equals(response.get("errcode").toString())) {
|
||||
log.error("上传临时素材失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("上传临时素材失败");
|
||||
}
|
||||
if ("thumb".equals(type)) {
|
||||
@@ -364,7 +364,7 @@ public class WxPublicUtil {
|
||||
return null;
|
||||
}
|
||||
String url = new StringBuilder(WxPublicConstant.QR_CODE).append("?access_token=").append(accessToken)
|
||||
.toString();
|
||||
.toString();
|
||||
JSONObject body = new JSONObject() {{
|
||||
if (expire != null) {
|
||||
set("expire_seconds", expire);
|
||||
@@ -408,13 +408,13 @@ public class WxPublicUtil {
|
||||
}});
|
||||
}};
|
||||
String post = HttpUtil.post(
|
||||
new StringBuilder(WxPublicConstant.PUSH_CUSTOM_MSG).append("?access_token=").append(accessToken).toString(),
|
||||
body.toString());
|
||||
new StringBuilder(WxPublicConstant.PUSH_CUSTOM_MSG).append("?access_token=").append(accessToken).toString(),
|
||||
body.toString());
|
||||
log.info("发送客户消息,res:[{}],body:[{}]", post, body);
|
||||
}
|
||||
|
||||
public void publishTemplateMsg(String accessToken, String openUserId, String templateId, String url,
|
||||
JSONObject data) {
|
||||
JSONObject data) {
|
||||
JSONObject body = new JSONObject() {{
|
||||
set("touser", openUserId);
|
||||
if (StrUtil.isNotBlank(url)) {
|
||||
@@ -424,12 +424,13 @@ public class WxPublicUtil {
|
||||
set("data", data);
|
||||
}};
|
||||
String post = HttpUtil.post(new StringBuilder(WxPublicConstant.PUSH_TEMPLATE_MSG).append(
|
||||
"?access_token=").append(accessToken).toString(), body.toString());
|
||||
"?access_token=").append(accessToken).toString(), body.toString());
|
||||
log.info("发送模板消息,res:[{}],body:[{}]", post, body);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取小程序URL Link https + post
|
||||
* 获取小程序URL Link
|
||||
* https + post
|
||||
*
|
||||
* @param accessToken token值
|
||||
* @param generateUrlLink 获取小程序URL Link请求类
|
||||
@@ -440,62 +441,30 @@ public class WxPublicUtil {
|
||||
public String generateUrlLink(String accessToken, GenerateUrlLink generateUrlLink) {
|
||||
// 封装参数
|
||||
JSONObject body = JSONUtil.createObj()
|
||||
.set("path", generateUrlLink.getPath())
|
||||
.set("query", generateUrlLink.getQuery())
|
||||
.set("env_version", generateUrlLink.getEnvVersion())
|
||||
.set("expire_type", generateUrlLink.getExpireType())
|
||||
.set("expire_interval", 30);
|
||||
.set("path", generateUrlLink.getPath())
|
||||
.set("query", generateUrlLink.getQuery())
|
||||
.set("env_version", generateUrlLink.getEnvVersion())
|
||||
.set("expire_type", generateUrlLink.getExpireType())
|
||||
.set("expire_interval", 30);
|
||||
if (Objects.nonNull(generateUrlLink.getCloudBase())) {
|
||||
GenerateUrlLink.CloudBase cloudBase = generateUrlLink.getCloudBase();
|
||||
body.set("cloud_base", JSONUtil.createObj()
|
||||
.set("env", cloudBase.getEnv())
|
||||
.set("domain", cloudBase.getDomain())
|
||||
.set("path", cloudBase.getPath())
|
||||
.set("query", cloudBase.getQuery())
|
||||
.set("resource_appid", cloudBase.getResourceAppId())
|
||||
.set("env", cloudBase.getEnv())
|
||||
.set("domain", cloudBase.getDomain())
|
||||
.set("path", cloudBase.getPath())
|
||||
.set("query", cloudBase.getQuery())
|
||||
.set("resource_appid", cloudBase.getResourceAppId())
|
||||
);
|
||||
}
|
||||
// 请求接口
|
||||
String result = HttpUtil.post(WxPublicConstant.GENERATE_URL_LINK + "?access_token=" + accessToken, body.toString());
|
||||
// log.info("获取小程序URL Link接口, result: [{}], body: [{}]", result, body);
|
||||
log.info("获取小程序URL Link接口, result: [{}], body: [{}]", result, body);
|
||||
JSONObject response = JSONUtil.parseObj(result);
|
||||
if (response.containsKey("errcode") && !"0".equals(response.getStr("errcode"))) {
|
||||
log.error("获取小程序URL Link接口失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("获取小程序URL Link接口失败");
|
||||
}
|
||||
return response.getStr("url_link");
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信获取JS-SDK jsapi_ticket
|
||||
*
|
||||
* @param appId 微信appId
|
||||
* @param secret 微信secret
|
||||
* @return java.lang.String
|
||||
* @author ZYJ
|
||||
* @date 2023/6/5 14:50
|
||||
*/
|
||||
public String getJsApiTicket(String appId, String secret) {
|
||||
String jsApiTicket =
|
||||
String.valueOf(redisService.get(FebsConstant.WX_PUBLIC_JS_API_TICKET + appId + "." + secret));
|
||||
if ("null".equals(jsApiTicket)) {
|
||||
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("access_token", getAccessToken(appId, secret));
|
||||
params.put("type", "jsapi");
|
||||
// 获取JS-SDK jsapi_ticket
|
||||
String response = get(WxPublicConstant.GET_JS_API_TICKET_URL, params);
|
||||
JSONObject token = JSONUtil.parseObj(response);
|
||||
if (token.containsKey("errcode") && !"0".equals(token.get("errcode").toString())) {
|
||||
log.error("获取JS-SDK jsapi_ticket失败,code:{},msg:{}", token.get("errcode").toString(),
|
||||
token.get("errmsg").toString());
|
||||
throw new FebsException("验证失败");
|
||||
}
|
||||
jsApiTicket = token.get("ticket").toString();
|
||||
// 缓存accessToken两小时
|
||||
redisService.set(FebsConstant.WX_PUBLIC_JS_API_TICKET + appId + "." + secret, jsApiTicket, 7200L);
|
||||
}
|
||||
return jsApiTicket;
|
||||
}
|
||||
}
|
||||
|
||||
+34
-176
@@ -9,20 +9,28 @@ import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.yida.data.common.core.entity.constant.FebsConstant;
|
||||
import com.yida.data.common.core.entity.constant.QywxConstant;
|
||||
import com.yida.data.common.core.entity.constant.WxPublicConstant;
|
||||
import com.yida.data.common.core.entity.notice.qywx.BaseSchoolNotice;
|
||||
import com.yida.data.common.core.entity.notice.qywx.BaseStaffNotice;
|
||||
import com.yida.data.common.core.entity.system.Dept;
|
||||
import com.yida.data.common.core.entity.user.*;
|
||||
import com.yida.data.common.core.entity.user.EduParent;
|
||||
import com.yida.data.common.core.entity.user.EduStaff;
|
||||
import com.yida.data.common.core.entity.user.EduStaffDept;
|
||||
import com.yida.data.common.core.entity.user.EduStudent;
|
||||
import com.yida.data.common.core.entity.user.EduTeacherDept;
|
||||
import com.yida.data.common.core.entity.user.EduUserDept;
|
||||
import com.yida.data.common.core.exception.FebsException;
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class WxUtil {
|
||||
@@ -168,7 +176,7 @@ public class WxUtil {
|
||||
public Boolean pushSchoolNotice(String token, BaseSchoolNotice notice) {
|
||||
JSONObject resp = JSONUtil.parseObj(post(QywxConstant.PUSH_SCHOOL_NOTICE_URL + token,
|
||||
JSONUtil.toJsonStr(notice).replace("\\n", "\n")));
|
||||
// log.info("打印学校消息推送信息: {}", JSONUtil.toJsonStr(notice).replace("\\n", "\n"));
|
||||
log.info("打印学校消息推送信息: {}", JSONUtil.toJsonStr(notice).replace("\\n", "\n"));
|
||||
if (!"0".equals(resp.containsKey("errcode") ? resp.get("errcode").toString() : null)) {
|
||||
log.error("微信通知发送失败,msg:{},notice:{}", resp, notice);
|
||||
return false;
|
||||
@@ -176,14 +184,12 @@ public class WxUtil {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public Boolean pushStaffNotice(String token, BaseStaffNotice notice) {
|
||||
// log.info("打印学校消息推送信息: {}", JSONUtil.toJsonStr(notice).replace("\\n", "\n"));
|
||||
JSONObject resp = JSONUtil.parseObj(post(QywxConstant.PUSH_STAFF_NOTICE_URL + token,
|
||||
JSONUtil.toJsonStr(notice).replace("\\n", "\n")));
|
||||
// log.info("打印学校消息推送信息返回信息: {}", resp);
|
||||
log.info("打印学校消息推送信息: {}", JSONUtil.toJsonStr(notice).replace("\\n", "\n"));
|
||||
if (!"0".equals(resp.containsKey("errcode") ? resp.get("errcode").toString() : null)) {
|
||||
log.error("微信通知发送失败,msg:{},notice:{}", resp.get("errmsg"), JSONUtil.toJsonStr(notice).replace("\\n", "\n"));
|
||||
log.error("微信通知发送失败,msg:{},notice:{}", resp.get("errmsg"), notice);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -220,41 +226,6 @@ public class WxUtil {
|
||||
return user.getJSONArray("userlist");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取成员ID列表
|
||||
*
|
||||
* @param accessToken 调用接口凭证
|
||||
* @param cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用不填
|
||||
* @param limit 分页,预期请求的数据量,取值范围 1 ~ 10000
|
||||
* @return cn.hutool.json.JSONArray
|
||||
* @author ZYJ
|
||||
* @date 2022/12/6 17:35
|
||||
*/
|
||||
public JSONArray getUserIdList(String accessToken, String cursor, String limit, JSONArray jsonArray) {
|
||||
// 封装请求参数
|
||||
JSONObject params = JSONUtil.createObj()
|
||||
.set("limit", limit);
|
||||
if (StrUtil.isNotBlank(cursor)) {
|
||||
params.set("cursor", cursor);
|
||||
}
|
||||
String response = post(QywxConstant.USER_ID_LIST_URL + accessToken, params.toString());
|
||||
JSONObject jsonObject = JSONUtil.parseObj(response);
|
||||
log.info("企业微信获取成员ID列表请求参数: {}, 返回值: {}", params, jsonObject);
|
||||
if (!SUCCESS_CODE.equals(jsonObject.containsKey(ERR_CODE) ? jsonObject.get(ERR_CODE).toString() : null)) {
|
||||
log.error("企业微信获取获取成员ID列表失败,code:{},msg:{}", jsonObject.get(ERR_CODE), jsonObject.get(ERR_MESSAGE));
|
||||
throw new FebsException("企业微信获取获取成员ID列表失败");
|
||||
}
|
||||
// 获取成员列表id数据
|
||||
JSONArray deptUser = jsonObject.getJSONArray("dept_user");
|
||||
jsonArray.addAll(deptUser);
|
||||
// 获取分页游标
|
||||
String nextCursor = jsonObject.getStr("next_cursor");
|
||||
if (StrUtil.isNotBlank(nextCursor)) {
|
||||
getUserIdList(accessToken, nextCursor, limit, jsonArray);
|
||||
}
|
||||
return jsonArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用授权登陆code,获取成员信息,通讯录成员返回UserId,家长返回parent_userid
|
||||
*/
|
||||
@@ -265,17 +236,14 @@ public class WxUtil {
|
||||
params.put("code", code);
|
||||
String response = get(QywxConstant.USER_INFO_URL, params);
|
||||
JSONObject user = JSONUtil.parseObj(response);
|
||||
if (!SUCCESS_CODE.equals(user.containsKey(ERR_CODE) ? user.get(ERR_CODE).toString() : null)) {
|
||||
log.error("请求微信用户信息失败,code:{},msg:{}", user.get(ERR_CODE),
|
||||
user.get(ERR_MESSAGE));
|
||||
if (!"0".equals(user.containsKey("errcode") ? user.get("errcode").toString() : null)) {
|
||||
log.error("请求微信用户信息失败,code:{},msg:{}", user.get("errcode"),
|
||||
user.get("errmsg"));
|
||||
throw new FebsException("获取用户信息失败");
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户详细信息
|
||||
*/
|
||||
public JSONObject getUserDetail(String accessToken, String userId) {
|
||||
// 查询用户微信userid
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
@@ -283,34 +251,10 @@ public class WxUtil {
|
||||
params.put("userid", userId);
|
||||
String userDetailResponse = get(QywxConstant.USER_DETAIL_URL, params);
|
||||
JSONObject userDetail = JSONUtil.parseObj(userDetailResponse);
|
||||
log.info("请求企业微信用户详细信息请求参数: {}, 返回值: {}", params, userDetail);
|
||||
if (!SUCCESS_CODE.equals(userDetail.containsKey(ERR_CODE) ? userDetail.get(ERR_CODE).toString() : null)) {
|
||||
log.error("请求企业微信用户详细信息失败,code:{},msg:{}", userDetail.get(ERR_CODE),
|
||||
userDetail.get(ERR_MESSAGE));
|
||||
throw new FebsException("请求企业微信用户详细信息失败");
|
||||
}
|
||||
return userDetail;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户敏感信息
|
||||
*
|
||||
* @param accessToken 调用接口凭证
|
||||
* @param userTicket 成员票据
|
||||
* @return cn.hutool.json.JSONObject
|
||||
* @author ZYJ
|
||||
* @date 2022/11/28 15:35
|
||||
*/
|
||||
public JSONObject getUserSensitiveInfo(String accessToken, String userTicket) {
|
||||
JSONObject params = JSONUtil.createObj()
|
||||
.set("user_ticket", userTicket);
|
||||
String userDetailResponse = post(QywxConstant.USER_SENSITIVE_INFO_URL + accessToken, params.toString());
|
||||
JSONObject userDetail = JSONUtil.parseObj(userDetailResponse);
|
||||
log.info("查询用户敏感信息请求参数: {}, 返回值: {}", params, userDetail);
|
||||
if (!SUCCESS_CODE.equals(userDetail.containsKey(ERR_CODE) ? userDetail.get(ERR_CODE).toString() : null)) {
|
||||
log.error("查询用户敏感信息失败,code:{}, msg:{}", userDetail.get(ERR_CODE),
|
||||
userDetail.get(ERR_MESSAGE));
|
||||
throw new FebsException("查询用户敏感信息失败");
|
||||
if (!"0".equals(userDetail.containsKey("errcode") ? userDetail.get("errcode").toString() : null)) {
|
||||
log.error("请求微信用户详细信息失败,code:{},msg:{}", userDetail.get("errcode"),
|
||||
userDetail.get("errmsg"));
|
||||
throw new FebsException("获取用户信息失败");
|
||||
}
|
||||
return userDetail;
|
||||
}
|
||||
@@ -384,9 +328,9 @@ public class WxUtil {
|
||||
if (deptId != null) {
|
||||
params.put("id", deptId);
|
||||
}
|
||||
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
get(QywxConstant.DEPT_LIST_URL, params));
|
||||
log.info("获取企业微信部门列表请求参数: {}, 返回值: {}", params, response);
|
||||
if (!"0".equals(response.containsKey("errcode") ? response.get("errcode").toString() : null)) {
|
||||
log.error("获取企业微信部门列表失败,code:{},msg:{},params:{}", response.get("errcode"),
|
||||
response.get("errmsg"), params);
|
||||
@@ -396,50 +340,6 @@ public class WxUtil {
|
||||
return response.getJSONArray("department").toList(Map.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子部门ID列表
|
||||
*
|
||||
* @param accessToken 调用接口凭证
|
||||
* @param deptId 部门id。获取指定部门及其下的子部门(以及子部门的子部门等等,递归)。 如果不填,默认获取全量组织架构
|
||||
* @return java.util.List<java.util.Map>
|
||||
* @author ZYJ
|
||||
* @date 2023/4/24 10:46
|
||||
*/
|
||||
public List<Map> listSimpleDept(String accessToken, Long deptId) {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("access_token", accessToken);
|
||||
if (deptId != null) {
|
||||
params.put("id", deptId);
|
||||
}
|
||||
JSONObject response = JSONUtil.parseObj(get(QywxConstant.SIMPLE_DEPT_LIST_URL, params));
|
||||
log.info("获取企业微信子部门ID列表请求参数: {}, 返回值: {}", params, response);
|
||||
if (!SUCCESS_CODE.equals(response.containsKey(ERR_CODE) ? response.get(ERR_CODE).toString() : null)) {
|
||||
log.error("获取企业微信子部门ID列表失败,code:{},msg:{},params:{}", response.get(ERR_CODE),
|
||||
response.get(ERR_MESSAGE), params);
|
||||
throw new FebsException("获取企业微信子部门ID列表失败");
|
||||
}
|
||||
return response.getJSONArray("department_id").toList(Map.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取单个部门详情
|
||||
*/
|
||||
public JSONObject getDeptInfo(String accessToken, String deptId) {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("access_token", accessToken);
|
||||
if (deptId != null) {
|
||||
params.put("id", deptId);
|
||||
}
|
||||
JSONObject response = JSONUtil.parseObj(get(QywxConstant.DEPT_INFO_URL, params));
|
||||
log.info("获取企业单个部门详情请求参数: {}, 返回值: {}", params, response);
|
||||
if (!SUCCESS_CODE.equals(response.containsKey(ERR_CODE) ? response.get(ERR_CODE).toString() : null)) {
|
||||
log.error("获取企业单个部门详情失败,code:{},msg:{},params:{}", response.get(ERR_CODE),
|
||||
response.get(ERR_MESSAGE), params);
|
||||
throw new FebsException("获取企业单个部门详情失败");
|
||||
}
|
||||
return response.getJSONObject("department");
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建企业微信部门(家校沟通)
|
||||
*/
|
||||
@@ -507,10 +407,10 @@ public class WxUtil {
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(QywxConstant.SCHOOL_DEPT_UPDATE_URL + "?access_token=" + accessToken,
|
||||
JSONUtil.toJsonStr(body)));
|
||||
log.info("删除部门管理员接口,params:[{}],res:[{}]", body, response);
|
||||
if (!SUCCESS_CODE.equals(response.containsKey(ERR_CODE) ? response.get(ERR_CODE).toString() : null)) {
|
||||
log.error("企业微信删除部门(家校)管理员失败,code:{},msg:{}", response.get(ERR_CODE),
|
||||
response.get(ERR_MESSAGE));
|
||||
log.info("删除部门,params:[{}],res:[{}]", body, response);
|
||||
if (!"0".equals(response.containsKey("errcode") ? response.get("errcode").toString() : null)) {
|
||||
log.error("企业微信删除部门(家校)管理员失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("删除部门(家校)管理员失败");
|
||||
}
|
||||
}
|
||||
@@ -544,10 +444,9 @@ public class WxUtil {
|
||||
}
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
get(QywxConstant.SCHOOL_DEPT_LIST_URL, params));
|
||||
log.info("获取家校沟通部门列表请求参数: {}, 返回值: {}", params, response);
|
||||
if (!SUCCESS_CODE.equals(response.containsKey(ERR_CODE) ? response.get(ERR_CODE).toString() : null)) {
|
||||
log.error("获取企业微信部门(家校)列表失败,code:{},msg:{},params:{}", response.get(ERR_CODE),
|
||||
response.get(ERR_MESSAGE), params);
|
||||
if (!"0".equals(response.containsKey("errcode") ? response.get("errcode").toString() : null)) {
|
||||
log.error("获取企业微信部门(家校)列表失败,code:{},msg:{},params:{}", response.get("errcode"),
|
||||
response.get("errmsg"), params);
|
||||
throw new FebsException("获取企业微信部门(家校)列表失败");
|
||||
}
|
||||
|
||||
@@ -590,9 +489,6 @@ public class WxUtil {
|
||||
if (StrUtil.isNotBlank(staff.getLandLine())) {
|
||||
body.put("telephone", staff.getLandLine());
|
||||
}
|
||||
if (StrUtil.isNotBlank(staff.getAddress())) {
|
||||
body.put("address", staff.getAddress());
|
||||
}
|
||||
log.info(JSONUtil.toJsonStr(body));
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(QywxConstant.USER_CREATE_URL + "?access_token=" + accessToken,
|
||||
@@ -668,15 +564,12 @@ public class WxUtil {
|
||||
if (StrUtil.isNotBlank(staff.getLandLine())) {
|
||||
body.put("telephone", staff.getLandLine());
|
||||
}
|
||||
if (StrUtil.isNotBlank(staff.getAddress())) {
|
||||
body.put("address", staff.getAddress());
|
||||
}
|
||||
log.info(JSONUtil.toJsonStr(body));
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(QywxConstant.USER_UPDATE_URL + "?access_token=" + accessToken,
|
||||
JSONUtil.toJsonStr(body)));
|
||||
if (!"0".equals(response.containsKey("errcode") ? response.get("errcode").toString() : null)) {
|
||||
log.error("企业微信修改用户失败,code:{},msg:{}", response.get("errcode"),
|
||||
log.error("企业微信新增用户失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
throw new FebsException("更新职工失败");
|
||||
}
|
||||
@@ -691,7 +584,6 @@ public class WxUtil {
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(QywxConstant.USER_DELETE_URL + "?access_token=" + accessToken,
|
||||
JSONUtil.toJsonStr(body)));
|
||||
log.info("企业微信删除用户请求参数: {}, 返回值: {}", body, response);
|
||||
if (!"0".equals(response.containsKey("errcode") ? response.get("errcode").toString() : null)) {
|
||||
log.error("企业微信删除用户失败,code:{},msg:{}", response.get("errcode"),
|
||||
response.get("errmsg"));
|
||||
@@ -827,7 +719,6 @@ public class WxUtil {
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
post(QywxConstant.PARENT_CREATE_URL + "?access_token=" + accessToken,
|
||||
JSONUtil.toJsonStr(body)));
|
||||
log.info("企业微信新增家长,res:[{}],params:[{}]", response, body);
|
||||
if (!"0".equals(response.containsKey("errcode") ? response.get("errcode").toString() : null)) {
|
||||
log.error("企业微信新增家长失败,code:{},msg:{},result_list:{}", response.get("errcode"),
|
||||
response.get("errmsg"), response.get("result_list"));
|
||||
@@ -983,43 +874,10 @@ public class WxUtil {
|
||||
|
||||
JSONObject response = JSONUtil.parseObj(
|
||||
get(QywxConstant.SCHOOL_DEPT_DELETE_URL, params));
|
||||
String code = response.containsKey(ERR_CODE) ? response.get(ERR_CODE).toString() : null;
|
||||
// 60003代表企业微信部门不存在
|
||||
if (!SUCCESS_CODE.equals(code) && !"60003".equals(code)) {
|
||||
if (!SUCCESS_CODE.equals(response.containsKey(ERR_CODE) ? response.get(ERR_CODE).toString() : null)) {
|
||||
log.error("企业微信删除家校部门失败,code:{},msg:{},params:{}", response.get(ERR_CODE),
|
||||
response.get(ERR_MESSAGE), params);
|
||||
throw new FebsException("删除家校部门失败,请检查是否包含成员或子部门");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取企业微信JS-SDK jsapi_ticket
|
||||
*
|
||||
* @param accessToken 应用token
|
||||
* @param deptId 部门id
|
||||
* @return java.lang.String
|
||||
* @author ZYJ
|
||||
* @date 2023/6/5 14:50
|
||||
*/
|
||||
public String getJsApiTicket(String accessToken, Long deptId) {
|
||||
String jsApiTicket =
|
||||
String.valueOf(redisService.get(FebsConstant.QYWX_WX_JS_API_TICKET + deptId));
|
||||
if ("null".equals(jsApiTicket)) {
|
||||
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("access_token", accessToken);
|
||||
// 获取JS-SDK jsapi_ticket
|
||||
String response = get(QywxConstant.GET_JS_API_TICKET_URL, params);
|
||||
JSONObject token = JSONUtil.parseObj(response);
|
||||
if (token.containsKey("errcode") && !"0".equals(token.get("errcode").toString())) {
|
||||
log.error("获取JS-SDK jsapi_ticket失败,code:{},msg:{}", token.get("errcode").toString(),
|
||||
token.get("errmsg").toString());
|
||||
throw new FebsException("验证失败");
|
||||
}
|
||||
jsApiTicket = token.get("ticket").toString();
|
||||
// 缓存accessToken两小时
|
||||
redisService.set(FebsConstant.QYWX_WX_JS_API_TICKET + deptId, jsApiTicket, 7200L);
|
||||
}
|
||||
return jsApiTicket;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,5 +5,4 @@ com.yida.data.common.core.utils.WxUtil,\
|
||||
com.yida.data.common.core.utils.WxPublicUtil,\
|
||||
com.yida.data.common.core.utils.UnionPayPublicUtil,\
|
||||
com.yida.data.common.core.configure.AsyncPollConfigure,\
|
||||
com.yida.data.common.core.handler.BaseExceptionHandler,\
|
||||
com.yida.data.common.core.utils.WxServiceProviderUtil
|
||||
com.yida.data.common.core.handler.BaseExceptionHandler
|
||||
Reference in New Issue
Block a user