TAdminController.java 68 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630
  1. package com.szwl.controller;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.szwl.annotation.Audit;
  9. import com.szwl.constant.AuditEnum;
  10. import com.szwl.constant.ResponseCodesEnum;
  11. import com.szwl.exception.BizException;
  12. import com.szwl.feign.bean.PayFeign;
  13. import com.szwl.manager.TokenManager;
  14. import com.szwl.model.bo.R;
  15. import com.szwl.model.bo.ResponseModel;
  16. import com.szwl.model.bo.UserDetailBO;
  17. import com.szwl.model.dto.RegisterParamDTO;
  18. import com.szwl.model.entity.*;
  19. import com.szwl.model.param.AddLoginUserParam;
  20. import com.szwl.model.param.LoginParam;
  21. import com.szwl.model.param.UpdateLoginUserParam;
  22. import com.szwl.model.utils.AdminUtils;
  23. import com.szwl.service.*;
  24. import io.swagger.annotations.Api;
  25. import io.swagger.annotations.ApiOperation;
  26. import lombok.extern.slf4j.Slf4j;
  27. import org.apache.commons.lang.StringUtils;
  28. import org.slf4j.Logger;
  29. import org.slf4j.LoggerFactory;
  30. import org.springframework.beans.factory.annotation.Autowired;
  31. import org.springframework.transaction.annotation.Transactional;
  32. import org.springframework.web.bind.annotation.*;
  33. import javax.servlet.http.HttpServletRequest;
  34. import javax.validation.Valid;
  35. import java.util.*;
  36. import java.util.regex.Pattern;
  37. /**
  38. * <p>
  39. * 前端控制器
  40. * </p>
  41. *
  42. * @author wuhs
  43. * @since 2024-07-01
  44. */
  45. @Slf4j
  46. @Api(value = "/tAdmin", tags = {"账户"})
  47. @RestController
  48. @RequestMapping("/tAdmin")
  49. public class TAdminController {
  50. SysRoleService sysRoleService;
  51. SysUserRoleService sysUserRoleService;
  52. TokenManager tokenManager;
  53. TAdminService tAdminService;
  54. TAdminEquipmentService tAdminEquipmentService;
  55. TMessageCodeService tMessageCodeService;
  56. TAirwallexWalletService airwallexWalletService;
  57. PayFeign payFeign;
  58. @Autowired
  59. TWechatService wechatService;
  60. @Autowired
  61. TAreaService areaService;
  62. @Autowired
  63. CitiesService citiesService;
  64. @Autowired
  65. private CountriesService countriesService;
  66. public TAdminController(SysRoleService sysRoleService, SysUserRoleService sysUserRoleService, TokenManager tokenManager, TAdminService tAdminService, TAdminEquipmentService tAdminEquipmentService, TMessageCodeService tMessageCodeService, TAirwallexWalletService airwallexWalletService, PayFeign payFeign) {
  67. this.sysRoleService = sysRoleService;
  68. this.sysUserRoleService = sysUserRoleService;
  69. this.tokenManager = tokenManager;
  70. this.tAdminService = tAdminService;
  71. this.tAdminEquipmentService = tAdminEquipmentService;
  72. this.tMessageCodeService = tMessageCodeService;
  73. this.airwallexWalletService = airwallexWalletService;
  74. this.payFeign = payFeign;
  75. }
  76. private static final Logger logger = LoggerFactory.getLogger(TAdminController.class);
  77. @ApiOperation(value = "通过username查看用户的id和ifForeign")
  78. @GetMapping("/getIdIfForeign")
  79. public ResponseModel<TAdmin> getIdIfForeign(@RequestParam String username) {
  80. if (StringUtils.isEmpty(username)) {
  81. return R.fail("username为空");
  82. }
  83. LambdaQueryWrapper<TAdmin> lqw = Wrappers.lambdaQuery();
  84. lqw.eq(TAdmin::getUsername, username);
  85. List<TAdmin> list = tAdminService.list(lqw);
  86. if (list.isEmpty()) {
  87. return R.fail("username有误");
  88. } else if (list.size() > 1) {
  89. return R.fail("username不唯一");
  90. } else {
  91. TAdmin tAdmin = list.get(0);
  92. tAdmin.setPassword("");
  93. return R.ok(tAdmin);
  94. }
  95. }
  96. @ApiOperation(value = "获取账户类型")
  97. @GetMapping("/getAdminType")
  98. public ResponseModel<Integer> getAdminType(@RequestParam Long adminId) {
  99. if (adminId != null) {
  100. LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
  101. wrapper.eq(TAdmin::getId, adminId);
  102. TAdmin tAdmin = tAdminService.getOne(wrapper);
  103. Integer type = tAdmin.getType();
  104. return R.ok(type);
  105. }
  106. return R.fail("adminId无效");
  107. }
  108. @ApiOperation(value = "判断是否海外用户")
  109. @GetMapping("/getIfForeign/{adminId}")
  110. public ResponseModel<?> getIfForeign(@PathVariable Long adminId) {
  111. if (adminId != null) {
  112. LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
  113. wrapper.eq(TAdmin::getId, adminId);
  114. TAdmin one = tAdminService.getOne(wrapper);
  115. String ifForeign = one.getIfForeign();
  116. return R.ok(ifForeign);
  117. }
  118. return R.fail("未登录");
  119. }
  120. @ApiOperation(value = "添加子账号")
  121. @PostMapping("/addLoginUser")
  122. @Transactional
  123. @Audit(type = AuditEnum.INSERT, content = "#loginUser.name + '添加账号'")
  124. public ResponseModel<?> addLoginUser(@RequestBody @Valid AddLoginUserParam param) {
  125. if (param.getRoleList().size() < 1) {
  126. return R.fail(ResponseCodesEnum.A0001, "角色不能为空");
  127. }
  128. // 保存用户实体
  129. Date now = new Date();
  130. Long parentId = param.getAdminId();
  131. if (parentId == null) {
  132. return R.fail(ResponseCodesEnum.A0001);
  133. }
  134. param.setAdminId(null);
  135. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  136. query.eq(TAdmin::getUsername, param.getUsername());
  137. TAdmin admin = tAdminService.getOne(query);
  138. if (admin != null) {
  139. return R.fail(ResponseCodesEnum.A0201);
  140. }
  141. TAdmin entity = BeanUtil.copyProperties(param, TAdmin.class);
  142. entity.setParentId(parentId);
  143. if (param.getType() != null) {
  144. entity.setType(param.getType());
  145. } else {
  146. entity.setType(3);
  147. }
  148. entity.setIsAdmined(false);
  149. entity.setCreateDate(now);
  150. entity.setModifyDate(now);
  151. entity.setIsLocked(false);
  152. entity.setIsEnabled(true);
  153. entity.setLoginFailureCount(0);
  154. entity.setEmail(param.getEmail());
  155. entity.setPhone(param.getPhone());
  156. entity.setCompanyType(param.getCompanyType());
  157. entity.setPayPlatform(param.getCompanyType());
  158. //获取父账号信息
  159. TAdmin parentAdmin = tAdminService.getById(parentId);
  160. entity.setIfForeign(parentAdmin.getIfForeign());
  161. tAdminService.save(entity);
  162. String ifForeign = parentAdmin.getIfForeign();
  163. if ("1".equals(ifForeign)) {
  164. TAirwallexWallet wallet = new TAirwallexWallet();
  165. wallet.setAdminId(entity.getId());
  166. payFeign.saveAirwallexWallet(wallet);
  167. }
  168. // 管理的机器 需要再建立一个关系表 type区分全部还是部分
  169. String equipmentIds = param.getEquipmentIds();
  170. if (StringUtils.isNotEmpty(equipmentIds) && equipmentIds.equals("all")) {
  171. //管理全部机器
  172. TAdminEquipment tAdminEquipment = new TAdminEquipment();
  173. tAdminEquipment.setAdminId(entity.getId());
  174. tAdminEquipment.setType("0");
  175. tAdminEquipmentService.save(tAdminEquipment);
  176. } else {
  177. //部分机器或者没有机器
  178. TAdminEquipment tAdminEquipment = new TAdminEquipment();
  179. tAdminEquipment.setAdminId(entity.getId());
  180. tAdminEquipment.setType("1");
  181. tAdminEquipment.setEquipmentIds(param.getEquipmentIds());
  182. tAdminEquipmentService.save(tAdminEquipment);
  183. }
  184. List<String> roleList = param.getRoleList();
  185. if (roleList.size() > 0) {
  186. for (String role : roleList) {
  187. SysUserRole sysUserRole = new SysUserRole();
  188. sysUserRole.setRoleId(role);
  189. sysUserRole.setUserId(String.valueOf(entity.getId()));
  190. sysUserRoleService.save(sysUserRole);
  191. }
  192. }
  193. return R.ok(entity);
  194. }
  195. @ApiOperation(value = "修改子账号")
  196. @PostMapping("/updateLoginUser")
  197. @Transactional
  198. @Audit(type = AuditEnum.UPDATE, content = "#loginUser.name + '修改账号'")
  199. public ResponseModel<?> updateLoginUser(@RequestBody @Valid UpdateLoginUserParam param) {
  200. Long parentId = param.getAdminId();
  201. if (parentId == null) {
  202. return R.fail(ResponseCodesEnum.A0001);
  203. }
  204. param.setAdminId(null);
  205. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  206. query.eq(TAdmin::getParentId, parentId);
  207. query.eq(TAdmin::getId, param.getId());
  208. TAdmin admin = tAdminService.getOne(query);
  209. if (admin != null) {
  210. // 管理的机器 需要再建立一个关系表 type区分全部还是部分
  211. String equipmentIds = param.getEquipmentIds();
  212. LambdaQueryWrapper<TAdminEquipment> queryWrapper = Wrappers.lambdaQuery();
  213. queryWrapper.eq(TAdminEquipment::getAdminId, admin.getId());
  214. TAdminEquipment adminEquipment = tAdminEquipmentService.getOne(queryWrapper);
  215. if (adminEquipment != null) {
  216. if (StringUtils.isNotEmpty(equipmentIds) && equipmentIds.equals("all")) {
  217. //管理全部机器
  218. //0:全部机器,1:部分机器
  219. adminEquipment.setType("0");
  220. adminEquipment.setEquipmentIds(null);
  221. } else {
  222. //部分机器或者没有机器
  223. //0:全部机器,1:部分机器
  224. adminEquipment.setType("1");
  225. adminEquipment.setEquipmentIds(param.getEquipmentIds());
  226. }
  227. tAdminEquipmentService.updateById(adminEquipment);
  228. } else {
  229. TAdminEquipment tAdminEquipment = new TAdminEquipment();
  230. tAdminEquipment.setAdminId(admin.getId());
  231. if (StringUtils.isNotEmpty(equipmentIds) && equipmentIds.equals("all")) {
  232. //管理全部机器
  233. //0:全部机器,1:部分机器
  234. tAdminEquipment.setType("0");
  235. tAdminEquipment.setEquipmentIds(null);
  236. } else {
  237. //部分机器或者没有机器
  238. //0:全部机器,1:部分机器
  239. tAdminEquipment.setType("1");
  240. tAdminEquipment.setEquipmentIds(param.getEquipmentIds());
  241. }
  242. tAdminEquipmentService.save(tAdminEquipment);
  243. }
  244. LambdaQueryWrapper<SysUserRole> query1 = Wrappers.lambdaQuery();
  245. query1.eq(SysUserRole::getUserId, admin.getId());
  246. SysUserRole sysUserRole = sysUserRoleService.getOne(query1);
  247. List<String> roleList = param.getRoleList();
  248. if (roleList.size() > 0) {
  249. for (String role : roleList) {
  250. sysUserRole.setRoleId(role);
  251. sysUserRoleService.updateById(sysUserRole);
  252. }
  253. }
  254. admin.setName(param.getName());
  255. admin.setIsEnabled(param.getIsEnabled());
  256. admin.setPhone(param.getPhone());
  257. admin.setEmail(param.getEmail());
  258. admin.setIsEnabled(param.getIsEnabled());
  259. if (StringUtils.isNotEmpty(param.getPassword())) {
  260. admin.setPassword(param.getPassword());
  261. }
  262. tAdminService.updateById(admin);
  263. return R.ok(admin);
  264. }
  265. return R.fail(ResponseCodesEnum.A0100);
  266. }
  267. @ApiOperation(value = "删除子账号")
  268. @PostMapping("/deleteLoginUser")
  269. @Transactional
  270. @Audit(type = AuditEnum.DELETE, content = "#loginUser.name + '删除账号'")
  271. public ResponseModel<?> deleteLoginUser(@RequestBody @Valid UpdateLoginUserParam param) {
  272. Long parentId = param.getAdminId();
  273. if (parentId == null) {
  274. return R.fail(ResponseCodesEnum.A0001);
  275. }
  276. param.setAdminId(null);
  277. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  278. query.like(TAdmin::getParentId, parentId);
  279. query.like(TAdmin::getId, param.getId());
  280. List<TAdmin> list = tAdminService.list(query);
  281. if (list.size() > 0) {
  282. TAdmin admin = list.get(0);
  283. // 管理的机器 需要再建立一个关系表 type区分全部还是部分
  284. String equipmentIds = param.getEquipmentIds();
  285. if (StringUtils.isNotEmpty(equipmentIds)) {
  286. LambdaQueryWrapper<TAdminEquipment> query1 = Wrappers.lambdaQuery();
  287. query1.eq(TAdminEquipment::getAdminId, admin.getId());
  288. List<TAdminEquipment> list1 = tAdminEquipmentService.list(query1);
  289. if (list1.size() > 0) {
  290. TAdminEquipment tAdminEquipment1 = list1.get(0);
  291. tAdminEquipmentService.removeById(tAdminEquipment1.getAdminId());
  292. }
  293. }
  294. // 用户角色关系
  295. LambdaQueryWrapper<SysUserRole> query2 = Wrappers.lambdaQuery();
  296. query2.eq(SysUserRole::getUserId, admin.getId());
  297. SysUserRole sysUserRole = sysUserRoleService.getOne(query2);
  298. sysUserRoleService.removeById(sysUserRole.getId());
  299. tAdminService.removeById(admin.getId());
  300. // log.debug("删除账号 id:{},TAdmin:{}", admin.getId(), admin);
  301. return R.ok(admin);
  302. }
  303. return R.fail(ResponseCodesEnum.A0100);
  304. }
  305. @ApiOperation(value = "获取所有子账号信息")
  306. @GetMapping("/getChildDrenAdminList")
  307. public ResponseModel<?> getChildDrenAdminList(String adminId, String userName, String name) {
  308. List<AddLoginUserParam> returnList = new ArrayList<>();
  309. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  310. query.eq(TAdmin::getParentId, adminId);
  311. if (StringUtils.isNotEmpty(userName)) {
  312. query.eq(TAdmin::getUsername, userName);
  313. }
  314. if (StringUtils.isNotEmpty(name)) {
  315. query.like(TAdmin::getName, name);
  316. }
  317. if (StringUtils.isNotEmpty(adminId)) {
  318. if (adminId.equals("18")) {
  319. query.eq(TAdmin::getType, "1").or().eq(TAdmin::getType, "4");
  320. } else {
  321. query.eq(TAdmin::getType, "3");
  322. }
  323. } else {
  324. return R.fail(ResponseCodesEnum.A0100);
  325. }
  326. query.eq(TAdmin::getIsAdmined, false);
  327. List<TAdmin> list = tAdminService.list(query);
  328. if (!list.isEmpty()) {
  329. for (TAdmin admin : list) {
  330. AddLoginUserParam addLoginUserParam = new AddLoginUserParam();
  331. addLoginUserParam.setUsername(admin.getUsername());
  332. addLoginUserParam.setName(admin.getName());
  333. addLoginUserParam.setEmail(admin.getEmail());
  334. addLoginUserParam.setPhone(admin.getPhone());
  335. addLoginUserParam.setIsEnabled(admin.getIsEnabled());
  336. addLoginUserParam.setId(admin.getId());
  337. LambdaQueryWrapper<TAdminEquipment> query2 = Wrappers.lambdaQuery();
  338. query2.eq(TAdminEquipment::getAdminId, admin.getId());
  339. List<TAdminEquipment> list1 = tAdminEquipmentService.list(query2);
  340. if (!list1.isEmpty()) {
  341. TAdminEquipment tAdminEquipment1 = list1.get(0);
  342. if (tAdminEquipment1.getType().equals("0")) {
  343. //管理全部机器
  344. //0:全部机器,1:部分机器
  345. tAdminEquipment1.setType("0");
  346. tAdminEquipment1.setEquipmentIds(null);
  347. addLoginUserParam.setEquipmentIds("all");
  348. } else {
  349. //部分机器
  350. //0:全部机器,1:部分机器
  351. tAdminEquipment1.setType("1");
  352. addLoginUserParam.setEquipmentIds(tAdminEquipment1.getEquipmentIds());
  353. }
  354. }
  355. LambdaQueryWrapper<SysUserRole> query1 = Wrappers.lambdaQuery();
  356. query1.eq(SysUserRole::getUserId, admin.getId());
  357. List<SysUserRole> roleList = sysUserRoleService.list(query1);
  358. List<String> ids = new ArrayList<>();
  359. StringBuilder roleName = new StringBuilder();
  360. if (!roleList.isEmpty()) {
  361. for (int i = 0; i < roleList.size(); i++) {
  362. SysUserRole sysUserRole = roleList.get(0);
  363. ids.add(sysUserRole.getRoleId());
  364. SysRole sysRole = sysRoleService.getById(sysUserRole.getRoleId());
  365. if (i < roleList.size() - 1) {
  366. roleName.append(sysRole.getRoleName()).append(",");
  367. } else {
  368. roleName.append(sysRole.getRoleName());
  369. }
  370. }
  371. }
  372. addLoginUserParam.setRoleName(roleName.toString());
  373. addLoginUserParam.setRoleList(ids);
  374. addLoginUserParam.setType(admin.getType());
  375. returnList.add(addLoginUserParam);
  376. }
  377. }
  378. return R.ok(returnList);
  379. }
  380. @ApiOperation(value = "注册账号/用户注册")
  381. @PostMapping("/save")
  382. @Transactional
  383. @Audit(type = AuditEnum.INSERT, content = "#registerParam.username + '注册账号'")
  384. public ResponseModel<?> save(@RequestBody RegisterParamDTO registerParam) {
  385. if (StringUtils.isEmpty(registerParam.getUsername()) || StringUtils.isEmpty(registerParam.getName()) || StringUtils.isEmpty(registerParam.getPassword())) {
  386. return R.fail(ResponseCodesEnum.A0001);
  387. }
  388. String phoneOrEmail = registerParam.getPhoneOrEmail();
  389. // 定义国内手机号和邮箱的正则表达式
  390. String phoneReg = "^1[3-9]\\d{9}$";
  391. String emailReg = "^[a-zA-Z0-9_-]+([a-zA-Z0-9_.-]*[a-zA-Z0-9])*@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
  392. if (registerParam.getIfForeign().isEmpty()) {
  393. return R.fail(ResponseCodesEnum.A0001, "是否国内外为空!");
  394. }
  395. String relationAdminId = "";
  396. if (StringUtils.isNotEmpty(registerParam.getInviteCode())) {
  397. // 验证邀请码
  398. relationAdminId = String.valueOf(AdminUtils.decrypt(false, registerParam.getInviteCode()));
  399. TAdmin admin = tAdminService.getById(relationAdminId);
  400. if (admin == null) {
  401. return R.fail(ResponseCodesEnum.R0001);
  402. }
  403. if (admin.getType() != 4) {
  404. return R.fail(ResponseCodesEnum.R0001);
  405. }
  406. }
  407. // 国内用户注册
  408. if (registerParam.getIfForeign().equals("0")) {
  409. // 判断 phoneOrEmail 是手机号还是邮箱
  410. if (Pattern.matches(phoneReg, phoneOrEmail)) {
  411. if (StringUtils.isEmpty(registerParam.getPhoneOrEmail())) {
  412. return R.fail(ResponseCodesEnum.R0002);
  413. }
  414. } else if (Pattern.matches(emailReg, phoneOrEmail)) {
  415. if (StringUtils.isEmpty(registerParam.getPhoneOrEmail())) {
  416. return R.fail(ResponseCodesEnum.R0003);
  417. }
  418. } else {
  419. return R.fail(ResponseCodesEnum.R0004);
  420. }
  421. } else {
  422. //海外用户注册
  423. if (StringUtils.isEmpty(registerParam.getPhoneOrEmail())) {
  424. return R.fail(ResponseCodesEnum.R0003);
  425. }
  426. }
  427. // 增加地区
  428. Long areaId = null;
  429. if (StringUtils.isNotEmpty(registerParam.getCities())) {
  430. if (registerParam.getIfForeign().equals("0")) {
  431. // 国内
  432. LambdaQueryWrapper<TArea> query = Wrappers.lambdaQuery();
  433. query.eq(TArea::getFullName, registerParam.getCities());
  434. TArea area = areaService.getOne(query);
  435. if (area != null) {
  436. areaId = area.getId();
  437. }
  438. } else {
  439. // 国外
  440. LambdaQueryWrapper<Countries> queryCountry = Wrappers.lambdaQuery();
  441. queryCountry.eq(Countries::getCode, registerParam.getCountry());
  442. Countries countries = countriesService.getOne(queryCountry);
  443. if (countries != null) {
  444. LambdaQueryWrapper<Cities> query = Wrappers.lambdaQuery();
  445. query.eq(Cities::getCountryId, countries.getId());
  446. query.eq(Cities::getCode, registerParam.getCities());
  447. Cities cities = citiesService.getOne(query);
  448. if (cities != null) {
  449. areaId = cities.getId();
  450. }
  451. }
  452. }
  453. }
  454. if (StringUtils.isEmpty(registerParam.getCode())) {
  455. return R.fail(ResponseCodesEnum.R0005);
  456. }
  457. //校验是否有重复的
  458. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  459. query.eq(TAdmin::getUsername, registerParam.getUsername());
  460. List<TAdmin> list = tAdminService.list(query);
  461. if (!list.isEmpty()) {
  462. return R.fail(ResponseCodesEnum.A0201);
  463. }
  464. LambdaQueryWrapper<TAdmin> query1 = Wrappers.lambdaQuery();
  465. if (registerParam.getIfForeign().equals("0")) {
  466. // 国内分两种
  467. if (Pattern.matches(phoneReg, phoneOrEmail)) {
  468. query1.eq(TAdmin::getPhone, registerParam.getPhoneOrEmail());
  469. } else {
  470. query1.eq(TAdmin::getEmail, registerParam.getPhoneOrEmail());
  471. }
  472. } else {
  473. query1.eq(TAdmin::getEmail, registerParam.getPhoneOrEmail());
  474. }
  475. List<TAdmin> list1 = tAdminService.list(query1);
  476. if (!list1.isEmpty()) {
  477. return R.fail(ResponseCodesEnum.A0203);
  478. }
  479. //校验验证码是否正确
  480. LambdaQueryWrapper<TMessageCode> query2 = Wrappers.lambdaQuery();
  481. if (registerParam.getIfForeign().equals("0")) {
  482. // 国内分两种
  483. if (Pattern.matches(phoneReg, phoneOrEmail)) {
  484. query2.eq(TMessageCode::getPhone, registerParam.getPhoneOrEmail());
  485. } else {
  486. query2.eq(TMessageCode::getPhone, registerParam.getPhoneOrEmail());
  487. }
  488. } else {
  489. query2.eq(TMessageCode::getPhone, registerParam.getPhoneOrEmail());
  490. }
  491. // 0,代表注册验证码
  492. query2.eq(TMessageCode::getType, "0");
  493. query2.eq(TMessageCode::getStatus, "0");
  494. List<TMessageCode> messageCodeList = tMessageCodeService.list(query2);
  495. TAdmin admin = new TAdmin();
  496. if (!messageCodeList.isEmpty()) {
  497. TMessageCode tMessageCode = messageCodeList.get(messageCodeList.size() - 1);
  498. if (!tMessageCode.getCode().equals(registerParam.getCode())) {
  499. return R.fail(ResponseCodesEnum.R0006);
  500. }
  501. tMessageCode.setStatus("1");
  502. // admin.setId(IDGenerator.commonID()); // admin 表改回原来的自增ID
  503. admin.setCreateDate(new Date());
  504. admin.setModifyDate(new Date());
  505. admin.setIsAdmined(true);
  506. admin.setIsEnabled(true);
  507. admin.setLoginFailureCount(0);
  508. admin.setIsLocked(false);
  509. //默认是商家
  510. admin.setType(2);
  511. admin.setPassword(registerParam.getPassword());
  512. admin.setUsername(registerParam.getUsername());
  513. admin.setName(registerParam.getName());
  514. admin.setIfForeign(registerParam.getIfForeign());
  515. // 地区ID
  516. admin.setAreaId(areaId);
  517. if (registerParam.getIfForeign().equals("1")) {
  518. admin.setPromoCodeOpen("0");
  519. }
  520. // 邀请码,即上级账号
  521. if (StringUtils.isNotEmpty(relationAdminId)) {
  522. admin.setRelationAdminId(relationAdminId);
  523. }
  524. admin.setCompanyType(registerParam.getCompanyType());
  525. if (Pattern.matches(phoneReg, phoneOrEmail)) {
  526. admin.setPhone(registerParam.getPhoneOrEmail());
  527. } else if (Pattern.matches(emailReg, phoneOrEmail)) {
  528. admin.setEmail(registerParam.getPhoneOrEmail());
  529. } else {
  530. return R.fail(ResponseCodesEnum.R0004);
  531. }
  532. if (registerParam.getCompanyType().equals("1")) { // 如果是七云平台
  533. admin.setTradeMerchantNo("777138500523174"); //七云商户报备号
  534. admin.setPayPlatform("1");
  535. } else {
  536. admin.setPayPlatform("0");
  537. }
  538. boolean b = tAdminService.save(admin);
  539. tMessageCodeService.saveOrUpdate(tMessageCode);
  540. if (b) {
  541. // 绑定商家角色
  542. LambdaQueryWrapper<SysRole> query4 = Wrappers.lambdaQuery();
  543. query4.eq(SysRole::getAdminId, 18L);
  544. query4.eq(SysRole::getRoleName, "商家");
  545. List<SysRole> list2 = sysRoleService.list(query4);
  546. if (list2.size() > 0) {
  547. SysRole sysRole = list2.get(0);
  548. SysRole newSysRole = new SysRole();
  549. newSysRole.setAdminId(admin.getId());
  550. newSysRole.setMenuCodesJson(sysRole.getMenuCodesJson());
  551. newSysRole.setControlCodesJson(sysRole.getControlCodesJson());
  552. newSysRole.setRoleName("商家");
  553. sysRoleService.save(newSysRole);
  554. SysUserRole sysUserRole = new SysUserRole();
  555. sysUserRole.setRoleId(newSysRole.getRoleId());
  556. sysUserRole.setUserId(String.valueOf(admin.getId()));
  557. sysUserRoleService.save(sysUserRole);
  558. }
  559. tMessageCode.setModifyDate(new Date());
  560. if (admin.getId() != null) {
  561. String managerId = AdminUtils.encrypt(false, admin.getId());
  562. admin.setManagerId(managerId);
  563. tAdminService.getById(admin);
  564. }
  565. }
  566. return R.ok(b);
  567. } else {
  568. return R.fail(ResponseCodesEnum.R0007);
  569. }
  570. }
  571. @ApiOperation(value = "登录")
  572. @PostMapping("/login")
  573. @Audit(type = AuditEnum.LOGIN, content = "#username + '请求登录'")
  574. public ResponseModel<UserDetailBO> login(String username, String password, String hostName, HttpServletRequest request) {
  575. if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
  576. return R.fail(ResponseCodesEnum.A0001, "参数有空");
  577. }
  578. //验证用户名登录
  579. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  580. query.eq(TAdmin::getPassword, password);
  581. query.and(wrapper -> wrapper.eq(TAdmin::getUsername, username).or().eq(TAdmin::getPhone, username));
  582. TAdmin tAdmin = Optional.ofNullable(tAdminService.getOnly(query))
  583. .orElseThrow(() -> new BizException(ResponseCodesEnum.L0002));
  584. // 判断是为申泽用户还是七云用户
  585. String companyType = tAdmin.getCompanyType();
  586. String sZ = "Sunzee";
  587. String sC = "Sevencloud";
  588. // 如果不为管理员
  589. if (tAdmin.getType() >= 1) {
  590. if (sZ.equals(hostName)) {
  591. // 如果companyType不为空,且不等于“0”
  592. if (StringUtils.isNotEmpty(companyType) && !companyType.equals("0")) {
  593. return R.fail(ResponseCodesEnum.L0002);
  594. }
  595. }
  596. if (sC.equals(hostName)) {
  597. // 如果companyType为空,或者不等于“1”
  598. if (StringUtils.isEmpty(companyType) || !(companyType.equals("1"))) {
  599. return R.fail(ResponseCodesEnum.L0002);
  600. }
  601. }
  602. }
  603. // 添加系统id
  604. if (StringUtils.isEmpty(tAdmin.getManagerId())) {
  605. String managerId = AdminUtils.encrypt(false, tAdmin.getId());
  606. tAdmin.setManagerId(managerId);
  607. }
  608. // 设置登录时间
  609. tAdmin.setLoginDate(new Date());
  610. // 登录IP
  611. String ipAddress;
  612. // 获取通过代理服务器传递的真实IP地址
  613. String xForwardedForHeader = request.getHeader("X-Forwarded-For");
  614. if (xForwardedForHeader == null) {
  615. ipAddress = request.getRemoteAddr();
  616. } else {
  617. // 多次反向代理后会有多个IP值,第一个IP才是真实IP
  618. String[] ips = xForwardedForHeader.split(",");
  619. ipAddress = ips[0].trim();
  620. }
  621. tAdmin.setLoginIp(ipAddress);
  622. tAdminService.updateById(tAdmin);
  623. UserDetailBO userDetailBO = tAdminService.getUserDetailBO(tAdmin);
  624. return R.ok(userDetailBO);
  625. }
  626. @ApiOperation(value = "登录")
  627. @PostMapping("/loginSys")
  628. @Audit(type = AuditEnum.LOGIN, content = "#loginParam.username + '请求登录'")
  629. public ResponseModel<UserDetailBO> loginSys(@RequestBody LoginParam loginParam, HttpServletRequest request) {
  630. String username = loginParam.getUsername();
  631. String password = loginParam.getPassword();
  632. String hostName = loginParam.getHostName();
  633. if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
  634. return R.fail(ResponseCodesEnum.A0001, "参数有空");
  635. }
  636. //验证用户名/手机/邮箱
  637. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  638. query.eq(TAdmin::getPassword, password);
  639. query.and(wrapper -> wrapper.eq(TAdmin::getUsername, username).or().eq(TAdmin::getPhone, username).or().eq(TAdmin::getEmail, username));
  640. TAdmin tAdmin = Optional.ofNullable(tAdminService.getOnly(query))
  641. .orElseThrow(() -> new BizException(ResponseCodesEnum.L0002));
  642. // 判断是为申泽用户还是七云用户
  643. String companyType = tAdmin.getCompanyType();
  644. String sZ = "Sunzee";
  645. String sC = "Sevencloud";
  646. // 如果不为管理员
  647. if (tAdmin.getType() >= 1) {
  648. if (sZ.equals(hostName)) {
  649. // 如果companyType不为空,且不等于“0”
  650. if (StringUtils.isNotEmpty(companyType) && !companyType.equals("0")) {
  651. return R.fail(ResponseCodesEnum.L0002);
  652. }
  653. }
  654. if (sC.equals(hostName)) {
  655. // 如果companyType为空,或者不等于“1”
  656. if (StringUtils.isEmpty(companyType) || !(companyType.equals("1"))) {
  657. return R.fail(ResponseCodesEnum.L0002);
  658. }
  659. }
  660. }
  661. // 添加系统id
  662. if (StringUtils.isEmpty(tAdmin.getManagerId())) {
  663. String managerId = AdminUtils.encrypt(false, tAdmin.getId());
  664. tAdmin.setManagerId(managerId);
  665. }
  666. // 设置登录时间
  667. tAdmin.setLoginDate(new Date());
  668. // 登录IP
  669. String ipAddress;
  670. // 获取通过代理服务器传递的真实IP地址
  671. String xForwardedForHeader = request.getHeader("X-Forwarded-For");
  672. if (xForwardedForHeader == null) {
  673. ipAddress = request.getRemoteAddr();
  674. } else {
  675. // 多次反向代理后会有多个IP值,第一个IP才是真实IP
  676. String[] ips = xForwardedForHeader.split(",");
  677. ipAddress = ips[0].trim();
  678. }
  679. tAdmin.setLoginIp(ipAddress);
  680. tAdminService.updateById(tAdmin);
  681. UserDetailBO userDetailBO = tAdminService.getUserDetailBO(tAdmin);
  682. return R.ok(userDetailBO);
  683. }
  684. @ApiOperation("PC端登录")
  685. @PostMapping("/pcLogin")
  686. public ResponseModel<?> pcLogin(@RequestBody LoginParam loginParam, HttpServletRequest request) {
  687. String username = loginParam.getUsername();
  688. String password = loginParam.getPassword();
  689. String hostName = loginParam.getHostName();
  690. if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
  691. return R.fail(ResponseCodesEnum.A0001, "参数有空");
  692. }
  693. //验证用户名/手机/邮箱
  694. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  695. query.eq(TAdmin::getPassword, password);
  696. query.and(wrapper -> wrapper.eq(TAdmin::getUsername, username).or().eq(TAdmin::getPhone, username).or().eq(TAdmin::getEmail, username));
  697. TAdmin tAdmin = Optional.ofNullable(tAdminService.getOnly(query))
  698. .orElseThrow(() -> new BizException(ResponseCodesEnum.L0002));
  699. // 判断是为申泽用户还是七云用户
  700. String companyType = tAdmin.getCompanyType();
  701. String sZ = "Sunzee";
  702. String sC = "Sevencloud";
  703. // 如果不为管理员
  704. if (tAdmin.getType() >= 1) {
  705. if (sZ.equals(hostName)) {
  706. // 如果companyType不为空,且不等于“0”
  707. if (StringUtils.isNotEmpty(companyType) && !companyType.equals("0")) {
  708. return R.fail(ResponseCodesEnum.L0002);
  709. }
  710. }
  711. if (sC.equals(hostName)) {
  712. // 如果companyType为空,或者不等于“1”
  713. if (StringUtils.isEmpty(companyType) || !(companyType.equals("1"))) {
  714. return R.fail(ResponseCodesEnum.L0002);
  715. }
  716. }
  717. }
  718. // 添加系统id
  719. if (StringUtils.isEmpty(tAdmin.getManagerId())) {
  720. String managerId = AdminUtils.encrypt(false, tAdmin.getId());
  721. tAdmin.setManagerId(managerId);
  722. }
  723. // 设置登录时间
  724. tAdmin.setLoginDate(new Date());
  725. // 登录IP
  726. String ipAddress;
  727. // 获取通过代理服务器传递的真实IP地址
  728. String xForwardedForHeader = request.getHeader("X-Forwarded-For");
  729. if (xForwardedForHeader == null) {
  730. ipAddress = request.getRemoteAddr();
  731. } else {
  732. // 多次反向代理后会有多个IP值,第一个IP才是真实IP
  733. String[] ips = xForwardedForHeader.split(",");
  734. ipAddress = ips[0].trim();
  735. }
  736. tAdmin.setLoginIp(ipAddress);
  737. tAdminService.updateById(tAdmin);
  738. // 添加token和刷新token
  739. return R.ok();
  740. }
  741. @ApiOperation(value = "切换自动登录")
  742. @GetMapping("/autoLogin")
  743. @Audit(type = AuditEnum.LOGIN, content = "切换登录'")
  744. public ResponseModel<UserDetailBO> autoLogin(@RequestParam String id) {
  745. if (StringUtils.isEmpty(id)) {
  746. return R.fail(ResponseCodesEnum.A0001, "参数有空");
  747. }
  748. //验证用户名登录
  749. Long adminId = Long.valueOf(id);
  750. TAdmin admin = tAdminService.getById(adminId);
  751. TAdmin tAdmin = Optional.ofNullable(admin)
  752. .orElseThrow(() -> new BizException(ResponseCodesEnum.L0002));
  753. // 添加系统id
  754. if (StringUtils.isEmpty(tAdmin.getManagerId())) {
  755. String managerId = AdminUtils.encrypt(false, tAdmin.getId());
  756. tAdmin.setManagerId(managerId);
  757. tAdminService.getById(tAdmin);
  758. }
  759. UserDetailBO userDetailBO = tAdminService.getUserDetailBO(tAdmin);
  760. return R.ok(userDetailBO);
  761. }
  762. @ApiOperation(value = "修改密码")
  763. @PostMapping("/updatePassword")
  764. public ResponseModel<?> updatePassword(String username, String password) {
  765. if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
  766. return R.fail(ResponseCodesEnum.A0001, "参数有空");
  767. }
  768. //查找用户名
  769. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  770. query.eq(TAdmin::getUsername, username);
  771. List<TAdmin> list = tAdminService.list(query);
  772. if (!list.isEmpty()) {
  773. TAdmin admin = list.get(0);
  774. admin.setPassword(password);
  775. boolean b = tAdminService.saveOrUpdate(admin);
  776. return R.ok(b);
  777. }
  778. return R.fail(ResponseCodesEnum.A0001, "修改失败");
  779. }
  780. @ApiOperation(value = "获取账号信息")
  781. @GetMapping("/getAdmin")
  782. public ResponseModel<TAdmin> getAdmin(@RequestParam String id) {
  783. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  784. query.eq(TAdmin::getId, id);
  785. TAdmin tAdmin = Optional.ofNullable(tAdminService.getOnly(query))
  786. .orElseThrow(() -> new BizException(ResponseCodesEnum.L0002));
  787. if (StringUtils.isEmpty(tAdmin.getManagerId())) {
  788. String managerId = AdminUtils.encrypt(false, tAdmin.getId());
  789. tAdmin.setManagerId(managerId);
  790. tAdminService.getById(tAdmin);
  791. }
  792. UserDetailBO userDetailBO = BeanUtil.copyProperties(tAdmin, UserDetailBO.class,
  793. "password", "loginIp");
  794. return R.ok(userDetailBO);
  795. }
  796. @ApiOperation(value = "获取账号列表 分页")
  797. @GetMapping("/pageAdmin")
  798. public ResponseModel<IPage<?>> pageAdmin(String id, String name, String userName,
  799. String ifForeign, String type, long current, long size) {
  800. if (StringUtils.isEmpty(id)) {
  801. return R.fail(ResponseCodesEnum.A0001, "null参数");
  802. }
  803. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  804. if (StringUtils.isNotEmpty(name)) {
  805. query.like(TAdmin::getName, name);
  806. }
  807. if (StringUtils.isNotEmpty(userName)) {
  808. query.like(TAdmin::getUsername, userName);
  809. }
  810. if (StringUtils.isNotEmpty(ifForeign)) {
  811. query.eq(TAdmin::getIfForeign, ifForeign);
  812. }
  813. if (StringUtils.isNotEmpty(id)) {
  814. TAdmin admin = tAdminService.getById(id);
  815. if (admin == null || admin.getId() == null) {
  816. return R.fail(ResponseCodesEnum.A0001, "没有找到商家");
  817. }
  818. // 申泽平台管理员
  819. if (admin.getId() == 2738) {
  820. query.isNull(TAdmin::getCompanyType).or()
  821. .eq(TAdmin::getCompanyType, "0");
  822. }
  823. // 七云平台管理员
  824. if (admin.getId() == 2739) {
  825. query.eq(TAdmin::getCompanyType, "1");
  826. }
  827. if (admin.getType() > 1) {
  828. query.eq(TAdmin::getRelationAdminId, id);
  829. }
  830. }
  831. if (StringUtils.isNotEmpty(type)) {
  832. query.eq(TAdmin::getType, type);
  833. } else {
  834. query.eq(TAdmin::getType, "2");
  835. }
  836. query.orderByDesc(TAdmin::getCreateDate);
  837. Page<TAdmin> page = new Page<>(current, size, true);
  838. IPage<TAdmin> iPage = tAdminService.page(page, query);
  839. iPage.getRecords().forEach(e -> e.setPassword("")); // 密码置空
  840. return R.ok(iPage);
  841. }
  842. @ApiOperation(value = "获取账号列表 分页")
  843. @GetMapping("/pageAdmin2")
  844. public ResponseModel<IPage<TAdmin>> pageAdmin2(@RequestParam(value = "current") long current,
  845. @RequestParam(value = "size") long size) {
  846. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  847. Page<TAdmin> page = new Page<>(current, size, true);
  848. IPage<TAdmin> iPage = tAdminService.page(page, query);
  849. iPage.getRecords().forEach(e -> e.setPassword(""));
  850. return R.ok(iPage);
  851. }
  852. @ApiOperation(value = "获取账号列表")
  853. @GetMapping("/listAdmin")
  854. public ResponseModel<?> listAdmin(String adminId) {
  855. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  856. if (StringUtils.isNotEmpty(adminId)) {
  857. query.like(TAdmin::getRelationAdminId, adminId);
  858. }
  859. List<TAdmin> list = tAdminService.list(query);
  860. return R.ok(list);
  861. }
  862. @ApiOperation(value = "修改账号")
  863. @PostMapping("/update")
  864. @Transactional
  865. public ResponseModel<?> update(@RequestBody TAdmin admin) {
  866. if (StringUtils.isEmpty(admin.getUsername()) && admin.getId() == null) {
  867. return R.fail(ResponseCodesEnum.A0001, "参数空");
  868. }
  869. //校验是否有重复的
  870. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  871. if (StringUtils.isNotEmpty(admin.getUsername())) {
  872. query.eq(TAdmin::getUsername, admin.getUsername());
  873. }
  874. if (admin.getId() != null) {
  875. query.eq(TAdmin::getId, admin.getId());
  876. }
  877. List<TAdmin> list = tAdminService.list(query);
  878. TAdmin oldAdmin = list.get(0);
  879. if (StringUtils.isNotEmpty(admin.getPassword())) {
  880. oldAdmin.setPassword(admin.getPassword());
  881. }
  882. if (StringUtils.isNotEmpty(admin.getName())) {
  883. oldAdmin.setName(admin.getName());
  884. }
  885. if (admin.getAreaId() != null) {
  886. oldAdmin.setAreaId(admin.getAreaId());
  887. }
  888. if (StringUtils.isNotEmpty(admin.getIfForeign())) {
  889. oldAdmin.setIfForeign(admin.getIfForeign());
  890. }
  891. if (StringUtils.isNotEmpty(admin.getTradeMerchantNo())) {
  892. oldAdmin.setTradeMerchantNo(admin.getTradeMerchantNo());
  893. }
  894. if (StringUtils.isNotEmpty(admin.getPayPlatform())) {
  895. oldAdmin.setPayPlatform(admin.getPayPlatform());
  896. }
  897. if (StringUtils.isNotEmpty(admin.getPromoCodeOpen())) {
  898. oldAdmin.setPromoCodeOpen(admin.getPromoCodeOpen());
  899. }
  900. if (StringUtils.isNotEmpty(admin.getPhone())) {
  901. // 如果手机号不同,则验证手机号是否存在
  902. if (!admin.getPhone().equals(oldAdmin.getPhone())) {
  903. LambdaQueryWrapper<TAdmin> query2 = Wrappers.lambdaQuery();
  904. query2.eq(TAdmin::getPhone, admin.getPhone());
  905. TAdmin admin1 = tAdminService.getOne(query2);
  906. if (admin1 != null) {
  907. return R.fail(ResponseCodesEnum.A0001, "手机号已存在");
  908. }
  909. }
  910. oldAdmin.setPhone(admin.getPhone());
  911. }
  912. if (StringUtils.isNotEmpty(admin.getEmail())) {
  913. if (!admin.getEmail().equals(oldAdmin.getEmail())) {
  914. LambdaQueryWrapper<TAdmin> query2 = Wrappers.lambdaQuery();
  915. query2.eq(TAdmin::getEmail, admin.getEmail());
  916. TAdmin admin1 = tAdminService.getOne(query2);
  917. if (admin1 != null) {
  918. return R.fail(ResponseCodesEnum.A0001, "邮箱已存在");
  919. }
  920. }
  921. oldAdmin.setEmail(admin.getEmail());
  922. }
  923. if (StringUtils.isNotEmpty(admin.getCurrencySymbol())) {
  924. oldAdmin.setCurrencySymbol(admin.getCurrencySymbol());
  925. } else {
  926. oldAdmin.setCurrencySymbol("¥");
  927. }
  928. if (StringUtils.isNotEmpty(admin.getTimeZone())) {
  929. oldAdmin.setTimeZone(admin.getTimeZone());
  930. }
  931. if (admin.getApplyStartTime() != null) {
  932. oldAdmin.setApplyStartTime(admin.getApplyStartTime());
  933. }
  934. if (admin.getApplyEndTime() != null) {
  935. oldAdmin.setApplyEndTime(admin.getApplyEndTime());
  936. }
  937. if (StringUtils.isNotEmpty(admin.getRelationAdminId())) {
  938. oldAdmin.setRelationAdminId(admin.getRelationAdminId());
  939. }
  940. if (StringUtils.isNotEmpty(admin.getIsDistribution())) {
  941. oldAdmin.setIsDistribution(admin.getIsDistribution());
  942. }
  943. oldAdmin.setModifyDate(new Date());
  944. tAdminService.updateById(oldAdmin);
  945. return R.ok(null, "修改成功");
  946. }
  947. @ApiOperation(value = "设置关联上级")
  948. @PostMapping("/setRelationAdminId")
  949. public ResponseModel<?> setRelationAdminId(@RequestBody Map<String, String> params) {
  950. String managerId = params.get("managerId");
  951. String username = params.get("username");
  952. String relationUsername = params.get("relationUsername");
  953. if (StringUtils.isEmpty(managerId) || StringUtils.isEmpty(username)) {
  954. return R.fail(ResponseCodesEnum.A0001, "参数不能为空");
  955. }
  956. LambdaQueryWrapper<TAdmin> lqw = Wrappers.lambdaQuery();
  957. lqw.eq(TAdmin::getUsername, username);
  958. TAdmin admin = tAdminService.getOne(lqw);
  959. if (Objects.isNull(admin)) {
  960. return R.fail(ResponseCodesEnum.A0206, "用户不存在");
  961. }
  962. String managerId1 = admin.getManagerId();
  963. if (!managerId1.equals(managerId)) {
  964. return R.fail(ResponseCodesEnum.B0001, "用户名或系统id不匹配");
  965. }
  966. if (username.equals(relationUsername)) {
  967. return R.fail(ResponseCodesEnum.B0001, "同一账户不能构成上下级");
  968. }
  969. if (StringUtils.isEmpty(relationUsername) || "".equals(relationUsername)) { // 无上级,或取消上级
  970. admin.setRelationAdminId("");
  971. } else {
  972. LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
  973. wrapper.eq(TAdmin::getUsername, relationUsername);
  974. TAdmin relationAdmin = tAdminService.getOne(wrapper);
  975. Long relationAdminId = relationAdmin.getId();
  976. admin.setRelationAdminId(String.valueOf(relationAdminId));
  977. }
  978. tAdminService.saveOrUpdate(admin);
  979. return R.ok("关联成功");
  980. }
  981. @ApiOperation(value = "绑定上级账户")
  982. @GetMapping("/setRelationAdmin")
  983. @Transactional
  984. public ResponseModel<?> setRelationAdmin(Long adminId, String username) {
  985. TAdmin admin = tAdminService.getById(adminId);
  986. if (StringUtils.isNotEmpty(username)) {
  987. if (StringUtils.isNotEmpty(admin.getRelationAdminId())) {
  988. return R.fail("已有绑定关系");
  989. }
  990. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  991. query.eq(TAdmin::getUsername, username);
  992. List<TAdmin> list = tAdminService.list(query);
  993. if (list.size() > 0) {
  994. TAdmin parentAdmin = list.get(0);
  995. if (StringUtils.isNotEmpty(parentAdmin.getRelationAdminId()) && parentAdmin.getRelationAdminId().equals(admin.getId().toString())) {
  996. return R.fail("不能互为绑定关系");
  997. } else {
  998. admin.setRelationAdminId(String.valueOf(parentAdmin.getId()));
  999. tAdminService.updateById(admin);
  1000. }
  1001. } else {
  1002. return R.fail("找不到账户");
  1003. }
  1004. } else {
  1005. return R.fail(ResponseCodesEnum.A0001);
  1006. }
  1007. return R.ok(null, "绑定成功");
  1008. }
  1009. @ApiOperation(value = "获取所有关联(下级)账号信息")
  1010. @GetMapping("/getAdminIdList")
  1011. public ResponseModel<List<Long>> getAdminIdList(@RequestParam String adminId) {
  1012. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  1013. query.eq(TAdmin::getRelationAdminId, adminId);
  1014. List<TAdmin> list = tAdminService.list(query);
  1015. List<Long> idList = new ArrayList<>();
  1016. for (TAdmin admin : list) {
  1017. idList.add(admin.getId());
  1018. }
  1019. return R.ok(idList);
  1020. }
  1021. @ApiOperation(value = "获取所有关联(下级)账号信息")
  1022. @GetMapping("/getAdminList")
  1023. public ResponseModel<?> getAdminList() {
  1024. UserDetailBO userDetailBO = Optional.ofNullable(tokenManager.getLoginUserDetails())
  1025. .orElseThrow(() -> new BizException(ResponseCodesEnum.L0001));
  1026. String adminId = userDetailBO.getId().toString();
  1027. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  1028. query.eq(TAdmin::getRelationAdminId, adminId);
  1029. List<TAdmin> list = tAdminService.list(query);
  1030. return R.ok(list);
  1031. }
  1032. @ApiOperation(value = "获取admin信息")
  1033. @GetMapping("/getAdminOne/{adminId}")
  1034. public ResponseModel<TAdmin> getAdminOne(@PathVariable Long adminId) {
  1035. TAdmin admin = tAdminService.getById(adminId);
  1036. if (Objects.isNull(admin)) {
  1037. return R.fail("当前用户不存在");
  1038. }
  1039. return R.ok(admin);
  1040. }
  1041. @ApiOperation(value = "获取账号信息byname")
  1042. @GetMapping("/getAdminByUsername")
  1043. public ResponseModel<TAdmin> getAdminByUsername(@RequestParam String username) {
  1044. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  1045. query.eq(TAdmin::getUsername, username);
  1046. List<TAdmin> list = tAdminService.list(query);
  1047. if (list.size() > 0) {
  1048. TAdmin tAdmin = list.get(0);
  1049. tAdmin.setPassword("");
  1050. return R.ok(tAdmin);
  1051. }
  1052. return R.ok();
  1053. }
  1054. @ApiOperation(value = "通过 adminId 获取上级账号信息")
  1055. @GetMapping("/getRelation")
  1056. public ResponseModel<TAdmin> getRelation() {
  1057. UserDetailBO userDetailBO = Optional.ofNullable(tokenManager.getLoginUserDetails())
  1058. .orElseThrow(() -> new BizException(ResponseCodesEnum.L0001));
  1059. String adminId = userDetailBO.getId().toString();
  1060. LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
  1061. wrapper.eq(TAdmin::getId, adminId);
  1062. TAdmin admin = tAdminService.getOne(wrapper);
  1063. if (Objects.nonNull(admin)) {
  1064. String relationAdminId = admin.getRelationAdminId();
  1065. if (StringUtils.isNotEmpty(relationAdminId) && !"".equals(relationAdminId)) {
  1066. TAdmin relationAdmin = tAdminService.getById(relationAdminId);
  1067. return R.ok(relationAdmin);
  1068. }
  1069. }
  1070. return R.ok();
  1071. }
  1072. @ApiOperation(value = "通过 username 获取账号的 id")
  1073. @GetMapping("/getRelationAdminId")
  1074. public ResponseModel<String> getRelationAdminId(String relationUsername) {
  1075. LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
  1076. wrapper.eq(TAdmin::getUsername, relationUsername);
  1077. TAdmin admin = tAdminService.getOne(wrapper);
  1078. if (Objects.nonNull(admin)) {
  1079. Long adminId = admin.getId();
  1080. return R.ok(String.valueOf(adminId));
  1081. }
  1082. return R.ok();
  1083. }
  1084. @ApiOperation(value = "获取上级账号名")
  1085. @GetMapping("/getRelationAdminUsername")
  1086. public String getRelationAdminUsername(String relationAdminId) {
  1087. TAdmin admin = tAdminService.getById(relationAdminId);
  1088. return admin.getUsername();
  1089. }
  1090. @ApiOperation(value = "批量设置账户的角色")
  1091. @GetMapping("/setRole")
  1092. public ResponseModel<?> setRole() {
  1093. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  1094. query.eq(TAdmin::getType, "2");
  1095. List<TAdmin> list = tAdminService.list(query);
  1096. if (list.size() > 0) {
  1097. for (TAdmin admin : list) {
  1098. // 绑定商家角色
  1099. LambdaQueryWrapper<SysRole> query4 = Wrappers.lambdaQuery();
  1100. query4.eq(SysRole::getAdminId, 18L);
  1101. query4.eq(SysRole::getRoleName, "商家");
  1102. List<SysRole> list2 = sysRoleService.list(query4);
  1103. if (list2.size() > 0) {
  1104. SysRole sysRole = list2.get(0);
  1105. SysRole newSysRole = new SysRole();
  1106. newSysRole.setAdminId(admin.getId());
  1107. newSysRole.setMenuCodesJson(sysRole.getMenuCodesJson());
  1108. newSysRole.setRoleName("商家");
  1109. sysRoleService.save(newSysRole);
  1110. SysUserRole sysUserRole = new SysUserRole();
  1111. sysUserRole.setRoleId(newSysRole.getRoleId());
  1112. sysUserRole.setUserId(String.valueOf(admin.getId()));
  1113. sysUserRoleService.save(sysUserRole);
  1114. }
  1115. }
  1116. }
  1117. return R.ok();
  1118. }
  1119. @ApiOperation(value = "批量设置账户的关联上级")
  1120. @GetMapping("/setRelation")
  1121. public ResponseModel<?> setRelation() {
  1122. List<TAdmin> list = tAdminService.list();
  1123. if (list.size() > 0) {
  1124. for (TAdmin admin : list) {
  1125. if (admin.getParentId() != null) {
  1126. admin.setRelationAdminId(admin.getParentId().toString());
  1127. tAdminService.updateById(admin);
  1128. }
  1129. }
  1130. }
  1131. return R.ok();
  1132. }
  1133. @ApiOperation(value = "批量修改支付平台")
  1134. @GetMapping("/updatePayPlatform")
  1135. public ResponseModel<?> updatePayPlatform(@RequestParam String id, @RequestParam String payPlatform) {
  1136. Integer adminId = Integer.valueOf(id);
  1137. UpdateWrapper<TAdmin> updateWrapper = new UpdateWrapper<>();
  1138. // 申泽管理员
  1139. if (adminId == 2738) {
  1140. updateWrapper.isNull("company_type").or().eq("company_type", 0);
  1141. }
  1142. // 七云管理员
  1143. if (adminId == 2739) {
  1144. updateWrapper.eq("company_type", 1);
  1145. }
  1146. updateWrapper.set("pay_platform", payPlatform);
  1147. tAdminService.update(null, updateWrapper);
  1148. return R.ok();
  1149. }
  1150. @ApiOperation(value = "一键迁移")
  1151. @GetMapping("/oneKeyMigration")
  1152. public ResponseModel<?> oneKeyMigration(Long adminId) {
  1153. LambdaQueryWrapper<SysRole> query4 = Wrappers.lambdaQuery();
  1154. query4.eq(SysRole::getAdminId, 18L);
  1155. query4.eq(SysRole::getRoleName, "商家");
  1156. List<SysRole> list2 = sysRoleService.list(query4);
  1157. if (list2.size() > 0) {
  1158. SysRole sysRole = list2.get(0);
  1159. SysRole newSysRole = new SysRole();
  1160. newSysRole.setAdminId(adminId);
  1161. newSysRole.setMenuCodesJson(sysRole.getMenuCodesJson());
  1162. newSysRole.setRoleName("商家");
  1163. sysRoleService.save(newSysRole);
  1164. SysUserRole sysUserRole = new SysUserRole();
  1165. sysUserRole.setRoleId(newSysRole.getRoleId());
  1166. sysUserRole.setUserId(String.valueOf(adminId));
  1167. sysUserRoleService.save(sysUserRole);
  1168. return R.ok("success");
  1169. }
  1170. return R.fail(ResponseCodesEnum.A0001, "fail");
  1171. }
  1172. @ApiOperation(value = "检验用户名是否存在")
  1173. @GetMapping("/checkUserName")
  1174. public ResponseModel<?> checkUserName(String username) {
  1175. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  1176. query.eq(TAdmin::getUsername, username);
  1177. TAdmin admin = tAdminService.getOne(query);
  1178. if (admin != null) {
  1179. return R.fail(ResponseCodesEnum.A0001);
  1180. }
  1181. return R.ok();
  1182. }
  1183. @ApiOperation(value = "切换订单通知开关")
  1184. @GetMapping("/updateOrderNotice")
  1185. public ResponseModel<?> updateOrderNotice(String adminId, String orderNotice) {
  1186. if (StringUtils.isEmpty(adminId) || StringUtils.isEmpty(orderNotice)) {
  1187. return R.fail(ResponseCodesEnum.A0001);
  1188. }
  1189. // 查询是否有绑定微信
  1190. if (orderNotice.equals("1")) {
  1191. LambdaQueryWrapper<TWechat> wrapper = new LambdaQueryWrapper<>();
  1192. wrapper.eq(TWechat::getAdminId, adminId);
  1193. TWechat wechat = wechatService.getOne(wrapper);
  1194. if (wechat == null) {
  1195. return R.fail(ResponseCodesEnum.A0001, "请先绑定微信");
  1196. }
  1197. }
  1198. TAdmin admin = tAdminService.getById(adminId);
  1199. admin.setOrderNotice(orderNotice);
  1200. tAdminService.updateById(admin);
  1201. return R.ok();
  1202. }
  1203. @ApiOperation(value = "切换设备上下线通知开关")
  1204. @GetMapping("/updateOnOffNotice")
  1205. public ResponseModel<?> updateOnOffNotice(String adminId, String onOffNotice) {
  1206. if (StringUtils.isEmpty(adminId) || StringUtils.isEmpty(onOffNotice)) {
  1207. return R.fail(ResponseCodesEnum.A0001);
  1208. }
  1209. TAdmin admin = tAdminService.getById(adminId);
  1210. // 查询是否有绑定微信
  1211. if (onOffNotice.equals("1")) {
  1212. // 如果是国内用户才需要查询
  1213. if (StringUtils.isNotEmpty(admin.getIfForeign()) && admin.getIfForeign().equals("0")) {
  1214. LambdaQueryWrapper<TWechat> wrapper = new LambdaQueryWrapper<>();
  1215. wrapper.eq(TWechat::getAdminId, adminId);
  1216. TWechat wechat = wechatService.getOne(wrapper);
  1217. if (wechat == null) {
  1218. return R.fail(ResponseCodesEnum.A0001, "请先绑定微信");
  1219. }
  1220. }
  1221. }
  1222. admin.setOnOffNotice(onOffNotice);
  1223. tAdminService.updateById(admin);
  1224. return R.ok();
  1225. }
  1226. @ApiOperation("校验apiKey")
  1227. @GetMapping("/validateApiKey")
  1228. public ResponseModel<?> validateApiKey(String apiKey, Long adminId) {
  1229. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  1230. query.eq(TAdmin::getApiKey, apiKey);
  1231. query.eq(TAdmin::getId, adminId);
  1232. TAdmin admin = tAdminService.getOne(query);
  1233. return R.ok(admin);
  1234. }
  1235. @ApiOperation("获取用户信息")
  1236. @GetMapping("/getAdminVo")
  1237. public ResponseModel<?> getAdminVo(String adminId) {
  1238. TAdmin admin = tAdminService.getById(adminId);
  1239. TAdmin tAdmin = new TAdmin();
  1240. if (admin != null) {
  1241. tAdmin.setId(admin.getId());
  1242. tAdmin.setUsername(admin.getUsername());
  1243. tAdmin.setName(admin.getName());
  1244. tAdmin.setPhone(admin.getPhone());
  1245. tAdmin.setEmail(admin.getEmail());
  1246. tAdmin.setCompanyType(admin.getCompanyType());
  1247. tAdmin.setIfForeign(admin.getIfForeign());
  1248. tAdmin.setType(admin.getType());
  1249. tAdmin.setAreaId(admin.getAreaId());
  1250. return R.ok(tAdmin);
  1251. }
  1252. return R.ok();
  1253. }
  1254. @ApiOperation("修改地区")
  1255. @GetMapping("/updateArea")
  1256. public ResponseModel<?> updateArea(String adminId, String areaValue, String country) {
  1257. TAdmin admin = tAdminService.getById(adminId);
  1258. if (admin != null) {
  1259. if (StringUtils.isNotEmpty(admin.getIfForeign()) && admin.getIfForeign().equals("1")) {
  1260. // 国外
  1261. LambdaQueryWrapper<Countries> query = Wrappers.lambdaQuery();
  1262. query.eq(Countries::getCode, country);
  1263. Countries countries = countriesService.getOne(query);
  1264. if (countries != null) {
  1265. LambdaQueryWrapper<Cities> cityQuery = Wrappers.lambdaQuery();
  1266. cityQuery.eq(Cities::getCountryId, countries.getId());
  1267. cityQuery.eq(Cities::getCode, areaValue);
  1268. Cities cities = citiesService.getOne(cityQuery);
  1269. if (cities != null) {
  1270. admin.setAreaId(cities.getId());
  1271. }
  1272. }
  1273. } else {
  1274. // 国内
  1275. LambdaQueryWrapper<TArea> query = Wrappers.lambdaQuery();
  1276. query.eq(TArea::getFullName, areaValue);
  1277. TArea area = areaService.getOne(query);
  1278. if (area != null) {
  1279. admin.setAreaId(area.getId());
  1280. }
  1281. }
  1282. tAdminService.updateById(admin);
  1283. }
  1284. return R.ok();
  1285. }
  1286. @ApiOperation("国内账号获取所属地区")
  1287. @GetMapping("/getAreaById")
  1288. public ResponseModel<?> getAreaById(Long areaId) {
  1289. TArea area = areaService.getById(areaId);
  1290. return R.ok(area);
  1291. }
  1292. @ApiOperation("海外账号获取所属地区")
  1293. @GetMapping("/getCitiesById")
  1294. public ResponseModel<?> getCitiesById(Long areaId) {
  1295. String areaName = "";
  1296. Cities cities = citiesService.getById(areaId);
  1297. if (cities != null) {
  1298. Long countryId = cities.getCountryId();
  1299. String cityCode = cities.getCode();
  1300. Countries countries = countriesService.getById(countryId);
  1301. String countryCode = countries.getCode();
  1302. areaName = cityCode + "/" + countryCode;
  1303. }
  1304. return R.ok(areaName);
  1305. }
  1306. @ApiOperation("获取用户信息")
  1307. @GetMapping("/changeArea")
  1308. public ResponseModel<?> changeArea() {
  1309. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  1310. query.eq(TAdmin::getIfForeign, "0");
  1311. List<TAdmin> list = tAdminService.list(query);
  1312. for (TAdmin admin : list) {
  1313. Long areaId = admin.getAreaId();
  1314. if (areaId != null) {
  1315. TArea area = areaService.getById(areaId);
  1316. if (area != null) {
  1317. String treePath = area.getTreePath();
  1318. String[] split = treePath.split(",");
  1319. if (split.length > 2) {
  1320. admin.setAreaId(Long.valueOf(split[2]));
  1321. tAdminService.updateById(admin);
  1322. }
  1323. }
  1324. }
  1325. }
  1326. return R.ok();
  1327. }
  1328. @ApiOperation("获取账号公司平台")
  1329. @GetMapping("/getCompanyTypeById")
  1330. public ResponseModel<?> getCompanyTypeById(String adminId) {
  1331. TAdmin admin = tAdminService.getById(adminId);
  1332. String companyType = "";
  1333. if (admin != null) {
  1334. companyType = admin.getCompanyType();
  1335. }
  1336. return R.ok(companyType);
  1337. }
  1338. @ApiOperation("获取权限")
  1339. @GetMapping("/getPermission")
  1340. public ResponseModel<?> getPermission(String adminId) {
  1341. LambdaQueryWrapper<SysUserRole> query = Wrappers.lambdaQuery();
  1342. query.eq(SysUserRole::getUserId, adminId);
  1343. SysUserRole sysUserRole = sysUserRoleService.getOne(query);
  1344. if (sysUserRole != null) {
  1345. String roleId = sysUserRole.getRoleId();
  1346. SysRole sysRole = sysRoleService.getById(roleId);
  1347. if (sysRole != null) {
  1348. return R.ok(sysRole);
  1349. }
  1350. }
  1351. return R.ok();
  1352. }
  1353. @ApiOperation(value = "发送忘记密码验证码")
  1354. @PostMapping("/sentForgetCode")
  1355. public ResponseModel<?> sentForgetCode(@RequestBody LoginParam param) {
  1356. String phoneOrEmail = param.getPhoneOrEmail();
  1357. String hostName = param.getHostName();
  1358. // 定义国内手机号和邮箱的正则表达式
  1359. String phoneReg = "^1[3-9]\\d{9}$";
  1360. String emailReg = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
  1361. // 判断 phoneOrEmail 是手机号还是邮箱
  1362. if (Pattern.matches(phoneReg, phoneOrEmail)) {
  1363. //检测是否已有手机号注册
  1364. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  1365. query.eq(TAdmin::getPhone, phoneOrEmail);
  1366. TAdmin admin = tAdminService.getOne(query);
  1367. if (admin == null) {
  1368. // 说明手机未注册
  1369. return R.fail(ResponseCodesEnum.R0010);
  1370. }
  1371. //国内发送短信
  1372. String result = tMessageCodeService.sentMessage("1", phoneOrEmail, admin.getCompanyType(), admin.getId());
  1373. return R.ok(result);
  1374. } else if (Pattern.matches(emailReg, phoneOrEmail)) {
  1375. //检测是否已有邮箱注册
  1376. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  1377. query.eq(TAdmin::getEmail, phoneOrEmail);
  1378. TAdmin admin = tAdminService.getOne(query);
  1379. if (admin == null) {
  1380. // 邮箱未注册
  1381. return R.fail(ResponseCodesEnum.R0011);
  1382. }
  1383. // 发邮件
  1384. String result = tMessageCodeService.sentEmail("1", phoneOrEmail, admin.getId(), hostName);
  1385. return R.ok(result);
  1386. }
  1387. return R.fail(ResponseCodesEnum.R0004);
  1388. }
  1389. @ApiOperation(value = "校验验证码")
  1390. @PostMapping("/checkForgetCode")
  1391. public ResponseModel<?> checkForgetCode(@RequestBody LoginParam param) {
  1392. String phoneOrEmail = param.getPhoneOrEmail();
  1393. String code = param.getCode();
  1394. LambdaQueryWrapper<TMessageCode> query = Wrappers.lambdaQuery();
  1395. query.eq(TMessageCode::getPhone, phoneOrEmail);
  1396. query.eq(TMessageCode::getCode, code);
  1397. query.eq(TMessageCode::getType, "1");
  1398. query.eq(TMessageCode::getStatus, "0");
  1399. TMessageCode messageCode = tMessageCodeService.getOne(query);
  1400. if (messageCode != null) {
  1401. messageCode.setStatus("1");
  1402. messageCode.setModifyDate(new Date());
  1403. tMessageCodeService.updateById(messageCode);
  1404. TAdmin admin = tAdminService.getById(messageCode.getAdminId());
  1405. return R.ok(admin.getUsername());
  1406. }
  1407. return R.fail(ResponseCodesEnum.R0007);
  1408. }
  1409. @ApiOperation(value = "发送登录验证码")
  1410. @PostMapping("/sentLoginCode")
  1411. public ResponseModel<?> sentLoginCode(@RequestBody LoginParam param) {
  1412. String phoneOrEmail = param.getPhoneOrEmail();
  1413. String hostName = param.getHostName();
  1414. // 定义国内手机号和邮箱的正则表达式
  1415. String phoneReg = "^1[3-9]\\d{9}$";
  1416. String emailReg = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
  1417. // 判断 phoneOrEmail 是手机号还是邮箱
  1418. if (Pattern.matches(phoneReg, phoneOrEmail)) {
  1419. //检测是否已有手机号注册
  1420. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  1421. query.eq(TAdmin::getPhone, phoneOrEmail);
  1422. TAdmin admin = tAdminService.getOne(query);
  1423. if (admin == null) {
  1424. // 说明手机未注册
  1425. return R.fail(ResponseCodesEnum.R0010);
  1426. }
  1427. // 判断是为申泽用户还是七云用户
  1428. String companyType = admin.getCompanyType();
  1429. String sZ = "Sunzee";
  1430. String sC = "Sevencloud";
  1431. // 如果不为管理员
  1432. if (admin.getType() >= 1) {
  1433. if (sZ.equals(hostName)) {
  1434. // 如果companyType不为空,且不等于“0”
  1435. if (StringUtils.isNotEmpty(companyType) && !companyType.equals("0")) {
  1436. return R.fail(ResponseCodesEnum.R0010);
  1437. }
  1438. }
  1439. if (sC.equals(hostName)) {
  1440. // 如果companyType为空,或者不等于“1”
  1441. if (StringUtils.isEmpty(companyType) || !(companyType.equals("1"))) {
  1442. return R.fail(ResponseCodesEnum.R0010);
  1443. }
  1444. }
  1445. }
  1446. //国内发送短信
  1447. String result = tMessageCodeService.sentLoginMessage(phoneOrEmail, admin.getCompanyType());
  1448. return R.ok(result);
  1449. } else if (Pattern.matches(emailReg, phoneOrEmail)) {
  1450. //检测是否已有邮箱注册
  1451. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  1452. query.eq(TAdmin::getEmail, phoneOrEmail);
  1453. TAdmin admin = tAdminService.getOne(query);
  1454. if (admin == null) {
  1455. // 邮箱未注册
  1456. return R.fail(ResponseCodesEnum.R0011);
  1457. }
  1458. // 判断是为申泽用户还是七云用户
  1459. String companyType = admin.getCompanyType();
  1460. String sZ = "Sunzee";
  1461. String sC = "Sevencloud";
  1462. // 如果不为管理员
  1463. if (admin.getType() >= 1) {
  1464. if (sZ.equals(hostName)) {
  1465. // 如果companyType不为空,且不等于“0”
  1466. if (StringUtils.isNotEmpty(companyType) && !companyType.equals("0")) {
  1467. return R.fail(ResponseCodesEnum.R0011);
  1468. }
  1469. }
  1470. if (sC.equals(hostName)) {
  1471. // 如果companyType为空,或者不等于“1”
  1472. if (StringUtils.isEmpty(companyType) || !(companyType.equals("1"))) {
  1473. return R.fail(ResponseCodesEnum.R0011);
  1474. }
  1475. }
  1476. }
  1477. // 发邮件
  1478. String result = tMessageCodeService.sentLoginEmail(phoneOrEmail, hostName);
  1479. return R.ok(result);
  1480. }
  1481. return R.fail(ResponseCodesEnum.R0004);
  1482. }
  1483. @ApiOperation(value = "验证码登录")
  1484. @PostMapping("/loginByCode")
  1485. public ResponseModel<?> loginByCode(@RequestBody LoginParam param, HttpServletRequest request) {
  1486. String phoneOrEmail = param.getPhoneOrEmail();
  1487. String code = param.getCode();
  1488. String loginCode = tokenManager.getLoginCode(phoneOrEmail);
  1489. if (loginCode != null && loginCode.equals(code)) {
  1490. tokenManager.deleteLoginCode(phoneOrEmail);
  1491. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  1492. query.eq(TAdmin::getPhone, phoneOrEmail).or().eq(TAdmin::getEmail, phoneOrEmail);
  1493. TAdmin admin = tAdminService.getOne(query);
  1494. // 添加系统id
  1495. if (StringUtils.isEmpty(admin.getManagerId())) {
  1496. String managerId = AdminUtils.encrypt(false, admin.getId());
  1497. admin.setManagerId(managerId);
  1498. }
  1499. // 设置登录时间
  1500. admin.setLoginDate(new Date());
  1501. // 登录IP
  1502. String ipAddress;
  1503. // 获取通过代理服务器传递的真实IP地址
  1504. String xForwardedForHeader = request.getHeader("X-Forwarded-For");
  1505. if (xForwardedForHeader == null) {
  1506. ipAddress = request.getRemoteAddr();
  1507. } else {
  1508. // 多次反向代理后会有多个IP值,第一个IP才是真实IP
  1509. String[] ips = xForwardedForHeader.split(",");
  1510. ipAddress = ips[0].trim();
  1511. }
  1512. admin.setLoginIp(ipAddress);
  1513. tAdminService.updateById(admin);
  1514. UserDetailBO userDetailBO = tAdminService.getUserDetailBO(admin);
  1515. return R.ok(userDetailBO);
  1516. }
  1517. return R.fail(ResponseCodesEnum.R0007);
  1518. }
  1519. }