zhaowenxuan
2025-02-06 06c12d2b42c343798d9476be66031b48967df639
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
package com.ltkj.tduck.struct;
 
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
 
import java.util.Date;
import java.util.List;
 
/**
 * @author : tduck
 * @description : 设置结构定义  @JsonIgnore 不给前端返回的字段添加这个
 * @create :  2021/06/07 16:37
 **/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class WriteSettingSchemaStruct {
 
    /**
     * 仅在微信填写
     */
    private boolean onlyWxWrite;
    /**
     * 记录微信用户信息
     */
    private boolean recordWxUser;
    /**
     * 本地保存未提交数据
     */
    private boolean saveSubmitStatus;
    /**
     * 本地保存未提交数据
     */
    private boolean saveNotSubmitStatus;
    /**
     * 开启密码填写
     */
    private boolean passwordWriteStatus;
    /**
     * 填写密码
     */
    @JsonIgnore
    private String writePassword;
    /**
     * 开启每个微信答题次数限制
     */
    @JsonIgnore
    private boolean wxWriteCountLimitStatus;
    /**
     * 每个微信答题次数限制次数
     */
    @JsonIgnore
    private int wxWriteCountLimit = 1;
    /**
     * 开启每个微信答题时间限制类型 具体查看DateRangeTypeEnum
     */
    @JsonIgnore
    private int wxWriteCountLimitDateType = 1;
    /**
     * 开启每个微信答题时间限制显示文案
     */
    @JsonIgnore
    private String wxWriteCountLimitText;
    /**
     * 每个IP答题次数限制
     */
    @JsonIgnore
    private boolean ipWriteCountLimitStatus;
    /**
     * 每个IP答题次数限制次数
     */
    @JsonIgnore
    private int ipWriteCountLimit = 1;
    /**
     * 开启每个IP答题时间限制类型 具体查看DateRangeTypeEnum
     */
    @JsonIgnore
    private int ipWriteCountLimitDateType = 1;
    /**
     * 开启每个IP答题时间限制显示文案
     */
    @JsonIgnore
    private String ipWriteCountLimitText;
 
 
    /**
     * 每个账号答题限制
     */
    @JsonIgnore
    private boolean accountWriteCountLimitStatus;
    /**
     * 每个IP答题次数限制次数
     */
    @JsonIgnore
    private int accountWriteCountLimit = 1;
    /**
     * 开启每个账号答题时间限制类型 具体查看DateRangeTypeEnum
     */
    @JsonIgnore
    private int accountWriteCountLimitDateType = 1;
    /**
     * 开启每个账号答题时间限制显示文案
     */
    @JsonIgnore
    private String accountWriteCountLimitText;
 
 
    /**
     * 每个设备答题限制
     */
    private boolean deviceWriteCountLimitStatus;
    /**
     * 每个设备答题次数限制次数
     */
    private int deviceWriteCountLimit = 1;
 
    /**
     * 每个设备答题文案
     */
    private String deviceWriteCountLimitText;
 
 
    /**
     * 累计答题数量
     */
    @JsonIgnore
    private boolean totalWriteCountLimitStatus;
    /**
     * 次数
     */
    @JsonIgnore
    private int totalWriteCountLimit = 1;
    /**
     * 累计答题日期范围类型
     */
    @JsonIgnore
    private int totalWriteCountLimitDateType = 1;
    /**
     * 累计答题日期范围显示文案
     */
    @JsonIgnore
    private String totalWriteCountLimitText;
    /**
     * 开启答题时间限制
     */
    @JsonIgnore
    private boolean writeInterviewTimeStatus;
    /**
     * 访问时间是否是一天内的某些小时
     */
    @JsonIgnore
    private boolean writeInterviewDayTimeStatus;
    /**
     * 允许访问访问时间范围
     */
    @JsonIgnore
    private List<String> writeInterviewDateTimeRange;
    /**
     * 允许访问访问日期范围
     */
    @JsonIgnore
    private List<String> writeInterviewDateRange;
    /**
     * 允许访问访问时间范围
     */
    @JsonIgnore
    private List<String> writeInterviewTimeRange;
    /**
     * 允许访问访问时间范围显示文案
     */
    @JsonIgnore
    private List<String> writeInterviewTimeWhichDays;
    /**
     * 不允许访问访问时间范围显示文案
     */
    @JsonIgnore
    private String writeInterviewTimeText;
 
 
 
 
 
    @AllArgsConstructor
    public static enum DateRangeType {
        /**
         * 总共
         */
        SUM(1),
        /**
         * 每天
         */
        DAY(2),
        /**
         * 每周
         */
        WEEK(3),
        /**
         * 每月
         */
        MONTH(4);
        @Getter
        private final int value;
 
 
        /**
         * 获取对应的日期范围类型
         *
         * @param value 值
         * @return 日期范围类型sql
         */
        public static String getDateSql(int value) {
            Date now = new Date();
            String sql = " create_time>='{}' and create_time<='{}'";
            for (DateRangeType type : DateRangeType.values()) {
                if (type.getValue() == value) {
                    switch (type) {
                        case DAY:
                            return StrUtil.format(sql, DateUtil.beginOfDay(now), DateUtil.endOfDay(now));
                        case WEEK:
                            return StrUtil.format(sql, DateUtil.beginOfWeek(now), DateUtil.endOfWeek(now));
                        case MONTH:
                            return StrUtil.format(sql, DateUtil.beginOfMonth(now), DateUtil.endOfMonth(now));
                        default:
                            return "";
                    }
                }
            }
            throw new IllegalArgumentException("不支持的日期范围类型");
        }
 
    }
 
 
}