From 544327319a112001b9147ef11050683aadeacd15 Mon Sep 17 00:00:00 2001 From: tianea <tianxyy80@gmail.com> Date: Sun, 10 Apr 2022 06:52:53 +0800 Subject: [PATCH] =?UTF-8?q?bug=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front/src/api/competition.js | 8 + front/src/api/member.js | 2 +- front/src/api/task.js | 4 +- front/src/components/index.vue | 6 +- front/src/router/index.js | 6 + front/src/views/competition/first.vue | 54 ++++++- front/src/views/competition/second.vue | 6 +- front/src/views/system/exam.vue | 18 ++- front/src/views/system/index.vue | 149 ++++++++++-------- front/src/views/system/portrait.vue | 101 ++++++++---- .../api/ApiCompetitionRankingController.java | 14 +- .../api/ApiCompetitionTaskController.java | 10 +- .../api/CompetitionExamController.java | 7 +- .../api/CompetitionIndexControll.java | 5 + .../competitiion/api/biz/ApiRankingBiz.java | 53 ++++++- .../api/biz/CompetitionExamBiz.java | 24 +-- .../competitiion/job/CompetitionJob.java | 6 +- .../competitiion/job/biz/RankingBiz.java | 3 +- .../competitiion/pc/biz/PCCompetitionBiz.java | 41 ++++- .../platform/competitiion/pc/biz/TeamBiz.java | 4 +- .../pc/biz/TeamTemplateImportBiz.java | 4 + .../competitiion/pc/vo/CompetitionVO.java | 1 + .../tz/platform/entity/CompetitionMember.java | 2 + .../java/com/tz/platform/entity/Ranking.java | 5 + .../com/tz/platform/juejin/JueJinApi.java | 4 +- .../repository/CompetitionMemberDao.java | 3 + .../repository/CompetitionTeamDao.java | 4 + .../src/main/resources/bootstrap.yml | 2 +- .../platform/pc/biz/PCMuiltQuestionBiz.java | 6 + .../tz/platform/pc/vo/MuiltQuestionVO.java | 4 +- .../com/tz/platform/pc/vo/QuestionVO.java | 4 +- .../src/main/resources/bootstrap.yml | 2 +- .../tz/platform/image/pc/biz/PCImageBiz.java | 3 +- .../com/tz/platform/repository/UserDao.java | 9 ++ .../user/pc/PcUserInfoController.java | 5 + .../platform/user/pc/biz/PcUserInfoBiz.java | 12 ++ .../src/main/resources/bootstrap.yml | 2 +- 37 files changed, 446 insertions(+), 147 deletions(-) diff --git a/front/src/api/competition.js b/front/src/api/competition.js index 29885ff..4bf56bc 100644 --- a/front/src/api/competition.js +++ b/front/src/api/competition.js @@ -14,6 +14,14 @@ export function listQuestion(compId,stageId){ params: { compId: compId,stageId: stageId} }) } +export function listQuestion2(compId,stageId){ + return request({ + url: authUrl+'exam/list2', + method: 'get', + params: { compId: compId,stageId: stageId} + }) +} + export function submit(compId,stageId,qList){ return request({ url: authUrl+ "exam/submit", diff --git a/front/src/api/member.js b/front/src/api/member.js index ac96c5c..8f0338a 100644 --- a/front/src/api/member.js +++ b/front/src/api/member.js @@ -24,7 +24,7 @@ export function getMemberInfo(compId,stageId){ export function getPaper(compId,stageId){ return request({ - url: authUrl+"paper", + url: authUrl+"/paper", method: 'get', params: { compId: compId, diff --git a/front/src/api/task.js b/front/src/api/task.js index 4b2afdc..ada1a81 100644 --- a/front/src/api/task.js +++ b/front/src/api/task.js @@ -2,7 +2,7 @@ import request from '@/utils/request' let baseUrl = "auth/competition/task" export function list(compId){ return request({ - url: authUrl+"list", + url: baseUrl+"/list", method: 'get', params: { compId: compId @@ -12,7 +12,7 @@ export function list(compId){ export function get(compId,stageId){ return request({ - url: authUrl+"list", + url: baseUrl+"/get", method: 'get', params: { compId: compId, diff --git a/front/src/components/index.vue b/front/src/components/index.vue index d64ca8c..f7326a6 100644 --- a/front/src/components/index.vue +++ b/front/src/components/index.vue @@ -253,9 +253,9 @@ export default { listDone(){ competitionApi.getList(this.page2.pageNo,this.page2.type).then(res=>{ if(res.code == 200){ - for(var i= 0;i<res.data.list.length;i+=3) { - let index = i/3 - this.list2[index] = res.data.list.slice(i,i+3) + for(var i= 0;i<res.data.list.length;i+=2) { + let index = i/2 + this.list2[index] = res.data.list.slice(i,i+2) } } }) diff --git a/front/src/router/index.js b/front/src/router/index.js index 8e12134..e0cfc5e 100644 --- a/front/src/router/index.js +++ b/front/src/router/index.js @@ -4,6 +4,7 @@ import Index from '@/components/index' import CompetitionIndex from '@/views/competition/index' import Login from '@/views/login/index' import Exam from '@/views/system/exam' +import ExamResult from '@/views/system/examresult' import Member from '@/views/member/index' import System from '@/views/system/index' import {getInfo} from '@/utils/auth' @@ -33,6 +34,11 @@ let router = new Router({ name: 'Exam', component: Exam }, + { + path: '/examrs', + name: 'ExamResult', + component: ExamResult + }, { path: '/member', name: 'Member', diff --git a/front/src/views/competition/first.vue b/front/src/views/competition/first.vue index 04cb568..b85cc67 100644 --- a/front/src/views/competition/first.vue +++ b/front/src/views/competition/first.vue @@ -49,10 +49,10 @@ <div @click="gotPage(1,item.id)">进入答题></div> </div> <div> - <b-img fluid src="/static/image/img1_580x260.jpg"/> + <b-img fluid :src="getThumbnail(item.id,1)"/> </div> <div class="stage-time"> - 竞赛时间:<span>2022-04-03 18:00</span>--<span>2022-05-06 18:00</span> + 竞赛时间:<span>{{getStartTime(item.id,1)}}</span>--<span>{{getEndTime(item.id,1)}}</span> </div> </div> <div class="stage-box"> @@ -61,10 +61,10 @@ <div @click="gotPage(2,item.id)">进入实操></div> </div> <div> - <b-img fluid src="/static/image/img4_580x260.jpg"/> + <b-img fluid :src="getThumbnail(item.id,2)"/> </div> <div class="stage-time"> - 竞赛时间:<span>2022-04-03 18:00</span>--<span>2022-05-06 18:00</span> + 竞赛时间:<span>{{getStartTime(item.id,3)}}</span>--<span>{{getEndTime(item.id,1)}}</span> </div> </div> </div> @@ -72,10 +72,12 @@ </div> </template> <script> +import * as taskApi from '@/api/task' export default { data(){ return { compId: 0, + taskList: [] } }, props:{ @@ -87,6 +89,11 @@ export default { created(){ if(this.$route.query){ this.compId = this.$route.query.id + taskApi.list(this.compId).then(res=>{ + if(res.code == 200){ + this.taskList = res.data.list + } + }) } }, methods:{ @@ -102,6 +109,45 @@ export default { query: { id: this.compId,stageId: id} }) } + }, + getThumbnail(stageId,type){ + let stage = this.getStage(stageId) + if(stage){ + if(type == 1){ + return stage.examLogo + }else{ + return stage.operationLogo + } + } + return '/static/image/img1_580x260.jpg'; + }, + getStartTime(stageId,type){ + let stage = this.getStage(stageId) + if(stage){ + if(type == 1){ + return new Date(stage.examStartTime).Format('yyyy-MM-dd hh:mm:ss') + }else{ + return new Date(stage.operationStartTime).Format('yyyy-MM-dd hh:mm:ss') + } + } + return ''; + }, + getEndTime(stageId,type){ + let stage = this.getStage(stageId) + if(stage){ + if(type == 1){ + return new Date(stage.examEndTime).Format('yyyy-MM-dd hh:mm:ss') + }else{ + return new Date(stage.operationEndTime).Format('yyyy-MM-dd hh:mm:ss') + } + } + return ''; + }, + getStage(stageId){ + let rs = this.taskList.filter(task=> task.stageId == stageId) + if(!!rs&&rs.length>0){ + return rs[0] + } } } diff --git a/front/src/views/competition/second.vue b/front/src/views/competition/second.vue index 4cf751f..164f8c3 100644 --- a/front/src/views/competition/second.vue +++ b/front/src/views/competition/second.vue @@ -50,7 +50,7 @@ <div> <b-img src="/static/image/icon4_105x105.png" /> <div>个人总资产</div> - <div class="tz-font tz-font-purple">{{memberInfo.totalFounds}}万</div> + <div class="tz-font tz-font-purple">{{memberInfo.totalFounds/10000}}万</div> </div> </b-col> </b-row> @@ -304,8 +304,8 @@ export default { title = '团队收益率'; } let date = []; - let data = [Math.random() * 300]; - let data2 = [Math.random() * 300] + let data = []; + let data2 = [] for (let i = 0; i < rankList.length; i++) { let tmp = rankList[i] var now = new Date(tmp.updateTime); diff --git a/front/src/views/system/exam.vue b/front/src/views/system/exam.vue index 292ea02..88e8789 100644 --- a/front/src/views/system/exam.vue +++ b/front/src/views/system/exam.vue @@ -203,7 +203,8 @@ export default { doneList:[], markList:[], current: 1, - } + }, + memberInfo: null } }, methods:{ @@ -369,6 +370,7 @@ export default { this.loadQuestion() }else{ alert(res.msg) + } }) }, @@ -419,6 +421,20 @@ export default { this.competition = res.data } }) + memberApi.getMemberInfo(this.compId,this.stageId).then(res=>{ + if(res.code == 200){ + this.memberInfo = res.data + if(!!this.memberInfo.examScore&&this.memberInfo.examScore>=0){ + this.$router.push({ + path: '/examrs', + query: { + id: this.compId, + stageId: this.stageId + } + }) + } + } + }) } this.userInfo = getInfo() // this.loadQuestion() diff --git a/front/src/views/system/index.vue b/front/src/views/system/index.vue index 50cdb19..e4ab241 100644 --- a/front/src/views/system/index.vue +++ b/front/src/views/system/index.vue @@ -14,7 +14,7 @@ <span><b-img src="/static/image/system_icon2.png" /></span> <span>仿真交易</span> </div> - <div @click=" tabId = 2" :class="tabId == 2 ?'tz-selected':''"> + <div @click=" changeTab(2)" :class="tabId == 2 ?'tz-selected':''"> <span><b-img src="/static/image/system_icon3.png" /></span> <span>排行榜</span> </div> @@ -78,7 +78,7 @@ <div class="tz-tab"> <div> <b-img @click="sim" src="/static/image/trade_sim.png" /> - <b-img @click=" tabId = 2" src="/static/image/ranking_tab.png" /> + <b-img @click=" changeTab(2)" src="/static/image/ranking_tab.png" /> <b-img @click="jixiao" src="/static/image/jixiaofenxi.png" /> <b-img @click=" tabId = 4" src="/static/image/xingweihuaxiang.png" /> </div> @@ -116,16 +116,16 @@ <div class="tz-filter"> <div> <span>日期</span> - <b-datepicker placeholder="" /> + <b-datepicker v-model="rankQuery.date" /> <span> 检索</span> - <b-input placeholder="用户名/所属院校/所属团队" /> - <b-button class="tz-button">查询</b-button> + <b-input v-model="rankQuery.keyword" placeholder="用户名/所属院校/所属团队" /> + <b-button class="tz-button" @click="rankSearch">查询</b-button> <b-button class="tz-button">导出</b-button> </div> - <div class="online-info"> + <!-- <div class="online-info"> <span>注册人数:1090</span> <span>在线人数: 687</span> - </div> + </div> --> </div> <div> <div class="tz-table-header"> @@ -138,56 +138,56 @@ <div> 属属团队 </div> - <div class="tz-tabel-bg-blue"> + <div class="tz-tabel-bg-blue" @click="rankSort('score')"> 操作分 <div class="tz-inline-block"> <div class="triangle_up"></div> <div class="triangle_down"></div> </div> </div> - <div> + <div @click="rankSort('rank')" > 排名 <div class="tz-inline-block"> <div class="triangle_up"></div> <div class="triangle_down"></div> </div> </div> - <div> + <div @click="rankSort('found')"> 期初资金 <div class="tz-inline-block"> <div class="triangle_up"></div> <div class="triangle_down"></div> </div> </div> - <div> + <div @click="rankSort('nav')"> 总资产 <div class="tz-inline-block"> <div class="triangle_up"></div> <div class="triangle_down"></div> </div> </div> - <div> + <div @click="rankSort('avilable')"> 可用资金 <div class="tz-inline-block"> <div class="triangle_up"></div> <div class="triangle_down"></div> </div> </div> - <div class="tz-tabel-bg-blue"> + <div class="tz-tabel-bg-blue" @click="rankSort('market')"> 市值 <div class="tz-inline-block"> <div class="triangle_up"></div> <div class="triangle_down"></div> </div> </div> - <div> + <div @click="rankSort('profit')"> 累计盈亏 <div class="tz-inline-block"> <div class="triangle_up"></div> <div class="triangle_down"></div> </div> </div> - <div class="tz-tabel-bg-blue"> + <div class="tz-tabel-bg-blue" @click="rankSort('score')"> 浮动盈亏 <div class="tz-inline-block"> <div class="triangle_up"></div> @@ -271,24 +271,24 @@ <div>{{ item.name}}</div> <div class="tz-table-color-blue">{{ item.school}}</div> <div>{{ item.team}}</div> - <div class="tz-table-color-blue">{{ item.score}}</div> - <div>{{ item.ranking}}</div> + <div class="tz-table-color-blue">{{ numberFixed(item.financeScore)}}</div> + <div>{{ item.personalRank}}</div> <div>{{ item.founds}}</div> - <div>{{ item.nav}}</div> - <div>{{ item.avilable}}</div> - <div class="tz-table-color-blue">{{ item.marketValue}}</div> - <div>{{ item.totalRatio}}</div> - <div class="tz-table-color-blue">{{ item.overRatio}}</div> - <div>{{ item.commsion}}</div> - <div class="tz-table-color-blue">{{ item.sumRatio}}</div> - <div>{{ item.baseRatio}}</div> - <div>{{ item.yearRatio}}</div> - <div>{{ item.maxReturn}}</div> - <div>{{ item.kammaRatio}}</div> - <div>{{ item.sharpRatio}}</div> + <div>{{ numberFixed(item.nav)}}</div> + <div>{{ numberFixed(item.available)}}</div> + <div class="tz-table-color-blue">{{ numberFixed(item.marketValue)}}</div> + <div>{{ numberFixed(item.profitLoss)}}</div> + <div class="tz-table-color-blue">{{ numberFixed(item.fpnl)}}</div> + <div>{{ numberFixed(item.cumCommission)}}</div> + <div class="tz-table-color-blue">{{ numberFixed(item.pnlRatio)}}</div> + <div>{{ numberFixed(item.baseRatio)}}</div> + <div>{{ numberFixed(item.pnlRatioAnnual)}}</div> + <div>{{ numberFixed(item.maxDrawdown)}}</div> + <div>{{ numberFixed(item.calmarRatio)}}</div> + <div>{{ numberFixed(item.sharpRatio)}}</div> <div>{{ item.openCount}}</div> <div>{{ item.closeCount}}</div> - <div>{{ item.winRatio}}</div> + <div>{{ numberFixed(item.winRatio)}}</div> </div> </div> </div> @@ -311,7 +311,7 @@ </div> </div> <div v-if="tabId == 4"> - <tz-portrait /> + <tz-portrait :competition="competition" :currentStage="currentStage" :memberInfo="memberInfo" :compId="compId" :stageId="stageId" /> </div> <div v-if="tabId == 5"> @@ -328,6 +328,7 @@ import * as echarts from 'echarts' import { getInfo } from '@/utils/auth' import * as competitionApi from '@/api/competition' import * as memberApi from '@/api/member' +import * as rankingApi from '@/api/ranking' export default { components:{ 'tz-footer': Footer, @@ -353,6 +354,19 @@ export default { }, changeTab(id){ this.tabId = id + console.log(this.tabId ) + if(id==2){ + this.loadRankinig2() + } + }, + numberFixed(num){ + if(typeof(num) == 'number'){ + return num.toFixed(4) + } + return num + }, + rankSearch(){ + this.loadRankinig2() }, loadData(){ memberApi.getMemberInfo(this.compId, this.stageId).then(res=>{ @@ -361,18 +375,46 @@ export default { } }) }, - drawRanking(){ + loadRankinig2(){ + this.rankQuery.compId = this.compId + this.rankQuery.stageId = this.stageId + rankingApi.list(this.rankQuery).then(res=>{ + if(res.code == 200 ){ + this.list = res.data.list + } + }) + }, + rankSort(key){ + + }, + loadRankinig(){ + rankingApi.listAll(this.compId,this.stageId).then(res=>{ + if(res.code == 200){ + this.drawRanking(res.data.list) + } + }) + }, + drawRanking(rankList){ + + let xData = [] + let yData = [] + + rankList.forEach(item=>{ + xData.push(item.updateTime) + yData.push(item.personalRank) + }) + let option = { xAxis: { type: 'category', - data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + data: xData }, yAxis: { type: 'value' }, series: [ { - data: [150, 230, 224, 218, 135, 147, 260], + data: yData, type: 'line', color:['#7c89ff'] } @@ -400,7 +442,16 @@ export default { compId: 0 , stageId: 0, currentStage: null, - memberInfo: null + memberInfo: null, + rankQuery:{ + pageNo: 1, + date: '', + keyword: '', + sort: '', + direct: 1, + compId: 0, + stageId: 0 + } } }, created(){ @@ -423,37 +474,11 @@ export default { console.log("groupData:",res) }) } - - for(var i = 0 ;i<50;i++){ - this.list.push({ - name: '王先生', - school: '天择金融大学', - team: '王老师团队', - score: 98, - ranking: (i+1), - founds: 1000000, - nav: 100000000, - avilable: 5000.00, - marketValue: 10000000000, - totalRatio: '10%', - overRatio: '90%', - commsion: 10000, - sumRatio: '150%', - baseRatio: '10%', - yearRatio: '12%', - maxReturn: 10, - kammaRatio: '10:5', - sharpRatio: '10:6', - openCount: 50, - closeCount: 10, - winRatio: '5%' - }) - } }, updated(){ if(this.tabId == 0 ){ this.$nextTick(()=>{ - this.drawRanking() + this.loadRankinig() }) } } diff --git a/front/src/views/system/portrait.vue b/front/src/views/system/portrait.vue index 4bebb32..114a1fd 100644 --- a/front/src/views/system/portrait.vue +++ b/front/src/views/system/portrait.vue @@ -1,7 +1,7 @@ <template> <div> <div class="comp-info"> - <div class="tz-bold"> >>2020年全国高职财经大数据分析大赛--初赛--证券投资赛项 </div> + <div class="tz-bold"> >>{{ competition.name }}--{{ currentStage.name }}--证券投资赛项 </div> <div class="member-info"> <div> <b-img src="/static/image/system_icon11.png"/> @@ -133,7 +133,30 @@ <script> import * as echarts from 'echarts'; import { getInfo } from '@/utils/auth' +import * as rankApi from '@/api/ranking' export default { + props:{ + compId:{ + type: Number, + default: 0 + }, + stageId:{ + type: Number, + default: 0 + }, + competition:{ + type: Object, + default: null + }, + currentStage:{ + type:Object, + default: null + }, + memberInfo:{ + type:Object, + default: null + } + }, data(){ return { userInfo: null, @@ -213,36 +236,50 @@ export default { this.positionCharts.setOption(positionOption,true) }, drawProfit(){ - let option = { - xAxis: { - type: 'category', - boundaryGap: false, - data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] - }, - yAxis: { - type: 'value' - }, - series: [ - { - data: [820, 932, 901, 934, 1290, 1330, 1320], - type: 'line', - areaStyle: { - color: "#daf7f0" - }, - }, - { - data: [400, 432, 401, 534, 1090, 1030, 1020], - type: 'line', - areaStyle: { - color: "#daf7f0" - }, + rankApi.listWeek(this.compId,this.stageId).then(res=>{ + if(res.code == 200){ + let xData = [] + let yData = [] + let yData2= [] + for(let i = 0;i<res.data.list.length;i++){ + let item = res.data.list[i] + xData.push(item.updateTime) + yData.push(item.baseRatio) + yData2.push(item.pnlRatio) } - ] - } - if(!this.profitCharts){ - this.profitCharts = echarts.init(document.getElementById('profit')) - } - this.profitCharts.setOption(option) + let option = { + xAxis: { + type: 'category', + boundaryGap: false, + data: xData + }, + yAxis: { + type: 'value' + }, + series: [ + { + data: yData, + type: 'line', + areaStyle: { + color: "#daf7f0" + }, + }, + { + data: yData2, + type: 'line', + areaStyle: { + color: "#daf7f0" + }, + } + ] + } + if(!this.profitCharts){ + this.profitCharts = echarts.init(document.getElementById('profit')) + } + this.profitCharts.setOption(option) + } + }) + }, drawHeavy(){ @@ -261,8 +298,8 @@ export default { type: 'pie', radius: '50%', data: [ - { value: 1048, name: '当前仓位' }, - { value: 735, name: '可用资金'} + { value: this.memberInfo.totalFounds, name: '当前仓位' }, + { value: this.memberInfo.availableFounds, name: '可用资金'} ], emphasis: { itemStyle: { diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/ApiCompetitionRankingController.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/ApiCompetitionRankingController.java index 75b1233..a037b94 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/ApiCompetitionRankingController.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/ApiCompetitionRankingController.java @@ -18,12 +18,22 @@ public class ApiCompetitionRankingController extends BaseController { private ApiRankingBiz rankingBiz; @GetMapping(value = "list") - public Result<ListRankingDTO> listRank(@RequestParam("compId") Long cmpId, @RequestParam("stageId") Integer stageId,@RequestParam("orderBy") String sort,@RequestParam("direct") Integer direct,String date){ - return rankingBiz.list(cmpId,stageId,sort,direct,date); + public Result<ListRankingDTO> listRank(@RequestParam("pageNo") Integer pageNo,@RequestParam("compId") Long cmpId, @RequestParam("stageId") Integer stageId,@RequestParam("sort") String sort,@RequestParam("direct") Integer direct,@RequestParam("date") String date,@RequestParam("keyword") String keyword){ + return rankingBiz.list(cmpId,stageId,sort,direct,date,keyword); } @GetMapping(value = "listAll") public Result<ListRankingDTO> listAll(@RequestParam("compId") Long cmpId, @RequestParam("stageId") Integer stageId){ return rankingBiz.listAll(cmpId,stageId,getUserNo()); } + + @GetMapping(value = "listWeek") + public Result<ListRankingDTO> listWeek(@RequestParam("compId") Long cmpId, @RequestParam("stageId") Integer stageId){ + return rankingBiz.listWeek(cmpId,stageId,getUserNo()); + } + + @GetMapping(value = "memberRank") + public Result<ListRankingDTO> listMemberRank(@RequestParam("pageNo") Integer pageNo,@RequestParam("compId") Long cmpId, @RequestParam("stageId") Integer stageId,@RequestParam("sort") String sort,@RequestParam("direct") Integer direct,@RequestParam("keyword") String keyword){ + return rankingBiz.listMemberRank(); + } } diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/ApiCompetitionTaskController.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/ApiCompetitionTaskController.java index 50af977..3991886 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/ApiCompetitionTaskController.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/ApiCompetitionTaskController.java @@ -6,22 +6,24 @@ import com.tz.platform.competitiion.api.dto.CompetitionTaskDTO; import com.tz.platform.competitiion.api.dto.ListCompetitionTaskDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; -@Controller -@RequestMapping(value = "auth/competition/task") +@RestController +@RequestMapping(value = "/auth/competition/task") public class ApiCompetitionTaskController { @Autowired private CompetitionTaskBiz taskBiz; - @RequestMapping(value = "list") + @GetMapping(value = "list") public Result<ListCompetitionTaskDTO> list(@RequestParam("compId") Long compId){ return taskBiz.list(compId); } - @RequestMapping(value = "get") + @GetMapping(value = "get") public Result<CompetitionTaskDTO> get(@RequestParam("compId") Long compId, @RequestParam("stageId") Integer stageId){ return taskBiz.get(compId,stageId); } diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/CompetitionExamController.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/CompetitionExamController.java index 4aa9fc3..88e6500 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/CompetitionExamController.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/CompetitionExamController.java @@ -24,7 +24,12 @@ public class CompetitionExamController extends BaseController { @GetMapping(value = "list") public List<QuestionVo> getQusetion(@RequestParam("compId") Long compId, @RequestParam("stageId") Integer stageId ){ - return examBiz.getExamQuestion(compId,stageId,getUserNo()); + return examBiz.getExamQuestion(compId,stageId,getUserNo(),0); + } + + @GetMapping(value = "list2") + public List<QuestionVo> getQusetion2(@RequestParam("compId") Long compId, @RequestParam("stageId") Integer stageId ){ + return examBiz.getExamQuestion(compId,stageId,getUserNo(),1); } @PostMapping(value = "submit") diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/CompetitionIndexControll.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/CompetitionIndexControll.java index dbc0015..fc930f9 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/CompetitionIndexControll.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/CompetitionIndexControll.java @@ -43,6 +43,11 @@ public class CompetitionIndexControll extends BaseController { return competitionIndexBiz.listRanKing(pageNo,pageSize,date,key,compId,stageId); } + @GetMapping(value = "ranking") + public Result<ListRankingDTO> MemberRanking(@RequestParam("pageNO") Integer pageNo,@RequestParam("pageSize") Integer pageSize,@RequestParam("key") String key,@RequestParam("compId") Long compId, @RequestParam("stageId")Integer stageId){ + return Result.error(""); + } + @GetMapping(value = "group") public Result<ListGroupDTO> getGroup(@RequestParam("compId") Long compId,@RequestParam("stageId") Integer stageId){ return competitionIndexBiz.getGroup(compId); diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/biz/ApiRankingBiz.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/biz/ApiRankingBiz.java index bc7ad73..6178489 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/biz/ApiRankingBiz.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/biz/ApiRankingBiz.java @@ -5,8 +5,10 @@ import com.tz.platform.common.core.tools.BeanUtils; import com.tz.platform.competitiion.api.dto.ListRankingDTO; import com.tz.platform.competitiion.api.dto.RankingDTO; import com.tz.platform.entity.Competition; +import com.tz.platform.entity.CompetitionMember; import com.tz.platform.entity.Ranking; import com.tz.platform.repository.CompetitionDao; +import com.tz.platform.repository.CompetitionMemberDao; import com.tz.platform.repository.RankingDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; @@ -16,6 +18,7 @@ import org.springframework.util.StringUtils; import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; @Component public class ApiRankingBiz @@ -30,7 +33,10 @@ public class ApiRankingBiz @Autowired private RankingDao rankingDao; - public Result<ListRankingDTO> list(Long compId,Integer stageId,String sort,Integer direct,String date){ + @Autowired + private CompetitionMemberDao memberDao; + + public Result<ListRankingDTO> list(Long compId,Integer stageId,String sort,Integer direct,String date,String keyword){ Competition competition = competitionDao.getById(compId); @@ -51,6 +57,23 @@ public class ApiRankingBiz rankingList = (List<Ranking>) rankList; } + if(StringUtils.hasText(keyword)){ + rankingList = rankingList.stream().filter(ranking -> { + boolean rs = false; + if(ranking.getName()!= null&&ranking.getName().contains(keyword)){ + rs = true; + } + if(ranking.getSchool()!=null&&ranking.getSchool().contains(keyword)){ + rs = true; + } + + if(ranking.getTeamName()!=null&&ranking.getTeamName().contains(keyword)){ + rs = true; + } + return rs; + }).collect(Collectors.toList()); + } + Collections.sort(rankingList, (o1, o2) -> { if(StringUtils.isEmpty(sort)){ Integer r1 = o1.getPersonalRank(); @@ -96,4 +119,32 @@ public class ApiRankingBiz dto.setList(rankingDTOList); return Result.success(dto); } + + public Result<ListRankingDTO> listWeek(Long compId,Integer stageId,Long userNo){ + String key = "rankList_"+compId+"_"+stageId+"_"+userNo; + Object rankList = template.opsForValue().get(key); + List<Ranking> rankingList = null; + if(rankList == null){ + rankingList = rankingDao.findAllByCompIdAndStageIdAndUserNo(compId,stageId,userNo); + + if(rankingList!=null&&rankingList.size()>0){ + template.opsForValue().set(key,rankingList,30, TimeUnit.MINUTES); + } + }else{ + rankingList = (List<Ranking>) rankList; + } + + ListRankingDTO dto = new ListRankingDTO(); + if(rankingList.size()>7){ + rankingList = rankingList.subList(rankingList.size()-7,rankingList.size()-1); + } + List<RankingDTO> rankingDTOList = BeanUtils.copyProperties(rankingList,RankingDTO.class); + dto.setTotal(rankingDTOList.size()); + dto.setList(rankingDTOList); + return Result.success(dto); + } + + public Result<ListRankingDTO> listMemberRank(){ + return Result.error("失败"); + } } diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/biz/CompetitionExamBiz.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/biz/CompetitionExamBiz.java index a8e6338..ced138e 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/biz/CompetitionExamBiz.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/api/biz/CompetitionExamBiz.java @@ -53,7 +53,7 @@ public class CompetitionExamBiz { @Autowired private RedisTemplate<String,Object> template; - public List<QuestionVo> getExamQuestion(Long compId,Integer stageId,Long userId){ + public List<QuestionVo> getExamQuestion(Long compId,Integer stageId,Long userId,Integer type ){ UserVo currentUser = feignUser.getByUserNo(userId); String key = "questionList_"+compId+"_"+stageId+"_"+currentUser.getLevelId(); Object questListObj = template.opsForValue().get(key); @@ -84,16 +84,18 @@ public class CompetitionExamBiz { qo.setIds(ids); questionVos = feignExam.listQusetion(qo); } + if(type == 0){ + questionVos.forEach(questionVo -> { + if(questionVo.getType() == 0){ + questionVo.setAnswerId(new ArrayList<>()); + }else{ + questionVo.getChildren().forEach(child->{ + child.setAnswerId(new ArrayList<>()); + }); + } + }); + } - questionVos.forEach(questionVo -> { - if(questionVo.getType() == 0){ - questionVo.setAnswerId(new ArrayList<>()); - }else{ - questionVo.getChildren().forEach(child->{ - child.setAnswerId(new ArrayList<>()); - }); - } - }); return questionVos; } @@ -153,7 +155,7 @@ public class CompetitionExamBiz { } SubmitResultDTO dto = new SubmitResultDTO(); - List<QuestionVo> questionVoList = getExamQuestion(vo.getCompId(),vo.getStageId(),vo.getUserNo()); + List<QuestionVo> questionVoList = getExamQuestion(vo.getCompId(),vo.getStageId(),vo.getUserNo(),1); Double score = computeScore(questionVoList,vo.getQList()); competitionMemberDao.updateScore(vo.getUserNo(),vo.getStageId(),vo.getCompId(),score); competitionMemberDao.updateExamEndTimeAndCostTime(vo.getUserNo(),vo.getStageId(),vo.getCompId(),now,costTime); diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/job/CompetitionJob.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/job/CompetitionJob.java index 7faeb39..d6d9a7c 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/job/CompetitionJob.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/job/CompetitionJob.java @@ -55,10 +55,10 @@ public class CompetitionJob { } /** - * 每天零晨2点执行 + * 每分钟执行 */ -// @Scheduled(cron = "0 0 2 1 * ?") - @Scheduled(cron = "5 * * * * ?") + @Scheduled(cron = "*/60 * * * * ?") +// @Scheduled(cron = "5 * * * * ?") public void fetchRanking(){ String jobName = "rankingJob"; boolean lock = lock(jobName,ms); diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/job/biz/RankingBiz.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/job/biz/RankingBiz.java index 92675cc..21bf3fd 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/job/biz/RankingBiz.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/job/biz/RankingBiz.java @@ -101,6 +101,7 @@ public class RankingBiz { member.setHighestRatio(maxRatio); } Ranking ranking = new Ranking(); + ranking.setInitFounds(member.getInitFounds()); ranking.setUserNo(member.getUserId()); ranking.setCompId(competition.getId()); ranking.setName(member.getName()); @@ -206,7 +207,7 @@ public class RankingBiz { Map<Integer,List<Ranking>> map = rankingList.stream().collect(Collectors.groupingBy(Ranking::getTeamId)); map.forEach((k,v)->{ Double teamRatio = v.stream().mapToDouble((r)-> { - Double t = r.getProfitLoss(); + Double t = r.getPnlRatio(); if(t == null){ return 0D; } diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/PCCompetitionBiz.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/PCCompetitionBiz.java index 291da96..e43af5a 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/PCCompetitionBiz.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/PCCompetitionBiz.java @@ -16,7 +16,6 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.RequestBody; import java.util.Date; @@ -33,8 +32,29 @@ public class PCCompetitionBiz { if(vo.getType() == null||vo.getType()<=0){ return Result.error("大赛类型不能为空"); } - Competition competition = new Competition(); - BeanUtils.copyProperties(vo,competition); + Competition competition = null; + if(vo.getId() == null){ + competition = new Competition(); + BeanUtils.copyProperties(vo,competition); + competition.setStatus(-1); + }else{ + competition = competitionDao.getById(vo.getId()); + competition.setName(vo.getName()); + competition.setSponsor(vo.getSponsor()); + competition.setSupporter(vo.getSupporter()); + competition.setTeamMinCount(vo.getTeamMinCount()); + competition.setTeamMaxCount(vo.getTeamMaxCount()); + competition.setStageList(vo.getStageList()); + competition.setBannerList(vo.getBannerList()); + competition.setThumbnail(vo.getThumbnail()); + competition.setSummary(vo.getSummary()); + competition.setRule(vo.getRule()); + competition.setPrize(vo.getPrize()); + competition.setNews(vo.getNews()); + competition.setSchoolNews(vo.getSchoolNews()); + } + + Date startTime=competition.getStageList().get(0).getStartTime(); Date endTime =competition.getStageList().get(competition.getStageList().size()-1).getEndTime(); Stage signupStage = competition.getStageList().stream().filter(stage -> stage.isEnableSignUp()).findFirst().orElse(null); @@ -59,16 +79,27 @@ public class PCCompetitionBiz { competition.setEnableSignup(false); } - competition.setStartTime(startTime); competition.setEndTime(endTime); competition.setSignupStartTime(signUpStartTime); competition.setSignupEndTime(signupEndTime); - competition.setStatus(-1); + if(competition.getId() == null){ competition.setCreateTime(new Date()); } + competition.getNews().forEach(competitionNews -> { + if(competitionNews.getCreateTime() == null){ + competitionNews.setCreateTime(System.currentTimeMillis()); + } + }); + + competition.getSchoolNews().forEach(competitionNews -> { + if(competitionNews.getCreateTime() == null){ + competitionNews.setCreateTime(System.currentTimeMillis()); + } + } ); + competition =competitionDao.save(competition); return Result.success(competition.getId()); } diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamBiz.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamBiz.java index 636d10d..a0b500b 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamBiz.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamBiz.java @@ -113,6 +113,8 @@ public class TeamBiz { member.setTeacher(team.getTeacherName()); member.setTeamName(team.getTeamName()); member.setLevelId(m.getLevelId()); + member.setProvinceId(m.getProvinceId()); + member.setRegionId(m.getRegionId()); memberList.add(member); }); @@ -151,7 +153,7 @@ public class TeamBiz { @Transactional public Result<String> addTeam(AddTeamVO vo){ - CompetitionTeam teamT = teamDao.getByTeamName(vo.getTeamName()); + CompetitionTeam teamT = teamDao.getByTeamNameAndCompetitionIdAndStageId(vo.getTeamName(),vo.getCompetitionId(),vo.getStageId()); if(teamT !=null){ return Result.error("团队名称已存在"); } diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamTemplateImportBiz.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamTemplateImportBiz.java index 45e398b..04eed63 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamTemplateImportBiz.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamTemplateImportBiz.java @@ -117,6 +117,8 @@ public class TeamTemplateImportBiz { member.setTeamName(teamInfo.getTeamName()); member.setLevelId(info.getLevelId()); member.setTeacher(team.getTeacher()); + member.setProvinceId(member.getProvinceId()); + member.setRegionId(member.getRegionId()); memberList.add(member); } }); @@ -195,6 +197,8 @@ public class TeamTemplateImportBiz { member.setTeamName("个人赛"); member.setLevelId(info.getLevelId()); member.setTeacher(m.getTeacher()); + member.setProvinceId(info.getProvinceId()); + member.setRegionId(info.getRegionId()); memberList.add(member); }); memberDao.saveAll(memberList); diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/CompetitionVO.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/CompetitionVO.java index 8b642a1..e5e9b2e 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/CompetitionVO.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/CompetitionVO.java @@ -22,6 +22,7 @@ public class CompetitionVO implements Serializable { private List<Rotation> bannerList; private String thumbnail; private String summary; + private Integer status; private String rule; private String prize; private List<CompetitionNews> news; diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/entity/CompetitionMember.java b/tz/competition/competition-service/src/main/java/com/tz/platform/entity/CompetitionMember.java index 57ccf85..8ece63d 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/entity/CompetitionMember.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/entity/CompetitionMember.java @@ -38,6 +38,8 @@ public class CompetitionMember { private Date examEndTime; private Double examCostTime; private Integer levelId; + private Integer provinceId; + private Integer regionId; @Column(columnDefinition = "double(11,3) default '0.00'") private Double initFounds; @Column(columnDefinition = "double(11,3) default '0.00'") diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/entity/Ranking.java b/tz/competition/competition-service/src/main/java/com/tz/platform/entity/Ranking.java index 34544aa..2e4cbfa 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/entity/Ranking.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/entity/Ranking.java @@ -15,6 +15,11 @@ public class Ranking { private String accountId; + + /** + * 初始资金 + */ + private Double initFounds; /** * 总资产 */ diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/juejin/JueJinApi.java b/tz/competition/competition-service/src/main/java/com/tz/platform/juejin/JueJinApi.java index cd55fe6..6c9ddcf 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/juejin/JueJinApi.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/juejin/JueJinApi.java @@ -206,9 +206,9 @@ public class JueJinApi { // api.deleteAccount("4811913f-9dba-11ec-89b3-00163e0e6ad0"); // api.getCashInfo("2e41a913-9dc1-11ec-89b3-00163e0e6ad0"); // api.test(); - api.createReport(accountId,"report"+ System.currentTimeMillis()); +// api.createReport(accountId,"report"+ System.currentTimeMillis()); // api.getCashInfo(accountId); - api.getReport("14892159"); + api.getReport("16898647"); // api.getStockInfo("SHSE.600547,SHSE.603160"); // api.getProfit("2022-03-11","2022-03-15"); // api.getHeavy(accountId,start,end); diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionMemberDao.java b/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionMemberDao.java index 7797d60..f2ad5bd 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionMemberDao.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionMemberDao.java @@ -9,6 +9,7 @@ import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; @@ -54,10 +55,12 @@ public interface CompetitionMemberDao extends JpaRepository<CompetitionMember,In int updateHighestRatio(@Param("userNo") Long userNo,@Param("stageId") Integer stageId,@Param("compId") Long comId, @Param("ratio") Double ratio); + @Transactional @Modifying @Query(value = "update competition_member set personal_rank=:rank where user_id=:userNo and stage_id=:stageId and competition_id=:compId",nativeQuery = true) int updatePersonalRank(@Param("userNo") Long userNo,@Param("stageId") Integer stageId,@Param("compId") Long comId, @Param("rank") Integer rank); + @Transactional @Modifying @Query(value = "update competition_member set team_rank=:rank where user_id=:userNo and stage_id=:stageId and competition_id=:compId",nativeQuery = true) int updateTeamRank(@Param("userNo") Long userNo,@Param("stageId") Integer stageId,@Param("compId") Long comId, @Param("rank") Integer rank); diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionTeamDao.java b/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionTeamDao.java index 2b4048b..b79d7ae 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionTeamDao.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionTeamDao.java @@ -4,9 +4,13 @@ import com.tz.platform.entity.CompetitionTeam; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface CompetitionTeamDao extends JpaRepository<CompetitionTeam,Integer> { CompetitionTeam getById(Integer id); CompetitionTeam getByTeamName(String teamName); + CompetitionTeam getByTeamNameAndCompetitionIdAndStageId(String teamName,Long compId,Integer stageId); + List<CompetitionTeam> findAllByTeamName(String teamName); int countByCompetitionId(Long competitionId); } diff --git a/tz/competition/competition-service/src/main/resources/bootstrap.yml b/tz/competition/competition-service/src/main/resources/bootstrap.yml index 7ad082f..4d94314 100644 --- a/tz/competition/competition-service/src/main/resources/bootstrap.yml +++ b/tz/competition/competition-service/src/main/resources/bootstrap.yml @@ -10,7 +10,7 @@ spring: active: dev cloud: nacos: - server-addr: 172.19.255.105:8848 + server-addr: 127.0.0.1:8848 username: nacos password: nacos config: diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCMuiltQuestionBiz.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCMuiltQuestionBiz.java index 8e2f762..8b1ec2b 100644 --- a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCMuiltQuestionBiz.java +++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCMuiltQuestionBiz.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import java.util.ArrayList; +import java.util.Date; import java.util.List; @Component @@ -77,7 +78,12 @@ public class PCMuiltQuestionBiz { subQuestionVO.setId(Long.valueOf (i+1)); score+=subQuestionVO.getScore(); } + question.setScore(score); + question.setCreatorId(vo.getUserNo()); + question.setCreateTime(new Date()); + question.setStatus(1); + question.setType(1); question = questionDao.save(question); return Result.success(question.getId()); } diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/MuiltQuestionVO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/MuiltQuestionVO.java index 8495b30..f1c768a 100644 --- a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/MuiltQuestionVO.java +++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/MuiltQuestionVO.java @@ -11,9 +11,9 @@ public class MuiltQuestionVO { private Long id; private Long courseId; private String courseName; - private Long levelId; + private Integer levelId; private String levelName; - private Long questionType; + private Integer questionType; private Long score; private Integer type; private String stem; diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/QuestionVO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/QuestionVO.java index 083ef97..9a46457 100644 --- a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/QuestionVO.java +++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/QuestionVO.java @@ -11,9 +11,9 @@ public class QuestionVO { private Long id; private Long courseId; private String courseName; - private Long levelId; + private Integer levelId; private String levelName; - private Long questionType; + private Integer questionType; private String title; private Long score; private Integer type; diff --git a/tz/exam/exam-service/src/main/resources/bootstrap.yml b/tz/exam/exam-service/src/main/resources/bootstrap.yml index ce61352..f07066b 100644 --- a/tz/exam/exam-service/src/main/resources/bootstrap.yml +++ b/tz/exam/exam-service/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ spring: active: dev cloud: nacos: - server-addr: 127.0.0.1:8848 + server-addr: 172.19.255.105:8848 username: nacos password: nacos config: diff --git a/tz/upload/upload-service/src/main/java/com/tz/platform/image/pc/biz/PCImageBiz.java b/tz/upload/upload-service/src/main/java/com/tz/platform/image/pc/biz/PCImageBiz.java index b96e2ee..ba33911 100644 --- a/tz/upload/upload-service/src/main/java/com/tz/platform/image/pc/biz/PCImageBiz.java +++ b/tz/upload/upload-service/src/main/java/com/tz/platform/image/pc/biz/PCImageBiz.java @@ -27,7 +27,8 @@ public class PCImageBiz { System.out.println(UserNo); String fileName = System.currentTimeMillis()+""; try { - Thumbnails.of(multipartFile.getResource().getInputStream()).size(w,h).outputFormat("png").toFile(SystemUtil.PIC_PATH+fileName); + String debugPath = "/Volumes/Lexar/www/pic/"; + Thumbnails.of(multipartFile.getResource().getInputStream()).size(w,h).outputFormat("png").toFile(debugPath+fileName); } catch (IOException e) { e.printStackTrace(); return Result.error("上传失败"); diff --git a/tz/user/user-service/src/main/java/com/tz/platform/repository/UserDao.java b/tz/user/user-service/src/main/java/com/tz/platform/repository/UserDao.java index 8893135..b3d9112 100644 --- a/tz/user/user-service/src/main/java/com/tz/platform/repository/UserDao.java +++ b/tz/user/user-service/src/main/java/com/tz/platform/repository/UserDao.java @@ -5,7 +5,11 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -46,4 +50,9 @@ public interface UserDao extends JpaRepository<User,Long> , JpaSpecificationExec List<User> findAllByIdIn(List<Long> ids); Page<User> findAllByUsernameOrName(String username,String name,Pageable pageable); + + @Transactional + @Modifying + @Query(value = "update user set mobile_salt=:salt,mobile_psw=:pwd where id=:id",nativeQuery = true) + int updatePassword(@Param("id") Long id,@Param("salt") String salt,@Param("pwd") String pwd ); } diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/PcUserInfoController.java b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/PcUserInfoController.java index 41f73b3..825f203 100644 --- a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/PcUserInfoController.java +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/PcUserInfoController.java @@ -37,6 +37,11 @@ public class PcUserInfoController extends BaseController { return pcUserInfoBiz.listByStudentNoOrSchool(bo); } + @PostMapping(value = "initPwd") + public Result<String> initPassword(@RequestBody UserVO vo){ + return pcUserInfoBiz.initPassword(vo); + } + @PostMapping(value = "deleteUser") public Result<String> deletUser(@RequestBody UserVO vo){ return pcUserInfoBiz.deleteUser(vo); diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/biz/PcUserInfoBiz.java b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/biz/PcUserInfoBiz.java index 6d7226a..e7cbee4 100644 --- a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/biz/PcUserInfoBiz.java +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/biz/PcUserInfoBiz.java @@ -187,6 +187,18 @@ public class PcUserInfoBiz { return Result.success("成功"); } + + public Result<String> initPassword(UserVO vo){ + User user = userDao.getById(vo.getUserNo()); + if(user.getUserType()!= UserTypeEnum.ADMIN.getCode()){ + return Result.error("无操作权限"); + } + String salt =StrUtil.get32UUID(); + String pwd = DigestUtil.sha1Hex(salt+ SystemUtil.INIT_PASSWORD); + userDao.updatePassword(vo.getId(),salt,pwd); + return Result.success("success"); + } + public Result<Long> saveAdmin(UserVO vo){ if(StringUtils.isEmpty(vo.getName())){ diff --git a/tz/user/user-service/src/main/resources/bootstrap.yml b/tz/user/user-service/src/main/resources/bootstrap.yml index ddfbd24..7cc30ee 100644 --- a/tz/user/user-service/src/main/resources/bootstrap.yml +++ b/tz/user/user-service/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ spring: active: dev cloud: nacos: - server-addr: 172.19.255.105:8848 + server-addr: 127.0.0.1:8848 username: nacos password: nacos config: