SysUserAccountServiceImpl.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. package com.huimv.cattle.service.impl;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.huimv.cattle.mapper.SysFarmMapper;
  9. import com.huimv.cattle.mapper.SysFarmServiceMapper;
  10. import com.huimv.cattle.mapper.SysUserAccountMapper;
  11. import com.huimv.cattle.pojo.SysFarm;
  12. import com.huimv.cattle.pojo.SysFarmService;
  13. import com.huimv.cattle.pojo.SysUserAccount;
  14. import com.huimv.cattle.service.SysUserAccountService;
  15. import com.huimv.cattle.session.AccessToken;
  16. import com.huimv.cattle.token.TokenSign;
  17. import com.huimv.cattle.utils.ConstUtil;
  18. import com.huimv.cattle.utils.DateUtil;
  19. import com.huimv.cattle.utils.ResultUtil;
  20. import com.huimv.common.utils.Result;
  21. import com.huimv.common.utils.ResultCode;
  22. import org.apache.commons.lang3.StringUtils;
  23. import org.springframework.beans.factory.annotation.Value;
  24. //import org.springframework.data.redis.core.RedisTemplate;
  25. import org.springframework.stereotype.Service;
  26. import org.springframework.transaction.annotation.Transactional;
  27. import javax.annotation.Resource;
  28. import javax.servlet.http.HttpServletRequest;
  29. import java.text.ParseException;
  30. import java.util.Arrays;
  31. import java.util.Date;
  32. import java.util.List;
  33. import java.util.Map;
  34. /**
  35. * <p>
  36. * 服务实现类
  37. * </p>
  38. *
  39. * @author zn
  40. * @since 2022-09-26
  41. */
  42. @Service
  43. public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper, SysUserAccount> implements SysUserAccountService {
  44. @Resource
  45. private SysUserAccountMapper sysUserAccountMapper;
  46. @Resource
  47. private SysFarmServiceMapper farmServiceMapper;
  48. @Resource
  49. private SysFarmMapper farmMapper;
  50. // @Resource
  51. // private RedisTemplate redisTemplate;
  52. @Resource
  53. private ResultUtil resultUtil;
  54. @Value("${user.defaultPassword}")
  55. private String defaultPassword;
  56. @Override
  57. public Result login(HttpServletRequest request, Map<String, String> paramsMap) {
  58. String accountName = paramsMap.get("accountName");
  59. String password = paramsMap.get("password");
  60. String remoteHost = request.getRemoteHost();
  61. QueryWrapper<SysUserAccount> queryWrapper = new QueryWrapper<>();
  62. queryWrapper.eq("account_name", accountName).eq("password", password);
  63. SysUserAccount resultSysUserAccount = sysUserAccountMapper.selectOne(queryWrapper);
  64. System.out.println("sysUserAccount=" + resultSysUserAccount);
  65. if (resultSysUserAccount == null) {
  66. //账号、密码错误
  67. return new Result(ConstUtil.ERR_NO_EXIST_CODE, ConstUtil.ERR_NO_EXIST_INFO, false);
  68. }
  69. if (resultSysUserAccount.getLoginStatus() == 0) {
  70. //牧场状态不能为中止服务状态(0)
  71. return new Result(ConstUtil.ERR_FARM_TIMEOUT_CODE, ConstUtil.ERR_FARM_TIMEOUT_INFO, false);
  72. } else if (resultSysUserAccount.getLoginStatus() == 2) {
  73. //牧场状态不能为注销状态(2)
  74. return new Result(ConstUtil.ERR_FARM_CANCEL_CODE, ConstUtil.ERR_FARM_CANCEL_INFO, false);
  75. }
  76. //判断服务状态
  77. Integer accountClass = resultSysUserAccount.getAccountClass();
  78. if (accountClass == 2) {
  79. Date now = new Date();
  80. List<SysFarmService> farmServices = farmServiceMapper.selectList(new QueryWrapper<SysFarmService>().eq("farm_code", resultSysUserAccount.getFarmCode()).ge("end_date", now).le("start_date", now));
  81. if (ObjectUtil.isEmpty(farmServices)) {
  82. return new Result(ConstUtil.ERR_FARM_OVERDUE_CODE, ConstUtil.ERR_FARM_OVERDUE_INFO, false);
  83. }
  84. }
  85. //--更新当前登录状态 --//
  86. resultSysUserAccount.setLoginTime(new Date());
  87. sysUserAccountMapper.updateById(resultSysUserAccount);
  88. //将当前账号加入到set集合当中(退出时从该集合删除该账号信息)
  89. // _createLoginStatus(accountName);
  90. //-- 构造token --//
  91. AccessToken accessToken = new AccessToken();
  92. Long id = resultSysUserAccount.getId();
  93. String farmCode = resultSysUserAccount.getFarmCode();
  94. accessToken.setAccountName(accountName);
  95. accessToken.setCreated(new Date());
  96. accessToken.setCode(null);
  97. accessToken.setMessage("");
  98. accessToken.setFarmId(farmCode);
  99. System.out.println("login.farmCode >>>>>>>>>>>>>>>>>>> " + farmCode);
  100. //构造token
  101. String token = TokenSign.sign(accountName, id, farmCode, "");
  102. accessToken.setToken(token);
  103. accessToken.setId(id.intValue());
  104. accessToken.setLoginIp(remoteHost);
  105. accessToken.setUserName(resultSysUserAccount.getUserName());
  106. accessToken.setType(null);
  107. accessToken.setAccontClass(resultSysUserAccount.getAccountClass());
  108. return new Result(ResultCode.SUCCESS, accessToken);
  109. }
  110. // private void _createLoginStatus(String accountName) {
  111. // //-- 将有令牌的登录账户加入缓存集合 --//
  112. // String key = "TOKEN:ACCOUNT:SET";
  113. //// redisTemplate.opsForValue().set(key, accountName);
  114. // redisTemplate.opsForSet().add(key, accountName);
  115. // System.out.println("_createLoginStatus");
  116. // }
  117. @Override
  118. public Result logout(HttpServletRequest request, Map<String, String> paramsMap) {
  119. // String accountName = paramsMap.get("accountName");
  120. // String accountName = request.getHeader("accountName");
  121. // String accountName2 = request.getQueryString();
  122. //--将有令牌的登录账户从缓存集合中删除--//
  123. // String key = "TOKEN:ACCOUNT:SET";
  124. // redisTemplate.opsForSet().remove(key, accountName);
  125. // return new Result(ResultCode.SUCCESS);
  126. return null;
  127. }
  128. /**
  129. * @Method : newUserAccount
  130. * @Description : 创建用户账号
  131. * @Params : [paramsMap]
  132. * @Return : com.huimv.common.utils.Result
  133. * @Author : ZhuoNing
  134. * @Date : 2022/10/9
  135. * @Time : 18:03
  136. */
  137. @Override
  138. public Result newUserAccount(HttpServletRequest request, Map<String, String> paramsMap) {
  139. //登录状态
  140. String loginStatus = paramsMap.get("loginStatus");
  141. if (StringUtils.isBlank(loginStatus)) {
  142. loginStatus = "1";
  143. }
  144. String accountType = paramsMap.get("accountType");
  145. String farmCode ="";
  146. if ("1".equals(accountType)){
  147. farmCode = paramsMap.get("farmCode");
  148. }else {
  149. farmCode = TokenSign.getFarmCode(request);
  150. }
  151. // if ("1".equals(accountClass)){
  152. // farmCode = "0";
  153. // }
  154. if (farmCode == "" ||StringUtils.isBlank(farmCode)){
  155. farmCode = "0";
  156. }
  157. System.out.println(farmCode);
  158. //查询判断是否有重名存在
  159. QueryWrapper<SysUserAccount> queryWrapperUserAccount = new QueryWrapper<>();
  160. queryWrapperUserAccount.eq("account_name", paramsMap.get("accountName"));
  161. Long userCount = sysUserAccountMapper.selectCount(queryWrapperUserAccount);
  162. if (userCount > 0) {
  163. return new Result(ConstUtil.ERR_ACCOUNT_SAME_CODE, ConstUtil.ERR_ACCOUNT_SAME_INFO, false);
  164. }
  165. SysUserAccount userAccount = new SysUserAccount();
  166. userAccount.setUserName(paramsMap.get("userName"));
  167. userAccount.setMale(Integer.parseInt(paramsMap.get("male")));
  168. userAccount.setJob(paramsMap.get("job"));
  169. userAccount.setMobile(paramsMap.get("mobile"));
  170. userAccount.setAccountClass(Integer.parseInt(paramsMap.get("accountClass")));
  171. userAccount.setAccountType(Integer.parseInt(paramsMap.get("accountType")));
  172. userAccount.setAccountName(paramsMap.get("accountName"));
  173. userAccount.setPassword(paramsMap.get("password"));
  174. // userAccount.setLoginTime(new java.sql.Date(new Date().getTime()));
  175. userAccount.setFarmCode(farmCode);
  176. userAccount.setLoginStatus(Integer.parseInt(loginStatus));
  177. return resultUtil.getResult(sysUserAccountMapper.insert(userAccount));
  178. }
  179. /**
  180. * @Method : editUserAccount
  181. * @Description : 编辑用户账号
  182. * @Params : [paramsMap]
  183. * @Return : com.huimv.common.utils.Result
  184. * @Author : ZhuoNing
  185. * @Date : 2022/10/9
  186. * @Time : 18:03
  187. */
  188. @Override
  189. public Result editUserAccount(Map<String, String> paramsMap) {
  190. //登录状态
  191. String loginStatus = paramsMap.get("loginStatus");
  192. if (StringUtils.isBlank(loginStatus)) {
  193. loginStatus = "1";
  194. }
  195. //
  196. String farmCode = paramsMap.get("farmCode");
  197. if (StringUtils.isBlank(farmCode)||farmCode == "") {
  198. farmCode = "0";
  199. }
  200. String id = paramsMap.get("id");
  201. SysUserAccount sysUserAccount = sysUserAccountMapper.selectById(id);
  202. Date loginTime = sysUserAccount.getLoginTime();
  203. SysUserAccount userAccount = new SysUserAccount();
  204. userAccount.setId(Long.parseLong(id));
  205. userAccount.setUserName(paramsMap.get("userName"));
  206. userAccount.setMale(Integer.parseInt(paramsMap.get("male")));
  207. userAccount.setJob(paramsMap.get("job"));
  208. userAccount.setMobile(paramsMap.get("mobile"));
  209. userAccount.setAccountClass(Integer.parseInt(paramsMap.get("accountClass")));
  210. userAccount.setAccountType(Integer.parseInt(paramsMap.get("accountType")));
  211. userAccount.setAccountName(paramsMap.get("accountName"));
  212. userAccount.setPassword(paramsMap.get("password"));
  213. userAccount.setLoginTime(loginTime);
  214. userAccount.setLoginStatus(Integer.parseInt(loginStatus));
  215. userAccount.setFarmCode(farmCode);
  216. return resultUtil.getResult(sysUserAccountMapper.updateById(userAccount));
  217. }
  218. /**
  219. * @Method : removeUserAccount
  220. * @Description : 批量删除用户账户信息
  221. * @Params : [paramsMap]
  222. * @Return : com.huimv.common.utils.Result
  223. * @Author : ZhuoNing
  224. * @Date : 2022/10/9
  225. * @Time : 17:45
  226. */
  227. @Override
  228. public Result removeUserAccount(Map<String, String> paramsMap) {
  229. String ids = paramsMap.get("ids");
  230. String[] idArray = ids.split(",");
  231. List<String> idList = Arrays.asList(idArray);
  232. QueryWrapper<SysUserAccount> queryWrapper = new QueryWrapper<>();
  233. for (String id : idArray) {
  234. queryWrapper.eq("id", id);
  235. SysUserAccount userAccount = sysUserAccountMapper.selectOne(queryWrapper);
  236. if (userAccount.getAccountClass() == 1 && userAccount.getAccountType() == 1) {
  237. return new Result(ConstUtil.ERR_NO_DELETE_ADMIN_CODE, ConstUtil.ERR_NO_DELETE_ADMIN_INFO, false);
  238. } else {
  239. sysUserAccountMapper.deleteById(userAccount);
  240. }
  241. }
  242. return new Result(ResultCode.SUCCESS);
  243. // return resultUtil.getResult(sysUserAccountMapper.deleteBatchIds(idList));
  244. }
  245. /**
  246. * @Method : listUserAccount
  247. * @Description : 列表展示用户账户
  248. * @Params : [paramsMap]
  249. * @Return : com.huimv.common.utils.Result
  250. * @Author : ZhuoNing
  251. * @Date : 2022/10/9
  252. * @Time : 18:02
  253. */
  254. @Override
  255. public Result listUserAccount(HttpServletRequest request, Map<String, String> paramsMap) throws ParseException {
  256. //
  257. Integer userId = TokenSign.getMemberIdByJwtToken(request);
  258. DateUtil dateUtil = new DateUtil();
  259. String pageNo = paramsMap.get("pageNo") + "";
  260. if (pageNo == null) {
  261. pageNo = "1";
  262. }
  263. String pageSize = paramsMap.get("pageSize") + "";
  264. if (pageSize == null) {
  265. pageSize = "10";
  266. }
  267. String farmCode = request.getHeader("farmCode");
  268. String accountName = paramsMap.get("accountName");
  269. String userName = paramsMap.get("userName");
  270. String accountClass = paramsMap.get("accountClass");
  271. QueryWrapper<SysUserAccount> queryWrapper = new QueryWrapper<>();
  272. queryWrapper.ne("id",userId);
  273. queryWrapper.eq(StringUtils.isNotBlank(farmCode), "farm_code", farmCode);
  274. queryWrapper.like(StringUtils.isNotBlank(accountName), "account_name", accountName);
  275. queryWrapper.like(StringUtils.isNotBlank(userName), "user_name", userName);
  276. // queryWrapper.eq(StringUtils.isNotBlank(accountClass),"account_class",accountClass);
  277. // queryWrapper.and(wrapper ->wrapper.eq("account_class", 1).or().eq("account_type",1));
  278. queryWrapper.and(wrapper -> wrapper.eq("account_type", 1).or().eq("account_type", 2));
  279. queryWrapper.orderByDesc("login_time");
  280. //
  281. Page<SysUserAccount> page = new Page<>(Integer.parseInt(pageNo), Integer.parseInt(pageSize));
  282. Page<SysUserAccount> pageSysUserAccount = sysUserAccountMapper.selectPage(page, queryWrapper);
  283. List<SysUserAccount> sysUserAccountList = pageSysUserAccount.getRecords();
  284. JSONArray dataJa = new JSONArray();
  285. for (SysUserAccount sysUserAccount : sysUserAccountList) {
  286. String farmCode1 = sysUserAccount.getFarmCode();
  287. SysFarm sysFarm = farmMapper.selectOne(new QueryWrapper<SysFarm>().eq("farm_code", farmCode1));
  288. JSONObject dataJo = (JSONObject) JSONObject.toJSON(sysUserAccount);
  289. dataJo.put("loginTime", dateUtil.formatDatetimeText(dataJo.getDate("loginTime")));
  290. dataJo.put("farmName", "");
  291. if (ObjectUtil.isNotEmpty(sysFarm)) {
  292. dataJo.put("farmName", sysFarm.getFarmName());
  293. }
  294. dataJa.add(dataJo);
  295. }
  296. JSONObject resultJo = new JSONObject();
  297. resultJo.put("records", dataJa);
  298. resultJo.put("total", pageSysUserAccount.getTotal());
  299. resultJo.put("size", pageSysUserAccount.getSize());
  300. resultJo.put("current", pageSysUserAccount.getCurrent());
  301. resultJo.put("orders", pageSysUserAccount.orders());
  302. resultJo.put("optimizeCountSql", pageSysUserAccount.optimizeCountSql());
  303. resultJo.put("searchCount", pageSysUserAccount.searchCount());
  304. resultJo.put("countId", pageSysUserAccount.countId());
  305. resultJo.put("maxLimit", pageSysUserAccount.maxLimit());
  306. resultJo.put("pages", pageSysUserAccount.getPages());
  307. return new Result(ResultCode.SUCCESS, resultJo);
  308. }
  309. @Override
  310. @Transactional(rollbackFor = Exception.class)
  311. public Result resetPassword(Map<String, String> paramsMap) {
  312. String ids = paramsMap.get("ids");
  313. String[] idArray = ids.split(",");
  314. int rows = 0;
  315. for (String id : idArray) {
  316. SysUserAccount SysUserAccount = new SysUserAccount();
  317. SysUserAccount.setId(Long.parseLong(id));
  318. SysUserAccount.setPassword(defaultPassword);
  319. rows += sysUserAccountMapper.updateById(SysUserAccount);
  320. }
  321. return resultUtil.getResult(rows);
  322. }
  323. @Override
  324. public Result loginApp(HttpServletRequest request, Map<String, String> paramsMap) {
  325. String accountName = paramsMap.get("accountName");
  326. String password = paramsMap.get("password");
  327. String remoteHost = request.getRemoteHost();
  328. QueryWrapper<SysUserAccount> queryWrapper = new QueryWrapper<>();
  329. queryWrapper.eq("account_name", accountName).eq("password", password).eq("account_class", 2);
  330. SysUserAccount resultSysUserAccount = sysUserAccountMapper.selectOne(queryWrapper);
  331. System.out.println("sysUserAccount=" + resultSysUserAccount);
  332. if (resultSysUserAccount == null) {
  333. //账号、密码错误
  334. return new Result(ConstUtil.ERR_NO_EXIST_CODE, ConstUtil.ERR_NO_EXIST_INFO, false);
  335. }
  336. if (resultSysUserAccount.getLoginStatus() == 0) {
  337. //牧场状态不能为中止服务状态(0)
  338. return new Result(ConstUtil.ERR_FARM_TIMEOUT_CODE, ConstUtil.ERR_FARM_TIMEOUT_INFO, false);
  339. } else if (resultSysUserAccount.getLoginStatus() == 2) {
  340. //牧场状态不能为注销状态(2)
  341. return new Result(ConstUtil.ERR_FARM_CANCEL_CODE, ConstUtil.ERR_FARM_CANCEL_INFO, false);
  342. }
  343. //判断服务状态
  344. Integer accountClass = resultSysUserAccount.getAccountClass();
  345. if (accountClass == 2) {
  346. Date now = new Date();
  347. List<SysFarmService> farmServices = farmServiceMapper.selectList(new QueryWrapper<SysFarmService>().eq("farm_code", resultSysUserAccount.getFarmCode()).ge("end_date", now).le("start_date", now));
  348. if (ObjectUtil.isEmpty(farmServices)) {
  349. return new Result(100012, "该牧场未在服务有效期", false);
  350. }
  351. }
  352. //--更新当前登录状态 --//
  353. resultSysUserAccount.setLoginTime(new Date());
  354. sysUserAccountMapper.updateById(resultSysUserAccount);
  355. //将当前账号加入到set集合当中(退出时从该集合删除该账号信息)
  356. // _createLoginStatus(accountName);
  357. //-- 构造token --//
  358. AccessToken accessToken = new AccessToken();
  359. Long id = resultSysUserAccount.getId();
  360. String farmCode = resultSysUserAccount.getFarmCode();
  361. accessToken.setAccountName(accountName);
  362. accessToken.setCreated(new Date());
  363. accessToken.setCode(null);
  364. accessToken.setMessage("");
  365. accessToken.setFarmId(farmCode);
  366. System.out.println("login.farmCode >>>>>>>>>>>>>>>>>>> " + farmCode);
  367. //构造token
  368. String token = TokenSign.sign(accountName, id, farmCode, "");
  369. accessToken.setToken(token);
  370. accessToken.setId(id.intValue());
  371. accessToken.setLoginIp(remoteHost);
  372. accessToken.setUserName(resultSysUserAccount.getUserName());
  373. accessToken.setType(null);
  374. accessToken.setAccontClass(resultSysUserAccount.getAccountClass());
  375. return new Result(ResultCode.SUCCESS, accessToken);
  376. }
  377. @Override
  378. public Result listPlatformUserAndFarmAdmin(HttpServletRequest request, Map<String, String> paramsMap) throws ParseException {
  379. //
  380. DateUtil dateUtil = new DateUtil();
  381. String pageNo = paramsMap.get("pageNo") + "";
  382. if (StringUtils.isBlank(pageNo)) {
  383. pageNo = "1";
  384. }
  385. String pageSize = paramsMap.get("pageSize") + "";
  386. if (StringUtils.isBlank(pageSize)) {
  387. pageSize = "10";
  388. }
  389. String accountName = paramsMap.get("accountName");
  390. String userName = paramsMap.get("userName");
  391. QueryWrapper<SysUserAccount> queryWrapper = new QueryWrapper<>();
  392. queryWrapper.like(StringUtils.isNotBlank(accountName), "account_name", accountName);
  393. queryWrapper.like(StringUtils.isNotBlank(userName), "user_name", userName);
  394. queryWrapper.and(wrapper -> wrapper.eq("account_class", 1).or().eq("account_type", 1));
  395. queryWrapper.orderByDesc("login_time");
  396. //
  397. Page<SysUserAccount> page = new Page<>(Integer.parseInt(pageNo), Integer.parseInt(pageSize));
  398. Page<SysUserAccount> pageSysUserAccount = sysUserAccountMapper.selectPage(page, queryWrapper);
  399. List<SysUserAccount> sysUserAccountList = pageSysUserAccount.getRecords();
  400. JSONArray dataJa = new JSONArray();
  401. for (SysUserAccount sysUserAccount : sysUserAccountList) {
  402. String farmCode1 = sysUserAccount.getFarmCode();
  403. SysFarm sysFarm = farmMapper.selectOne(new QueryWrapper<SysFarm>().eq("farm_code", farmCode1));
  404. JSONObject dataJo = (JSONObject) JSONObject.toJSON(sysUserAccount);
  405. dataJo.put("loginTime", dateUtil.formatDatetimeText(dataJo.getDate("loginTime")));
  406. dataJo.put("farmName", "");
  407. if (ObjectUtil.isNotEmpty(sysFarm)) {
  408. dataJo.put("farmName", sysFarm.getFarmName());
  409. }
  410. dataJa.add(dataJo);
  411. }
  412. JSONObject resultJo = new JSONObject();
  413. resultJo.put("records", dataJa);
  414. resultJo.put("total", pageSysUserAccount.getTotal());
  415. resultJo.put("size", pageSysUserAccount.getSize());
  416. resultJo.put("current", pageSysUserAccount.getCurrent());
  417. resultJo.put("orders", pageSysUserAccount.orders());
  418. resultJo.put("optimizeCountSql", pageSysUserAccount.optimizeCountSql());
  419. resultJo.put("searchCount", pageSysUserAccount.searchCount());
  420. resultJo.put("countId", pageSysUserAccount.countId());
  421. resultJo.put("maxLimit", pageSysUserAccount.maxLimit());
  422. resultJo.put("pages", pageSysUserAccount.getPages());
  423. return new Result(ResultCode.SUCCESS, resultJo);
  424. }
  425. @Override
  426. public Result resetMyPassword(HttpServletRequest request, Map<String, String> paramsMap) {
  427. String accountName = request.getHeader("accountName");
  428. String oldPassword = paramsMap.get("oldPassword");
  429. String password = paramsMap.get("password");
  430. QueryWrapper<SysUserAccount> queryWrapper = new QueryWrapper();
  431. queryWrapper.eq("account_name", accountName);
  432. queryWrapper.eq("password", oldPassword);
  433. SysUserAccount sysUserAccount = sysUserAccountMapper.selectOne(queryWrapper);
  434. if (sysUserAccount == null) {
  435. return new Result(ConstUtil.ERR_PASSWORD_ERROR_CODE, ConstUtil.ERR_PASSWORD_ERROR_INFO, false);
  436. }
  437. sysUserAccount.setPassword(password);
  438. int rows = sysUserAccountMapper.updateById(sysUserAccount);
  439. if (rows == 0) {
  440. return new Result(ConstUtil.ERR_UPDATE_PASSWORD_CODE, ConstUtil.ERR_UPDATE_PASSWORD_INFO,false);
  441. } else {
  442. return new Result(ResultCode.SUCCESS);
  443. }
  444. }
  445. @Override
  446. public Result loginScreen(HttpServletRequest request, Map<String, String> paramsMap) {
  447. String accountName = paramsMap.get("accountName");
  448. String password = paramsMap.get("password");
  449. String remoteHost = request.getRemoteHost();
  450. QueryWrapper<SysUserAccount> queryWrapper = new QueryWrapper<>();
  451. queryWrapper.eq("account_name", accountName).eq("password", password).eq("account_class",1);
  452. SysUserAccount resultSysUserAccount = sysUserAccountMapper.selectOne(queryWrapper);
  453. System.out.println("sysUserAccount=" + resultSysUserAccount);
  454. if (resultSysUserAccount == null) {
  455. //账号、密码错误
  456. return new Result(ConstUtil.ERR_NO_EXIST_CODE, ConstUtil.ERR_NO_EXIST_INFO, false);
  457. }
  458. if (resultSysUserAccount.getLoginStatus() == 0) {
  459. //牧场状态不能为中止服务状态(0)
  460. return new Result(ConstUtil.ERR_FARM_TIMEOUT_CODE, ConstUtil.ERR_FARM_TIMEOUT_INFO, false);
  461. } else if (resultSysUserAccount.getLoginStatus() == 2) {
  462. //牧场状态不能为注销状态(2)
  463. return new Result(ConstUtil.ERR_FARM_CANCEL_CODE, ConstUtil.ERR_FARM_CANCEL_INFO, false);
  464. }
  465. //判断服务状态
  466. Integer accountClass = resultSysUserAccount.getAccountClass();
  467. if (accountClass == 2) {
  468. Date now = new Date();
  469. List<SysFarmService> farmServices = farmServiceMapper.selectList(new QueryWrapper<SysFarmService>().eq("farm_code", resultSysUserAccount.getFarmCode()).ge("end_date", now).le("start_date", now));
  470. if (ObjectUtil.isEmpty(farmServices)) {
  471. return new Result(ConstUtil.ERR_FARM_OVERDUE_CODE, ConstUtil.ERR_FARM_OVERDUE_INFO, false);
  472. }
  473. }
  474. //--更新当前登录状态 --//
  475. resultSysUserAccount.setLoginTime(new Date());
  476. sysUserAccountMapper.updateById(resultSysUserAccount);
  477. //将当前账号加入到set集合当中(退出时从该集合删除该账号信息)
  478. // _createLoginStatus(accountName);
  479. //-- 构造token --//
  480. AccessToken accessToken = new AccessToken();
  481. Long id = resultSysUserAccount.getId();
  482. String farmCode = resultSysUserAccount.getFarmCode();
  483. accessToken.setAccountName(accountName);
  484. accessToken.setCreated(new Date());
  485. accessToken.setCode(null);
  486. accessToken.setMessage("");
  487. accessToken.setFarmId(farmCode);
  488. System.out.println("login.farmCode >>>>>>>>>>>>>>>>>>> " + farmCode);
  489. //构造token
  490. String token = TokenSign.sign(accountName, id, farmCode, "");
  491. accessToken.setToken(token);
  492. accessToken.setId(id.intValue());
  493. accessToken.setLoginIp(remoteHost);
  494. accessToken.setUserName(resultSysUserAccount.getUserName());
  495. accessToken.setType(null);
  496. accessToken.setAccontClass(resultSysUserAccount.getAccountClass());
  497. return new Result(ResultCode.SUCCESS, accessToken);
  498. }
  499. }