187 lines
6.2 KiB
Java

package com.example.caseData.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.caseData.common.Response;
import com.example.caseData.dao.*;
import com.example.caseData.dto.T;
import com.example.caseData.dto.user.UserDto;
import com.example.caseData.exception.BusinessException;
import com.example.caseData.extend.app.UserPoint.UserPoint;
import com.example.caseData.extend.app.UserPoint.UserPointResponse;
import com.example.caseData.model.*;
import com.example.caseData.request.CaseClinicalArticleRequest.addClinicalArticleComment;
import com.example.caseData.request.UserRequest.ReportUserScoreRequest;
import com.example.caseData.request.UserRequest.UserRequest;
import com.example.caseData.service.CertService;
import com.example.caseData.service.RewardPointService;
import com.example.caseData.service.UserService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.time.Year;
@RestController
@RequestMapping("/api")
public class UserController extends BaseController {
@Resource
private UserDao userDao;
@Resource
private BasicHospitalDao basicHospitalDao;
@Resource
private HttpServletRequest httpServletRequest;
@Resource
private CaseClinicalDoctorDao caseClinicalDoctorDao;
@Resource
private UserCollectClinicalArticleDao userCollectClinicalArticleDao;
@Resource
private CaseClinicalArticleAuthorDao caseClinicalArticleAuthorDao;
@Resource
private UserCollectClinicalVideoDao userCollectClinicalVideoDao;
@Resource
private CaseClinicalVideoAuthorDao caseClinicalVideoAuthorDao;
@Resource
private UserCollectExchangeDao userCollectExchangeDao;
@Resource
private UserCaseReadDao userCaseReadDao;
@Resource
private RewardPointService rewardService;
@Resource
private UserPoint userPoint;
@Resource
private UserService userService;
@Resource
private CertService certService;
// // 查询所有用户
// @GetMapping("/users")
// public Response<Map<String, Object>> getUserPage(@Validated({UserRequest.Page.class}) @ModelAttribute UserRequest request) {
// request.validateForPage(); // 确保分页参数有默认值
//
// Page<UserModel> page = new Page<>(request.getPage(), request.getPageSize()); // 创建分页对象
//
// QueryWrapper<UserModel> queryWrapper = new QueryWrapper<>();
// queryWrapper.like("user_id", "吴");
//
// // 执行分页查询
// Page<UserModel> resultPage = userDao.selectPage(page, queryWrapper);
//
// // 返回
// List<UserDto> userDtoList = UserDto.getUserListDto(resultPage.getRecords());
//
// // 组装分页结果
// Map<String, Object> resultMap = new HashMap<>();
// resultMap.put("page", resultPage.getCurrent());
// resultMap.put("pageSize", resultPage.getSize());
// resultMap.put("total", resultPage.getTotal());
// resultMap.put("data", userDtoList);
//
// return Response.success(resultMap);
// }
// 获取用户信息
@GetMapping("/user")
public Response<UserDto> getUser(@Validated({UserRequest.Page.class}) @ModelAttribute UserRequest request) {
String userId = (String) httpServletRequest.getAttribute("userId");
// 获取当前登录用户数据
UserModel user = userDao.selectById(Long.valueOf(userId));
if (user == null) {
return Response.error();
}
// 获取用户医院数据
BasicHospitalModel basicHospital = basicHospitalDao.selectById(user.getHospitalId());
if (basicHospital == null) {
return Response.error();
}
user.setBasicHospital(basicHospital);
// 获取对应医生数据
LambdaQueryWrapper<CaseClinicalDoctorModel> caseClinicalDoctorWrapper = new LambdaQueryWrapper<>();
caseClinicalDoctorWrapper.eq(CaseClinicalDoctorModel::getDoctorIden, user.getUserIden());
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectOne(caseClinicalDoctorWrapper);
// 处理返回值
UserDto g = UserDto.GetDto(user);
g.setUserIden("");
g.setOpenId("");
g.setUnionId("");
g.setUserMobile("");
g.setMobileEncryption("");
if (caseClinicalDoctor != null) {
g.setDoctorId(String.valueOf(caseClinicalDoctor.getDoctorId()));
}
return Response.success(g);
}
/**
* 获取用户积分
*/
@GetMapping("/user/point")
public Response<Integer> getUserPoint() {
String userId = (String) httpServletRequest.getAttribute("userId");
// 获取当前登录用户数据
UserModel user = userDao.selectById(Long.valueOf(userId));
if (user == null) {
return Response.error();
}
Integer point = 0;
try {
UserPointResponse result = userPoint.GetUserPoint(user.getUserIden());
point = result.getData();
if (point == null) {
point = 0;
}
} catch (BusinessException e) {
return Response.error(e.getMessage());
}
return Response.success(point);
}
@GetMapping("/user/test")
public Response<T> getUser() {
try {
byte[] qrCodeByte = new byte[0];
// 生成证书
String avt = "src/main/resources/static/cert/avt.png";
String sealPath = "src/main/resources/static/cert/seal.png";
String certificateNo = "GDXZALK" + String.valueOf(Year.now().getValue()) + "123456";
String name = "吴从兴";
String content = "您的案例《儿童肾上腺危象一例》经评议,被肝胆相照临床病例库收录,特发此";
certService.createCertTest(sealPath,certificateNo,name,content);
// 生成用户分享二维码-文章/视频
// userService.CreateUserCaseClinicalContentUnlimitedQrcode(String.valueOf(1),1);
} catch (Exception e) {
return Response.error(e.getMessage());
}
return Response.success();
}
}