添加培训用户培训查询功能

dev
zhangyue 2026-03-17 17:40:52 +08:00
parent d480abc283
commit 318fc084e3
12 changed files with 131 additions and 5 deletions

View File

@ -65,8 +65,6 @@ public class StudentController {
return MultiResponse.of(new ArrayList<StudentCO>());
}
@ApiOperation("查询用户统计")
@PostMapping("/listStudentCount")
public MultiResponse<StudentCO> listStudentCount(@RequestBody StudentCountQry qry) {

View File

@ -3,6 +3,7 @@ package com.zcloud.edu.web.training;
import com.zcloud.edu.api.training.TrainingUserServiceI;
import com.zcloud.edu.dto.training.TrainingUserAddCmd;
import com.zcloud.edu.dto.training.TrainingUserEntranceQry;
import com.zcloud.edu.dto.training.TrainingUserPageQry;
import com.zcloud.edu.dto.training.TrainingUserUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
@ -12,6 +13,7 @@ import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.gbscommon.zcloudqualifications.response.EduProjectUserDO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@ -19,6 +21,8 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
* web-adapter
* @Author makejava
@ -50,6 +54,17 @@ public class TrainingUserController {
return MultiResponse.of(new ArrayList<TrainingUserCO>());
}
/**
* 使
* @return
*/
@ApiOperation("根据手机号查询是否培训通过")
@PostMapping("/listAllByPhones")
public MultiResponse<EduProjectUserDO> listAllByPhones(@RequestBody List<EduProjectUserDO> qry) {
return trainingUserService.listAllByPhones(qry);
}
@ApiOperation("详情")
@GetMapping("/{id}")
public SingleResponse<TrainingUserCO> getInfoById(@PathVariable("id") Long id) {

View File

@ -1,18 +1,25 @@
package com.zcloud.edu.command.query.training;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.command.convertor.training.TrainingUserCoConvertor;
import com.zcloud.edu.dto.training.TrainingUserEntranceQry;
import com.zcloud.edu.dto.training.TrainingUserPageQry;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
import com.zcloud.edu.persistence.dataobject.TrainingUserDO;
import com.zcloud.edu.persistence.repository.training.TrainingUserRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.gbscommon.zcloudqualifications.response.EduProjectUserDO;
import lombok.AllArgsConstructor;
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.stereotype.Component;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -38,5 +45,25 @@ public class TrainingUserQueryExe {
List<TrainingUserCO> examCenterCOS = trainingUserCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public MultiResponse<EduProjectUserDO> listAllByPhonesExecute(List<EduProjectUserDO> qry) {
List<String> phones = qry.stream().map(EduProjectUserDO::getPhone).collect(Collectors.toList());
Map<String, Object> params = new HashMap<String, Object>();
params.put("phones", phones);
List<TrainingUserDO> list = trainingUserRepository.listAllByPhones(params);
Map<String, TrainingUserDO> existingUserMap = list.stream().collect(Collectors.toMap(TrainingUserDO::getPhone, user -> user));
qry.stream().forEach(eduProjectUserDO -> {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
TrainingUserDO trainingUser = existingUserMap.get(eduProjectUserDO.getPhone());
if(trainingUser.getStartTime() != null){
eduProjectUserDO.setStartTrainingTime(trainingUser.getStartTime().format(formatter));
}
if(trainingUser.getEndTime() != null){
eduProjectUserDO.setEndTrainingTime(trainingUser.getEndTime().format(formatter));
}
eduProjectUserDO.setTrainingState(String.valueOf(trainingUser.getStateFlag()));
});
return MultiResponse.of(qry);
}
}

View File

@ -1,20 +1,25 @@
package com.zcloud.edu.service;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.api.training.TrainingUserServiceI;
import com.zcloud.edu.command.training.TrainingUserAddExe;
import com.zcloud.edu.command.training.TrainingUserRemoveExe;
import com.zcloud.edu.command.training.TrainingUserUpdateExe;
import com.zcloud.edu.command.query.training.TrainingUserQueryExe;
import com.zcloud.edu.dto.training.TrainingUserAddCmd;
import com.zcloud.edu.dto.training.TrainingUserEntranceQry;
import com.zcloud.edu.dto.training.TrainingUserPageQry;
import com.zcloud.edu.dto.training.TrainingUserUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.gbscommon.zcloudqualifications.response.EduProjectUserDO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* web-app
* @Author makejava
@ -55,5 +60,10 @@ public class TrainingUserServiceImpl implements TrainingUserServiceI {
public void removeBatch(Long[] ids) {
trainingUserRemoveExe.execute(ids);
}
@Override
public MultiResponse<EduProjectUserDO> listAllByPhones(List<EduProjectUserDO> qry) {
return trainingUserQueryExe.listAllByPhonesExecute(qry);
}
}

View File

@ -1,12 +1,17 @@
package com.zcloud.edu.api.training;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.dto.training.TrainingUserAddCmd;
import com.zcloud.edu.dto.training.TrainingUserEntranceQry;
import com.zcloud.edu.dto.training.TrainingUserPageQry;
import com.zcloud.edu.dto.training.TrainingUserUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.gbscommon.zcloudqualifications.response.EduProjectUserDO;
import java.util.List;
/**
* web-client
@ -23,5 +28,7 @@ public interface TrainingUserServiceI {
void remove(Long id);
void removeBatch(Long[] ids);
MultiResponse<EduProjectUserDO> listAllByPhones(List<EduProjectUserDO> qry);
}

View File

@ -16,5 +16,6 @@ public class FileUrlConfig {
}
public String getPrefixUrl() {
return "http://192.168.192.201:8991/file/uploadFiles2/";
// return prefixUrl;
}
}

View File

@ -0,0 +1,29 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.PageQuery;
import lombok.Data;
import java.util.List;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:41:04
*/
@Data
public class TrainingUserEntranceQry {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
private List<String> phones;
}

View File

@ -38,6 +38,10 @@ public class TrainingUserDO extends BaseDO {
@ApiModelProperty(value = "考试状态:1.待考试2:考试通过,3:考试不通过")
private Long examineStatus;
@ApiModelProperty(value = "当前培训证书有效状态 0-无效 1-有效")
@TableField(exist = false)
private Integer stateFlag;
public TrainingUserDO(String trainingUserId) {
this.trainingUserId = trainingUserId;
}

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
@ -16,5 +17,7 @@ import java.util.Map;
public interface TrainingUserMapper extends BaseMapper<TrainingUserDO> {
void updateTime(@Param("params") Map<String, Object> params);
List<TrainingUserDO> listAllByPhones(@Param("params") Map<String,Object> params);
}

View File

@ -43,5 +43,10 @@ public class TrainingUserRepositoryImpl extends BaseRepositoryImpl<TrainingUserM
Map<String, Object> params = PageQueryHelper.toHashMap(trainingUserE);
trainingUserMapper.updateTime(params);
}
@Override
public List<TrainingUserDO> listAllByPhones(Map<String, Object> params) {
return trainingUserMapper.listAllByPhones(params);
}
}

View File

@ -17,5 +17,8 @@ public interface TrainingUserRepository extends BaseRepository<TrainingUserDO> {
PageResponse<TrainingUserDO> listPage(Map<String,Object> params);
void updateTime(TrainingUserE trainingUserE);
List<TrainingUserDO> listAllByPhones(Map<String, Object> params);
}

View File

@ -14,5 +14,29 @@
and ( end_time is null or end_time &lt; #{params.endTime})
</where>
</update>
<select id="listAllByPhones" resultType="com.zcloud.edu.persistence.dataobject.TrainingUserDO">
select
phone,
start_time,
end_time,
case when start_time &lt; now() and end_time > now() then 1 else 0 end stateFlag
from
training_user
<where>
delete_enum = 'false'
<if test="params.phones != null">
and phone in
<foreach item="phone" collection="params.phones" open="(" separator="," close=")">
#{phone}
</foreach>
</if>
</where>
</select>
</mapper>