package com.train.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.train.common.Result;
import com.train.cfc.entity.CfcActivity;
import com.train.cfc.mapper.CfcActivityMapper;
import com.train.entity.TrainClass;
import com.train.entity.TrainEnrollment;
import com.train.entity.TrainGroupOrder;
import com.train.entity.TrainGroupOrderMember;
import com.train.mapper.TrainClassMapper;
import com.train.mapper.TrainEnrollmentMapper;
import com.train.mapper.TrainGroupOrderMapper;
import com.train.mapper.TrainGroupOrderMemberMapper;
import com.train.service.PayService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;
/**
* 团报接口(FR-PAY-03):多人一单 + 企业开票信息采集。
*
流程:create 创建团报单(含成员名单与发票信息)→ pay 下单支付(test-mode 直付)→ 入账时逐人生成报名单。
*/
@Slf4j
@Tag(name = "团报", description = "团报下单与支付")
@RestController
@RequestMapping("/api/group-order")
public class GroupOrderController {
@Resource
private TrainGroupOrderMapper trainGroupOrderMapper;
@Resource
private TrainGroupOrderMemberMapper trainGroupOrderMemberMapper;
@Resource
private TrainClassMapper trainClassMapper;
@Resource
private TrainEnrollmentMapper trainEnrollmentMapper;
@Resource
private CfcActivityMapper cfcActivityMapper;
@Resource
private PayService payService;
/** 占用名额的报名状态 */
private static final List OCCUPY_STATUS = Arrays.asList("pending", "paid", "confirmed");
/**
* 创建团报单(含成员名单与开票信息),单价取 cfc activities 会员价。
*/
@Operation(summary = "创建团报单")
@PostMapping("/create")
public Result