刘帅
2026-09-22 9bcbf4398202139b31de1df6599e362915f15682
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
@@ -24,22 +24,23 @@
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import sun.rmi.runtime.Log;
import javax.jws.soap.SOAPBinding;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.beans.PropertyEditorSupport;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -64,7 +65,50 @@
    private ICityService cityService;
    /**
     * 导出赛事已报名用户列表
     * 兼容活动表单提交的日期时间格式。
     *
     * @param binder Spring Web 数据绑定器
     */
    @InitBinder
    public void initCompetitionDateBinder(WebDataBinder binder) {
        binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                if (ToolUtil.isEmpty(text)) {
                    setValue(null);
                    return;
                }
                Date parsedDate = parseCompetitionDate(text);
                if (parsedDate == null) {
                    throw new IllegalArgumentException("日期格式应为yyyy-MM-dd HH:mm或yyyy-MM-dd");
                }
                setValue(parsedDate);
            }
        });
    }
    /**
     * 将活动表单日期文本解析为日期对象。
     *
     * @param value 日期文本
     * @return 解析后的日期;格式不匹配时返回 {@code null}
     */
    private Date parseCompetitionDate(String value) {
        String[] patterns = {"yyyy-MM-dd HH:mm", "yyyy-MM-dd"};
        for (String pattern : patterns) {
            try {
                SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
                dateFormat.setLenient(false);
                return dateFormat.parse(value);
            } catch (ParseException ignored) {
                // 尝试下一个约定格式。
            }
        }
        return null;
    }
    /**
     * 导出活动已报名用户列表
     */
    @RequestMapping(value = "/export")
@@ -77,11 +121,15 @@
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time1 = format.format(date);
            String fileName =name+"报名信息.xls";
            String[] title = new String[] {"姓名","性别","联系电话","身份证号","状态"};
            String[] title = new String[] {"姓名","性别","注册电话","联系电话","身份证号","状态"};
            GetPeopleQuery query = new GetPeopleQuery();
            query.setId(id);
            query.setState(state);
            List<CompetitionUser> list = competitionClient.getPeoples(query);
            // todo 临时处理 因为只能更新后台
            Page<CompetitionUser> page = competitionClient.getPeopleFromId1(new GetPeopleQuery(999, 0, id, state));
            List<CompetitionUser> list = page.getRecords();
//            List<CompetitionUser> list = competitionClient.getPeoples(query);
            System.err.println("导出查询人员列表"+ list);
            String[][] values = new String[list.size()][];
            for (int i = 0; i < list.size(); i++) {
                CompetitionUser d = list.get(i);
@@ -97,15 +145,17 @@
                }else {
                    values[i][1] = "未知";
                }
                values[i][2] = d.getPhone();
                values[i][3] = d.getIdCard();
                values[i][2] = d.getRegisterPhone();
                values[i][3] = d.getPhone();
                values[i][4] = d.getIdCard();
                Integer state1 = d.getState();
                if(1 == state1){
                    values[i][4] = "正常";
                    values[i][5] = "正常";
                }else if(2 == state1){
                    values[i][4] = "冻结";
                    values[i][5] = "正常";
                }else {
                    values[i][4] = "删除";
                    values[i][5] = "已取消";
                }
            }
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
@@ -141,7 +191,6 @@
    @RequestMapping("/tCompetition_add")
    public String tCompetitionAdd(Model model) {
        List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
        model.addAttribute("list",list);
        List<TOperator> list1 = tOperatorService.list();
        model.addAttribute("yysList",list1);
@@ -154,19 +203,27 @@
            // 查询这个运营商管理的省
            TOperator id = tOperatorService.getOne(new QueryWrapper<TOperator>().eq("id", UserExt.getUser().getObjectId()));
            if (id.getType()==1){
                // 全国
                List<TCity> list3 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
                model.addAttribute("province",list3);
            }else{
                // 找到他管理的省
                List<TOperatorCity> list4 = operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("operatorId", UserExt.getUser().getObjectId()).eq("pid", 0));
                model.addAttribute("province",list4);
                List<Integer> collect = list4.stream().map(TOperatorCity::getCode).collect(Collectors.toList());
                 list = cityService.list(new LambdaQueryWrapper<TCity>().in(TCity::getCode, collect));
            }
            model.addAttribute("operator",objectId);
            // 查询当前运营商管理了哪些门店
            List<TStore> stores = storeService
                    .list(new QueryWrapper<TStore>()
                            .eq("operatorId", UserExt.getUser().getObjectId()));
            model.addAttribute("stores",stores);
        }
        if (UserExt.getUser().getObjectType()==1) model.addAttribute("operator",0);
        TStore byId = storeService.getById(UserExt.getUser().getObjectId());
        if (UserExt.getUser().getObjectType()==3) model.addAttribute("operator",byId.getOperatorId());
        List<TOperator> list2 = tOperatorService.list();
        model.addAttribute("yysList",list2);
        model.addAttribute("list",list);
        return PREFIX + "TCompetition_add.html";
    }
@@ -201,10 +258,39 @@
        model.addAttribute("storeIds",integers);
        List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
        TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, competition.getProvinceCode()));
        List<TCity> list1 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId,one.getId()));
        List<TStore> list2 = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getCityCode,competition.getCityCode()));
        if (UserExt.getUser().getObjectType()==2){
            // 查询这个运营商管理的省
            TOperator id1 = tOperatorService.getOne(new QueryWrapper<TOperator>().eq("id", UserExt.getUser().getObjectId()));
            if (id1.getType()==1){
            }else{
                // 找到他管理的省
                List<TOperatorCity> list4 = operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("operatorId", UserExt.getUser().getObjectId()).eq("pid", 0));
                List<Integer> collect = list4.stream().map(TOperatorCity::getCode).collect(Collectors.toList());
                list = cityService.list(new LambdaQueryWrapper<TCity>().in(TCity::getCode, collect));
                // 找到他管理的市
                TOperatorCity one1 = operatorCityService.lambdaQuery().eq(TOperatorCity::getCode, competition.getProvinceCode())
                        .eq(TOperatorCity::getOperatorId, UserExt.getUser().getObjectId()).one();
                List<TOperatorCity> list3 = operatorCityService.lambdaQuery().eq(TOperatorCity::getPid, one1.getId())
                        .eq(TOperatorCity::getOperatorId, UserExt.getUser().getObjectId()).list();
                if (list3.isEmpty()){
                    // 管理整个市区
                }else{
                    List<Integer> collect1 = list3.stream().map(TOperatorCity::getCode).collect(Collectors.toList());
                    list1 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId,one.getId())
                            .in(TCity::getCode, collect1));
                }
            }
            list2 = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getCityCode,competition.getCityCode())
                    .eq(TStore::getOperatorId,UserExt.getUser().getObjectId()));
        }
        model.addAttribute("list",list);
        model.addAttribute("list1",list1);
        model.addAttribute("list2",list2);
@@ -275,21 +361,10 @@
            ids = operatorId;
        }
        Page<Competition> page = new PageFactory<Competition>().defaultPage();
        ListQuery listQuery = new ListQuery(page.getSize(),page.getCurrent(),provinceCode,cityCode,eventName,time,state,registerCondition,ids);
        ListQuery listQuery = new ListQuery(page.getSize(),page.getCurrent(),provinceCode,cityCode,eventName,time,state,registerCondition,ids,UserExt.getUser().getObjectType());
        Page<Competition> competitions = competitionClient.list(listQuery);
        List<Competition> records = new ArrayList<>();
        for (Competition competition : competitions.getRecords()) {
            // 当前时间小于开始时间
            if (competition.getStartTime().after(new Date())){
                competition.setStatus(1);
            }
            if (competition.getStartTime().before(new Date())){
                if (competition.getEndTime().after(new Date())){
                    competition.setStatus(2);
                }else{
                    competition.setStatus(3);
                }
            }
            if (competition.getStatus()!=state && state != null){
            }else{
                records.add(competition);
@@ -315,12 +390,10 @@
    @RequestMapping(value = "/listUser/{id}")
    @ResponseBody
    public Object listUser(@PathVariable Integer id,Integer state) {
    public Object listUser(@PathVariable Integer id,Integer state, Integer offset,Integer limit) {
        try {
            Page<Object> page = new PageFactory<>().defaultPage();
            Page<CompetitionUser> data =  competitionClient.getPeopleFromId
                    (new GetPeopleQuery(page.getSize(),page.getCurrent(),id,state));
            return  super.packForBT(data);
            Page<CompetitionUser> page = competitionClient.getPeopleFromId1(new GetPeopleQuery(limit, offset, id, state));
            return super.packForBT(page);
        }catch (Exception e){
            e.printStackTrace();
            return ERROR;
@@ -391,18 +464,18 @@
        }
    }
    @ResponseBody
    @RequestMapping(value = "/cancel")
    public Object cancel(Integer id) {
    public Object cancel(Integer TCompetitionId) {
        try {
            competitionClient.cancel(id);
            competitionClient.cancel(TCompetitionId);
            return SUCCESS_TIP;
        }catch (Exception e){
            e.printStackTrace();
            return ERROR;
        }
    }
    @ResponseBody
    @RequestMapping(value = "/getPeopleFromId")
    public Object getPeopleFromId(Integer id,Integer state) {
        try {
@@ -421,11 +494,11 @@
    @ResponseBody
    public Object onChange(Integer oneId) {
        System.out.println("======"+oneId);
        List<TOperatorCity> list = operatorCityService.list(new LambdaQueryWrapper<TOperatorCity>().eq(TOperatorCity::getOperatorId, oneId).eq(TOperatorCity::getType, 2));
        List<TOperatorCity> list = operatorCityService.list(new LambdaQueryWrapper<TOperatorCity>()
                .eq(TOperatorCity::getOperatorId, oneId).eq(TOperatorCity::getType, 2));
            if (list.size()!=0){
                return list;
            }
        try {
            TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, oneId));
            return cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId,one.getId()));
@@ -434,10 +507,22 @@
            return ERROR;
        }
    }
    @RequestMapping(value = "/onChange3")
    @ResponseBody
    public Object onChange3(String oneId) {
        TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, oneId));
        return cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId,one.getId()));
    }
    @RequestMapping(value = "/oneChangeNext")
    @ResponseBody
    public Object oneChangeNext(Integer oneId) {
        try {
            if (UserExt.getUser().getObjectType() == 2){
                return storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getCityCode, oneId)
                        .eq(TStore::getOperatorId, UserExt.getUser().getObjectId()));
            }
            return storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getCityCode, oneId));
        }catch (Exception e){
            e.printStackTrace();
@@ -446,4 +531,7 @@
    }
}