ScanAdminController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  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/selectLingyunUser")
  65. public Model<List<SysUptownHouse>> selectLingyunUser(PageDb pageDb,HttpParameterParser parser) {
  66. // HttpServletResponse response,HttpServletRequest request
  67. List<SysUptownHouse> sysUptownHouses = sweepCodeService.selectLingyunUser(pageDb,parser.getMap());
  68. return Model.newSuccess(pageDb,sysUptownHouses);
  69. }
  70. @ApiOperation("导出")
  71. @PostMapping("/whepi/sweepCode/export")
  72. @SneakyThrows
  73. public void export(HttpParameterParser parser,HttpServletResponse resp) {
  74. List<SysUptownHouse> sysUptownHouses = sweepCodeService.export(parser.getMap());
  75. ExcelUtils.writeSheet(SysUptownHouse.class, sysUptownHouses).export(resp,"出入管理");
  76. }
  77. @ApiOperation("出入查询")
  78. @PostMapping("/whepi/sweepCode/selectXunJian")
  79. public Model<List<OutScanEstate>> selectXunJian(PageDb pageDb,HttpParameterParser parser) {
  80. List<OutScanEstate> outScanEstates = sweepCodeService.selectXunJian(pageDb,parser.getMap());
  81. return Model.newSuccess(pageDb,outScanEstates);
  82. }
  83. @ApiOperation("导出")
  84. @PostMapping("/whepi/sweepCode/exportXunJian")
  85. @SneakyThrows
  86. public void exportXunJian(HttpParameterParser parser,HttpServletResponse resp) {
  87. List<OutScanEstate> outScanEstates = sweepCodeService.exportXunJian(parser.getMap());
  88. ExcelUtils.writeSheet(OutScanEstate.class, outScanEstates).export(resp,"问询管理");
  89. }
  90. @ApiOperation("特殊人员查询")
  91. @PostMapping("/whepi/OutUser/selectAllOutUser")
  92. public Model<List<OutUser>> selectAllOutUser(PageDb pageDb,HttpParameterParser parser) {
  93. List<OutUser> outUsers = outUserMapper.getAllOutUser(pageDb,parser.getMap());
  94. return Model.newSuccess(pageDb,outUsers);
  95. }
  96. @ApiOperation("检查电话号码")
  97. @PostMapping("/whepi/OutUser/getUptownHomeByPhone")
  98. public Model<UptownHome> getUptownHomeByPhone(@Pd(name = "phone") String phone) {
  99. List<UptownHome> outUsers = uptownHomeMapper.getUptownHomeByPhone(phone);
  100. if (outUsers.size() > 0) {
  101. return Model.newSuccess(outUsers.get(0));
  102. } else {
  103. return Model.newFail("该号码并未注册");
  104. }
  105. }
  106. @ApiOperation("更改特殊人员出入的时间")
  107. @PostMapping("/whepi/OutUser/updateOutUser")
  108. public Model updateOutUser(@Pd(name = "tuId") Long tuId,
  109. @Pd(name = "startDate") String startDate,
  110. @Pd(name = "endDate") String endDate) throws ParseException {
  111. OutUser o = outUserMapper.selectById(tuId);
  112. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  113. o.setStartDate(sdf.parse(startDate));
  114. o.setEndDate(sdf.parse(endDate));
  115. return Model.newSuccess(outUserMapper.updateById(o));
  116. }
  117. @ApiOperation("保存特殊人员")
  118. @PostMapping("/whepi/OutUser/saveOutUser")
  119. public Model saveOutUser(@JsonBody OutUser outUser) {
  120. OutUser outUser1 = outUserMapper.queryOutUserByPhone(outUser.getPhone());
  121. if (outUser1 != null) {
  122. return Model.newFail("该号码已经添加为特殊人员,请仔细检查该号码。");
  123. }
  124. List<UptownHome> uptownHomes = uptownHomeMapper.getUptownHomeByPhone(outUser.getPhone().toString());
  125. if (uptownHomes.size() > 0) {
  126. outUser.setName(uptownHomes.get(0).getLinkman());
  127. }
  128. outUser.setTuId(IdWorker.getId());
  129. outUser.setStartDate(new Date());
  130. outUser.setEndDate(new Date());
  131. outUser.setTime(1);
  132. return Model.newSuccess(outUserMapper.insert(outUser));
  133. }
  134. @ApiOperation("删除特殊人员的时间")
  135. @PostMapping("/whepi/OutUser/deleteOutUser")
  136. public Model deleteOutUser(@Pd(name = "ids") String ids) {
  137. return Model.newSuccess(outUserMapper.deleteOutUsers(ids));
  138. }
  139. @ApiOperation("小区进出二维码")
  140. @PostMapping("/whepi/qrImg/scanQrImg")
  141. public Model<List<UptownDoor>> scanQrImg(HttpParameterParser parser, PageDb pagination) throws IOException, WriterException {
  142. List<UptownDoor> list = uptownDoorMapper.getAllUptownDoor(pagination, parser.getMap());
  143. for (UptownDoor door : list) {
  144. if (door.getUptownId() == 1238790987234L || door.getUptownId() == 5) {
  145. if (door.getInImg().equals("")) {
  146. String img = scan_qr(door.getDoorId(),1,door.getDoorName()+getName(1));
  147. uptownDoorMapper.updateDoorQc("in_img", img, door.getDoorId());
  148. door.setInImg(img);
  149. }
  150. if (door.getOutImg().equals("")) {
  151. String img = scan_qr(door.getDoorId(),2, door.getDoorName()+getName(2));
  152. uptownDoorMapper.updateDoorQc("out_img", img, door.getDoorId());
  153. door.setOutImg(img);
  154. }
  155. } else {
  156. if (door.getInImg().equals("")) {
  157. String img = scan_qr(door.getDoorId(),1,door.getUptownName()+door.getDoorName()+getName(1));
  158. uptownDoorMapper.updateDoorQc("in_img", img, door.getDoorId());
  159. door.setInImg(img);
  160. }
  161. if (door.getOutImg().equals("")) {
  162. String img = scan_qr(door.getDoorId(),2,door.getUptownName()+door.getDoorName()+getName(2));
  163. uptownDoorMapper.updateDoorQc("out_img", img, door.getDoorId());
  164. door.setOutImg(img);
  165. }
  166. }
  167. }
  168. return Model.newSuccess(pagination, list);
  169. }
  170. @ApiOperation("获取小区大门详细")
  171. @GetMapping("/whepi/qrImg/getDoorById")
  172. public Model<UptownDoor> getDoorById(HttpParameterParser parser, @Pd(name = "doorId") Long doorId) {
  173. return Model.newSuccess(uptownDoorMapper.getUptownDoorById(doorId));
  174. }
  175. @ApiOperation("保存小区大门信息")
  176. @PostMapping("/whepi/qrImg/insertDoor")
  177. public Model insert(@JsonBody UptownDoor uptownDoor) {
  178. List<UptownDoor> list = uptownDoorMapper.getUptownDoor(uptownDoor.getDoorName(), uptownDoor.getUptownId());
  179. if (list.size() > 0) {
  180. return Model.newFail("当前小区已经添加该门");
  181. }
  182. return Model.newSuccess(scanAdminService.saveUptownDoor(uptownDoor));
  183. }
  184. @ApiOperation("获取小区大门详细")
  185. @PostMapping("/whepi/qrImg/getUptown")
  186. public Model<List<Uptown>> getUptown(HttpParameterParser parser, PageDb pagination) {
  187. return Model.newSuccess(pagination, uptownMapper.getUptowns(pagination, parser.getMap()));
  188. }
  189. // 获取code
  190. private static final String oauth2 = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=";
  191. private static final String moreUrl = "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
  192. @Value("${yvan.wechat.appID}")
  193. private String appId;
  194. @Value("${yvan.wechat.domain}")
  195. private String domain;
  196. /**
  197. * 生成进出门二维码
  198. * @param doorId 小区大门ID
  199. * @param inType 1进入;2外出
  200. * @param response
  201. * @throws IOException
  202. * @throws WriterException
  203. */
  204. // @GetMapping(value = "/whepi/scan/scan_qr")
  205. // public String scanQrImg(@Pd(name = "doorId") Long doorId, @Pd(name = "inType") Integer inType, @Pd(name = "name") String name,
  206. // HttpServletResponse response) throws IOException, WriterException {
  207. // String url = oauth2+appId +"&redirect_uri="+URLEncoder.encode(domain()+"user/scan.html?doorId="+doorId+"&inType="+inType,"utf-8")+moreUrl;
  208. // String file = QRCode.createBase64Img(url, "家园互助平台", name);
  209. // return file;
  210. // }
  211. public String scan_qr(Long doorId, Integer inType, String name)
  212. throws IOException, WriterException {
  213. String url = oauth2+appId +"&redirect_uri="+URLEncoder.encode(domain()+"user/scan.html?doorId="+doorId+"&inType="+inType,"utf-8")+moreUrl;
  214. String file = QRCode.createBase64Img(url, "家园互助平台", name);
  215. return file;
  216. }
  217. /**
  218. * 生成校园巡逻二维码
  219. * @throws IOException
  220. * @throws WriterException
  221. */
  222. @GetMapping(value = "/whepi/scan/scanEstate_qr")
  223. public String scanEstateQrImg(HttpServletResponse response) throws IOException, WriterException {
  224. String url = oauth2 + appId + "&redirect_uri=" + URLEncoder.encode( domain() + "user/scanEstate.html","utf-8") + moreUrl;
  225. String file = QRCode.createBase64Img(url, "家园互助平台", "校园巡检二维码");
  226. return file;
  227. }
  228. public String domain() {
  229. if (domain.substring(domain.length()-1).equals("/")) {
  230. return domain;
  231. } else {
  232. return domain + "/";
  233. }
  234. }
  235. public String getName(Integer inType) {
  236. if (inType == 1) {
  237. return "入口";
  238. } else if (inType == 2) {
  239. return "出口";
  240. }
  241. return null;
  242. }
  243. }