SysUserController.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450
  1. package com.huimv.farm.damsubsidy.controller;
  2. import cn.hutool.core.date.DateUtil;
  3. import cn.hutool.core.lang.UUID;
  4. import cn.hutool.core.util.ObjectUtil;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  7. import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
  8. import com.huimv.farm.damsubsidy.common.token.TokenSign;
  9. import com.huimv.farm.damsubsidy.common.utils.Result;
  10. import com.huimv.farm.damsubsidy.common.utils.ResultCode;
  11. import com.huimv.farm.damsubsidy.common.utils.SmsUtils;
  12. import com.huimv.farm.damsubsidy.common.utils.UploadImage;
  13. import com.huimv.farm.damsubsidy.config.CharacterEncodingFilter;
  14. import com.huimv.farm.damsubsidy.entity.AccessToken;
  15. import com.huimv.farm.damsubsidy.entity.SysUser;
  16. import com.huimv.farm.damsubsidy.service.ISysUserService;
  17. import org.apache.poi.util.StringUtil;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.data.redis.core.RedisTemplate;
  20. import org.springframework.util.StringUtils;
  21. import org.springframework.web.bind.annotation.*;
  22. import org.springframework.web.multipart.MultipartFile;
  23. import javax.servlet.http.HttpServletRequest;
  24. import java.io.BufferedInputStream;
  25. import java.io.ByteArrayOutputStream;
  26. import java.io.InputStream;
  27. import java.io.UnsupportedEncodingException;
  28. import java.util.*;
  29. import java.util.concurrent.TimeUnit;
  30. /**
  31. * <p>
  32. * 前端控制器
  33. * </p>
  34. *
  35. * @author author
  36. * @since 2023-04-26
  37. */
  38. @RestController
  39. @RequestMapping("/sys-user")
  40. @CrossOrigin
  41. public class SysUserController {
  42. @Autowired
  43. private ISysUserService iSysUserService;
  44. @Autowired
  45. private RedisTemplate<String,String> redisTemplate;
  46. @PostMapping("/sendCode")
  47. public void senCode(@RequestBody Map<String,String> paramsMap) throws Exception {
  48. String phone = paramsMap.get("phone");
  49. System.out.println(phone);
  50. String code = generateRandomCode();
  51. //模板id
  52. String templateId = "e683346d84234fc1a0816791587a4335";
  53. //模板里的参数,可多个
  54. String[] params = {code};
  55. // 调用发送短信的接口
  56. JSONObject success = SmsUtils.sendSms(templateId,phone, params);
  57. Boolean success1 = (Boolean)success.get("success");
  58. if (success1) {
  59. // 如果发送成功,将手机号和验证码保存
  60. redisTemplate.opsForValue().set("xumu:"+phone,code,5L, TimeUnit.MINUTES);
  61. System.out.println("发送成功");
  62. // phoneCodeMap.put(phoneNumber, code);
  63. } else {
  64. // do something
  65. }
  66. System.out.println(success);
  67. }
  68. private static String generateRandomCode() {
  69. Random random = new Random();
  70. String code = "";
  71. for (int i = 0; i < 6; i++) {
  72. code += random.nextInt(10);
  73. }
  74. return code;
  75. }
  76. @PostMapping("/loginOne")
  77. public Result loginOne() {
  78. AccessToken accessToken = new AccessToken();
  79. Result result = iSysUserService.loginOne();
  80. SysUser user = (SysUser) result.getData();
  81. accessToken.setAccountName(user.getUserName());
  82. accessToken.setCreated(new Date());
  83. accessToken.setType(user.getUserType());
  84. accessToken.setToken(TokenSign.sign(user.getUserName(), user.getPhone(),user.getId(),user.getBriefAddressCode(),user.getUserType()));
  85. accessToken.setCode(result.getCode());
  86. accessToken.setMessage(result.getMessage());
  87. accessToken.setUserId(user.getId());
  88. accessToken.setPhone(user.getPhone());
  89. accessToken.setUser(user);
  90. return new Result(ResultCode.SUCCESS,accessToken);
  91. }
  92. @PostMapping(value = "/login")
  93. public Result loginMultilevel(HttpServletRequest req, @RequestBody Map<String, String> map) {
  94. String remoteHost = req.getRemoteHost();
  95. Result result = iSysUserService.loginMultilevel(req, map,remoteHost);
  96. AccessToken accessToken = new AccessToken();
  97. if (result.getCode() == 10000) {
  98. SysUser user = (SysUser) result.getData();
  99. if (user.getUserType() == 4 && user.getPermit() == null) {
  100. accessToken.setPermit(1);
  101. } else {
  102. accessToken.setPermit(0);//不需要
  103. }
  104. accessToken.setAccountName(user.getUserName());
  105. accessToken.setCreated(new Date());
  106. accessToken.setType(user.getUserType());
  107. accessToken.setToken(TokenSign.sign(user.getUserName(), user.getPhone(),user.getId(),user.getBriefAddressCode(),user.getUserType()));
  108. accessToken.setCode(result.getCode());
  109. accessToken.setMessage(result.getMessage());
  110. accessToken.setUserId(user.getId());
  111. accessToken.setPhone(user.getPhone());
  112. accessToken.setLoginIp(remoteHost);
  113. accessToken.setUser(user);
  114. }
  115. if (result.getCode() == 10004) {
  116. accessToken.setAccountName("游客");
  117. accessToken.setCreated(new Date());
  118. accessToken.setToken(TokenSign.sign("游客", map.get("phone"),null,"",10));
  119. accessToken.setLoginIp("");
  120. accessToken.setCode(result.getCode());
  121. accessToken.setMessage(result.getMessage());
  122. accessToken.setLoginIp(remoteHost);
  123. }
  124. if (result.getCode() == 10001) {
  125. return iSysUserService.loginMultilevel(req, map,remoteHost);
  126. }
  127. return new Result(ResultCode.SUCCESS, accessToken);
  128. }
  129. //
  130. @PostMapping(value = "/loginClient")
  131. public Result loginClient(HttpServletRequest req, @RequestBody Map<String, String> map) {
  132. String accountName = map.get("accountName");
  133. String password = map.get("password");
  134. String loginType = map.get("loginType");
  135. String remoteHost = req.getRemoteHost();
  136. //手机登录
  137. if ("1".equals(loginType)){
  138. String phone = map.get("phone");
  139. if (StringUtils.isEmpty(phone)){
  140. return new Result(10001, "请输入手机号",false);
  141. }
  142. Result result = iSysUserService.loginMultilevel(req, map,remoteHost);
  143. if ( result.getCode() == 10000) {
  144. SysUser sysUser = (SysUser) result.getData();
  145. if (sysUser.getUserType() != 0 && sysUser.getUserType() != 4){
  146. return new Result(10001, "该用户未授权",false);
  147. }
  148. }
  149. return result;
  150. }
  151. if ("2".equals(loginType)){
  152. // 未对密码加密
  153. Result result = iSysUserService.loginMultilevelClient(accountName, password,remoteHost);
  154. if(result.getCode() == 10000){
  155. SysUser accountEntity = (SysUser) result.getData();
  156. Long id = accountEntity.getId();
  157. AccessToken accessToken = new AccessToken();
  158. accessToken.setCreated(new Date());
  159. accessToken.setAccountName(accountName);
  160. accessToken.setCode(result.getCode());
  161. accessToken.setMessage(result.getMessage());
  162. String token = TokenSign.sign(accountName,accountEntity.getPhone(),accountEntity.getId(),accountEntity.getBriefAddressCode(),accountEntity.getUserType());
  163. accessToken.setToken(token);
  164. accessToken.setUserName(accountEntity.getUserName());
  165. accessToken.setUserId(accountEntity.getId());
  166. accessToken.setPhone(accountEntity.getPhone());
  167. SysUser user = (SysUser) result.getData();
  168. accessToken.setUser(user);
  169. accessToken.setLoginIp(remoteHost);
  170. return new Result(ResultCode.SUCCESS,accessToken);
  171. }
  172. return result;
  173. }
  174. return new Result(10001, "登录方式有误",false);
  175. }
  176. @PostMapping(value = "/add")
  177. public Result add(HttpServletRequest req,@RequestParam(name = "idCordFrontUrl") MultipartFile idCordFrontUrl,
  178. @RequestParam("idCordBackUrl") MultipartFile idCordBackUrl,
  179. @RequestParam("type") String type,
  180. @RequestParam("userName") String userName,
  181. @RequestParam("idCord") String idCord,
  182. @RequestParam("phone") String phone,
  183. @RequestParam(name = "farmName",required = false) String farmName,
  184. @RequestParam(name = "veterId",required = false) String veterId,
  185. @RequestParam(name = "address") String address,//身份证地址
  186. @RequestParam(name = "detailedAddress") String detailedAddress,//详细地址
  187. @RequestParam(name = "detailedAdressCode") String detailedAdressCode//地址行政码
  188. ) throws UnsupportedEncodingException {
  189. req.setCharacterEncoding("UTF-8");
  190. System.out.println(userName);
  191. String imgname = "成功";
  192. String originalFilename = idCordFrontUrl.getOriginalFilename();
  193. String filenameExtension = StringUtils.getFilenameExtension(originalFilename);
  194. String path = DateUtil.format(new Date(), "yyyy-MM");
  195. try {
  196. InputStream inputStream = idCordFrontUrl.getInputStream();
  197. BufferedInputStream in = new BufferedInputStream(inputStream);
  198. ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
  199. byte[] temp = new byte[1024];
  200. int size = 0;
  201. while ((size = in.read(temp)) != -1) {
  202. out.write(temp, 0, size);
  203. }
  204. in.close();
  205. byte[] content = out.toByteArray();
  206. imgname = UUID.randomUUID() + "." + filenameExtension;
  207. UploadImage.sshSftp(content, path, imgname);
  208. } catch (Exception e) {
  209. e.printStackTrace();
  210. }
  211. String content = "https://img.ifarmcloud.com/images/" + path + "/" + imgname;
  212. String imgname2 = "成功";
  213. String originalFilename2 = idCordBackUrl.getOriginalFilename();
  214. String filenameExtension2 = StringUtils.getFilenameExtension(originalFilename2);
  215. String path2 = DateUtil.format(new Date(), "yyyy-MM");
  216. try {
  217. InputStream inputStream = idCordBackUrl.getInputStream();
  218. BufferedInputStream in = new BufferedInputStream(inputStream);
  219. ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
  220. byte[] temp = new byte[1024];
  221. int size = 0;
  222. while ((size = in.read(temp)) != -1) {
  223. out.write(temp, 0, size);
  224. }
  225. in.close();
  226. byte[] content2 = out.toByteArray();
  227. imgname2 = UUID.randomUUID() + "." + filenameExtension2;
  228. UploadImage.sshSftp(content2, path2, imgname2);
  229. } catch (Exception e) {
  230. e.printStackTrace();
  231. }
  232. String content2 = "https://img.ifarmcloud.com/images/" + path2 + "/" + imgname2;
  233. Map<String, String> map = new HashMap<>();
  234. map.put("idCordFrontUrl", content);
  235. map.put("idCordBackUrl", content2);
  236. map.put("type", type);
  237. CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
  238. map.put("userName", userName);
  239. map.put("idCord", idCord);
  240. map.put("phone", phone);
  241. map.put("veterId", veterId);
  242. map.put("detailedAdressCode", detailedAdressCode);
  243. map.put("farmName", farmName);
  244. map.put("address", address);
  245. map.put("detailedAddress", detailedAddress);
  246. Result result = iSysUserService.add(req, map);
  247. if (result.getCode() == 10000) {
  248. SysUser user = (SysUser) result.getData();
  249. AccessToken accessToken = new AccessToken();
  250. accessToken.setAccountName(user.getUserName());
  251. accessToken.setCreated(new Date());
  252. accessToken.setLoginIp(user.getLastIp());
  253. accessToken.setType(user.getUserType());
  254. accessToken.setToken(TokenSign.sign(user.getUserName(), user.getPhone(),user.getId(),user.getBriefAddressCode(),user.getUserType()));
  255. accessToken.setPhone(user.getPhone());
  256. accessToken.setUser(user);
  257. accessToken.setUserName(user.getUserName());
  258. accessToken.setUserId(user.getId());
  259. accessToken.setMessage(result.getMessage());
  260. return new Result(ResultCode.SUCCESS, accessToken);
  261. } else if (result.getCode() == 10004) {
  262. return new Result(10004, "待审核",false);
  263. } else {
  264. return iSysUserService.add(req,map);
  265. }
  266. }
  267. @PostMapping(value = "/addTest")
  268. public void addTest( @RequestParam("userName") String userName) {
  269. System.out.println(userName);
  270. }
  271. @PostMapping(value = "/edit")
  272. public Result edit(HttpServletRequest req, @RequestBody SysUser user) {
  273. return iSysUserService.edit(req, user);
  274. }
  275. @PostMapping(value = "/list")
  276. public Result list(HttpServletRequest req, @RequestBody Map<String, String> map) {
  277. return iSysUserService.list(req, map);
  278. }
  279. @PostMapping(value = "/findPhone")
  280. public Result findPhone(HttpServletRequest req, @RequestBody Map<String, String> map) {
  281. return iSysUserService.findPhone(req, map);
  282. }
  283. //pc端
  284. @PostMapping(value = "/listPc")
  285. public Result listPc(HttpServletRequest req, @RequestBody Map<String, String> map) {
  286. return iSysUserService.listPc(req, map);
  287. }
  288. @PostMapping(value = "/listPc2")
  289. public Result listPc2(HttpServletRequest req, @RequestBody Map<String, String> map) {
  290. return new Result(ResultCode.SUCCESS, iSysUserService.listPc2(req, map));
  291. }
  292. @PostMapping(value = "/editState")
  293. public Result editState(HttpServletRequest req, @RequestBody Map<String,String> paramsMap) {
  294. return new Result(ResultCode.SUCCESS, iSysUserService.editState(req, paramsMap));
  295. }
  296. //测试-token
  297. @PostMapping(value = "/getToken")
  298. public String getToken(HttpServletRequest req) {
  299. String token = TokenSign.sign("养殖户测试", "13112341236",6L,"",10);
  300. return token;
  301. }
  302. @PostMapping("/listSubordinate")
  303. public Result listSubordinate(@RequestBody Map map , HttpServletRequest request) {
  304. Long userId = TokenSign.getMemberIdByJwtToken(request);
  305. Integer pageNum = (Integer) map.get("pageNum");
  306. Integer pageSize = (Integer) map.get("pageSize");
  307. if (StringUtils.isEmpty(pageNum)){
  308. pageNum =1;
  309. }
  310. if (StringUtils.isEmpty(pageSize)){
  311. pageSize =10;
  312. }
  313. String searchStr = (String) map.get("searchStr");
  314. return iSysUserService.listSubordinate(searchStr,pageNum,pageSize,userId);
  315. }
  316. @PostMapping("/addXiang")
  317. public Result addXiang(@RequestBody SysUser sysUser , HttpServletRequest request) {
  318. Long userId = TokenSign.getMemberIdByJwtToken(request);
  319. return iSysUserService.addXiang(sysUser,userId);
  320. }
  321. @GetMapping("/getTest")
  322. public void getTest( HttpServletRequest request) {
  323. Long userId = TokenSign.getMemberIdByJwtToken(request);
  324. System.out.println(userId);
  325. }
  326. //删除
  327. /* @GetMapping("/remove")
  328. public Result remove(@RequestParam("userIds")String userIds , HttpServletRequest request) {
  329. Long userId = TokenSign.getMemberIdByJwtToken(request);
  330. return iSysUserService.remove(userIds,userId);
  331. }*/
  332. @GetMapping("/removeById")
  333. public Result removeById(@RequestParam("id") Integer id) {
  334. iSysUserService.removeById(id);
  335. return new Result(10000,"删除成功",true);
  336. }
  337. @PostMapping("/update")
  338. public Result update(@RequestBody SysUser sysUser , HttpServletRequest request) {
  339. Long userId = TokenSign.getMemberIdByJwtToken(request);
  340. return iSysUserService.updateUser(sysUser,userId);
  341. }
  342. @PostMapping("/getUser")
  343. public Result getUser(){
  344. List<SysUser> sysUsers = iSysUserService.list(new QueryWrapper<SysUser>().in("user_type", 2, 3));
  345. if (ObjectUtil.isEmpty(sysUsers)){
  346. return new Result(ResultCode.SUCCESS,null);
  347. }else {
  348. return new Result(ResultCode.SUCCESS,sysUsers);
  349. }
  350. }
  351. @PostMapping("/addImg")
  352. public Result addImg(HttpServletRequest httpServletRequest,@RequestParam("permitImg") MultipartFile permitImg,
  353. @RequestParam("id") String id){
  354. String imgname3 = "成功";
  355. String originalFilename3 = permitImg.getOriginalFilename();
  356. String filenameExtension3 = StringUtils.getFilenameExtension(originalFilename3);
  357. String path3 = DateUtil.format(new Date(), "yyyy-MM");
  358. try {
  359. InputStream inputStream = permitImg.getInputStream();
  360. BufferedInputStream in = new BufferedInputStream(inputStream);
  361. ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
  362. byte[] temp = new byte[1024];
  363. int size = 0;
  364. while ((size = in.read(temp)) != -1) {
  365. out.write(temp, 0, size);
  366. }
  367. in.close();
  368. byte[] content3 = out.toByteArray();
  369. imgname3 = UUID.randomUUID() + "." + filenameExtension3;
  370. UploadImage.sshSftp(content3, path3, imgname3);
  371. } catch (Exception e) {
  372. e.printStackTrace();
  373. }
  374. String content3 = "https://img.ifarmcloud.com/images/" + path3 + "/" + imgname3;
  375. Map<String, String> map = new HashMap<>();
  376. map.put("id", id);
  377. map.put("permitImg", content3);
  378. return iSysUserService.addImg(httpServletRequest, map);
  379. }
  380. @PostMapping("/removeByIds")
  381. public Result remove(@RequestBody Map<String, String> paramsMap ) {
  382. return iSysUserService.removeByIds(paramsMap);
  383. }
  384. @PostMapping("/login2")
  385. public Result login2(@RequestBody Map<String, String> paramsMap) {
  386. Result result = iSysUserService.login2(paramsMap);
  387. SysUser user = (SysUser) result.getData();
  388. if (result.getCode() == 10000) {
  389. AccessToken accessToken = new AccessToken();
  390. accessToken.setUser(user);
  391. accessToken.setUserId(user.getId());
  392. accessToken.setToken(TokenSign.sign(user.getUserName(), user.getPhone(), user.getId(),user.getBriefAddressCode(),user.getUserType()));
  393. accessToken.setAccountName(user.getUserName());
  394. accessToken.setCreated(new Date());
  395. accessToken.setLoginIp(user.getLastIp());
  396. accessToken.setType(user.getUserType());
  397. accessToken.setMessage(result.getMessage());
  398. return new Result(ResultCode.SUCCESS, accessToken);
  399. } else {
  400. return result;
  401. }
  402. }
  403. @PostMapping("/listFarmer")
  404. public Result listFarmer(HttpServletRequest httpServletRequest,@RequestBody Map<String,String> paramsMap){
  405. return iSysUserService.listFarmer(httpServletRequest,paramsMap);
  406. }
  407. }