# tjxt **Repository Path**: devved/tjxt ## Basic Information - **Project Name**: tjxt - **Description**: 天机学堂代码(AI版) - **Primary Language**: Java - **License**: Not specified - **Default Branch**: stu - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 173 - **Created**: 2025-04-01 - **Last Updated**: 2025-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README @Getter public enum CouponStatus ### tj-promotion/src/main/java/com/tianji/promotion/constants/PromotionErrorInfo.java public interface PromotionErrorInfo ### tj-promotion/src/main/java/com/tianji/promotion/constants/RedisConstants.java public class RedisConstants - public static final String KEY_BOARD_DATA - public static final String KEY_TOP10 - public static final String KEY_TODAY ### tj-promotion/src/main/java/com/tianji/promotion/controller/ActivityController.java @RequiredArgsConstructor @RestController @RequestMapping("/activities") @Tag(name = "活动相关接口") public class ActivityController - private final IActivityService activityService - @Operation(summary = "新增活动") @PostMapping public Long saveActivity(@RequestBody ActivityFormDTO activityDTO) - @Operation(summary = "修改活动") - @PutMapping("/{id}") public void updateActivity( @RequestBody ActivityFormDTO activityDTO, @Parameter(description = "活动id", example = "1") @PathVariable("id") Long id) - @Operation(summary = "查询活动详情") @GetMapping("/{id}") public ActivityDTO queryActivityById(@Parameter(description = "活动id", example = "1") @PathVariable("id") Long id) - @Operation(summary = "分页查询活动列表") @GetMapping public PageDTO queryActivityPage(ActivityResultQuery query) - @Operation(summary = "查询活动下的优惠券") @GetMapping("/{id}/coupons") public List queryCouponsByActivityId( @Parameter(description = "活动id", example = "1") @PathVariable("id") Long id) ### tj-promotion/src/main/java/com/tianji/promotion/controller/CouponCodeController.java @RestController @RequestMapping("/coupon/codes") @Tag(name = "优惠码相关接口") @RequiredArgsConstructor public class CouponCodeController - private final ICouponCodeService couponCodeService - @Operation(summary = "新增优惠码") @PostMapping public void saveCouponCode(@RequestBody CouponCodeFormDTO couponCodeDTO) - @Operation(summary = "激活优惠码") @PutMapping("/active/{code}") public void activeCouponCode( @Parameter(description = "优惠码") @PathVariable("code") String code) - @Operation(summary = "作废优惠码") @PutMapping("/invalid/{code}") public void invalidCouponCode( @Parameter(description = "优惠码") @PathVariable("code") String code) - @Operation(summary = "查询优惠码详情") @GetMapping("/{code}") public CouponCodeDTO queryCouponCodeById( @Parameter(description = "优惠码") @PathVariable("code") String code) - @Operation(summary = "分页查询优惠码列表") @GetMapping public PageDTO queryCouponCodePage(CouponCodePageQuery pageQuery) ### tj-promotion/src/main/java/com/tianji/promotion/controller/CouponTemplateController.java @RequiredArgsConstructor @RestController @RequestMapping("/coupon/templates") @Tag(name = "优惠券模板相关接口") public class CouponTemplateController - private final ICouponTemplateService couponTemplateService - @Operation(summary = "新增优惠券模板") @PostMapping public Long saveCouponTemplate(@RequestBody CouponTemplateFormDTO couponTemplateDTO) - @Operation(summary = "修改优惠券模板") @PutMapping("/{id}") public void updateCouponTemplate( @RequestBody CouponTemplateFormDTO couponTemplateDTO, @Parameter(description = "优惠券模板id", example = "1") @PathVariable("id") Long id) - @Operation(summary = "查询优惠券模板详情") @GetMapping("/{id}") public CouponTemplateDTO queryCouponTemplateById( @Parameter(description = "优惠券模板id", example = "1") @PathVariable("id") Long id) - @Operation(summary = "分页查询优惠券模板列表") @GetMapping public PageDTO queryCouponTemplatePage(CouponTemplatePageQuery pageQuery) - @Operation(summary = "根据课程id查询可用优惠券") @GetMapping("/course/{courseId}") public List queryAvailableCouponsByCourseId( @Parameter(description = "课程id", example = "1") @PathVariable("courseId") Long courseId) - @Operation(summary = "根据活动id查询优惠券") @GetMapping("/{id}/coupons") public List queryCouponsByActivityId( @Parameter(description = "活动id", example = "1") @PathVariable("id") Long id) ### tj-promotion/src/main/java/com/tianji/promotion/controller/ExchangeCodeController.java @RestController @RequestMapping("/exchange-codes") @Tag(name = "兑换码相关接口") @RequiredArgsConstructor public class ExchangeCodeController - private final IExchangeCodeService exchangeCodeService - @Operation(summary = "新增兑换码") @PostMapping public void saveExchangeCode(@RequestBody ExchangeCodeFormDTO exchangeCodeDTO) - @Operation(summary = "激活兑换码") @PutMapping("/active/{code}") public void activeExchangeCode( @Parameter(description = "兑换码") @PathVariable("code") String code) - @Operation(summary = "作废兑换码") @PutMapping("/invalid/{code}") public void invalidExchangeCode( @Parameter(description = "兑换码") @PathVariable("code") String code) - @Operation(summary = "查询兑换码详情") @GetMapping("/{code}") public ExchangeCodeDTO queryExchangeCodeById( @Parameter(description = "兑换码") @PathVariable("code") String code) - @Operation(summary = "分页查询兑换码列表") @GetMapping public PageDTO queryExchangeCodePage(ExchangeCodePageQuery pageQuery) ### tj-promotion/src/main/java/com/tianji/promotion/domain/dto/ActivityFormDTO.java @Data @Schema(description = "活动表单实体") public class ActivityFormDTO - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description ### tj-promotion/src/main/java/com/tianji/promotion/domain/dto/ActivityResultQuery.java @EqualsAndHashCode(callSuper = true) @Data @Schema(description = "活动查询条件") public class ActivityResultQuery extends PageQuery - @Schema(description - @Schema(description ### tj-promotion/src/main/java/com/tianji/promotion/domain/dto/CouponCodeFormDTO.java @Data @Schema(description = "优惠码表单实体") public class CouponCodeFormDTO - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description ### tj-promotion/src/main/java/com/tianji/promotion/domain/dto/CouponTemplateFormDTO.java @Data @Schema(description = "优惠券模板表单实体") public class CouponTemplateFormDTO - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description ### tj-promotion/src/main/java/com/tianji/promotion/domain/dto/ExchangeCodeFormDTO.java @Data @Schema(description = "兑换码表单实体") public class ExchangeCodeFormDTO - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description ### tj-promotion/src/main/java/com/tianji/promotion/domain/po/Activity.java @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("activity") public class Activity implements Serializable - private static final long serialVersionUID - @TableId(value - private String name - private LocalDateTime beginTime - private LocalDateTime endTime - private Integer status - private String description - private Long creater - private Long updater - private LocalDateTime createTime - private LocalDateTime updateTime - private Integer deleted ### tj-promotion/src/main/java/com/tianji/promotion/domain/po/Coupon.java @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("coupon") public class Coupon implements Serializable - private static final long serialVersionUID - @TableId(value - private Long userId - private Long couponTemplateId - private LocalDateTime validTime - private LocalDateTime expireTime - private Integer status - private LocalDateTime usedTime - private LocalDateTime receiveTime - private LocalDateTime createTime - private LocalDateTime updateTime - private Long creater - private Long updater - private Integer deleted ### tj-promotion/src/main/java/com/tianji/promotion/domain/po/CouponCode.java @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("coupon_code") public class CouponCode implements Serializable - private static final long serialVersionUID - @TableId(value - private String code - private Long couponTemplateId - private Integer status - private LocalDateTime activeTime - private LocalDateTime invalidTime - private LocalDateTime createTime - private LocalDateTime updateTime ### tj-promotion/src/main/java/com/tianji/promotion/domain/po/CouponTemplate.java @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("coupon_template") public class CouponTemplate implements Serializable - private static final long serialVersionUID - @TableId(value - private String name - private Integer discountType - private Integer discountValue - private Integer discountCondition - private Integer discountConditionValue - private Integer discountLimit - private Integer discountLimitValue - private Integer discountLimitType - private Integer discountLimitValue2 - private Integer discountLimitType2 - private Integer discountLimitValue3 - private Integer discountLimitType3 - private Integer discountLimitValue4 - private Integer discountLimitType4 - private Integer discountLimitValue5 - private Integer discountLimitType5 - private Integer discountLimitValue6 - private Integer discountLimitType6 - private Integer discountLimitValue7 - private Integer discountLimitType7 - private Integer discountLimitValue8 - private Integer discountLimitType8 - private Integer discountLimitValue9 - private Integer discountLimitType9 - private Integer discountLimitValue10 - private Integer discountLimitType10 - private Integer discountLimitValue11 - private Integer discountLimitType11 - private Integer discountLimitValue12 - private Integer discountLimitType12 - private String discountLimitValue13 - private String discountLimitType13 - private String discountLimitValue14 - private String discountLimitType14 - private Integer discountLimitValue15 - private Integer discountLimitType15 - private Integer discountLimitValue16 - private Integer discountLimitType16 - private Integer discountLimitValue17 - private Integer discountLimitType17 - private Integer discountLimitValue18 - private Integer discountLimitType18 - private Integer discountLimitValue19 - private Integer discountLimitType19 - private Integer discountLimitValue20 - private Integer discountLimitType20 - private Integer discountLimitValue21 - private Integer discountLimitType21 - private Integer discountLimitValue22 - private Integer discountLimitType22 - private Integer discountLimitValue23 - private Integer discountLimitType23 - private Integer discountLimitValue24 - private Integer discountLimitType24 - private Integer discountLimitValue25 - private Integer discountLimitType25 - private Integer discountLimitValue26 - private Integer discountLimitType26 - private Integer discountLimitValue27 - private Integer discountLimitType27 - private Integer discountLimitValue28 - private Integer discountLimitType28 - private Integer discountLimitValue29 - private Integer discountLimitType29 - private Integer discountLimitValue30 - private Integer discountLimitType30 - private Integer discountLimitValue31 - private Integer discountLimitType31 - private Integer discountLimitValue32 - private Integer discountLimitType32 - private Integer discountLimitValue33 - private Integer discountLimitType33 - private Integer discountLimitValue34 - private Integer discountLimitType34 - private Integer discountLimitValue35 - private Integer discountLimitType35 - private Integer discountLimitValue36 - private Integer discountLimitType36 - private Integer discountLimitValue37 - private Integer discountLimitType37 - private Integer discountLimitValue38 - private Integer discountLimitType38 - private Integer discountLimitValue39 - private Integer discountLimitType39 - private Integer discountLimitValue40 - private Integer discountLimitType40 - private Integer discountLimitValue41 - private Integer discountLimitType41 - private Integer discountLimitValue42 - private Integer discountLimitType42 - private Integer discountLimitValue43 - private Integer discountLimitType43 - private Integer discountLimitValue44 - private Integer discountLimitType44 - private Integer discountLimitValue45 - private Integer discountLimitType45 - private Integer discountLimitValue46 - private Integer discountLimitType46 - private Integer discountLimitValue47 - private Integer discountLimitType47 - private Integer discountLimitValue48 - private Integer discountLimitType48 - private Integer discountLimitValue49 - private Integer discountLimitType49 - private Integer discountLimitValue50 - private Integer discountLimitType50 - private Integer discountLimitValue51 - private Integer discountLimitType51 - private Integer discountLimitValue52 - private Integer discountLimitType52 - private Integer discountLimitValue53 - private Integer discountLimitType53 - private Integer discountLimitValue54 - private Integer discountLimitType54 - private Integer discountLimitValue55 - private Integer discountLimitType55 - private Integer discountLimitValue56 - private Integer discountLimitType56 - private Integer discountLimitValue57 - private Integer discountLimitType57 - private Integer discountLimitValue58 - private Integer discountLimitType58 - private Integer discountLimitValue59 - private Integer discountLimitType59 - private Integer discountLimitValue60 - private Integer discountLimitType60 - private Integer discountLimitValue61 - private Integer discountLimitType61 - private Integer discountLimitValue62 - private Integer discountLimitType62 - private Integer discountLimitValue63 - private Integer discountLimitType63 - private Integer discountLimitValue64 - private Integer discountLimitType64 - private Integer discountLimitValue65 - private Integer discountLimitType65 - private Integer discountLimitValue66 - private Integer discountLimitType66 - private Integer discountLimitValue67 - private Integer discountLimitType67 - private Integer discountLimitValue68 - private Integer discountLimitType68 - private Integer discountLimitValue69 - private Integer discountLimitType69 - private Integer discountLimitValue70 - private Integer discountLimitType70 - private Integer discountLimitValue71 - private Integer discountLimitType71 - private Integer discountLimitValue72 - private Integer discountLimitType72 - private Integer discountLimitValue73 - private Integer discountLimitType73 - private Integer discountLimitValue74 - private Integer discountLimitType74 - private Integer discountLimitValue75 - private Integer discountLimitType75 - private Integer discountLimitValue76 - private Integer discountLimitType76 - private Integer discountLimitValue77 - private Integer discountLimitType77 - private Integer discountLimitValue78 - private Integer discountLimitType78 - private Integer discountLimitValue79 - private Integer discountLimitType79 - private Integer discountLimitValue80 - private Integer discountLimitType80 - private Integer discountLimitValue81 - private Integer discountLimitType81 - private Integer discountLimitValue82 - private Integer discountLimitType82 - private Integer discountLimitValue83 - private Integer discountLimitType83 - private Integer discountLimitValue84 - private Integer discountLimitType84 - private Integer discountLimitValue85 - private Integer discountLimitType85 - private Integer discountLimitValue86 - private Integer discountLimitType86 - private Integer discountLimitValue87 - private Integer discountLimitType87 - private Integer discountLimitValue88 - private Integer discountLimitType88 - private Integer discountLimitValue89 - private Integer discountLimitType89 - private Integer discountLimitValue90 - private Integer discountLimitType90 - private Integer discountLimitValue91 - private Integer discountLimitType91 - private Integer discountLimitValue92 - private Integer discountLimitType92 - private Integer discountLimitValue93 - private Integer discountLimitType93 - private Integer discountLimitValue94 - private Integer discountLimitType94 - private Integer discountLimitValue95 - private Integer discountLimitType95 - private Integer discountLimitValue96 - private Integer discountLimitType96 - private Integer discountLimitValue97 - private Integer discountLimitType97 - private Integer discountLimitValue98 - private Integer discountLimitType98 - private Integer discountLimitValue99 - private Integer discountLimitType99 - private Integer discountLimitValue100 - private Integer discountLimitType100 ### tj-promotion/src/main/java/com/tianji/promotion/domain/po/ExchangeCode.java @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("exchange_code") public class ExchangeCode implements Serializable - private static final long serialVersionUID - @TableId(value - private String code - private String name - private Integer type - private String value - private LocalDateTime activeTime - private LocalDateTime invalidTime - private Integer status - private LocalDateTime createTime - private LocalDateTime updateTime ### tj-promotion/src/main/java/com/tianji/promotion/domain/po/Promotion.java @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("promotion") public class Promotion implements Serializable - private static final long serialVersionUID - @TableId(value - private String name - private String description - private Integer status - private LocalDateTime beginTime - private LocalDateTime endTime - private LocalDateTime createTime - private LocalDateTime updateTime - private Long creater - private Long updater - private Integer deleted ### tj-promotion/src/main/java/com/tianji/promotion/domain/query/ActivityResultQuery.java @EqualsAndHashCode(callSuper = true) @Data @Schema(description = "活动查询条件") public class ActivityResultQuery extends PageQuery - @Schema(description - @Schema(description ### tj-promotion/src/main/java/com/tianji/promotion/domain/query/CouponCodePageQuery.java @EqualsAndHashCode(callSuper = true) @Data @Schema(description = "优惠码查询条件") public class CouponCodePageQuery extends PageQuery - @Schema(description - @Schema(description - @Schema(description ### tj-promotion/src/main/java/com/tianji/promotion/domain/query/CouponTemplatePageQuery.java @EqualsAndHashCode(callSuper = true) @Data @Schema(description = "优惠券模板查询条件") public class CouponTemplatePageQuery extends PageQuery - @Schema(description - @Schema(description - @Schema(description - @Schema(description ### tj-promotion/src/main/java/com/tianji/promotion/domain/vo/ActivityDTO.java @Data @Schema(description = "活动信息") public class ActivityDTO - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description ### tj-promotion/src/main/java/com/tianji/promotion/domain/vo/ActivityPageVO.java @Data @Schema(description = "活动信息") public class ActivityPageVO - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description ### tj-promotion/src/main/java/com/tianji/promotion/domain/vo/CouponTemplateDTO.java @Data @Schema(description = "优惠券模板信息") public class CouponTemplateDTO - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description - @Schema(description -