puzhibing
2023-07-07 0be58dbf7774fef98ddac83c3f454b49c6d5a6c1
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
package com.dsh.competition.controller;
 
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.competition.entity.Competition;
import com.dsh.competition.entity.UserCompetition;
import com.dsh.competition.feignclient.model.GetStuSourseList;
import com.dsh.competition.feignclient.model.PurchaseRecordVo;
import com.dsh.competition.model.CompetitionInfo;
import com.dsh.competition.model.CompetitionListVo;
import com.dsh.competition.service.CompetitionService;
import com.dsh.competition.service.UserCompetitionService;
import com.dsh.competition.util.ResultUtil;
import com.dsh.competition.util.TokenUtil;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author jqs
 * @since 2023-06-26
 */
@RestController
@RequestMapping("")
public class CompetitionController {
 
 
    @Autowired
    private CompetitionService cttService;
 
    @Autowired
    private UserCompetitionService ucttService;
 
    private final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm");
 
    @Autowired
    private TokenUtil tokenUtil;
 
 
 
 
    @PostMapping("/base/competition/getCompetitionsDetails")
    public List<PurchaseRecordVo> getStuSourseList(@RequestBody GetStuSourseList sourseList){
 
        List<PurchaseRecordVo> recordVos = new ArrayList<>();
 
        List<Competition> list = cttService.list(new QueryWrapper<Competition>()
                .eq("payType",3 )
                .eq("auditStatus",2));
        List<Integer> comIds = list.stream().map(Competition::getId).collect(Collectors.toList());
        List<UserCompetition> userCompetitions = ucttService.list(new QueryWrapper<UserCompetition>()
                .between("insertTime", sourseList.getStartTime(),sourseList.getEndTime() )
                .eq("userId", sourseList.getAppUserId())
                .in("competitionId",comIds ));
        if (userCompetitions.size() > 0){
            userCompetitions.forEach(coms ->{
                PurchaseRecordVo recordVo = new PurchaseRecordVo();
                recordVo.setPurchaseType("报名赛事");
                recordVo.setPurchaseTime(dateFormat.format(coms.getInsertTime()));
                Competition competition = cttService.getById(coms.getCompetitionId());
                recordVo.setPurchaseAmount("-"+competition.getPrice());
                recordVos.add(recordVo);
            });
        }
        return recordVos;
    }
 
 
 
 
 
    @ResponseBody
    @PostMapping("/base/competition/queryCompetitionList")
    @ApiOperation(value = "获取赛事列表", tags = {"APP-赛事活动列表"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "城市code", name = "cityCode", dataType = "string", required = false),
            @ApiImplicitParam(value = "搜索内容", name = "content", dataType = "string", required = false),
            @ApiImplicitParam(value = "报名条件(1=全部用户,2=仅限年度会员参与,3=仅限学员参与)", name = "registerCondition", dataType = "int", required = false),
            @ApiImplicitParam(value = "排序(1=正序,2=倒序)", name = "heat", dataType = "int", required = false),
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<List<CompetitionListVo>> queryCompetitionList(String cityCode, String content, Integer registerCondition, Integer heat){
        try {
            List<CompetitionListVo> competitionListVos = cttService.queryCompetitionList(cityCode, content, registerCondition, heat);
            return ResultUtil.success(competitionListVos);
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
 
 
 
    @ResponseBody
    @PostMapping("/base/competition/queryCompetitionInfo")
    @ApiOperation(value = "获取赛事详情", tags = {"APP-赛事活动列表"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "赛事id", name = "id", dataType = "int", required = true),
            @ApiImplicitParam(value = "经度", name = "lon", dataType = "string", required = false),
            @ApiImplicitParam(value = "纬度", name = "lat", dataType = "string", required = false),
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<CompetitionInfo> queryCompetitionInfo(Integer id, String lon, String lat){
        try {
            Integer uid = tokenUtil.getUserIdFormRedis();
            if(null == uid){
                return ResultUtil.tokenErr();
            }
            CompetitionInfo competitionInfo = cttService.queryCompetitionInfo(uid, id, lon, lat);
            return ResultUtil.success(competitionInfo);
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
 
 
 
 
//    public ResultUtil
}