修订数据库排序集;调整与导入先学后付;修订定时器问题;添加云数据查询
This commit is contained in:
parent
ef8ff160ca
commit
6a4011ad4a
@ -51,6 +51,7 @@ public class CloudClassCardRecordDto {
|
||||
/**
|
||||
* 课卡名
|
||||
*/
|
||||
@SerializedName("periodName")
|
||||
private String cardName;
|
||||
|
||||
/**
|
||||
@ -80,7 +81,13 @@ public class CloudClassCardRecordDto {
|
||||
/**
|
||||
* 关联员工
|
||||
*/
|
||||
@SerializedName("_staffid")
|
||||
@SerializedName("staffName")
|
||||
private String relevanceStaffName;
|
||||
|
||||
/**
|
||||
* 关联员工id
|
||||
*/
|
||||
@SerializedName("_staffid")
|
||||
private String relevanceStaffId;
|
||||
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ public class CloudClassDto {
|
||||
/**
|
||||
* 班主任
|
||||
*/
|
||||
@SerializedName("staffName")
|
||||
private String classTeacherName;
|
||||
|
||||
/**
|
||||
|
||||
@ -17,6 +17,7 @@ public class CloudClassStudentDto {
|
||||
/**
|
||||
* 班级名
|
||||
*/
|
||||
@SerializedName("classesName")
|
||||
private String className;
|
||||
|
||||
/**
|
||||
|
||||
@ -23,13 +23,19 @@ public class CloudCourseDto {
|
||||
/**
|
||||
* 绑定班级
|
||||
*/
|
||||
@SerializedName("_classesId")
|
||||
@SerializedName("classesName")
|
||||
private String bindClass;
|
||||
|
||||
/**
|
||||
* 班级id
|
||||
*/
|
||||
@SerializedName("_classId")
|
||||
private String classId;
|
||||
|
||||
/**
|
||||
* 课程名
|
||||
*/
|
||||
@SerializedName("classesName")
|
||||
@SerializedName("name")
|
||||
private String courseName;
|
||||
|
||||
/**
|
||||
@ -59,9 +65,15 @@ public class CloudCourseDto {
|
||||
/**
|
||||
* 导师
|
||||
*/
|
||||
@SerializedName("_staffid")
|
||||
@SerializedName("staffName")
|
||||
private String supervisor;
|
||||
|
||||
/**
|
||||
* 导师id
|
||||
*/
|
||||
@SerializedName("_staffid")
|
||||
private String supervisorId;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
|
||||
@ -26,29 +26,52 @@ public class CloudCourseStudentDto {
|
||||
@SerializedName("_studentid")
|
||||
private String studentId;
|
||||
|
||||
/**
|
||||
* 学员名
|
||||
*/
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 客户id
|
||||
*/
|
||||
@SerializedName("_customerid")
|
||||
private String customerId;
|
||||
|
||||
/**
|
||||
* 客户名
|
||||
*/
|
||||
private String customerName;
|
||||
|
||||
/**
|
||||
* 班级id
|
||||
*/
|
||||
@SerializedName("_classesid")
|
||||
private String classId;
|
||||
|
||||
/**
|
||||
* 班名
|
||||
*/
|
||||
@SerializedName("classesName")
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 课程名
|
||||
*/
|
||||
private String name;
|
||||
@SerializedName("name")
|
||||
private String courseName;
|
||||
|
||||
/**
|
||||
* 导师
|
||||
*/
|
||||
@SerializedName("_staffid")
|
||||
@SerializedName("staffName")
|
||||
private String supervisor;
|
||||
|
||||
/**
|
||||
* 导师id
|
||||
*/
|
||||
@SerializedName("_staffid")
|
||||
private String supervisorId;
|
||||
|
||||
/**
|
||||
* 上课时间
|
||||
*/
|
||||
@ -96,6 +119,12 @@ public class CloudCourseStudentDto {
|
||||
@SerializedName("_periodid")
|
||||
private String cardId;
|
||||
|
||||
/**
|
||||
* 扣除课卡名
|
||||
*/
|
||||
@SerializedName("periodName")
|
||||
private String cardName;
|
||||
|
||||
/**
|
||||
* 状态操作时间
|
||||
*/
|
||||
|
||||
@ -28,6 +28,7 @@ public class CloudOrderDto {
|
||||
/**
|
||||
* 关联课卡名
|
||||
*/
|
||||
@SerializedName("periodName")
|
||||
private String classCardName;
|
||||
|
||||
/**
|
||||
@ -99,6 +100,7 @@ public class CloudOrderDto {
|
||||
/**
|
||||
* 顾问名
|
||||
*/
|
||||
@SerializedName("staffName")
|
||||
private String counselorName;
|
||||
|
||||
}
|
||||
|
||||
@ -23,6 +23,11 @@ public class CloudStudentDto {
|
||||
@SerializedName("_customerid")
|
||||
private String customerId;
|
||||
|
||||
/**
|
||||
* 顾客名
|
||||
*/
|
||||
private String customerName;
|
||||
|
||||
/**
|
||||
* 学员名
|
||||
*/
|
||||
@ -48,10 +53,12 @@ public class CloudStudentDto {
|
||||
/**
|
||||
* 学员绑定课卡
|
||||
*/
|
||||
@SerializedName("periodName")
|
||||
private String studentBindCard;
|
||||
|
||||
/**
|
||||
* 学员绑定班级
|
||||
*/
|
||||
@SerializedName("classesName")
|
||||
private String studentBindClass;
|
||||
}
|
||||
|
||||
@ -6,12 +6,14 @@ import com.cpop.api.cloudDb.core.dto.CloudClassCardDto;
|
||||
import com.cpop.api.cloudDb.core.dto.CloudClassCardRecordDto;
|
||||
import com.cpop.api.cloudDb.core.dto.CloudClassStudentDto;
|
||||
import com.cpop.common.utils.StringUtils;
|
||||
import com.cpop.core.base.entity.ExtendPage;
|
||||
import com.cpop.core.base.exception.UtilException;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -67,13 +69,19 @@ public class CloudClassCardHandler {
|
||||
//校区id
|
||||
jsonBody.put("storeId", storeId);
|
||||
JSONObject jsonObject = restTemplate.postForObject(CloudDbUrl.DATA_CLOUD, jsonBody, JSONObject.class);
|
||||
Page<CloudClassCardDto> page = Page.of(pageNum, pageSize);
|
||||
ExtendPage<CloudClassCardDto> page = ExtendPage.of(pageNum, pageSize);
|
||||
if (jsonObject != null) {
|
||||
if (jsonObject.getBoolean("success")) {
|
||||
List<CloudClassCardDto> courseDtoList = jsonObject.getJSONArray("list").toJavaList(CloudClassCardDto.class);
|
||||
page.setRecords(courseDtoList);
|
||||
page.setTotalPage(jsonObject.getInteger("total"));
|
||||
page.setTotalRow(jsonObject.getInteger("total"));
|
||||
HashMap<String, Object> extendParams = new HashMap<>();
|
||||
//总课时
|
||||
extendParams.put("totalClassHours",jsonObject.getString("allNumber"));
|
||||
//总金额
|
||||
extendParams.put("totalAmount",jsonObject.getString("allAmount"));
|
||||
page.setExtendParams(extendParams);
|
||||
return page;
|
||||
} else {
|
||||
throw new UtilException(jsonObject.getString("error"));
|
||||
|
||||
@ -40,9 +40,10 @@ public class CloudCourseHandler {
|
||||
* @param endDate 结束日期
|
||||
* @param storeId 云校区id
|
||||
* @param courseId 云课程id
|
||||
* @param classId 云课程id
|
||||
* @return Page<CloudCustomerDto>
|
||||
*/
|
||||
public Page<CloudCourseDto> getCoursePage(Integer pageNum, Integer pageSize, String startDate, String endDate, String storeId, String courseId) {
|
||||
public Page<CloudCourseDto> getCoursePage(Integer pageNum, Integer pageSize, String startDate, String endDate, String storeId, String courseId,String classId) {
|
||||
JSONObject jsonBody = new JSONObject();
|
||||
jsonBody.put("_type", "courseContent");
|
||||
//分页参数
|
||||
@ -56,6 +57,9 @@ public class CloudCourseHandler {
|
||||
if (StringUtils.isNotBlank(courseId)){
|
||||
jsonBody.put("courseId", courseId);
|
||||
}
|
||||
if (StringUtils.isNotBlank(classId)) {
|
||||
jsonBody.put("classId", classId);
|
||||
}
|
||||
//校区id
|
||||
jsonBody.put("storeId", storeId);
|
||||
JSONObject jsonObject = restTemplate.postForObject(CloudDbUrl.DATA_CLOUD, jsonBody, JSONObject.class);
|
||||
|
||||
@ -22,14 +22,14 @@ SET FOREIGN_KEY_CHECKS = 0;
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `QRTZ_BLOB_TRIGGERS`;
|
||||
CREATE TABLE `QRTZ_BLOB_TRIGGERS` (
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`BLOB_DATA` blob NULL,
|
||||
PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
|
||||
INDEX `SCHED_NAME`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
|
||||
CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of QRTZ_BLOB_TRIGGERS
|
||||
@ -40,11 +40,11 @@ CREATE TABLE `QRTZ_BLOB_TRIGGERS` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `QRTZ_CALENDARS`;
|
||||
CREATE TABLE `QRTZ_CALENDARS` (
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`CALENDAR` blob NOT NULL,
|
||||
PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of QRTZ_CALENDARS
|
||||
@ -55,14 +55,14 @@ CREATE TABLE `QRTZ_CALENDARS` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `QRTZ_CRON_TRIGGERS`;
|
||||
CREATE TABLE `QRTZ_CRON_TRIGGERS` (
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
|
||||
CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of QRTZ_CRON_TRIGGERS
|
||||
@ -73,19 +73,19 @@ CREATE TABLE `QRTZ_CRON_TRIGGERS` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `QRTZ_FIRED_TRIGGERS`;
|
||||
CREATE TABLE `QRTZ_FIRED_TRIGGERS` (
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`ENTRY_ID` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`ENTRY_ID` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`FIRED_TIME` bigint(0) NOT NULL,
|
||||
`SCHED_TIME` bigint(0) NOT NULL,
|
||||
`PRIORITY` int(0) NOT NULL,
|
||||
`STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
`JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
`IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
`REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE,
|
||||
INDEX `IDX_QRTZ_FT_TRIG_INST_NAME`(`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE,
|
||||
INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY`(`SCHED_NAME`, `INSTANCE_NAME`, `REQUESTS_RECOVERY`) USING BTREE,
|
||||
@ -93,7 +93,7 @@ CREATE TABLE `QRTZ_FIRED_TRIGGERS` (
|
||||
INDEX `IDX_QRTZ_FT_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE,
|
||||
INDEX `IDX_QRTZ_FT_T_G`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
|
||||
INDEX `IDX_QRTZ_FT_TG`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of QRTZ_FIRED_TRIGGERS
|
||||
@ -104,20 +104,20 @@ CREATE TABLE `QRTZ_FIRED_TRIGGERS` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `QRTZ_JOB_DETAILS`;
|
||||
CREATE TABLE `QRTZ_JOB_DETAILS` (
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`IS_DURABLE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`IS_UPDATE_DATA` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
`JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`IS_DURABLE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`IS_UPDATE_DATA` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`JOB_DATA` blob NULL,
|
||||
PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
|
||||
INDEX `IDX_QRTZ_J_REQ_RECOVERY`(`SCHED_NAME`, `REQUESTS_RECOVERY`) USING BTREE,
|
||||
INDEX `IDX_QRTZ_J_GRP`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of QRTZ_JOB_DETAILS
|
||||
@ -128,10 +128,10 @@ CREATE TABLE `QRTZ_JOB_DETAILS` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `QRTZ_LOCKS`;
|
||||
CREATE TABLE `QRTZ_LOCKS` (
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of QRTZ_LOCKS
|
||||
@ -143,10 +143,10 @@ INSERT INTO `QRTZ_LOCKS` VALUES ('RockBladeScheduler', 'TRIGGER_ACCESS');
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `QRTZ_PAUSED_TRIGGER_GRPS`;
|
||||
CREATE TABLE `QRTZ_PAUSED_TRIGGER_GRPS` (
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of QRTZ_PAUSED_TRIGGER_GRPS
|
||||
@ -157,12 +157,12 @@ CREATE TABLE `QRTZ_PAUSED_TRIGGER_GRPS` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `QRTZ_SCHEDULER_STATE`;
|
||||
CREATE TABLE `QRTZ_SCHEDULER_STATE` (
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`LAST_CHECKIN_TIME` bigint(0) NOT NULL,
|
||||
`CHECKIN_INTERVAL` bigint(0) NOT NULL,
|
||||
PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of QRTZ_SCHEDULER_STATE
|
||||
@ -173,15 +173,15 @@ CREATE TABLE `QRTZ_SCHEDULER_STATE` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `QRTZ_SIMPLE_TRIGGERS`;
|
||||
CREATE TABLE `QRTZ_SIMPLE_TRIGGERS` (
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`REPEAT_COUNT` bigint(0) NOT NULL,
|
||||
`REPEAT_INTERVAL` bigint(0) NOT NULL,
|
||||
`TIMES_TRIGGERED` bigint(0) NOT NULL,
|
||||
PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
|
||||
CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of QRTZ_SIMPLE_TRIGGERS
|
||||
@ -192,23 +192,23 @@ CREATE TABLE `QRTZ_SIMPLE_TRIGGERS` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `QRTZ_SIMPROP_TRIGGERS`;
|
||||
CREATE TABLE `QRTZ_SIMPROP_TRIGGERS` (
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
`STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
`STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
`INT_PROP_1` int(0) NULL DEFAULT NULL,
|
||||
`INT_PROP_2` int(0) NULL DEFAULT NULL,
|
||||
`LONG_PROP_1` bigint(0) NULL DEFAULT NULL,
|
||||
`LONG_PROP_2` bigint(0) NULL DEFAULT NULL,
|
||||
`DEC_PROP_1` decimal(13, 4) NULL DEFAULT NULL,
|
||||
`DEC_PROP_2` decimal(13, 4) NULL DEFAULT NULL,
|
||||
`BOOL_PROP_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`BOOL_PROP_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`BOOL_PROP_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
`BOOL_PROP_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
|
||||
CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of QRTZ_SIMPROP_TRIGGERS
|
||||
@ -219,20 +219,20 @@ CREATE TABLE `QRTZ_SIMPROP_TRIGGERS` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `QRTZ_TRIGGERS`;
|
||||
CREATE TABLE `QRTZ_TRIGGERS` (
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
`NEXT_FIRE_TIME` bigint(0) NULL DEFAULT NULL,
|
||||
`PREV_FIRE_TIME` bigint(0) NULL DEFAULT NULL,
|
||||
`PRIORITY` int(0) NULL DEFAULT NULL,
|
||||
`TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`START_TIME` bigint(0) NOT NULL,
|
||||
`END_TIME` bigint(0) NULL DEFAULT NULL,
|
||||
`CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||
`CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
|
||||
`MISFIRE_INSTR` smallint(0) NULL DEFAULT NULL,
|
||||
`JOB_DATA` blob NULL,
|
||||
PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
|
||||
@ -249,7 +249,7 @@ CREATE TABLE `QRTZ_TRIGGERS` (
|
||||
INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_STATE`) USING BTREE,
|
||||
INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,
|
||||
CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `qrtz_job_details` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of QRTZ_TRIGGERS
|
||||
|
||||
@ -40,17 +40,17 @@ public class CpopGenerator {
|
||||
/**
|
||||
* 输出路径
|
||||
*/
|
||||
private static final String EXPORT_URL = "/Cpop-System";
|
||||
private static final String EXPORT_URL = "/Cpop-Oam";
|
||||
|
||||
/**
|
||||
* 模块
|
||||
*/
|
||||
private static final String EXPORT_ITEM = "system";
|
||||
private static final String EXPORT_ITEM = "oam";
|
||||
|
||||
/**
|
||||
* 表前缀
|
||||
*/
|
||||
private static final String TABLE_PREFIX = "cp_sys_";
|
||||
private static final String TABLE_PREFIX = "cp_oam_";
|
||||
|
||||
/**
|
||||
* 主入口
|
||||
|
||||
@ -11,6 +11,7 @@ import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 果酱-放心学订单表 实体类。
|
||||
|
||||
@ -56,13 +56,35 @@ public class EasyLearnOrderDetail extends BaseEntity implements Serializable {
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 实际支付金额
|
||||
*/
|
||||
private BigDecimal actualPrice;
|
||||
|
||||
/**
|
||||
* 详情描述
|
||||
*/
|
||||
private String detailDesc;
|
||||
|
||||
/**
|
||||
* 计划详情名称
|
||||
*/
|
||||
private String detailName;
|
||||
|
||||
/**
|
||||
* 【计划明细状态】 计划明细状态
|
||||
* 可选取值:
|
||||
* NOT_USED: 本计划详情还未使用
|
||||
* USING: 本计划详情使用中,已有对应的服务订单
|
||||
* USED: 本计划详情已使用,对应的服务订单已完成支付
|
||||
* SIGN_PLAN_DETAIL_CANCEL: 本计划详情已取消使用,对应的服务订单已取消
|
||||
*/
|
||||
private Integer detailStatus;
|
||||
|
||||
/**
|
||||
* 支付时间
|
||||
*/
|
||||
private LocalDateTime payTime;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@ -37,9 +37,19 @@ public class EasyLearnOrderExtend extends BaseEntity implements Serializable {
|
||||
private String orderId;
|
||||
|
||||
/**
|
||||
* 期数
|
||||
* 【目前用户进行到的计划详情序号】 序号从1开始,顺序按照创建计划时传入的计划详情顺序,0代表无任何详情开始使用
|
||||
*/
|
||||
private Integer periodNumber;
|
||||
private Integer goingDetailNo;
|
||||
|
||||
/**
|
||||
* 计划id(系统内部计划id)
|
||||
*/
|
||||
private String planId;
|
||||
|
||||
/**
|
||||
* 签约计划id
|
||||
*/
|
||||
private String signPlanId;
|
||||
|
||||
/**
|
||||
* 下期还款日
|
||||
@ -56,6 +66,37 @@ public class EasyLearnOrderExtend extends BaseEntity implements Serializable {
|
||||
*/
|
||||
private String subMchId;
|
||||
|
||||
/**
|
||||
* 【计划签约状态】 计划签约状态
|
||||
* 可选取值:
|
||||
* UNSIGNED: 用户未签约
|
||||
* SIGNED: 用户已签约
|
||||
* SIGN_PLAN_CANCEL: 签约计划已取消
|
||||
* COMPLETE: 签约计划的所有计划详情已经全部完成
|
||||
* EXPIRE: 签约计划已过期
|
||||
*/
|
||||
private Integer extendStatus;
|
||||
|
||||
/**
|
||||
* 【签约计划取消类型】 签约计划取消类型
|
||||
* 可选取值:
|
||||
* NOT_CANCEL: 用户已签约协议未取消
|
||||
* USER: 用户取消已签约的协议
|
||||
* MERCHANT: 商户取消已签约的协议
|
||||
* REVOKE_SERVICE: 用户解除服务授权时取消服务下的已签约协议
|
||||
*/
|
||||
private Integer extendCancelType;
|
||||
|
||||
/**
|
||||
* 取消时间
|
||||
*/
|
||||
private LocalDateTime cancelTime;
|
||||
|
||||
/**
|
||||
* 取消原因
|
||||
*/
|
||||
private String cancelReason;
|
||||
|
||||
/**
|
||||
* 逻辑删除(0否1是)
|
||||
*/
|
||||
|
||||
@ -98,7 +98,8 @@ public class CpopWxPayTests {
|
||||
@Test
|
||||
public void reverse() throws WxPayException {
|
||||
WxPayOrderReverseRequest wxPayOrderReverseRequest = new WxPayOrderReverseRequest();
|
||||
wxPayOrderReverseRequest.setOutTradeNo("97945902236385280");
|
||||
//wxPayOrderReverseRequest.setOutTradeNo("97945902236385280");
|
||||
wxPayOrderReverseRequest.setOutTradeNo("1732752269107220540");
|
||||
wxPayOrderReverseRequest.setSubMchId("1661323640");
|
||||
wxPayService.reverseOrder(wxPayOrderReverseRequest);
|
||||
}
|
||||
@ -134,8 +135,8 @@ public class CpopWxPayTests {
|
||||
@Test
|
||||
public void getOrderInfo() throws WxPayException {
|
||||
WxPayConfig config = wxPayService.getConfig();
|
||||
config.setSubMchId("1661323640");
|
||||
WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder(null, "97976926051770368");
|
||||
config.setSubMchId("1650816616");
|
||||
WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder("01020033210023615210000000008091", null);
|
||||
System.out.println(wxPayOrderQueryResult);
|
||||
}
|
||||
|
||||
@ -162,7 +163,7 @@ public class CpopWxPayTests {
|
||||
*/
|
||||
@Test
|
||||
public void getProfitSharingResult() throws WxPayException {
|
||||
ProfitSharingV3Result profitSharingV3Result = wxPayService.getProfitSharingService().profitSharingQueryV3("97976952480079872", "4200002127202312282719627535", "1661323640");
|
||||
ProfitSharingV3Result profitSharingV3Result = wxPayService.getProfitSharingService().profitSharingQueryV3("1714609621691420672", "4200002015202310186547802213", "1650816616");
|
||||
System.out.println(profitSharingV3Result);
|
||||
}
|
||||
|
||||
|
||||
4
Cpop-Oam/Cpop-Oam-Web/Dockerfile
Normal file
4
Cpop-Oam/Cpop-Oam-Web/Dockerfile
Normal file
@ -0,0 +1,4 @@
|
||||
FROM openjdk:8-jdk
|
||||
LABEL authors="Lost"
|
||||
ADD ./target/Cpop-Oam-Web.jar Cpop-Oam-Web.jar
|
||||
ENTRYPOINT ["sh", "-c", "java -jar Cpop-Oam-Web.jar --spring.profiles.active=prod,core,jambox"]
|
||||
@ -1,7 +1,6 @@
|
||||
package com.cpop.oam.web;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cpop.api.cloudDb.core.dto.CloudCourseStudentDto;
|
||||
import com.cpop.api.cloudDb.core.dto.CloudCourseStudentListDto;
|
||||
import com.cpop.api.cloudDb.core.dto.CloudCustomerDto;
|
||||
import com.cpop.api.cloudDb.core.dto.CloudOrderDto;
|
||||
@ -9,7 +8,6 @@ import com.cpop.api.cloudDb.handler.CloudCourseHandler;
|
||||
import com.cpop.api.cloudDb.handler.CloudCustomerStudentHandler;
|
||||
import com.cpop.api.cloudDb.handler.CloudOrderHandler;
|
||||
import com.cpop.core.utils.SpringUtils;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@ -2,6 +2,7 @@ package com.cpop.oam.web;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.cpop.common.utils.StringUtils;
|
||||
import com.cpop.common.utils.bean.BeanUtils;
|
||||
@ -1608,4 +1609,35 @@ public class CpopImportTests {
|
||||
//导入营业执照相关信息
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新报销上传文件
|
||||
* @author DB
|
||||
* @since 2024/1/8
|
||||
*/
|
||||
@Test
|
||||
public void updateReimburseUploadFileData() {
|
||||
FinanceReimburseService financeReimburseService = SpringUtils.getBean(FinanceReimburseService.class);
|
||||
List<FinanceReimburse> list = financeReimburseService.list();
|
||||
List<FinanceReimburse> updateEnetyList = new ArrayList<>();
|
||||
list.forEach(item -> {
|
||||
if (StringUtils.isNotBlank(item.getAttachmentUrl())){
|
||||
JSONArray jsonArray = JSONArray.parseArray(item.getAttachmentUrl());
|
||||
JSONObject jsonObject = JSONObject.parseObject(jsonArray.get(0).toString());
|
||||
String[] split = jsonObject.getString("url").split(",");
|
||||
if (split.length > 1) {
|
||||
List<Map<String, String>> urls = new ArrayList<>();
|
||||
for (int i = 0; i < split.length; i++) {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("name", "旧数据无名字");
|
||||
map.put("url", split[i]);
|
||||
urls.add(map);
|
||||
}
|
||||
item.setAttachmentUrl(JSONArray.toJSONString(urls));
|
||||
updateEnetyList.add(item);
|
||||
}
|
||||
}
|
||||
});
|
||||
financeReimburseService.updateBatch(updateEnetyList);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,444 @@
|
||||
package com.cpop.oam.web;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||
import com.cpop.common.utils.StringUtils;
|
||||
import com.cpop.core.base.enums.OrderSource;
|
||||
import com.cpop.core.utils.SpringUtils;
|
||||
import com.cpop.jambox.business.entity.*;
|
||||
import com.cpop.jambox.business.service.*;
|
||||
import com.cpop.pay.framewok.handler.wxPay.WxPayHandler;
|
||||
import com.cpop.system.business.entity.Store;
|
||||
import com.cpop.system.business.entity.WxPayScore;
|
||||
import com.cpop.system.business.entity.WxPayScoreDetail;
|
||||
import com.cpop.system.business.service.StoreService;
|
||||
import com.cpop.system.business.service.WxPayScoreDetailService;
|
||||
import com.cpop.system.business.service.WxPayScoreService;
|
||||
import com.github.binarywang.wxpay.bean.payscore.PartnerUserSignPlanEntity;
|
||||
import com.github.binarywang.wxpay.bean.payscore.PayScorePlanDetailResult;
|
||||
import com.github.binarywang.wxpay.bean.payscore.WxPartnerPayScoreSignPlanResult;
|
||||
import com.github.binarywang.wxpay.bean.profitsharing.result.ProfitSharingV3Result;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayOrderQueryRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayOrderQueryV3Request;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayPartnerOrderQueryV3Request;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayPartnerOrderQueryV3Result;
|
||||
import com.github.binarywang.wxpay.exception.WxPayException;
|
||||
import com.github.binarywang.wxpay.service.PartnerPayScoreSignPlanService;
|
||||
import com.github.binarywang.wxpay.service.WxPayService;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.core.datasource.DataSourceKey;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.core.row.*;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.cpop.jambox.business.entity.table.EasyLearnOrderDetailTableDef.EASY_LEARN_ORDER_DETAIL;
|
||||
import static com.cpop.jambox.business.entity.table.EasyLearnOrderExtendTableDef.EASY_LEARN_ORDER_EXTEND;
|
||||
import static com.cpop.jambox.business.entity.table.EasyLearnOrderTableDef.EASY_LEARN_ORDER;
|
||||
import static com.cpop.jambox.business.entity.table.StoreExtendTableDef.STORE_EXTEND;
|
||||
import static com.cpop.system.business.entity.table.StoreTableDef.STORE;
|
||||
import static com.cpop.system.business.entity.table.WxPayScoreTableDef.WX_PAY_SCORE;
|
||||
|
||||
/**
|
||||
* 旧数据同步
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
* @since 2024-01-11 17:28
|
||||
*/
|
||||
@Slf4j
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
@ActiveProfiles(profiles = {"prod","core"})
|
||||
public class CpopOldDataSyncTests {
|
||||
|
||||
@Autowired
|
||||
private WxPayHandler wxPayHandler;
|
||||
|
||||
/**
|
||||
* 同步旧校区数据
|
||||
* @author DB
|
||||
* @since 2024/1/11
|
||||
*/
|
||||
@Test
|
||||
public void syncOldStoreData(){
|
||||
List<Row> rowList = null;
|
||||
try {
|
||||
//查询旧表
|
||||
DataSourceKey.use("jambox");
|
||||
rowList = DbChain.table("t_mechanism_info")
|
||||
.select("tmi.X as longitude")
|
||||
.select("tmi.store_id as storeCloudId")
|
||||
.select("tmi.Y as latitude")
|
||||
.select("tmi.charge_phone as phone")
|
||||
.select("tmi.address as storeAddr")
|
||||
.select("tmi.charge_name as personCharge")
|
||||
.from("t_mechanism_info").as("tmi")
|
||||
.where("tmi.store_id is not null")
|
||||
.list();
|
||||
} finally {
|
||||
DataSourceKey.clear();
|
||||
}
|
||||
//获取所有校区
|
||||
Map<String, String> storeMap = SpringUtils.getBean(StoreExtendService.class).list().stream().collect(Collectors.toMap(StoreExtend::getStoreCloudId, StoreExtend::getStoreId));
|
||||
rowList.forEach(item->{
|
||||
item.set("id",storeMap.get(item.getString("storeCloudId")));
|
||||
});
|
||||
|
||||
List<Row> filterList = rowList.stream().filter(item -> StringUtils.isNotBlank(item.getString("id"))).collect(Collectors.toList());
|
||||
SpringUtils.getBean(StoreService.class).updateBatch(RowUtil.toEntityList(filterList, Store.class));
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步旧数据一次一次支付
|
||||
* @author DB
|
||||
* @since 2024/1/12
|
||||
*/
|
||||
@Test
|
||||
public void syncOldEasyLearnPayScorePlanData() {
|
||||
List<Row> rowList = null;
|
||||
try {
|
||||
//查询旧表
|
||||
DataSourceKey.use("jambox");
|
||||
rowList = DbChain.table("j_wechat_pay_plan")
|
||||
.select("merchant_plan_no")
|
||||
.select("sub_merch_id as subMchId")
|
||||
.from("j_wechat_pay_plan")
|
||||
.where("is_month = 0")
|
||||
.list();
|
||||
} finally {
|
||||
DataSourceKey.clear();
|
||||
}
|
||||
WxPayService wxPayService = wxPayHandler.getWxPayService();
|
||||
WxPayScoreService wxPayScoreService = SpringUtils.getBean(WxPayScoreService.class);
|
||||
WxPayScoreDetailService wxPayScoreDetailService = SpringUtils.getBean(WxPayScoreDetailService.class);
|
||||
rowList.forEach(item -> {
|
||||
WxPartnerPayScoreSignPlanResult result = null;
|
||||
try {
|
||||
result = wxPayService.getPartnerPayScoreSignPlanService().queryPlans(item.getString("merchantPlanNo"), item.getString("subMchId"));
|
||||
WxPayScore wxPayScore = new WxPayScore();
|
||||
wxPayScore.setId(result.getMerchantPlanNo())
|
||||
.setOutPlanId(result.getPlanId())
|
||||
.setSignAccount(result.getSubMchid())
|
||||
.setPlanName(result.getPlanName())
|
||||
.setPlanDuration(Integer.valueOf(result.getPlanDuration()))
|
||||
.setDeductionQuantity(Integer.valueOf(result.getDeductionQuantity()))
|
||||
.setTotalActualPrice(result.getTotalActualPrice())
|
||||
.setTotalOriginalPrice(result.getTotalActualPrice())
|
||||
.setPlanSource(OrderSource.EASY_LEARN.toString());
|
||||
wxPayScoreService.save(wxPayScore);
|
||||
//计划详情
|
||||
List<PayScorePlanDetailResult> planDetailList = result.getPlanDetailList();
|
||||
List<WxPayScoreDetail> wxPayScoreDetails = new ArrayList<>();
|
||||
planDetailList.forEach(inner -> {
|
||||
WxPayScoreDetail wxPayScoreDetail = new WxPayScoreDetail();
|
||||
wxPayScoreDetail.setSysWxPayScoreId(wxPayScore.getId())
|
||||
.setPlanDetailNo(inner.getPlanDetailNo())
|
||||
.setOriginalPrice(inner.getOriginalPrice())
|
||||
.setActualPrice(inner.getActualPrice())
|
||||
.setPlanDiscountDescription(inner.getPlanDiscountDescription())
|
||||
.setPlanDetailName(inner.getPlanDetailName());
|
||||
wxPayScoreDetails.add(wxPayScoreDetail);
|
||||
});
|
||||
wxPayScoreDetailService.saveBatch(wxPayScoreDetails);
|
||||
} catch (WxPayException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void syncOldEasyLearnSignPayScorePlanData() throws WxPayException {
|
||||
List<Row> rowList = null;
|
||||
try {
|
||||
//查询旧表
|
||||
DataSourceKey.use("jambox");
|
||||
rowList = DbChain.table("j_commodity_ticket")
|
||||
.select("jct.wx_order_id as orderId")
|
||||
.select("jct.name as customerName")
|
||||
.select("jct.phone as customerPhone")
|
||||
.select("jct.store_id as storeCloudId")
|
||||
.select("jct.card_no as productId")
|
||||
.select("jwpp.merchant_plan_no")
|
||||
.select("jwpp.sub_merch_id as subMchId")
|
||||
.from("j_commodity_ticket").as("jct")
|
||||
.leftJoin("j_wechat_pay_plan").as("jwpp").on("jwpp.template_id = jct.commodity_id")
|
||||
.where("jwpp.is_month = 0")
|
||||
.and("jct.deleted = 1")
|
||||
.and("jct.ticket_type = 1")
|
||||
.and("jct.pay_status = 'PAY'")
|
||||
.and("jct.deleted = 1")
|
||||
.and("jct.card_no is not null")
|
||||
.list();
|
||||
} finally {
|
||||
DataSourceKey.clear();
|
||||
}
|
||||
Map<String, Row> storeMap = Db.selectListByQuery(QueryWrapper.create()
|
||||
.select(STORE.ID, STORE.BRAND_ID, STORE_EXTEND.STORE_CLOUD_ID)
|
||||
.from(STORE)
|
||||
.leftJoin(STORE_EXTEND).on(STORE_EXTEND.STORE_ID.eq(STORE.ID))
|
||||
.where(STORE_EXTEND.STORE_CLOUD_ID.in(rowList.stream().map(item -> item.getString("storeCloudId")).collect(Collectors.toList()))))
|
||||
.stream().collect(Collectors.toMap(item -> item.getString("storeCloudId"), item -> item));
|
||||
WxPayService wxPayService = wxPayHandler.getWxPayService();
|
||||
WxPayScoreService wxPayScoreService = SpringUtils.getBean(WxPayScoreService.class);
|
||||
List<WxPayScore> payScoreList = wxPayScoreService.list();
|
||||
Map<String, WxPayScore> wxPayScoreMap = payScoreList.stream().collect(Collectors.toMap(WxPayScore::getOutPlanId, item -> item));
|
||||
List<EasyLearnOrderDetail> easyLearnOrderDetails = new ArrayList<>();
|
||||
List<EasyLearnOrderExtend> easyLearnOrderExtends = new ArrayList<>();
|
||||
List<EasyLearnOrder> easyLearnOrders = new ArrayList<>();
|
||||
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX");
|
||||
rowList.forEach(item->{
|
||||
try {
|
||||
PartnerUserSignPlanEntity partnerUserSignPlanEntity = wxPayService.getPartnerPayScoreSignPlanService()
|
||||
.queryUserSignPlans(item.getString("orderId"), item.getString("subMchId"));
|
||||
EasyLearnOrder easyLearnOrder = new EasyLearnOrder();
|
||||
String storeCloudId = item.getString("storeCloudId");
|
||||
Integer extendStatus = changeStatus(partnerUserSignPlanEntity.getSignState());
|
||||
partnerUserSignPlanEntity.getSignedDetailList().forEach(inner->{
|
||||
EasyLearnOrderDetail easyLearnOrderDetail = new EasyLearnOrderDetail();
|
||||
BigDecimal payPrice = BigDecimal.valueOf(inner.getActualPayPrice()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
|
||||
easyLearnOrderDetail.setId(inner.getMerchantPlanDetailNo())
|
||||
.setOrderId(partnerUserSignPlanEntity.getMerchantSignPlanNo())
|
||||
.setOutOrderNo(inner.getOrderId())
|
||||
.setAmount(BigDecimal.valueOf(inner.getActualPrice()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP))
|
||||
.setActualPrice(payPrice)
|
||||
.setPeriodNo(inner.getPlanDetailNo())
|
||||
.setDetailDesc(inner.getPlanDiscountDescription())
|
||||
.setDetailName(inner.getPlanDetailName())
|
||||
.setDetailStatus(changeDetailStatus(inner.getPlanDetailState()))
|
||||
.setCreateTime(LocalDateTime.now());
|
||||
if (StringUtils.isNotBlank(inner.getUseTime())){
|
||||
easyLearnOrderDetail.setPayTime(LocalDateTime.parse(inner.getUseTime(),dateTimeFormatter));
|
||||
}
|
||||
if (inner.getPlanDetailState().equals("FINISHED")) {
|
||||
if (easyLearnOrder.getTotalPayAmount() == null) {
|
||||
easyLearnOrder.setTotalPayAmount(payPrice);
|
||||
} else {
|
||||
easyLearnOrder.setTotalPayAmount(easyLearnOrder.getTotalPayAmount().add(payPrice));
|
||||
}
|
||||
}
|
||||
easyLearnOrderDetails.add(easyLearnOrderDetail);
|
||||
});
|
||||
easyLearnOrder.setId(partnerUserSignPlanEntity.getMerchantSignPlanNo())
|
||||
.setOrderContent(partnerUserSignPlanEntity.getPlanName())
|
||||
.setOrderStatus(1)
|
||||
.setOutOrderNo(partnerUserSignPlanEntity.getSignPlanId())
|
||||
.setBrandId(storeMap.get(storeCloudId).getString("brandId"))
|
||||
.setStoreId(storeMap.get(storeCloudId).getString("id"))
|
||||
.setCustomerName(item.getString("customerName"))
|
||||
.setCustomerPhone(item.getString("customerPhone"))
|
||||
.setTotalAmount(BigDecimal.valueOf(partnerUserSignPlanEntity.getTotalActualPrice()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP))
|
||||
.setTotalPayAmount(BigDecimal.ZERO)
|
||||
.setOrderType(0)
|
||||
.setRate(OrderSource.EASY_LEARN.getRate())
|
||||
.setProductId(item.getString("productId"))
|
||||
.setCreateTime(LocalDateTime.parse(partnerUserSignPlanEntity.getSignTime(),dateTimeFormatter));
|
||||
easyLearnOrders.add(easyLearnOrder);
|
||||
EasyLearnOrderExtend easyLearnOrderExtend = new EasyLearnOrderExtend();
|
||||
easyLearnOrderExtend.setOrderId(partnerUserSignPlanEntity.getMerchantSignPlanNo())
|
||||
.setGoingDetailNo(partnerUserSignPlanEntity.getGoingDetailNo())
|
||||
.setPlanId(wxPayScoreMap.get(partnerUserSignPlanEntity.getPlanId()).getId())
|
||||
.setSignPlanId(partnerUserSignPlanEntity.getSignPlanId())
|
||||
.setSubMchId(partnerUserSignPlanEntity.getSubMchid())
|
||||
.setExtendStatus(extendStatus)
|
||||
.setExtendCancelType(changeCancelType(partnerUserSignPlanEntity.getCancelSignType()))
|
||||
.setCancelReason(partnerUserSignPlanEntity.getCancelReason())
|
||||
.setCreateTime(LocalDateTime.parse(partnerUserSignPlanEntity.getSignTime(),dateTimeFormatter));
|
||||
if (StringUtils.isNotBlank(partnerUserSignPlanEntity.getCancelSignTime())){
|
||||
easyLearnOrderExtend.setCancelTime(LocalDateTime.parse(partnerUserSignPlanEntity.getCancelSignTime(),dateTimeFormatter));
|
||||
}
|
||||
easyLearnOrderExtends.add(easyLearnOrderExtend);
|
||||
} catch (WxPayException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
SpringUtils.getBean(EasyLearnOrderService.class).saveBatch(easyLearnOrders);
|
||||
SpringUtils.getBean(EasyLearnOrderExtendService.class).saveBatch(easyLearnOrderExtends);
|
||||
SpringUtils.getBean(EasyLearnOrderDetailService.class).saveBatch(easyLearnOrderDetails);
|
||||
}
|
||||
|
||||
private Integer changeStatus(String signStatus) {
|
||||
switch (signStatus) {
|
||||
case "UNSIGNED":
|
||||
return 0;
|
||||
case "SIGNED":
|
||||
return 1;
|
||||
case "SIGN_PLAN_CANCEL":
|
||||
return 2;
|
||||
case "COMPLETE":
|
||||
return 3;
|
||||
default:
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
||||
private Integer changeCancelType(String cancelType) {
|
||||
switch (cancelType) {
|
||||
case "NOT_CANCEL":
|
||||
return 0;
|
||||
case "USER":
|
||||
return 1;
|
||||
case "MERCHANT":
|
||||
return 2;
|
||||
default:
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
|
||||
private Integer changeDetailStatus(String detailStatus){
|
||||
switch (detailStatus) {
|
||||
case "NOT_USED":
|
||||
return 0;
|
||||
case "USING":
|
||||
return 1;
|
||||
case "USED":
|
||||
return 2;
|
||||
default:
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入到旧库,已核销的数据
|
||||
* @author DB
|
||||
* @since 2024/1/12
|
||||
*/
|
||||
@Test
|
||||
public void importEasyLearnDataToOldDataBase(){
|
||||
List<Row> brandList = null;
|
||||
List<Row> storeList = null;
|
||||
List<Row> ticketList = null;
|
||||
List<EasyLearnOrderExtend> list = SpringUtils.getBean(EasyLearnOrderExtendService.class).queryChain().where(EASY_LEARN_ORDER_EXTEND.EXTEND_STATUS.in(2, 3)).list();
|
||||
try {
|
||||
//查询旧表
|
||||
DataSourceKey.use("jambox");
|
||||
brandList = DbChain.table("t_brand_info")
|
||||
.select("id")
|
||||
.select("brand_id as brandCloudId")
|
||||
.from("t_brand_info").as("jct")
|
||||
.where("deleted = 1")
|
||||
.list();
|
||||
storeList = DbChain.table("t_mechanism_info")
|
||||
.select("mechanism_id as id")
|
||||
.select("store_id as storeCloudId")
|
||||
.from("t_mechanism_info")
|
||||
.where("deleted = 1")
|
||||
.list();
|
||||
List<String> collect = list.stream().map(EasyLearnOrderExtend::getOrderId).collect(Collectors.toList());
|
||||
ticketList = DbChain.table("j_commodity_ticket")
|
||||
.select("user_id")
|
||||
.select("wx_order_id")
|
||||
.from("j_commodity_ticket")
|
||||
.in("wx_order_id", collect)
|
||||
.list();
|
||||
} finally {
|
||||
DataSourceKey.clear();
|
||||
}
|
||||
Map<String, String> brandMap = brandList.stream().collect(Collectors.toMap(item -> item.getString("brandCloudId"), item -> item.getString("id")));
|
||||
Map<String, String> storeMap = storeList.stream().collect(Collectors.toMap(item -> item.getString("storeCloudId"), item -> item.getString("id")));
|
||||
Map<String, String> brandCloudMap = SpringUtils.getBean(BrandExtendService.class).list().stream().collect(Collectors.toMap(BrandExtend::getBrandId, BrandExtend::getBrandCloudId));
|
||||
Map<String, String> storeCloudMap = SpringUtils.getBean(StoreExtendService.class).list().stream().collect(Collectors.toMap(StoreExtend::getStoreId, StoreExtend::getStoreCloudId));
|
||||
Map<String, EasyLearnOrder> orderMap = SpringUtils.getBean(EasyLearnOrderService.class).queryChain()
|
||||
.where(EASY_LEARN_ORDER.ID.in(list.stream().map(EasyLearnOrderExtend::getOrderId).collect(Collectors.toSet())))
|
||||
.list()
|
||||
.stream().collect(Collectors.toMap(EasyLearnOrder::getId, item -> item));
|
||||
Map<String, String> wxOrderMap = ticketList.stream().collect(Collectors.toMap(item -> item.getString("wxOrderId"), item -> item.getString("userId")));
|
||||
//获取签约计划
|
||||
Map<String, WxPayScore> wxPayScoreMap = SpringUtils.getBean(WxPayScoreService.class).queryChain()
|
||||
.where(WX_PAY_SCORE.ID.in(list.stream().map(EasyLearnOrderExtend::getPlanId).collect(Collectors.toSet())))
|
||||
.list().stream().collect(Collectors.toMap(WxPayScore::getId, item -> item));
|
||||
List<Row> rows = new ArrayList<>();
|
||||
list.forEach(item -> {
|
||||
EasyLearnOrder easyLearnOrder = orderMap.get(item.getOrderId());
|
||||
Row row = Row.ofKey(RowKey.of("refund_id", KeyType.Auto));
|
||||
row.set("brand_id", brandMap.get(brandCloudMap.get(easyLearnOrder.getBrandId())));
|
||||
row.set("mechanism_id", storeMap.get(storeCloudMap.get(easyLearnOrder.getStoreId())));
|
||||
row.set("type", "先学后付次付");
|
||||
row.set("type_id",item.getOrderId());
|
||||
row.set("name", easyLearnOrder.getCustomerName());
|
||||
row.set("phone", easyLearnOrder.getCustomerPhone());
|
||||
row.set("product_name",easyLearnOrder.getOrderContent());
|
||||
row.set("reason",item.getCancelReason());
|
||||
WxPayScore wxPayScore = wxPayScoreMap.get(item.getPlanId());
|
||||
BigDecimal bigDecimal = BigDecimal.valueOf(wxPayScore.getTotalOriginalPrice());
|
||||
BigDecimal oncePrice = bigDecimal.divide(BigDecimal.valueOf(wxPayScore.getDeductionQuantity()), 2, RoundingMode.HALF_UP);
|
||||
row.set("price",oncePrice.multiply(BigDecimal.valueOf(item.getGoingDetailNo())));
|
||||
row.set("wx_order_id",item.getOrderId());
|
||||
row.set("ticket_time",item.getCancelTime());
|
||||
row.set("refund_name",easyLearnOrder.getCustomerName());
|
||||
row.set("creation_time",item.getCancelTime());
|
||||
row.set("last_modification_date",item.getCancelTime());
|
||||
row.set("creation_by",wxOrderMap.get(item.getOrderId()));
|
||||
row.set("last_modified",wxOrderMap.get(item.getOrderId()));
|
||||
rows.add(row);
|
||||
});
|
||||
try {
|
||||
//查询旧表
|
||||
DataSourceKey.use("jambox");
|
||||
Db.insertBatch("j_contract_refund",rows);
|
||||
} finally {
|
||||
DataSourceKey.clear();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSharingData() throws WxPayException {
|
||||
List<Row> rowList = null;
|
||||
try {
|
||||
//查询旧表
|
||||
DataSourceKey.use("jambox");
|
||||
rowList = DbChain.table("j_wx_pay_profit_sharing")
|
||||
.select("id")
|
||||
.select("sub_mch_id")
|
||||
.select("out_order_no")
|
||||
.select("transaction_id")
|
||||
.list();
|
||||
} finally {
|
||||
DataSourceKey.clear();
|
||||
}
|
||||
WxPayService wxPayService = wxPayHandler.getWxPayService();
|
||||
List<Row> rows = new ArrayList<>();
|
||||
rowList.forEach(item->{
|
||||
try {
|
||||
ProfitSharingV3Result profitSharingV3Result = wxPayService.getProfitSharingService().profitSharingQueryV3(item.getString("outOrderNo"),
|
||||
item.getString("transactionId"),item.getString("subMchId"));
|
||||
//查询原订单
|
||||
WxPayPartnerOrderQueryV3Request wxPayOrderQueryV3Request = new WxPayPartnerOrderQueryV3Request();
|
||||
wxPayOrderQueryV3Request.setSubMchId(item.getString("subMchId"));
|
||||
wxPayOrderQueryV3Request.setTransactionId(item.getString("transactionId"));
|
||||
WxPayPartnerOrderQueryV3Result wxPayPartnerOrderQueryV3Result = wxPayService.queryPartnerOrderV3(wxPayOrderQueryV3Request);
|
||||
Row row = new Row();
|
||||
String[] split = wxPayPartnerOrderQueryV3Result.getAttach().split("\\|");
|
||||
row.set("aaa",profitSharingV3Result.getOutOrderNo());
|
||||
row.set("bbb",split[1]);
|
||||
rows.add(row);
|
||||
} catch (WxPayException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
try {
|
||||
//查询旧表
|
||||
DataSourceKey.use("jambox");
|
||||
Db.insertBatch("asds", rows);
|
||||
} finally {
|
||||
DataSourceKey.clear();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -109,8 +109,9 @@ public class CloudDataController {
|
||||
@ApiParam("开始日期") @RequestParam(value = "startDate", required = false) String startDate,
|
||||
@ApiParam("结束日期") @RequestParam(value = "endDate", required = false) String endDate,
|
||||
@ApiParam("校区Id") @RequestParam("storeId") String storeId,
|
||||
@ApiParam("课程id") @RequestParam(value = "courseId", required = false) String courseId) {
|
||||
Page<CloudCourseDto> coursePage = cloudCourseHandler.getCoursePage(page, pageSize, startDate, endDate, storeId, courseId);
|
||||
@ApiParam("课程id") @RequestParam(value = "courseId", required = false) String courseId,
|
||||
@ApiParam("班id") @RequestParam(value = "classId", required = false) String classId) {
|
||||
Page<CloudCourseDto> coursePage = cloudCourseHandler.getCoursePage(page, pageSize, startDate, endDate, storeId, courseId, classId);
|
||||
return R.ok(coursePage);
|
||||
}
|
||||
|
||||
|
||||
@ -40,6 +40,11 @@ public class BusinessDetail extends BaseEntity implements Serializable {
|
||||
@Id
|
||||
private String businessId;
|
||||
|
||||
/**
|
||||
* 事务员工id
|
||||
*/
|
||||
private String businessStaffId;
|
||||
|
||||
/**
|
||||
* 品牌id
|
||||
*/
|
||||
|
||||
@ -27,6 +27,12 @@ import lombok.experimental.Accessors;
|
||||
@Table(value = "cp_oam_business_staff", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
|
||||
public class BusinessStaff extends BaseEntity implements Serializable {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@Id
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 事务id
|
||||
*/
|
||||
|
||||
@ -7,7 +7,6 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cpop.common.utils.StringUtils;
|
||||
import com.cpop.common.utils.bean.BeanUtils;
|
||||
import com.cpop.core.base.entity.LoginUser;
|
||||
import com.cpop.core.base.entity.PageDomain;
|
||||
import com.cpop.core.base.exception.ServiceException;
|
||||
import com.cpop.core.utils.SecurityUtils;
|
||||
@ -28,8 +27,12 @@ import com.cpop.oam.business.service.BusinessStaffService;
|
||||
import com.cpop.oam.business.vo.BusinessInfoPageVo;
|
||||
import com.cpop.oam.business.vo.BusinessPageVo;
|
||||
import com.cpop.oam.business.vo.PersonBusinessInfoVo;
|
||||
import com.cpop.system.business.bo.StoreRenewBo;
|
||||
import com.cpop.system.business.entity.Store;
|
||||
import com.cpop.system.business.entity.StoreSign;
|
||||
import com.cpop.system.business.service.StoreRenewService;
|
||||
import com.cpop.system.business.service.StoreService;
|
||||
import com.cpop.system.business.service.StoreSignService;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
@ -39,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -51,6 +55,7 @@ import static com.cpop.oam.business.entity.table.BusinessTableDef.BUSINESS;
|
||||
import static com.cpop.oam.business.entity.table.StaffTableDef.STAFF;
|
||||
import static com.cpop.system.business.entity.table.BrandTableDef.BRAND;
|
||||
import static com.cpop.system.business.entity.table.StoreLicenseTableDef.STORE_LICENSE;
|
||||
import static com.cpop.system.business.entity.table.StoreSignTableDef.STORE_SIGN;
|
||||
import static com.cpop.system.business.entity.table.StoreTableDef.STORE;
|
||||
import static com.mybatisflex.core.query.QueryMethods.distinct;
|
||||
import static com.mybatisflex.core.query.QueryMethods.select;
|
||||
@ -79,12 +84,12 @@ public class BusinessServiceImpl extends ServiceImpl<BusinessMapper, Business> i
|
||||
QueryWrapper queryWrapper = QueryWrapper.create();
|
||||
//运营人员
|
||||
if (loginUserInfo.getInteger("staffType") == 1) {
|
||||
queryWrapper.leftJoin(BUSINESS_STAFF).on(BUSINESS_STAFF.BUSINESS_ID.eq(BUSINESS.ID))
|
||||
queryWrapper
|
||||
.leftJoin(BUSINESS_STAFF).on(BUSINESS_STAFF.BUSINESS_ID.eq(BUSINESS.ID))
|
||||
.and(BUSINESS_STAFF.STAFF_ID.eq(loginUserInfo.getString("id")));
|
||||
}
|
||||
return this.mapper.paginateAs(Page.of(pageDomain.getPageNum(), pageDomain.getPageSize()),
|
||||
queryWrapper
|
||||
.select(BUSINESS.ID, BUSINESS.BUSINESS_LEVEL, BUSINESS.BUSINESS_TYPE, BUSINESS.DESC, BUSINESS.START_DATE, BUSINESS.END_DATE, BUSINESS.ALL_SURPLUS_QUANTITY, BUSINESS.REMARK, BUSINESS.STATUS)
|
||||
queryWrapper.select(BUSINESS.ID, BUSINESS.BUSINESS_LEVEL, BUSINESS.BUSINESS_TYPE, BUSINESS.DESC, BUSINESS.START_DATE, BUSINESS.END_DATE, BUSINESS.ALL_SURPLUS_QUANTITY, BUSINESS.REMARK, BUSINESS.STATUS)
|
||||
//员工表
|
||||
.select(STAFF.NAME.as(BusinessPageVo::getInitiatorName))
|
||||
.leftJoin(STAFF).on(STAFF.ID.eq(BUSINESS.INITIATOR_ID))
|
||||
@ -158,10 +163,11 @@ public class BusinessServiceImpl extends ServiceImpl<BusinessMapper, Business> i
|
||||
if (bo.getButtJoint().isEmpty()){
|
||||
throw new ServiceException("对接人不能为空");
|
||||
}
|
||||
//导入数据
|
||||
List<BusinessDistributeDto> businessDistributeDataList = new ArrayList<>();
|
||||
List<BusinessStaff> businessStaffList = new ArrayList<>();
|
||||
//员工相关数据
|
||||
BusinessStaffService businessStaffService = SpringUtils.getBean(BusinessStaffService.class);
|
||||
bo.getButtJoint().forEach(item -> {
|
||||
//导入数据
|
||||
List<BusinessDistributeDto> businessDistributeDataList = new ArrayList<>();
|
||||
//对接文件
|
||||
JSONObject jsonObject = JSONArray.parseArray(item.getBusinessDocUrl()).getJSONObject(0);
|
||||
String url = jsonObject.getString("url");
|
||||
@ -188,6 +194,10 @@ public class BusinessServiceImpl extends ServiceImpl<BusinessMapper, Business> i
|
||||
if (businessDistributeDataList.isEmpty()) {
|
||||
throw new ServiceException("导入的excel存在空文件,请检查后重新操作");
|
||||
}
|
||||
//负责员工
|
||||
BusinessStaff businessStaff = BeanUtils.mapToClass(item, BusinessStaff.class);
|
||||
businessStaff.setBusinessId(businessId).setSurplusQuantity(businessDistributeDataList.size()).setStaffId(item.getStaffId());
|
||||
businessStaffService.save(businessStaff);
|
||||
List<BusinessDetail> businessDetails = SpringUtils.getBean(StoreService.class).queryChain()
|
||||
.select(STORE.BRAND_ID, STORE.ID.as(BusinessDetail::getStoreId))
|
||||
.where(STORE.ID.in(businessDistributeDataList.stream().map(BusinessDistributeDto::getStoreId).collect(Collectors.toSet())))
|
||||
@ -197,17 +207,13 @@ public class BusinessServiceImpl extends ServiceImpl<BusinessMapper, Business> i
|
||||
}
|
||||
businessDetails.forEach(inner -> {
|
||||
inner.setBusinessId(businessId);
|
||||
inner.setBusinessStaffId(businessStaff.getId());
|
||||
});
|
||||
//保存详情
|
||||
SpringUtils.getBean(BusinessDetailService.class).saveBatch(businessDetails);
|
||||
//负责员工
|
||||
BusinessStaff businessStaff = BeanUtils.mapToClass(item, BusinessStaff.class);
|
||||
businessStaff.setBusinessId(businessId).setSurplusQuantity(businessDetails.size());
|
||||
businessStaffList.add(businessStaff);
|
||||
//批量录入
|
||||
flag.updateAndGet(v -> v + businessDetails.size());
|
||||
});
|
||||
//保存负责员工
|
||||
SpringUtils.getBean(BusinessStaffService.class).saveBatch(businessStaffList);
|
||||
return flag.get();
|
||||
}
|
||||
|
||||
@ -249,7 +255,7 @@ public class BusinessServiceImpl extends ServiceImpl<BusinessMapper, Business> i
|
||||
//获取所有无人处理的校区
|
||||
.or(STORE.ID.notIn(select(distinct(BUSINESS_DETAIL.STORE_ID))
|
||||
.from(BUSINESS_DETAIL)
|
||||
.leftJoin(BUSINESS_STAFF).on(BUSINESS_STAFF.BUSINESS_ID.eq(BUSINESS_DETAIL.BUSINESS_ID))
|
||||
.leftJoin(BUSINESS_STAFF).on(BUSINESS_STAFF.ID.eq(BUSINESS_DETAIL.BUSINESS_STAFF_ID))
|
||||
.where(BUSINESS_STAFF.STAFF_ID.ne(loginUserInfo.getString("id"))
|
||||
.and(BUSINESS_DETAIL.STORE_ID.isNotNull()))
|
||||
)));
|
||||
@ -269,7 +275,7 @@ public class BusinessServiceImpl extends ServiceImpl<BusinessMapper, Business> i
|
||||
.leftJoin(BRAND).on(BRAND.ID.eq(STORE.BRAND_ID))
|
||||
.leftJoin(STORE_LICENSE).on(STORE_LICENSE.STORE_ID.eq(STORE.ID))
|
||||
.leftJoin(BUSINESS_DETAIL).on(BUSINESS_DETAIL.STORE_ID.eq(STORE.ID))
|
||||
.leftJoin(BUSINESS_STAFF).on(BUSINESS_STAFF.BUSINESS_ID.eq(BUSINESS_DETAIL.BUSINESS_ID))
|
||||
.leftJoin(BUSINESS_STAFF).on(BUSINESS_STAFF.ID.eq(BUSINESS_DETAIL.BUSINESS_STAFF_ID))
|
||||
.leftJoin(STAFF).on(STAFF.ID.eq(BUSINESS_STAFF.STAFF_ID))
|
||||
//品牌或校区名模糊查询
|
||||
.and(BRAND.BRAND_NAME.like(bo.getBrandOrStore()).or(STORE.STORE_NAME.like(bo.getBrandOrStore())))
|
||||
@ -312,7 +318,7 @@ public class BusinessServiceImpl extends ServiceImpl<BusinessMapper, Business> i
|
||||
.select(STORE.STORE_NAME, STORE.PERSON_CHARGE, STORE.PHONE, STORE.ID.as(BusinessInfoPageVo::getStoreId))
|
||||
//营业执照
|
||||
.select(STORE_LICENSE.LICENSE_NAME, STORE_LICENSE.LICENSE_USER_NAME, STORE_LICENSE.LICENSE_ADDR)
|
||||
.leftJoin(BUSINESS_STAFF).on(BUSINESS_STAFF.BUSINESS_ID.eq(BUSINESS_DETAIL.BUSINESS_ID))
|
||||
.leftJoin(BUSINESS_STAFF).on(BUSINESS_STAFF.ID.eq(BUSINESS_DETAIL.BUSINESS_STAFF_ID))
|
||||
.leftJoin(STAFF).on(STAFF.ID.eq(BUSINESS_STAFF.STAFF_ID))
|
||||
.leftJoin(BRAND).on(BRAND.ID.eq(BUSINESS_DETAIL.BRAND_ID))
|
||||
.leftJoin(STORE).on(STORE.ID.eq(BUSINESS_DETAIL.STORE_ID))
|
||||
@ -348,8 +354,14 @@ public class BusinessServiceImpl extends ServiceImpl<BusinessMapper, Business> i
|
||||
businessDetail = new BusinessDetail();
|
||||
//获取校区数据
|
||||
Store store = SpringUtils.getBean(StoreService.class).getById(bo.getStoreId());
|
||||
JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo();
|
||||
//获取事务员工
|
||||
BusinessStaff businessStaff = SpringUtils.getBean(BusinessStaffService.class).getOne(QueryWrapper.create()
|
||||
.where(BUSINESS_STAFF.BUSINESS_ID.eq(bo.getBusinessId()))
|
||||
.and(BUSINESS_STAFF.STAFF_ID.eq(loginUserInfo.getString("id"))));
|
||||
businessDetail.setBrandId(store.getBrandId()).setStoreId(store.getId()).setBusinessId(bo.getBusinessId());
|
||||
businessDetail.setDetailStatus(bo.getDetailStatus()).setDetailDesc(bo.getDetailDesc()).setDetailRecordTime(LocalDateTime.now());
|
||||
businessDetail.setDetailStatus(bo.getDetailStatus()).setDetailDesc(bo.getDetailDesc()).setDetailRecordTime(LocalDateTime.now())
|
||||
.setBusinessStaffId(businessStaff.getId());
|
||||
//新增或修改
|
||||
businessDetailService.save(businessDetail);
|
||||
}
|
||||
@ -370,6 +382,23 @@ public class BusinessServiceImpl extends ServiceImpl<BusinessMapper, Business> i
|
||||
.where(BUSINESS_STAFF.BUSINESS_ID.eq(businessDetail.getBusinessId()))
|
||||
.and(BUSINESS_STAFF.STAFF_ID.eq(loginUserInfo.getString("id")))
|
||||
.update();
|
||||
//机构签约
|
||||
if (business.getBusinessType()== 1){
|
||||
//校区自动延期一年
|
||||
StoreSignService storeSignService = SpringUtils.getBean(StoreSignService.class);
|
||||
StoreSign storeSign = storeSignService.getOne(QueryWrapper.create().where(STORE_SIGN.STORE_ID.eq(bo.getStoreId())));
|
||||
if (storeSign == null) {
|
||||
storeSign = new StoreSign();
|
||||
storeSign.setStoreId(bo.getStoreId());
|
||||
storeSign.setSignStaffId(loginUserInfo.getString("id"));
|
||||
storeSignService.save(storeSign);
|
||||
}
|
||||
/*storeSign.setSignStaffId(loginUserInfo.getString("id"));
|
||||
StoreRenewService storeRenewService = SpringUtils.getBean(StoreRenewService.class);
|
||||
StoreRenewBo storeRenewBo = new StoreRenewBo();
|
||||
storeRenewBo.setStoreId(bo.getStoreId()).setRenewType(1).setRenewDesc("机构签约自动续费一年").setRenewDate(LocalDate.now().plusYears(1));
|
||||
storeRenewService.storeRenew(storeRenewBo);*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import com.alibaba.excel.context.AnalysisContext;
|
||||
import com.alibaba.excel.exception.ExcelDataConvertException;
|
||||
import com.alibaba.excel.read.listener.ReadListener;
|
||||
import com.alibaba.excel.util.ListUtils;
|
||||
import com.cpop.api.tencent.wxWork.handler.WebHookSendHandler;
|
||||
import com.cpop.common.utils.StringUtils;
|
||||
import com.cpop.common.utils.bean.BeanUtils;
|
||||
import com.cpop.core.base.entity.PageDomain;
|
||||
@ -23,6 +24,7 @@ import com.cpop.oam.business.bo.DataImportPageBo;
|
||||
import com.cpop.oam.business.dto.DataImportDto;
|
||||
import com.cpop.oam.business.dto.DataImportParamsDto;
|
||||
import com.cpop.oam.business.vo.DataImportPageVo;
|
||||
import com.cpop.oam.framework.constant.WebHookKeyConstant;
|
||||
import com.cpop.system.business.vo.SysFileVo;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
@ -38,6 +40,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.alibaba.excel.cache.Ehcache.BATCH_COUNT;
|
||||
@ -114,8 +117,23 @@ public class DataImportServiceImpl extends ServiceImpl<DataImportMapper, DataImp
|
||||
} else {
|
||||
dataImportParamsDto.setStoreId(dataImport.getStoreId());
|
||||
}
|
||||
SpringUtils.getBean(RestTemplate.class).postForObject(JamboxCloudUrl.DATA_IMPORT, dataImportParamsDto, String.class);
|
||||
this.updateChain().set(DATA_IMPORT.IMPORT_STATUS, true).where(DATA_IMPORT.ID.eq(dataImport.getId())).update();
|
||||
try {
|
||||
SpringUtils.getBean(RestTemplate.class).postForObject(JamboxCloudUrl.DATA_IMPORT, dataImportParamsDto, String.class);
|
||||
} catch (Exception e) {
|
||||
//数据导入异常通知
|
||||
try {
|
||||
SpringUtils.getBean(WebHookSendHandler.class)
|
||||
.webHookSendText(WebHookKeyConstant.PRODUCT_BOT,
|
||||
new ArrayList<>(),
|
||||
"==========有一条校区数据导入失败==========\n" +
|
||||
"导入id:" + dataImport.getId() + "\n" +
|
||||
"校区id:" + dataImport.getStoreId() + "\n",
|
||||
true);
|
||||
} catch (IOException ex) {
|
||||
throw new ServiceException("发送消息通知失败!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -145,7 +145,7 @@ public class DutyServiceImpl extends ServiceImpl<DutyMapper, Duty> implements Du
|
||||
LocalDate now = LocalDate.now();
|
||||
//获取当天值班员工
|
||||
Duty one = this.queryChain().where(DUTY.DUTY_DATE.eq(now)).one();
|
||||
if (one != null){
|
||||
if (one != null) {
|
||||
//获取当天技术值班人员
|
||||
StaffDto staff = DbChain.table(SYS_USER).select(SYS_USER.PHONE_NUMBER, STAFF.NAME).from(SYS_USER)
|
||||
.leftJoin(STAFF).on(STAFF.USER_ID.eq(SYS_USER.ID))
|
||||
|
||||
@ -48,7 +48,7 @@ public class TaskWorkOrderRecordListVo {
|
||||
* 员工类型(0:技术人员;1:售后人员;2:管理人员)
|
||||
*/
|
||||
@ApiModelProperty("员工类型(0:技术人员;1:售后人员;2:管理人员)")
|
||||
private String recordStaffType;
|
||||
private Integer recordStaffType;
|
||||
|
||||
/**
|
||||
* 记录内容
|
||||
|
||||
@ -2,14 +2,25 @@ package com.cpop.oam.framework.config;
|
||||
|
||||
import com.cpop.core.base.enums.InitRoleEnum;
|
||||
import com.cpop.core.utils.SpringUtils;
|
||||
import com.cpop.oam.business.entity.Task;
|
||||
import com.cpop.oam.business.service.TaskService;
|
||||
import com.cpop.system.business.entity.Role;
|
||||
import com.cpop.system.business.service.RoleService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.cpop.oam.business.entity.table.TaskTableDef.TASK;
|
||||
import static org.springframework.integration.config.xml.IntegrationNamespaceUtils.ROLE;
|
||||
|
||||
/**
|
||||
@ -19,6 +30,7 @@ import static org.springframework.integration.config.xml.IntegrationNamespaceUti
|
||||
* @version 1.0.0
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class InitConfig {
|
||||
|
||||
/**
|
||||
@ -26,6 +38,7 @@ public class InitConfig {
|
||||
*/
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
log.info("===========================项目启动角色初始化===========================");
|
||||
// 检查角色初始化
|
||||
RoleService roleService = SpringUtils.getBean(RoleService.class);
|
||||
for (InitRoleEnum value : InitRoleEnum.values()) {
|
||||
|
||||
@ -27,6 +27,7 @@ import static com.cpop.oam.business.entity.table.TaskTableDef.TASK;
|
||||
*/
|
||||
@Slf4j
|
||||
@Configuration
|
||||
@Profile("prod")
|
||||
public class OamScheduledTasks {
|
||||
|
||||
@Autowired
|
||||
@ -38,7 +39,6 @@ public class OamScheduledTasks {
|
||||
* @date 2023/11/22 18:08
|
||||
* @return: void
|
||||
*/
|
||||
@Profile(value = "prod")
|
||||
@Scheduled(cron = "0 0 9 * * *")
|
||||
public void dutyNotice() {
|
||||
dutyService.dutyNotice();
|
||||
@ -49,7 +49,6 @@ public class OamScheduledTasks {
|
||||
* @author DB
|
||||
* @since 2023/12/10
|
||||
*/
|
||||
@Profile(value = "prod")
|
||||
@Scheduled(cron = "0 20 0 * * *")
|
||||
public void syncImportData() throws InterruptedException {
|
||||
log.info("==============开始同步校区数据===========");
|
||||
@ -70,7 +69,6 @@ public class OamScheduledTasks {
|
||||
* @author DB
|
||||
* @since 2023/12/11
|
||||
*/
|
||||
@Profile(value = {"prod", "test"})
|
||||
@Scheduled(cron = "0 10 0 * * *")
|
||||
public void checkTaskWhetherFinish() {
|
||||
log.info("==============开始检查进行中任务===========");
|
||||
|
||||
@ -109,6 +109,7 @@ public class MenuBo implements Serializable {
|
||||
/**
|
||||
* 是否忽略KeepAlive缓存
|
||||
*/
|
||||
@NotNull(message = "是否忽略KeepAlive缓存不能为空")
|
||||
@ApiModelProperty("是否忽略KeepAlive缓存")
|
||||
private Boolean ignoreKeepAlive;
|
||||
|
||||
|
||||
@ -0,0 +1,65 @@
|
||||
package com.cpop.system.business.bo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
* @since 2024-01-11 14:41
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "StoreRenewBo", description = "校区续费请求")
|
||||
public class StoreRenewBo {
|
||||
|
||||
/**
|
||||
* 校区id
|
||||
*/
|
||||
@NotBlank(message = "校区id不能为空")
|
||||
@ApiModelProperty(value = "校区id", required = true)
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 续费金额
|
||||
*/
|
||||
@ApiModelProperty(value = "续费金额")
|
||||
private BigDecimal renewAmount = BigDecimal.ZERO;
|
||||
|
||||
/**
|
||||
* 续费日期
|
||||
*/
|
||||
@NotNull(message = "不能为空")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "续费日期", required = true)
|
||||
private LocalDate renewDate;
|
||||
|
||||
/**
|
||||
* 续费描述
|
||||
*/
|
||||
@NotBlank(message = "续费描述不能为空")
|
||||
@ApiModelProperty(value = "续费描述", required = true)
|
||||
private String renewDesc;
|
||||
|
||||
/**
|
||||
* 附件
|
||||
*/
|
||||
@NotBlank(message = "附件不能为空")
|
||||
@ApiModelProperty(value = "附件", required = true)
|
||||
private String annexUrl;
|
||||
|
||||
/**
|
||||
* 类型(0:续费;1:延期)
|
||||
*/
|
||||
@NotNull(message = "类型不能为空")
|
||||
@ApiModelProperty(value = "类型(0:续费;1:延期)", required = true)
|
||||
private Integer renewType;
|
||||
}
|
||||
@ -118,5 +118,17 @@ public class SyncBrandAndStoreBo {
|
||||
*/
|
||||
@ApiModelProperty(value = "营业执照图片地址")
|
||||
private String licensePicUrl;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
@ApiModelProperty(value = "经度")
|
||||
private String longitude;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
@ApiModelProperty(value = "纬度")
|
||||
private String latitude;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,15 +2,16 @@ package com.cpop.system.business.controller;
|
||||
|
||||
import com.cpop.core.base.R;
|
||||
import com.cpop.system.business.bo.StorePageBo;
|
||||
import com.cpop.system.business.bo.StoreRenewBo;
|
||||
import com.cpop.system.business.service.StoreRenewService;
|
||||
import com.cpop.system.business.vo.StorePageVo;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import com.cpop.system.business.service.StoreService;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import io.swagger.annotations.Api;
|
||||
|
||||
/**
|
||||
@ -27,12 +28,15 @@ public class StoreController {
|
||||
@Autowired
|
||||
private StoreService storeService;
|
||||
|
||||
@Autowired
|
||||
private StoreRenewService storeRenewService;
|
||||
|
||||
/**
|
||||
* @Description: 查询校区分页列表
|
||||
* @param bo
|
||||
* 查询校区分页列表
|
||||
* @param bo 请求参数
|
||||
* @return R<PageVo<CampusPageListVo>>
|
||||
* @Author Administrator
|
||||
* @Date: 2023/6/7 0007 10:18
|
||||
* @author Administrator
|
||||
* @since 2023/6/7 0007 10:18
|
||||
*/
|
||||
@PreAuthorize("@aps.hasPermission('brandStore:store:list')")
|
||||
@ApiOperation("查询校区分页列表")
|
||||
@ -42,4 +46,17 @@ public class StoreController {
|
||||
return R.ok(pageVo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校区续费
|
||||
* @author DB
|
||||
* @since 2024/1/11
|
||||
* @param bo 请求参数
|
||||
* @return R<Void>
|
||||
*/
|
||||
@ApiOperation("校区续费")
|
||||
@PutMapping("/storeRenew")
|
||||
public R<Void> storeRenew(@RequestBody @Validated StoreRenewBo bo) {
|
||||
storeRenewService.storeRenew(bo);
|
||||
return R.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,6 +82,16 @@ public class Store extends BaseEntity implements Serializable {
|
||||
*/
|
||||
private String wxMchId;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private String longitude;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private String latitude;
|
||||
|
||||
/**
|
||||
* 逻辑删除(0否1是)
|
||||
*/
|
||||
|
||||
@ -63,6 +63,16 @@ public class StoreRenew extends BaseEntity implements Serializable {
|
||||
*/
|
||||
private String renewDesc;
|
||||
|
||||
/**
|
||||
* 附件
|
||||
*/
|
||||
private String annexUrl;
|
||||
|
||||
/**
|
||||
* 类型(0:续费;1:延期)
|
||||
*/
|
||||
private Integer renewType;
|
||||
|
||||
/**
|
||||
* 逻辑删除(0否1是)
|
||||
*/
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.cpop.system.business.service;
|
||||
|
||||
import com.cpop.system.business.bo.StoreRenewBo;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.cpop.system.business.entity.StoreRenew;
|
||||
|
||||
@ -11,4 +12,11 @@ import com.cpop.system.business.entity.StoreRenew;
|
||||
*/
|
||||
public interface StoreRenewService extends IService<StoreRenew> {
|
||||
|
||||
/**
|
||||
* 校区续费
|
||||
* @author DB
|
||||
* @since 2024/1/11
|
||||
* @param bo 请求参数
|
||||
*/
|
||||
void storeRenew(StoreRenewBo bo);
|
||||
}
|
||||
|
||||
@ -108,10 +108,9 @@ public class BrandServiceImpl extends ServiceImpl<BrandMapper, Brand> implements
|
||||
try {
|
||||
DataSourceKey.use("jambox");
|
||||
storeList = Db.selectListByQuery(QueryWrapper.create()
|
||||
.select("store_id as storeCloudId","mechanism as storeName","address")
|
||||
.select("store_id as storeCloudId", "mechanism as storeName", "address as storeAddr", "charge_name as personCharge", "charge_phone as phone", "X as longitude", "Y as latitude")
|
||||
.from("t_mechanism_info")
|
||||
.where("brand_id = ?", jamboxBrandId));
|
||||
|
||||
} finally {
|
||||
DataSourceKey.clear();
|
||||
}
|
||||
|
||||
@ -1,10 +1,39 @@
|
||||
package com.cpop.system.business.service.impl;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cpop.common.constant.Constants;
|
||||
import com.cpop.common.utils.StringUtils;
|
||||
import com.cpop.common.utils.bean.BeanUtils;
|
||||
import com.cpop.core.service.RedisService;
|
||||
import com.cpop.core.service.impl.RedisServiceImpl;
|
||||
import com.cpop.core.utils.SecurityUtils;
|
||||
import com.cpop.core.utils.SpringUtils;
|
||||
import com.cpop.system.business.bo.StoreRenewBo;
|
||||
import com.cpop.system.business.service.StoreSignService;
|
||||
import com.cpop.system.framework.constant.SystemRedisKey;
|
||||
import com.mybatisflex.core.datasource.DataSourceKey;
|
||||
import com.mybatisflex.core.row.DbChain;
|
||||
import com.mybatisflex.core.row.Row;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.cpop.system.business.entity.StoreRenew;
|
||||
import com.cpop.system.business.mapper.StoreRenewMapper;
|
||||
import com.cpop.system.business.service.StoreRenewService;
|
||||
import org.bouncycastle.util.StoreException;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.core.TimeoutUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.JedisClientConfig;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static com.cpop.system.business.entity.table.StoreSignTableDef.STORE_SIGN;
|
||||
|
||||
/**
|
||||
* 校区续费表 服务层实现。
|
||||
@ -15,4 +44,60 @@ import org.springframework.stereotype.Service;
|
||||
@Service("storeRenewService")
|
||||
public class StoreRenewServiceImpl extends ServiceImpl<StoreRenewMapper, StoreRenew> implements StoreRenewService {
|
||||
|
||||
/**
|
||||
* 校区续费
|
||||
* @author DB
|
||||
* @since 2024/1/11
|
||||
* @param bo 请求参数
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void storeRenew(StoreRenewBo bo) {
|
||||
StoreRenew storeRenew = BeanUtils.mapToClass(bo, StoreRenew.class);
|
||||
JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo();
|
||||
storeRenew.setRenewStaffId(loginUserInfo.getString("id"));
|
||||
this.save(storeRenew);
|
||||
//修改校区签约到期时间
|
||||
SpringUtils.getBean(StoreSignService.class).updateChain()
|
||||
.set(STORE_SIGN.EXPIRE_DATE, bo.getRenewDate())
|
||||
.where(STORE_SIGN.STORE_ID.eq(bo.getStoreId()))
|
||||
.update();
|
||||
//修改缓存
|
||||
SpringUtils.getBean(RedisService.class).setCacheObject(SystemRedisKey.STORE_SIGN_EXPIRE_DATE + bo.getStoreId(),
|
||||
bo.getRenewDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
|
||||
, 24, TimeUnit.HOURS);
|
||||
storeRenewOld(bo,loginUserInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步更新旧校区数据
|
||||
* @author DB
|
||||
* @since 2024/1/11
|
||||
* @param bo 请求参数
|
||||
*/
|
||||
@Deprecated
|
||||
private void storeRenewOld(StoreRenewBo bo,JSONObject loginUserInfo) {
|
||||
//线上
|
||||
if (StringUtils.equals(SpringUtils.getActiveProfile(), "prod")) {
|
||||
//获取云校区
|
||||
Row storeExtend = DbChain.table("cp_j_store_extend").select("store_cloud_id").where("store_id = ?", bo.getStoreId()).one();
|
||||
try {
|
||||
DataSourceKey.use("jambox");
|
||||
//修改数据库
|
||||
DbChain.table("t_signContract_mechanism")
|
||||
.set("end_time", bo.getRenewDate())
|
||||
.set("last_modified", loginUserInfo.getString("id"))
|
||||
.where("deleted = 1")
|
||||
.and("store_id = ?", storeExtend.getString("storeCloudId"))
|
||||
.update();
|
||||
} finally {
|
||||
DataSourceKey.clear();
|
||||
}
|
||||
Jedis jedis = new Jedis("106.52.49.102", 6333);
|
||||
jedis.auth("Jambox.123*");
|
||||
jedis.select(1);
|
||||
jedis.set("endTime" + storeExtend.getString("storeCloudId"), bo.getRenewDate().toString());
|
||||
jedis.expire("endTime" + bo.getStoreId(), TimeoutUtils.toMillis(24, TimeUnit.MINUTES));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -61,8 +61,9 @@ public class StoreServiceImpl extends ServiceImpl<StoreMapper, Store> implements
|
||||
return this.getMapper().paginateAs(Page.of(pageDomain.getPageNum(), pageDomain.getPageSize()),
|
||||
QueryWrapper.create().select(STORE.ID, STORE.STORE_NAME, STORE.SOURCE_TYPE, STORE.CREATE_TIME, STORE.STORE_ADDR, STORE.PERSON_CHARGE, STORE.PHONE, STORE.HAVE_ACTIVE, STORE.HAVE_COUNSELOR)
|
||||
.select(STORE_SIGN.EXPIRE_DATE)
|
||||
.select(BRAND.BRAND_NAME).from(STORE)
|
||||
.select(BRAND.BRAND_NAME,BRAND.ID.as(StorePageVo::getBrandId))
|
||||
.select("cp_j_store_extend.store_cloud_id as storeCloudId")
|
||||
.from(STORE)
|
||||
.leftJoin(STORE_SIGN).on(STORE_SIGN.STORE_ID.eq(STORE.ID))
|
||||
.leftJoin(BRAND).on(BRAND.ID.eq(STORE.BRAND_ID))
|
||||
.leftJoin("cp_j_store_extend").on("`cp_j_store_extend`.`store_id` = `cp_sys_store`.`id`")
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
package com.cpop.system.framework.constant;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
* @since 2024-01-11 15:33
|
||||
*/
|
||||
public interface SystemRedisKey {
|
||||
|
||||
/**
|
||||
* 校区到期日期
|
||||
*/
|
||||
String STORE_SIGN_EXPIRE_DATE = "oam:storeSign:expireDate:";
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user