UserController.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  1. package com.qxgmat.controller.admin;
  2. import com.github.pagehelper.Page;
  3. import com.nuliji.tools.*;
  4. import com.qxgmat.data.constants.enums.ServiceKey;
  5. import com.qxgmat.data.constants.enums.module.FeedbackModule;
  6. import com.qxgmat.data.constants.enums.module.ProductType;
  7. import com.qxgmat.data.constants.enums.status.DirectionStatus;
  8. import com.qxgmat.data.constants.enums.status.FeedbackStatus;
  9. import com.qxgmat.data.constants.enums.user.MoneyRange;
  10. import com.qxgmat.data.dao.entity.*;
  11. import com.qxgmat.data.relation.entity.UserPreviewPaperRelation;
  12. import com.qxgmat.dto.admin.extend.*;
  13. import com.qxgmat.dto.admin.request.UserCourseAppointmentDto;
  14. import com.qxgmat.dto.admin.request.UserFeedbackErrorDto;
  15. import com.qxgmat.dto.admin.request.UserInvoiceDto;
  16. import com.qxgmat.dto.admin.request.UserServiceRecordDto;
  17. import com.qxgmat.dto.admin.response.*;
  18. import com.qxgmat.help.ShiroHelp;
  19. import com.qxgmat.service.ManagerService;
  20. import com.qxgmat.service.UserPaperService;
  21. import com.qxgmat.service.UserServiceService;
  22. import com.qxgmat.service.extend.PreviewService;
  23. import com.qxgmat.service.UsersService;
  24. import com.qxgmat.service.inline.*;
  25. import io.swagger.annotations.Api;
  26. import io.swagger.annotations.ApiOperation;
  27. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  28. import org.apache.poi.ss.usermodel.Cell;
  29. import org.apache.poi.ss.usermodel.Row;
  30. import org.apache.poi.ss.usermodel.Sheet;
  31. import org.apache.poi.ss.usermodel.Workbook;
  32. import org.slf4j.Logger;
  33. import org.slf4j.LoggerFactory;
  34. import org.springframework.beans.factory.annotation.Autowired;
  35. import org.springframework.http.MediaType;
  36. import org.springframework.validation.annotation.Validated;
  37. import org.springframework.web.bind.annotation.*;
  38. import javax.servlet.ServletOutputStream;
  39. import javax.servlet.http.HttpServletRequest;
  40. import javax.servlet.http.HttpServletResponse;
  41. import javax.servlet.http.HttpSession;
  42. import java.io.*;
  43. import java.util.Collection;
  44. import java.util.Date;
  45. import java.util.List;
  46. import java.util.Map;
  47. @RestController("AdminUserController")
  48. @RequestMapping("/admin/user")
  49. @Api(tags = "用户接口", description = "用户相关操作", produces = MediaType.APPLICATION_JSON_VALUE)
  50. public class UserController {
  51. private static final Logger logger = LoggerFactory.getLogger(UserController.class);
  52. @Autowired
  53. private ShiroHelp shiroHelp;
  54. @Autowired
  55. private ManagerLogService managerLogService;
  56. @Autowired
  57. private QuestionService questionService;
  58. @Autowired
  59. private QuestionNoService questionNoService;
  60. @Autowired
  61. private UsersService usersService;
  62. @Autowired
  63. private UserServiceService userServiceService;
  64. @Autowired
  65. private UserCourseService userCourseService;
  66. @Autowired
  67. private UserPaperService userPaperService;
  68. @Autowired
  69. private UserReportService userReportService;
  70. @Autowired
  71. private UserOrderService userOrderService;
  72. @Autowired
  73. private ManagerService managerService;
  74. @Autowired
  75. private PreviewService previewService;
  76. @Autowired
  77. private PreviewPaperService previewPaperService;
  78. @Autowired
  79. private UserCourseAppointmentService userCourseAppointmentService;
  80. @Autowired
  81. private UserFeedbackErrorService userFeedbackErrorService;
  82. @Autowired
  83. private UserOrderRecordService userOrderRecordService;
  84. @Autowired
  85. private UserInvoiceService userInvoiceService;
  86. // @RequestMapping(value = "/add", method = RequestMethod.POST)
  87. // @ApiOperation(value = "添加用户信息", httpMethod = "POST")
  88. // public Response<User> add(@RequestBody @Validated UserDto dto, HttpServletRequest request) {
  89. // User entity = Transform.dtoToEntity(dto);
  90. // entity = userService.edit(entity);
  91. // managerLogService.log(request);
  92. // return ResponseHelp.success(Transform.convert(entity, UserDto.class));
  93. // }
  94. // @RequestMapping(value = "/edit", method = RequestMethod.PUT)
  95. // @ApiOperation(value = "修改用户信息", httpMethod = "PUT")
  96. // public Response<Boolean> edit(@RequestBody @Validated UserDto dto, HttpServletRequest request) {
  97. // User entity = Transform.dtoToEntity(dto);
  98. // entity = userService.edit(entity);
  99. // managerLogService.log(request);
  100. // return ResponseHelp.success(true);
  101. // }
  102. //
  103. // @RequestMapping(value = "/delete", method = RequestMethod.DELETE)
  104. // @ApiOperation(value = "删除用户", httpMethod = "DELETE")
  105. // public Response<Boolean> delete(@RequestParam int id, HttpServletRequest request) {
  106. // managerLogService.log(request);
  107. // return ResponseHelp.success(userService.delete(id));
  108. // }
  109. @RequestMapping(value = "/token", method = RequestMethod.GET)
  110. @ApiOperation(value = "获取用户token", httpMethod = "GET")
  111. public Response<String> token(@RequestParam int id, HttpSession session) {
  112. User entity = usersService.get(id);
  113. String token = usersService.getTokenByUser(entity);
  114. return ResponseHelp.success(token);
  115. }
  116. @RequestMapping(value = "/detail", method = RequestMethod.GET)
  117. @ApiOperation(value = "获取用户", httpMethod = "GET")
  118. public Response<UserDetailDto> detail(@RequestParam int id, HttpSession session) {
  119. User entity = usersService.get(id);
  120. UserDetailDto dto = Transform.convert(entity, UserDetailDto.class);
  121. return ResponseHelp.success(dto);
  122. }
  123. @RequestMapping(value = "/list", method = RequestMethod.GET)
  124. @ApiOperation(value = "用户列表", httpMethod = "GET")
  125. public Response<PageMessage<UserListDto>> list(
  126. @RequestParam(required = false, defaultValue = "1") int page,
  127. @RequestParam(required = false, defaultValue = "100") int size,
  128. @RequestParam(required = false, defaultValue = "") String keyword,
  129. @RequestParam(required = false) Integer[] ids,
  130. @RequestParam(required = false) Boolean real,
  131. @RequestParam(required = false) String order,
  132. @RequestParam(required = false, defaultValue = "desc") String direction,
  133. HttpSession session) {
  134. Page<User> p;
  135. if (ids != null && ids.length > 0){
  136. p = usersService.select(ids);
  137. }else{
  138. p = usersService.select(page, size, keyword, real, order, DirectionStatus.ValueOf(direction));
  139. }
  140. List<UserListDto> pr = Transform.convert(p, UserListDto.class);
  141. Collection userIds = Transform.getIds(p, User.class, "id");
  142. // 绑定用户服务
  143. Map<Object, Collection<UserService>> serviceByUser = userServiceService.mapByUser(userIds);
  144. Transform.combine(pr, serviceByUser, UserListDto.class, "id", "services", UserServiceExtendDto.class);
  145. return ResponseHelp.success(pr, page, size, p.getTotal());
  146. }
  147. @RequestMapping(value = "/student/list", method = RequestMethod.GET)
  148. @ApiOperation(value = "会员列表", httpMethod = "GET")
  149. public Response<PageMessage<UserListDto>> members(
  150. @RequestParam(required = false, defaultValue = "1") int page,
  151. @RequestParam(required = false, defaultValue = "100") int size,
  152. @RequestParam(required = false, defaultValue = "") String keyword,
  153. @RequestParam(required = false) Integer courseId,
  154. @RequestParam(required = false) String order,
  155. @RequestParam(required = false, defaultValue = "desc") String direction,
  156. HttpSession session) {
  157. // 已经购买过课程的用户
  158. Page<User> p = usersService.listByCourse(page, size, keyword, courseId);
  159. List<UserListDto> pr = Transform.convert(p, UserListDto.class);
  160. Collection userIds = Transform.getIds(p, User.class, "id");
  161. // 绑定用户课程
  162. Map<Object, Collection<UserCourse>> courseByUser = userCourseService.mapByUser(userIds, false);
  163. Transform.combine(pr, courseByUser, UserListDto.class, "id", "classes", UserCourseExtendDto.class);
  164. return ResponseHelp.success(pr, page, size, p.getTotal());
  165. }
  166. @RequestMapping(value = "/order/list", method = RequestMethod.GET)
  167. @ApiOperation(value = "用户订单列表", httpMethod = "GET")
  168. public Response<PageMessage<UserListDto>> listOrder(
  169. @RequestParam(required = false, defaultValue = "1") int page,
  170. @RequestParam(required = false, defaultValue = "100") int size,
  171. @RequestParam(required = false) Integer userId,
  172. @RequestParam(required = false) String order,
  173. @RequestParam(required = false, defaultValue = "desc") String direction,
  174. HttpSession session) {
  175. Page<UserOrder> p = userOrderService.select(page, size);
  176. List<UserListDto> pr = Transform.convert(p, UserListDto.class);
  177. Collection userIds = Transform.getIds(p, User.class, "id");
  178. // 绑定用户服务
  179. Map<Object, Collection<UserService>> serviceByUser = userServiceService.mapByUser(userIds);
  180. Transform.combine(pr, serviceByUser, UserListDto.class, "id", "services", UserServiceExtendDto.class);
  181. return ResponseHelp.success(pr, page, size, p.getTotal());
  182. }
  183. @RequestMapping(value = "/preview/list", method = RequestMethod.GET)
  184. @ApiOperation(value = "预习作业列表", httpMethod = "GET")
  185. public Response<PageMessage<UserPreviewListDto>> list(
  186. @RequestParam(required = false, defaultValue = "1") int page,
  187. @RequestParam(required = false, defaultValue = "100") int size,
  188. @RequestParam(required = false, defaultValue = "0") int category,
  189. @RequestParam(required = false) Integer userId,
  190. @RequestParam(required = false) Integer previewId,
  191. @RequestParam(required = false) String startTime,
  192. @RequestParam(required = false) String endTime,
  193. HttpSession session) {
  194. PageResult<UserPreviewPaperRelation> p = previewService.listAdmin(page, size, category, userId, previewId, startTime, endTime);
  195. // 绑定用户
  196. Collection userIds = Transform.getIds(p, UserPreviewPaperRelation.class, "userId");
  197. List<User> userList = usersService.select(userIds);
  198. Transform.combine(p, userList, UserPreviewPaperRelation.class, "userId", "user", User.class, "id");
  199. // 绑定预习作业
  200. Collection previewIds = Transform.getIds(p, UserPreviewPaperRelation.class, "moduleId");
  201. List<PreviewPaper> previewPaperList = previewPaperService.select(previewIds);
  202. Transform.combine(p, previewPaperList, UserPreviewPaperRelation.class, "moduleId", "preview", PreviewPaper.class, "id");
  203. List<UserPreviewListDto> pr = Transform.convert(p, UserPreviewListDto.class);
  204. return ResponseHelp.success(pr, page, size, p.getTotal());
  205. }
  206. @RequestMapping(value = "/feedback_error/edit", method = RequestMethod.PUT)
  207. @ApiOperation(value = "修改勘误信息", httpMethod = "PUT")
  208. public Response<Boolean> editFeedbackError(@RequestBody @Validated UserFeedbackErrorDto dto, HttpServletRequest request) {
  209. UserFeedbackError entity = Transform.dtoToEntity(dto);
  210. UserFeedbackError in = userFeedbackErrorService.get(entity.getId());
  211. // 处理设定
  212. if(in.getHandleTime() == null){
  213. entity.setHandleTime(new Date());
  214. Manager manager = shiroHelp.getLoginManager();
  215. entity.setManagerId(manager.getId());
  216. }
  217. entity = userFeedbackErrorService.edit(entity);
  218. managerLogService.log(request);
  219. return ResponseHelp.success(true);
  220. }
  221. @RequestMapping(value = "/feedback_error/detail", method = RequestMethod.GET)
  222. @ApiOperation(value = "勘误详情", httpMethod = "GET")
  223. public Response<UserFeedbackErrorInfoDto> detailFeedbackError(@RequestParam int id, HttpServletRequest request) {
  224. UserFeedbackError entity = userFeedbackErrorService.get(id);
  225. UserFeedbackErrorInfoDto dto = Transform.convert(entity, UserFeedbackErrorInfoDto.class);
  226. User user = usersService.get(entity.getUserId());
  227. UserExtendDto userDto = Transform.convert(user, UserExtendDto.class);
  228. dto.setUser(userDto);
  229. return ResponseHelp.success(dto);
  230. }
  231. @RequestMapping(value = "/feedback_error/list", method = RequestMethod.GET)
  232. @ApiOperation(value = "勘误列表", httpMethod = "GET")
  233. public Response<PageMessage<UserFeedbackErrorInfoDto>> listFeedbackError(
  234. @RequestParam(required = false, defaultValue = "1") int page,
  235. @RequestParam(required = false, defaultValue = "100") int size,
  236. @RequestParam(required = false) String module,
  237. @RequestParam(required = false) Integer userId,
  238. @RequestParam(required = false) Integer status,
  239. @RequestParam(required = false) String keyword,
  240. @RequestParam(required = false) Integer moneyRang,
  241. HttpSession session) {
  242. Page<UserFeedbackError> p = userFeedbackErrorService.listAdmin(page, size, FeedbackModule.ValueOf(module), FeedbackStatus.ValueOf(status), keyword, userId, MoneyRange.ValueOf(moneyRang));
  243. List<UserFeedbackErrorInfoDto> pr = Transform.convert(p, UserFeedbackErrorInfoDto.class);
  244. // 绑定用户
  245. Collection userIds = Transform.getIds(p, UserFeedbackError.class, "userId");
  246. List<User> userList = usersService.select(userIds);
  247. Transform.combine(pr, userList, UserFeedbackErrorInfoDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  248. return ResponseHelp.success(pr, page, size, p.getTotal());
  249. }
  250. @RequestMapping(value = "/service/add", method = RequestMethod.POST)
  251. @ApiOperation(value = "添加服务记录", httpMethod = "POST")
  252. private Response<Boolean> addService(@RequestBody @Validated UserServiceRecordDto dto){
  253. UserOrderRecord entity = Transform.dtoToEntity(dto);
  254. entity.setProductType(ProductType.SERVICE.key);
  255. entity.setOrderId(0);
  256. entity.setProductId(0);
  257. if (dto.getMobile() != null && !dto.getMobile().isEmpty()){
  258. // 判断mobile
  259. User user = usersService.getByMobile(dto.getMobile());
  260. if (user == null){
  261. // 创建user
  262. user = usersService.register(dto.getMobile(), null, null);
  263. }
  264. entity.setUserId(user.getId());
  265. }
  266. userOrderRecordService.add(entity);
  267. return ResponseHelp.success(true);
  268. }
  269. @RequestMapping(value = "/service/edit", method = RequestMethod.PUT)
  270. @ApiOperation(value = "修改服务记录", httpMethod = "PUT")
  271. private Response<Boolean> editService(@RequestBody @Validated UserServiceRecordDto dto){
  272. UserOrderRecord entity = Transform.dtoToEntity(dto);
  273. entity.setOrderId(0);
  274. entity.setProductId(0);
  275. entity.setProductType(ProductType.SERVICE.key);
  276. userOrderRecordService.edit(entity);
  277. return ResponseHelp.success(true);
  278. }
  279. @RequestMapping(value = "/service/delete", method = RequestMethod.DELETE)
  280. @ApiOperation(value = "删除服务记录", httpMethod = "DELETE")
  281. private Response<Boolean> deleteService(@RequestParam int id){
  282. userOrderRecordService.delete(id);
  283. return ResponseHelp.success(true);
  284. }
  285. @RequestMapping(value = "/service/list", method = RequestMethod.GET)
  286. @ApiOperation(value = "获取服务列表", httpMethod = "GET")
  287. private Response<PageMessage<UserServiceRecordInfoDto>> listService(
  288. @RequestParam(required = false, defaultValue = "1") int page,
  289. @RequestParam(required = false, defaultValue = "100") int size,
  290. @RequestParam(required = false) String service,
  291. @RequestParam(required = false) String param,
  292. @RequestParam(required = false) Integer userId
  293. ){
  294. Page<UserOrderRecord> p = userOrderRecordService.listWithServiceAdmin(page, size, ServiceKey.ValueOf(service), param, userId);
  295. List<UserServiceRecordInfoDto> pr = Transform.convert(p, UserServiceRecordInfoDto.class);
  296. // 绑定用户
  297. Collection userIds = Transform.getIds(p, UserOrderRecord.class, "userId");
  298. List<User> userList = usersService.select(userIds);
  299. Transform.combine(pr, userList, UserServiceRecordInfoDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  300. return ResponseHelp.success(pr, page, size, p.getTotal());
  301. }
  302. @RequestMapping(value = "/course/appointment/add", method = RequestMethod.POST)
  303. @ApiOperation(value = "添加课程预约", httpMethod = "POST")
  304. public Response<UserCourseAppointment> addCourseAppointment(@RequestBody @Validated UserCourseAppointmentDto dto, HttpServletRequest request) {
  305. UserCourseAppointment entity = Transform.dtoToEntity(dto);
  306. entity = userCourseAppointmentService.addAppointment(entity);
  307. managerLogService.log(request);
  308. return ResponseHelp.success(Transform.convert(entity, CourseTime.class));
  309. }
  310. @RequestMapping(value = "/course/appointment/edit", method = RequestMethod.PUT)
  311. @ApiOperation(value = "编辑课程预约", httpMethod = "PUT")
  312. public Response<Boolean> editCourseAppointment(@RequestBody @Validated UserCourseAppointmentDto dto, HttpServletRequest request) {
  313. UserCourseAppointment entity = Transform.dtoToEntity(dto);
  314. entity = userCourseAppointmentService.edit(entity);
  315. managerLogService.log(request);
  316. return ResponseHelp.success(true);
  317. }
  318. @RequestMapping(value = "/course/appointment/delete", method = RequestMethod.DELETE)
  319. @ApiOperation(value = "删除课程预约", httpMethod = "DELETE")
  320. public Response<Boolean> deleteCourseAppointment(@RequestParam int id, HttpServletRequest request) {
  321. userCourseAppointmentService.delete(id);
  322. managerLogService.log(request);
  323. return ResponseHelp.success(true);
  324. }
  325. @RequestMapping(value = "/course/appointment/detail", method = RequestMethod.GET)
  326. @ApiOperation(value = "获取课程预约", httpMethod = "GET")
  327. public Response<CourseTime> detailCourseAppointment(@RequestParam int id,HttpSession session) {
  328. UserCourseAppointment entity = userCourseAppointmentService.get(id);
  329. return ResponseHelp.success(Transform.convert(entity, UserCourseAppointment.class));
  330. }
  331. @RequestMapping(value = "/course/appointment/list", method = RequestMethod.GET)
  332. @ApiOperation(value = "课程预约列表", httpMethod = "GET")
  333. public Response<PageMessage<UserCourseAppointmentInfoDto>> listCourseAppointment(
  334. @RequestParam(required = false, defaultValue = "1") int page,
  335. @RequestParam(required = false, defaultValue = "100") int size,
  336. @RequestParam(required = false) Integer[] ids,
  337. @RequestParam(required = false) Integer recordId,
  338. HttpSession session) {
  339. Page<UserCourseAppointment> p;
  340. if (ids != null && ids.length > 0){
  341. p = userCourseAppointmentService.select(ids);
  342. }else{
  343. p = userCourseAppointmentService.listAdmin(page, size, recordId);
  344. }
  345. List<UserCourseAppointmentInfoDto> pr = Transform.convert(p, UserCourseAppointmentInfoDto.class);
  346. Collection paperIds = Transform.getIds(p, UserCourseAppointment.class, "paperId");
  347. List<UserPaper> userPaperList = userPaperService.select(paperIds);
  348. Transform.combine(pr, userPaperList, UserCourseAppointmentInfoDto.class, "paperId", "userPaper", UserPaper.class, "id", UserPaperExtendDto.class);
  349. // 获取最后一次作业结果
  350. List<UserReport> reportList = userReportService.listWithLater(paperIds);
  351. Map reportMap = Transform.getMap(reportList, UserReport.class, "id");
  352. Transform.combine(pr, reportMap, UserCourseAppointmentInfoDto.class, "paperId", "reportId");
  353. return ResponseHelp.success(pr, page, size, p.getTotal());
  354. }
  355. @RequestMapping(value = "/invoice/finish", method = RequestMethod.PUT)
  356. @ApiOperation(value = "开发票", httpMethod = "PUT")
  357. public Response<Boolean> finishData(
  358. @RequestParam(required = false) Integer[] ids,
  359. HttpServletRequest request) {
  360. userInvoiceService.finish(ids);
  361. managerLogService.log(request);
  362. return ResponseHelp.success(true);
  363. }
  364. @RequestMapping(value = "/invoice/download", method = RequestMethod.PUT)
  365. @ApiOperation(value = "下载资料", httpMethod = "PUT")
  366. public Response<Boolean> downloadData(
  367. @RequestParam(required = false) Integer[] ids,
  368. HttpServletRequest request, HttpServletResponse response) throws IOException {
  369. managerLogService.log(request);
  370. List<UserInvoice> p = userInvoiceService.select(ids);
  371. String columnNames[]={"ID","项目名","销售人","负责人","所用技术","备注"};//列名
  372. String filename = "发票";
  373. //生成一个Excel文件
  374. // 创建excel工作簿
  375. Workbook wb = new HSSFWorkbook();
  376. // 创建第一个sheet(页),并命名
  377. Sheet sheet = wb.createSheet();
  378. // 创建第一行
  379. Row row = sheet.createRow(0);
  380. //设置列名
  381. for(int i=0;i<columnNames.length;i++){
  382. Cell cell = row.createCell(i);
  383. cell.setCellValue(columnNames[i]);
  384. }
  385. int i = 0;
  386. for(UserInvoice invoice : p){
  387. i+=1;
  388. Row r = sheet.createRow(i);
  389. Cell cell = r.createCell(0);
  390. cell.setCellValue(invoice.getId());
  391. }
  392. //同理可以设置数据行
  393. ByteArrayOutputStream os = new ByteArrayOutputStream();
  394. try {
  395. wb.write(os);
  396. } catch (IOException e) {
  397. e.printStackTrace();
  398. }
  399. byte[] content = os.toByteArray();
  400. InputStream is = new ByteArrayInputStream(content);
  401. // 设置response参数,可以打开下载页面
  402. response.reset();
  403. response.setContentType("application/vnd.ms-excel;charset=utf-8");
  404. response.setHeader("Content-Disposition", "attachment;filename="+ new String((filename + ".xls").getBytes(), "iso-8859-1"));
  405. ServletOutputStream out = response.getOutputStream();
  406. BufferedInputStream bis = null;
  407. BufferedOutputStream bos = null;
  408. try {
  409. bis = new BufferedInputStream(is);
  410. bos = new BufferedOutputStream(out);
  411. byte[] buff = new byte[2048];
  412. int bytesRead;
  413. // Simple read/write loop.
  414. while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
  415. bos.write(buff, 0, bytesRead);
  416. }
  417. } catch (final IOException e) {
  418. throw e;
  419. } finally {
  420. if (bis != null)
  421. bis.close();
  422. if (bos != null)
  423. bos.close();
  424. }
  425. return null;
  426. }
  427. @RequestMapping(value = "/invoice/list", method = RequestMethod.GET)
  428. @ApiOperation(value = "发票列表", httpMethod = "GET")
  429. public Response<PageMessage<UserInvoiceListDto>> listData(
  430. @RequestParam(required = false, defaultValue = "1") int page,
  431. @RequestParam(required = false, defaultValue = "100") int size,
  432. @RequestParam(required = false) Integer userId,
  433. @RequestParam(required = false) Boolean isFinish,
  434. @RequestParam(required = false) Boolean isDownload,
  435. @RequestParam(required = false, defaultValue = "id") String order,
  436. @RequestParam(required = false, defaultValue = "desc") String direction,
  437. HttpSession session) {
  438. Page<UserInvoice> p = userInvoiceService.listAdmin(page, size, userId, isDownload, isFinish);
  439. List<UserInvoiceListDto> pr = Transform.convert(p, UserInvoiceListDto.class);
  440. // 绑定用户
  441. Collection userIds = Transform.getIds(p, UserInvoice.class, "userId");
  442. List<User> userList = usersService.select(userIds);
  443. Transform.combine(pr, userList, UserInvoiceListDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  444. // 绑定订单
  445. Collection orderIds = Transform.getIds(p, UserInvoice.class, "orderId");
  446. List<UserOrder> orderList = userOrderService.select(orderIds);
  447. Transform.combine(pr, orderList, UserInvoiceListDto.class, "orderId", "order", UserOrder.class, "id", UserOrderExtendDto.class);
  448. return ResponseHelp.success(pr, page, size, p.getTotal());
  449. }
  450. @RequestMapping(value = "/valid/mobile", method = RequestMethod.GET)
  451. @ApiOperation(value = "验证手机号", notes="查询手机对应账号", httpMethod = "GET")
  452. public Response<Boolean> validMobile(
  453. @RequestParam(required = true) String mobile
  454. ){
  455. User user = usersService.getByMobile(mobile);
  456. if(user == null){
  457. return ResponseHelp.success(false);
  458. }else{
  459. return ResponseHelp.success(true);
  460. }
  461. }
  462. }