//package com.ltkj.tduck.service.impl;
|
//
|
//import cn.hutool.core.bean.BeanUtil;
|
//import cn.hutool.core.collection.CollUtil;
|
//import cn.hutool.core.date.DateUtil;
|
//import cn.hutool.core.util.ObjectUtil;
|
//import cn.hutool.core.util.StrUtil;
|
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
//import com.ltkj.common.utils.SecurityUtils;
|
//import com.ltkj.tduck.constant.CommonConstants;
|
//import com.ltkj.tduck.domain.UserFormDataEntity;
|
//import com.ltkj.tduck.domain.UserFormEntity;
|
//import com.ltkj.tduck.domain.UserFormSettingEntity;
|
//import com.ltkj.tduck.enums.FormStatusEnum;
|
//import com.ltkj.tduck.mapper.UserFormSettingMapper;
|
//import com.ltkj.tduck.service.UserFormDataService;
|
//import com.ltkj.tduck.service.UserFormService;
|
//import com.ltkj.tduck.service.UserFormSettingService;
|
//import com.ltkj.tduck.struct.FormSettingSchemaStruct;
|
//import com.ltkj.tduck.utils.Result;
|
//import lombok.RequiredArgsConstructor;
|
//import org.springframework.stereotype.Service;
|
//import org.springframework.transaction.annotation.Transactional;
|
//
|
//import java.time.LocalTime;
|
//import java.util.List;
|
//import java.util.Map;
|
//import java.util.Objects;
|
//
|
///**
|
// * 表单表单项(UserFormSetting)表服务实现类
|
// *
|
// * @author smalljop
|
// * @since 2020-11-30 14:00:53
|
// */
|
//@Service
|
//@RequiredArgsConstructor
|
//public class UserFormSettingServiceImpl extends ServiceImpl<UserFormSettingMapper, UserFormSettingEntity> implements UserFormSettingService {
|
// private final UserFormService userFormService;
|
// private final UserFormDataService userFormDataService;
|
//
|
// @Override
|
// public Boolean saveFormSetting(Map<String, Object> params) {
|
// String formKey = params.get("formKey").toString();
|
// UserFormSettingEntity entity = this.getOne(Wrappers.<UserFormSettingEntity>lambdaQuery().eq(UserFormSettingEntity::getFormKey, formKey));
|
// if (ObjectUtil.isNull(entity)) {
|
// UserFormSettingEntity setting = new UserFormSettingEntity();
|
// setting.setFormKey(formKey);
|
// setting.setSettings(params);
|
// return this.save(setting);
|
// }
|
// Map<String, Object> settings = entity.getSettings();
|
// settings.putAll(params);
|
// entity.setSettings(settings);
|
// return this.updateById(entity);
|
// }
|
//
|
//
|
// @Override
|
// public UserFormSettingEntity getFormSettingByKey(String formKey) {
|
// return this.getOne(Wrappers.<UserFormSettingEntity>lambdaQuery().eq(UserFormSettingEntity::getFormKey, formKey));
|
// }
|
//
|
// @Override
|
// public FormSettingSchemaStruct getFormSettingSchema(String formKey) {
|
// UserFormSettingEntity settingEntity = getFormSettingByKey(formKey);
|
// if (ObjectUtil.isNull(settingEntity)) {
|
// return null;
|
// }
|
// return BeanUtil.toBean(settingEntity.getSettings(), FormSettingSchemaStruct.class);
|
// }
|
//
|
//
|
// @Override
|
// public Result<Boolean> getUserFormWriteSettingStatus(String formKey, String requestIp, String wxOpenId, Integer type) {
|
// UserFormEntity userFormEntity = userFormService.getByKey(formKey);
|
// boolean checkPublish = Objects.equals(type, CommonConstants.ConstantNumber.ONE) &&
|
// (ObjectUtil.isNull(userFormEntity) || userFormEntity.getStatus() != 2);
|
// // 非公开填写 不校验发布状态
|
// if (checkPublish) {
|
// return Result.success(null, "表单暂时无法填写");
|
// }
|
// UserFormSettingEntity settingEntity = getFormSettingByKey(formKey);
|
// if (ObjectUtil.isNull(settingEntity)) {
|
// return Result.success(true);
|
// }
|
// FormSettingSchemaStruct settingSchemaStruct = BeanUtil.toBean(settingEntity.getSettings(), FormSettingSchemaStruct.class);
|
// // 填写时间限制
|
// boolean writeInterviewTime = isWriteInterviewTime(settingSchemaStruct);
|
// if (!writeInterviewTime) {
|
// return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getWriteInterviewTimeText(), "不在答题时间范围内,有问题请与表单发布者联系"));
|
// }
|
// // 每个微信答题次数限制
|
// if (settingSchemaStruct.isWxWriteCountLimitStatus()) {
|
// LambdaQueryWrapper<UserFormDataEntity> wrapper = Wrappers.<UserFormDataEntity>lambdaQuery().eq(UserFormDataEntity::getFormKey, formKey).eq(UserFormDataEntity::getWxOpenId, wxOpenId);
|
// String rangeTypeSql = FormSettingSchemaStruct.DateRangeType.getDateSql(settingSchemaStruct.getWxWriteCountLimitDateType());
|
// wrapper.apply(StrUtil.isNotBlank(rangeTypeSql), rangeTypeSql);
|
// long writeCount = userFormDataService.count(wrapper);
|
// if (writeCount >= settingSchemaStruct.getWxWriteCountLimit()) {
|
// return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getWxWriteCountLimitText(), "该微信已经提交过数据,不可重复提交,有问题请与表单发布者联系"));
|
// }
|
// }
|
// // 每个IP答题次数限制
|
// if (settingSchemaStruct.isIpWriteCountLimitStatus()) {
|
// LambdaQueryWrapper<UserFormDataEntity> wrapper = Wrappers.<UserFormDataEntity>lambdaQuery().eq(UserFormDataEntity::getFormKey, formKey).eq(UserFormDataEntity::getSubmitRequestIp, requestIp);
|
// String rangeTypeSql = FormSettingSchemaStruct.DateRangeType.getDateSql(settingSchemaStruct.getIpWriteCountLimitDateType());
|
// wrapper.apply(StrUtil.isNotBlank(rangeTypeSql), rangeTypeSql);
|
// long writeCount = userFormDataService.count(wrapper);
|
// if (writeCount >= settingSchemaStruct.getIpWriteCountLimit()) {
|
// return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getIpWriteCountLimitText(), "该IP已经提交过数据,不可重复提交,有问题请与表单发布者联系"));
|
// }
|
// }
|
// // 总答题次数限制
|
// if (settingSchemaStruct.isTotalWriteCountLimitStatus()) {
|
// LambdaQueryWrapper<UserFormDataEntity> wrapper = Wrappers.<UserFormDataEntity>lambdaQuery().eq(UserFormDataEntity::getFormKey, formKey);
|
// String rangeTypeSql = FormSettingSchemaStruct.DateRangeType.getDateSql(settingSchemaStruct.getTotalWriteCountLimitDateType());
|
// wrapper.apply(StrUtil.isNotBlank(rangeTypeSql), rangeTypeSql);
|
// long writeCount = userFormDataService.count(wrapper);
|
// if (writeCount >= settingSchemaStruct.getTotalWriteCountLimit()) {
|
// return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getTotalWriteCountLimitText(), "该表单收集数据已经达到上限,有问题请与表单发布者联系"));
|
// }
|
// }
|
// // 每个账号答题次数限制
|
// if (settingSchemaStruct.isAccountWriteCountLimitStatus()) {
|
// LambdaQueryWrapper<UserFormDataEntity> wrapper = Wrappers.<UserFormDataEntity>lambdaQuery().eq(UserFormDataEntity::getFormKey, formKey)
|
// .eq(UserFormDataEntity::getCreateBy, SecurityUtils.getUserId());
|
// String rangeTypeSql = FormSettingSchemaStruct.DateRangeType.getDateSql(settingSchemaStruct.getAccountWriteCountLimitDateType());
|
// wrapper.apply(StrUtil.isNotBlank(rangeTypeSql), rangeTypeSql);
|
// long writeCount = userFormDataService.count(wrapper);
|
// if (writeCount >= settingSchemaStruct.getAccountWriteCountLimit()) {
|
// return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getAccountWriteCountLimitText(), "该账号已经提交过数据,不可重复提交,有问题请与表单发布者联系"));
|
// }
|
// }
|
// return Result.success(true);
|
// }
|
//
|
// /**
|
// * 是否在设置的答题时间内
|
// *
|
// * @return true 在答题时间内
|
// */
|
// private boolean isWriteInterviewTime(FormSettingSchemaStruct settingSchemaStruct) {
|
// // 答题时间限制
|
// if (settingSchemaStruct.isWriteInterviewTimeStatus()) {
|
// // 是否每天时间范围限制
|
// if (settingSchemaStruct.isWriteInterviewDayTimeStatus()) {
|
// // 是否在允许访问的天内
|
// List<String> writeInterviewDateRange = settingSchemaStruct.getWriteInterviewDateRange();
|
// if (CollUtil.isEmpty(writeInterviewDateRange) || DateUtil.isIn(DateUtil.date(), DateUtil.parse(writeInterviewDateRange.get(0)), DateUtil.parse(writeInterviewDateRange.get(1)))) {
|
// // 是否在允许访问的小时内
|
// List<String> writeInterviewTimeRange = settingSchemaStruct.getWriteInterviewTimeRange();
|
// LocalTime now = LocalTime.now();
|
// boolean isRange = CollUtil.isNotEmpty(writeInterviewDateRange) && now.isBefore(LocalTime.parse(writeInterviewTimeRange.get(0))) || now.isAfter(LocalTime.parse(writeInterviewTimeRange.get(1)));
|
// if (isRange) {
|
// return false;
|
// }
|
// } else {
|
// return false;
|
// }
|
// } else {
|
// // 是否在允许访问的天内
|
// List<String> writeInterviewDateTimeRange = settingSchemaStruct.getWriteInterviewDateTimeRange();
|
// if (CollUtil.isNotEmpty(writeInterviewDateTimeRange) && !DateUtil.isIn(DateUtil.date(), DateUtil.parse(writeInterviewDateTimeRange.get(0)), DateUtil.parse(writeInterviewDateTimeRange.get(1)))) {
|
// return false;
|
// }
|
// }
|
// // 是否是每周允许访问的周几
|
// List<String> writeInterviewTimeWhichDays = settingSchemaStruct.getWriteInterviewTimeWhichDays();
|
// if (CollUtil.isNotEmpty(writeInterviewTimeWhichDays)) {
|
// // 获取今天是每周的第几天
|
// int day = DateUtil.dayOfWeek(DateUtil.date());
|
// return writeInterviewTimeWhichDays.contains(String.valueOf(day));
|
// }
|
// }
|
// return true;
|
// }
|
//
|
//
|
// /**
|
// * 删除全部的表单数据
|
// *
|
// * @param formKey 表单key
|
// * @return 删除结果
|
// */
|
// @Override
|
// @Transactional(rollbackFor = {Exception.class})
|
// public Boolean deleteAllSetting(String formKey) {
|
// this.remove(Wrappers.<UserFormSettingEntity>lambdaQuery().eq(UserFormSettingEntity::getFormKey, formKey));
|
// return true;
|
// }
|
//
|
//}
|