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
package com.talentcard.server.request;
 
import java.util.List;
 
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
 
@Schema(name = "展示类服务新增/编辑请求", description = "维护停车、体检、购房、购车、家电、公寓租赁等展示服务的图文介绍、商户联系方式、办理说明、优惠政策、适用卡级和前端展示状态")
public record DisplayServiceSaveRequest(
        @Schema(description = "展示服务名称", example = "东区青年人才公寓", requiredMode = Schema.RequiredMode.REQUIRED)
        @NotBlank(message = "展示服务名称不能为空")
        @Size(max = 128, message = "展示服务名称长度不能超过128")
        String merchantName,
 
        @Schema(description = "服务分类:parking停车、medical体检、housing购房、car购车、appliance家电、apartment公寓租赁", example = "apartment", requiredMode = Schema.RequiredMode.REQUIRED)
        @NotBlank(message = "服务分类不能为空")
        @Size(max = 32, message = "服务分类长度不能超过32")
        String category,
 
        @Schema(description = "商户联系人", example = "人才公寓服务专员")
        @Size(max = 64, message = "联系人长度不能超过64")
        String contactName,
 
        @Schema(description = "商户联系电话", example = "0812-3509031")
        @Size(max = 20, message = "联系电话长度不能超过20")
        String contactMobile,
 
        @Schema(description = "商户地址", example = "攀枝花市东区炳三区人才公寓")
        @Size(max = 255, message = "地址长度不能超过255")
        String address,
 
        @Schema(description = "商户LOGO图片地址")
        String logoUrl,
 
        @Schema(description = "封面图地址(图文介绍主图)", example = "/static/stay-assets/hotel-hampton.jpg")
        String coverUrl,
 
        @Schema(description = "优惠政策标签", example = "人才专享8折")
        @Size(max = 64, message = "优惠政策标签长度不能超过64")
        String serviceLabel,
 
        @Schema(description = "优惠政策/图文介绍说明", example = "持人才卡到店可按现场规则享受专属优惠。")
        String rightsText,
 
        @Schema(description = "办理说明", example = "持人才卡到店咨询办理,具体流程以现场说明为准。")
        String handlingInstructions,
 
        @Schema(description = "排序值,越大越靠前", example = "100")
        Integer sortNo,
 
        @Schema(description = "前端展示状态:1上架 0下架", example = "1")
        Integer status,
 
        @Schema(description = "是否推荐:1推荐 0不推荐", example = "0")
        Integer recommend,
 
        @Schema(description = "适用人才卡级别政策列表")
        List<@Valid CardPolicy> cardPolicies
) {
    @Schema(name = "展示类服务适用人才卡级别政策", description = "按人才卡级别维护优惠政策内容")
    public record CardPolicy(
            @Schema(description = "人才卡级别编码:EXCELLENT、OUTSTANDING、ELITE", example = "ELITE", requiredMode = Schema.RequiredMode.REQUIRED)
            @NotBlank(message = "人才卡级别不能为空")
            @Size(max = 32, message = "人才卡级别长度不能超过32")
            String cardLevel,
 
            @Schema(description = "人才卡级别名称", example = "精英人才卡")
            @Size(max = 64, message = "人才卡级别名称长度不能超过64")
            String cardName,
 
            @Schema(description = "优惠政策内容", example = "持卡到店可享专属优惠")
            String benefitText,
 
            @Schema(description = "展示主题,例如excellent、outstanding、elite", example = "elite")
            @Size(max = 32, message = "展示主题长度不能超过32")
            String theme,
 
            @Schema(description = "政策排序值,越大越靠前", example = "10")
            Integer sortNo,
 
            @Schema(description = "政策状态:1启用 0停用", example = "1")
            Integer status
    ) {
    }
}