SysUserController.java 16 KB

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