ScanAdminController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. package com.bofeng.wx.controller;
  2. import cn.afterturn.easypoi.cache.manager.IFileLoader;
  3. import com.baomidou.mybatisplus.toolkit.IdWorker;
  4. import com.bofeng.dao.*;
  5. import com.bofeng.entity.*;
  6. import com.bofeng.excel.ExcelUtils;
  7. import com.bofeng.service.ScanAdminService;
  8. import com.bofeng.service.SweepCodeService;
  9. import com.bofeng.unit.QRCode;
  10. import com.google.zxing.BarcodeFormat;
  11. import com.google.zxing.MultiFormatWriter;
  12. import com.google.zxing.WriterException;
  13. import com.google.zxing.client.j2se.MatrixToImageConfig;
  14. import com.google.zxing.client.j2se.MatrixToImageWriter;
  15. import com.google.zxing.common.BitMatrix;
  16. import com.yvan.Model;
  17. import com.yvan.PageDb;
  18. import com.yvan.mvc.JsonBody;
  19. import com.yvan.mvc.Pd;
  20. import com.yvan.springmvc.HttpParameterParser;
  21. import io.swagger.annotations.Api;
  22. import io.swagger.annotations.ApiOperation;
  23. import lombok.Cleanup;
  24. import lombok.SneakyThrows;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.beans.factory.annotation.Value;
  27. import org.springframework.http.MediaType;
  28. import org.springframework.http.ResponseEntity;
  29. import org.springframework.web.bind.annotation.GetMapping;
  30. import org.springframework.web.bind.annotation.PostMapping;
  31. import org.springframework.web.bind.annotation.RequestMapping;
  32. import org.springframework.web.bind.annotation.RestController;
  33. import javax.servlet.ServletOutputStream;
  34. import javax.servlet.http.HttpServletResponse;
  35. import java.io.IOException;
  36. import java.net.URLEncoder;
  37. import java.text.ParseException;
  38. import java.text.SimpleDateFormat;
  39. import java.util.Date;
  40. import java.util.List;
  41. @Api("进出扫码后台信息")
  42. @RestController
  43. public class ScanAdminController {
  44. @Autowired
  45. private SweepCodeService sweepCodeService;
  46. @Autowired
  47. private UptownDoorMapper uptownDoorMapper;
  48. @Autowired
  49. private UptownMapper uptownMapper;
  50. @Autowired
  51. private ScanAdminService scanAdminService;
  52. @Autowired
  53. private OutUserMapper outUserMapper;
  54. @Autowired
  55. private UptownHomeMapper uptownHomeMapper;
  56. @ApiOperation("出入查询")
  57. @PostMapping("/whepi/sweepCode/selectCode")
  58. public Model<List<SysUptownHouse>> selectCode(PageDb pageDb,HttpParameterParser parser) {
  59. // HttpServletResponse response,HttpServletRequest request
  60. List<SysUptownHouse> sysUptownHouses = sweepCodeService.selectCode(pageDb,parser.getMap());
  61. return Model.newSuccess(pageDb,sysUptownHouses);
  62. }
  63. @ApiOperation("导出")
  64. @PostMapping("/whepi/sweepCode/export")
  65. @SneakyThrows
  66. public void export(HttpParameterParser parser,HttpServletResponse resp) {
  67. List<SysUptownHouse> sysUptownHouses = sweepCodeService.export(parser.getMap());
  68. ExcelUtils.writeSheet(SysUptownHouse.class, sysUptownHouses).export(resp,"出入管理");
  69. }
  70. @ApiOperation("出入查询")
  71. @PostMapping("/whepi/sweepCode/selectXunJian")
  72. public Model<List<OutScanEstate>> selectXunJian(PageDb pageDb,HttpParameterParser parser) {
  73. List<OutScanEstate> outScanEstates = sweepCodeService.selectXunJian(pageDb,parser.getMap());
  74. return Model.newSuccess(pageDb,outScanEstates);
  75. }
  76. @ApiOperation("导出")
  77. @PostMapping("/whepi/sweepCode/exportXunJian")
  78. @SneakyThrows
  79. public void exportXunJian(HttpParameterParser parser,HttpServletResponse resp) {
  80. List<OutScanEstate> outScanEstates = sweepCodeService.exportXunJian(parser.getMap());
  81. ExcelUtils.writeSheet(OutScanEstate.class, outScanEstates).export(resp,"问询管理");
  82. }
  83. @ApiOperation("特殊人员查询")
  84. @PostMapping("/whepi/OutUser/selectAllOutUser")
  85. public Model<List<OutUser>> selectAllOutUser(PageDb pageDb,HttpParameterParser parser) {
  86. List<OutUser> outUsers = outUserMapper.getAllOutUser(pageDb,parser.getMap());
  87. return Model.newSuccess(pageDb,outUsers);
  88. }
  89. @ApiOperation("检查电话号码")
  90. @PostMapping("/whepi/OutUser/getUptownHomeByPhone")
  91. public Model<UptownHome> getUptownHomeByPhone(@Pd(name = "phone") String phone) {
  92. List<UptownHome> outUsers = uptownHomeMapper.getUptownHomeByPhone(phone);
  93. if (outUsers.size() > 0) {
  94. return Model.newSuccess(outUsers.get(0));
  95. } else {
  96. return Model.newFail("该号码并未注册");
  97. }
  98. }
  99. @ApiOperation("更改特殊人员出入的时间")
  100. @PostMapping("/whepi/OutUser/updateOutUser")
  101. public Model updateOutUser(@Pd(name = "tuId") Long tuId,
  102. @Pd(name = "startDate") String startDate,
  103. @Pd(name = "endDate") String endDate) throws ParseException {
  104. OutUser o = outUserMapper.selectById(tuId);
  105. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  106. o.setStartDate(sdf.parse(startDate));
  107. o.setEndDate(sdf.parse(endDate));
  108. return Model.newSuccess(outUserMapper.updateById(o));
  109. }
  110. @ApiOperation("保存特殊人员")
  111. @PostMapping("/whepi/OutUser/saveOutUser")
  112. public Model saveOutUser(@JsonBody OutUser outUser) {
  113. OutUser outUser1 = outUserMapper.queryOutUserByPhone(outUser.getPhone());
  114. if (outUser1 != null) {
  115. return Model.newFail("该号码已经添加为特殊人员,请仔细检查该号码。");
  116. }
  117. List<UptownHome> uptownHomes = uptownHomeMapper.getUptownHomeByPhone(outUser.getPhone().toString());
  118. if (uptownHomes.size() > 0) {
  119. outUser.setName(uptownHomes.get(0).getLinkman());
  120. }
  121. outUser.setTuId(IdWorker.getId());
  122. outUser.setStartDate(new Date());
  123. outUser.setEndDate(new Date());
  124. outUser.setTime(1);
  125. return Model.newSuccess(outUserMapper.insert(outUser));
  126. }
  127. @ApiOperation("删除特殊人员的时间")
  128. @PostMapping("/whepi/OutUser/deleteOutUser")
  129. public Model deleteOutUser(@Pd(name = "ids") String ids) {
  130. return Model.newSuccess(outUserMapper.deleteOutUsers(ids));
  131. }
  132. @ApiOperation("小区进出二维码")
  133. @PostMapping("/whepi/qrImg/scanQrImg")
  134. public Model<List<UptownDoor>> scanQrImg(HttpParameterParser parser, PageDb pagination) throws IOException, WriterException {
  135. List<UptownDoor> list = uptownDoorMapper.getAllUptownDoor(pagination, parser.getMap());
  136. for (UptownDoor door : list) {
  137. if (door.getUptownId() == 1238790987234L || door.getUptownId() == 5) {
  138. if (door.getInImg().equals("")) {
  139. String img = scan_qr(door.getDoorId(),1,door.getDoorName()+getName(1));
  140. uptownDoorMapper.updateDoorQc("in_img", img, door.getDoorId());
  141. door.setInImg(img);
  142. }
  143. if (door.getOutImg().equals("")) {
  144. String img = scan_qr(door.getDoorId(),2, door.getDoorName()+getName(2));
  145. uptownDoorMapper.updateDoorQc("out_img", img, door.getDoorId());
  146. door.setOutImg(img);
  147. }
  148. } else {
  149. if (door.getInImg().equals("")) {
  150. String img = scan_qr(door.getDoorId(),1,door.getUptownName()+door.getDoorName()+getName(1));
  151. uptownDoorMapper.updateDoorQc("in_img", img, door.getDoorId());
  152. door.setInImg(img);
  153. }
  154. if (door.getOutImg().equals("")) {
  155. String img = scan_qr(door.getDoorId(),2,door.getUptownName()+door.getDoorName()+getName(2));
  156. uptownDoorMapper.updateDoorQc("out_img", img, door.getDoorId());
  157. door.setOutImg(img);
  158. }
  159. }
  160. }
  161. return Model.newSuccess(pagination, list);
  162. }
  163. @ApiOperation("获取小区大门详细")
  164. @GetMapping("/whepi/qrImg/getDoorById")
  165. public Model<UptownDoor> getDoorById(HttpParameterParser parser, @Pd(name = "doorId") Long doorId) {
  166. return Model.newSuccess(uptownDoorMapper.getUptownDoorById(doorId));
  167. }
  168. @ApiOperation("保存小区大门信息")
  169. @PostMapping("/whepi/qrImg/insertDoor")
  170. public Model insert(@JsonBody UptownDoor uptownDoor) {
  171. List<UptownDoor> list = uptownDoorMapper.getUptownDoor(uptownDoor.getDoorName(), uptownDoor.getUptownId());
  172. if (list.size() > 0) {
  173. return Model.newFail("当前小区已经添加该门");
  174. }
  175. return Model.newSuccess(scanAdminService.saveUptownDoor(uptownDoor));
  176. }
  177. @ApiOperation("获取小区大门详细")
  178. @PostMapping("/whepi/qrImg/getUptown")
  179. public Model<List<Uptown>> getUptown(HttpParameterParser parser, PageDb pagination) {
  180. return Model.newSuccess(pagination, uptownMapper.getUptowns(pagination, parser.getMap()));
  181. }
  182. // 获取code
  183. private static final String oauth2 = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=";
  184. private static final String moreUrl = "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
  185. @Value("${yvan.wechat.appID}")
  186. private String appId;
  187. @Value("${yvan.wechat.domain}")
  188. private String domain;
  189. /**
  190. * 生成进出门二维码
  191. * @param doorId 小区大门ID
  192. * @param inType 1进入;2外出
  193. * @param response
  194. * @throws IOException
  195. * @throws WriterException
  196. */
  197. // @GetMapping(value = "/whepi/scan/scan_qr")
  198. // public String scanQrImg(@Pd(name = "doorId") Long doorId, @Pd(name = "inType") Integer inType, @Pd(name = "name") String name,
  199. // HttpServletResponse response) throws IOException, WriterException {
  200. // String url = oauth2+appId +"&redirect_uri="+URLEncoder.encode(domain()+"user/scan.html?doorId="+doorId+"&inType="+inType,"utf-8")+moreUrl;
  201. // String file = QRCode.createBase64Img(url, "家园互助平台", name);
  202. // return file;
  203. // }
  204. public String scan_qr(Long doorId, Integer inType, String name)
  205. throws IOException, WriterException {
  206. String url = oauth2+appId +"&redirect_uri="+URLEncoder.encode(domain()+"user/scan.html?doorId="+doorId+"&inType="+inType,"utf-8")+moreUrl;
  207. String file = QRCode.createBase64Img(url, "家园互助平台", name);
  208. return file;
  209. }
  210. /**
  211. * 生成校园巡逻二维码
  212. * @throws IOException
  213. * @throws WriterException
  214. */
  215. @GetMapping(value = "/whepi/scan/scanEstate_qr")
  216. public String scanEstateQrImg(HttpServletResponse response) throws IOException, WriterException {
  217. String url = oauth2 + appId + "&redirect_uri=" + URLEncoder.encode( domain() + "user/scanEstate.html","utf-8") + moreUrl;
  218. String file = QRCode.createBase64Img(url, "家园互助平台", "校园巡检二维码");
  219. return file;
  220. }
  221. public String domain() {
  222. if (domain.substring(domain.length()-1).equals("/")) {
  223. return domain;
  224. } else {
  225. return domain + "/";
  226. }
  227. }
  228. public String getName(Integer inType) {
  229. if (inType == 1) {
  230. return "入口";
  231. } else if (inType == 2) {
  232. return "出口";
  233. }
  234. return null;
  235. }
  236. }