TAdminController.java 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989
  1. package com.szwl.controller;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.collection.CollUtil;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  7. import com.baomidou.mybatisplus.core.metadata.IPage;
  8. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  9. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  10. import com.szwl.annotation.Audit;
  11. import com.szwl.constant.AuditEnum;
  12. import com.szwl.constant.ResponseCodesEnum;
  13. import com.szwl.exception.BizException;
  14. import com.szwl.feign.bean.PayFeign;
  15. import com.szwl.manager.TokenManager;
  16. import com.szwl.model.bo.R;
  17. import com.szwl.model.bo.ResponseModel;
  18. import com.szwl.model.bo.UserDetailBO;
  19. import com.szwl.model.dto.RegisterParamDTO;
  20. import com.szwl.model.entity.*;
  21. import com.szwl.model.param.AddLoginUserParam;
  22. import com.szwl.model.param.UpdateLoginUserParam;
  23. import com.szwl.model.utils.AdminUtils;
  24. import com.szwl.service.*;
  25. import com.szwl.util.IDGenerator;
  26. import io.swagger.annotations.Api;
  27. import io.swagger.annotations.ApiOperation;
  28. import lombok.extern.slf4j.Slf4j;
  29. import org.apache.commons.lang.StringUtils;
  30. import org.slf4j.Logger;
  31. import org.slf4j.LoggerFactory;
  32. import org.springframework.transaction.annotation.Transactional;
  33. import org.springframework.web.bind.annotation.*;
  34. import javax.servlet.http.HttpServletRequest;
  35. import javax.validation.Valid;
  36. import java.util.*;
  37. import java.util.regex.Pattern;
  38. import java.util.stream.Collectors;
  39. /**
  40. * <p>
  41. * 短信验证码 前端控制器
  42. * </p>
  43. *
  44. * @author wuhs
  45. * @since 2023-09-26
  46. */
  47. @Slf4j
  48. @Api(value = "/tAdmin", tags = {"账户"})
  49. @RestController
  50. @RequestMapping("/tAdmin")
  51. public class TAdminController {
  52. SysRoleService sysRoleService;
  53. SysUserRoleService sysUserRoleService;
  54. TokenManager tokenManager;
  55. TAdminService tAdminService;
  56. TAdminEquipmentService tAdminEquipmentService;
  57. TMessageCodeService tMessageCodeService;
  58. TAirwallexWalletService airwallexWalletService;
  59. PayFeign payFeign;
  60. public TAdminController(SysRoleService sysRoleService, SysUserRoleService sysUserRoleService, TokenManager tokenManager, TAdminService tAdminService, TAdminEquipmentService tAdminEquipmentService, TMessageCodeService tMessageCodeService, TAirwallexWalletService airwallexWalletService, PayFeign payFeign) {
  61. this.sysRoleService = sysRoleService;
  62. this.sysUserRoleService = sysUserRoleService;
  63. this.tokenManager = tokenManager;
  64. this.tAdminService = tAdminService;
  65. this.tAdminEquipmentService = tAdminEquipmentService;
  66. this.tMessageCodeService = tMessageCodeService;
  67. this.airwallexWalletService = airwallexWalletService;
  68. this.payFeign = payFeign;
  69. }
  70. private static final Logger logger = LoggerFactory.getLogger(TAdminController.class);
  71. @ApiOperation(value = "获取账户类型")
  72. @GetMapping("/getAdminType")
  73. public ResponseModel<Integer> getAdminType(@RequestParam Long adminId) {
  74. if (adminId != null) {
  75. LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
  76. wrapper.eq(TAdmin::getId, adminId);
  77. TAdmin tAdmin = tAdminService.getOne(wrapper);
  78. Integer type = tAdmin.getType();
  79. return R.ok(type);
  80. }
  81. return R.fail("adminId无效");
  82. }
  83. @ApiOperation(value = "判断是否海外用户")
  84. @GetMapping("/getIfForeign/{adminId}")
  85. public ResponseModel<?> getIfForeign(@PathVariable Long adminId) {
  86. if (adminId != null){
  87. LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
  88. wrapper.eq(TAdmin::getId, adminId);
  89. TAdmin one = tAdminService.getOne(wrapper);
  90. String ifForeign = one.getIfForeign();
  91. return R.ok(ifForeign);
  92. }
  93. return R.fail("未登录");
  94. }
  95. @ApiOperation(value = "添加子账号")
  96. @PostMapping("/addLoginUser")
  97. @Transactional
  98. @Audit(type = AuditEnum.INSERT, content = "#loginUser.name + '添加账号'")
  99. public ResponseModel<?> addLoginUser(@RequestBody @Valid AddLoginUserParam param) {
  100. if (StringUtils.isEmpty(param.getEquipmentIds())) {
  101. return R.fail(ResponseCodesEnum.A0001, "机器不能为空");
  102. }
  103. if (param.getRoleList().size() < 1) {
  104. return R.fail(ResponseCodesEnum.A0001, "角色不能为空");
  105. }
  106. //获取当前操作人员
  107. UserDetailBO loginUser = tokenManager.getLoginUserDetails();
  108. // 保存用户实体
  109. Date now = new Date();
  110. Long parentId = param.getAdminId();
  111. if (parentId == null) {
  112. return R.fail(ResponseCodesEnum.A0001);
  113. }
  114. param.setAdminId(null);
  115. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  116. query.eq(TAdmin::getUsername, param.getUsername());
  117. List<TAdmin> list = tAdminService.list(query);
  118. if (list.size() > 0) {
  119. return R.fail(ResponseCodesEnum.A0001);
  120. }
  121. TAdmin entity = BeanUtil.copyProperties(param, TAdmin.class);
  122. entity.setParentId(parentId);
  123. if (parentId.toString().equals("1")) {
  124. entity.setType(1);
  125. } else {
  126. entity.setType(3);
  127. }
  128. // entity.setParentId(34l);
  129. entity.setIsAdmined(false);
  130. entity.setCreateDate(now);
  131. entity.setModifyDate(now);
  132. entity.setIsLocked(false);
  133. entity.setIsEnabled(true);
  134. entity.setLoginFailureCount(0);
  135. entity.setEmail(param.getEmail());
  136. entity.setPhone(param.getPhone());
  137. entity.setCompanyType(param.getCompanyType()); // 公司平台
  138. //获取父账号信息
  139. TAdmin parentAdmin = tAdminService.getById(parentId);
  140. entity.setIfForeign(parentAdmin.getIfForeign());
  141. tAdminService.save(entity);
  142. String ifForeign = parentAdmin.getIfForeign();
  143. if ("1".equals(ifForeign)) { // 海外子账户,新建一个 Airwallex 钱包账户
  144. TAirwallexWallet wallet = new TAirwallexWallet();
  145. wallet.setAdminId(entity.getId());
  146. payFeign.saveAirwallexWallet(wallet);
  147. }
  148. // 管理的机器 需要再建立一个关系表 type区分全部还是部分
  149. String equipmentIds = param.getEquipmentIds();
  150. if (StringUtils.isNotEmpty(equipmentIds)) {
  151. if (equipmentIds.equals("all")) {
  152. //管理全部机器
  153. TAdminEquipment tAdminEquipment = new TAdminEquipment();
  154. tAdminEquipment.setAdminId(entity.getId());
  155. //0:全部机器,1:部分机器
  156. tAdminEquipment.setType("0");
  157. tAdminEquipmentService.save(tAdminEquipment);
  158. } else {
  159. //部分机器
  160. TAdminEquipment tAdminEquipment = new TAdminEquipment();
  161. tAdminEquipment.setAdminId(entity.getId());
  162. //0:全部机器,1:部分机器
  163. tAdminEquipment.setType("1");
  164. tAdminEquipment.setEquipmentIds(param.getEquipmentIds());
  165. tAdminEquipmentService.save(tAdminEquipment);
  166. }
  167. }
  168. log.debug("添加账号 id:{},TAdmin:{}", entity.getId(), entity);
  169. // 保存用户角色关系
  170. List<SysUserRole> userRoleList = param.getRoleList()
  171. .stream()
  172. .map(e -> new SysUserRole().setRoleId(e).setUserId(String.valueOf(entity.getId())))
  173. .collect(Collectors.toList());
  174. if (CollUtil.isNotEmpty(userRoleList)) {
  175. sysUserRoleService.saveBatch(userRoleList);
  176. }
  177. return R.ok(entity);
  178. }
  179. @ApiOperation(value = "修改子账号")
  180. @PostMapping("/updateLoginUser")
  181. @Transactional
  182. @Audit(type = AuditEnum.UPDATE, content = "#loginUser.name + '修改账号'")
  183. public ResponseModel<?> updateLoginUser(@RequestBody @Valid UpdateLoginUserParam param) {
  184. // public ResponseModel<?> addLoginUser(@RequestBody AddLoginUserParam param) {
  185. //获取当前操作人员
  186. UserDetailBO loginUser = tokenManager.getLoginUserDetails();
  187. // 保存用户实体
  188. Date now = new Date();
  189. Long parentId = param.getAdminId();
  190. if (parentId == null) {
  191. return R.fail(ResponseCodesEnum.A0001);
  192. }
  193. param.setAdminId(null);
  194. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  195. query.eq(TAdmin::getParentId, parentId);
  196. query.eq(TAdmin::getId, param.getId());
  197. List<TAdmin> list = tAdminService.list(query);
  198. if (list.size() > 0) {
  199. TAdmin admin = list.get(0);
  200. // 管理的机器 需要再建立一个关系表 type区分全部还是部分
  201. String equipmentIds = param.getEquipmentIds();
  202. if (StringUtils.isNotEmpty(equipmentIds)) {
  203. LambdaQueryWrapper<TAdminEquipment> query1 = Wrappers.lambdaQuery();
  204. query1.eq(TAdminEquipment::getAdminId, admin.getId());
  205. List<TAdminEquipment> list1 = tAdminEquipmentService.list(query1);
  206. if (list1.size() > 0) {
  207. TAdminEquipment tAdminEquipment1 = list1.get(0);
  208. if (equipmentIds.equals("all")) {
  209. //管理全部机器
  210. //0:全部机器,1:部分机器
  211. tAdminEquipment1.setType("0");
  212. tAdminEquipment1.setEquipmentIds(null);
  213. } else {
  214. //部分机器
  215. //0:全部机器,1:部分机器
  216. tAdminEquipment1.setType("1");
  217. tAdminEquipment1.setEquipmentIds(param.getEquipmentIds());
  218. }
  219. tAdminEquipmentService.updateById(tAdminEquipment1);
  220. }
  221. }
  222. LambdaQueryWrapper<SysUserRole> query1 = Wrappers.lambdaQuery();
  223. query1.eq(SysUserRole::getUserId, admin.getId());
  224. List<SysUserRole> list1 = sysUserRoleService.list(query1);
  225. if (list1.size() > 0) {
  226. for (SysUserRole sysUserRole : list1) {
  227. sysUserRoleService.removeById(sysUserRole.getId());
  228. }
  229. }
  230. // 保存用户角色关系
  231. List<SysUserRole> userRoleList = param.getRoleList()
  232. .stream()
  233. .map(e -> new SysUserRole().setRoleId(e).setUserId(String.valueOf(admin.getId())))
  234. .collect(Collectors.toList());
  235. if (CollUtil.isNotEmpty(userRoleList)) {
  236. sysUserRoleService.saveBatch(userRoleList);
  237. }
  238. admin.setIsEnabled(param.getIsEnabled());
  239. admin.setPhone(param.getPhone());
  240. admin.setEmail(param.getEmail());
  241. admin.setIsEnabled(param.getIsEnabled());
  242. if (StringUtils.isNotEmpty(param.getPassword())) {
  243. admin.setPassword(param.getPassword());
  244. }
  245. tAdminService.updateById(admin);
  246. log.debug("修改账号 id:{},TAdmin:{}", admin.getId(), admin);
  247. return R.ok(admin);
  248. }
  249. return R.fail(ResponseCodesEnum.A0100);
  250. }
  251. @ApiOperation(value = "删除子账号")
  252. @PostMapping("/deleteLoginUser")
  253. @Transactional
  254. @Audit(type = AuditEnum.DELETE, content = "#loginUser.name + '删除账号'")
  255. public ResponseModel<?> deleteLoginUser(@RequestBody @Valid UpdateLoginUserParam param) {
  256. //获取当前操作人员
  257. UserDetailBO loginUser = tokenManager.getLoginUserDetails();
  258. // 保存用户实体
  259. Date now = new Date();
  260. Long parentId = param.getAdminId();
  261. if (parentId == null) {
  262. return R.fail(ResponseCodesEnum.A0001);
  263. }
  264. param.setAdminId(null);
  265. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  266. query.like(TAdmin::getParentId, parentId);
  267. query.like(TAdmin::getId, param.getId());
  268. List<TAdmin> list = tAdminService.list(query);
  269. if (list.size() > 0) {
  270. TAdmin admin = list.get(0);
  271. // 管理的机器 需要再建立一个关系表 type区分全部还是部分
  272. String equipmentIds = param.getEquipmentIds();
  273. if (StringUtils.isNotEmpty(equipmentIds)) {
  274. LambdaQueryWrapper<TAdminEquipment> query1 = Wrappers.lambdaQuery();
  275. query1.eq(TAdminEquipment::getAdminId, admin.getId());
  276. List<TAdminEquipment> list1 = tAdminEquipmentService.list(query1);
  277. if (list1.size() > 0) {
  278. TAdminEquipment tAdminEquipment1 = list1.get(0);
  279. tAdminEquipmentService.removeById(tAdminEquipment1.getAdminId());
  280. }
  281. }
  282. // 用户角色关系
  283. LambdaQueryWrapper<SysUserRole> query2 = Wrappers.lambdaQuery();
  284. query2.eq(SysUserRole::getUserId, admin.getId());
  285. List<SysUserRole> list2 = sysUserRoleService.list(query2);
  286. if (list2.size() > 0) {
  287. SysUserRole sysUserRole = list2.get(0);
  288. sysUserRoleService.removeById(sysUserRole.getId());
  289. }
  290. tAdminService.removeById(admin.getId());
  291. log.debug("删除账号 id:{},TAdmin:{}", admin.getId(), admin);
  292. return R.ok(admin);
  293. }
  294. return R.fail(ResponseCodesEnum.A0100);
  295. }
  296. @ApiOperation(value = "获取所有子账号信息")
  297. @GetMapping("/getChildDrenAdminList")
  298. public ResponseModel<?> getChildDrenAdminList(String adminId, String userName, String name, String isUse) {
  299. List<AddLoginUserParam> returnList = new ArrayList<>();
  300. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  301. query.eq(TAdmin::getParentId, adminId);
  302. if (StringUtils.isNotEmpty(userName)) {
  303. query.eq(TAdmin::getUsername, userName);
  304. }
  305. if (StringUtils.isNotEmpty(name)) {
  306. query.eq(TAdmin::getName, name);
  307. }
  308. if (StringUtils.isNotEmpty(adminId)) {
  309. if (adminId.equals("1")) {
  310. // query.in(TAdmin::getType,"1","3");
  311. query.eq(TAdmin::getType, "1");
  312. } else {
  313. query.eq(TAdmin::getType, "3");
  314. }
  315. } else {
  316. return R.fail(ResponseCodesEnum.A0100);
  317. }
  318. query.eq(TAdmin::getIsAdmined, false);
  319. List<TAdmin> list = tAdminService.list(query);
  320. if (list.size() > 0) {
  321. for (TAdmin admin : list) {
  322. AddLoginUserParam addLoginUserParam = new AddLoginUserParam();
  323. JSONObject jsonObject = new JSONObject();
  324. addLoginUserParam.setUsername(admin.getUsername());
  325. addLoginUserParam.setName(admin.getName());
  326. addLoginUserParam.setEmail(admin.getEmail());
  327. addLoginUserParam.setPhone(admin.getPhone());
  328. addLoginUserParam.setIsEnabled(admin.getIsEnabled());
  329. addLoginUserParam.setId(admin.getId());
  330. LambdaQueryWrapper<TAdminEquipment> query2 = Wrappers.lambdaQuery();
  331. query2.eq(TAdminEquipment::getAdminId, admin.getId());
  332. List<TAdminEquipment> list1 = tAdminEquipmentService.list(query2);
  333. if (list1.size() > 0) {
  334. TAdminEquipment tAdminEquipment1 = list1.get(0);
  335. if (tAdminEquipment1.getType().equals("0")) {
  336. //管理全部机器
  337. //0:全部机器,1:部分机器
  338. tAdminEquipment1.setType("0");
  339. tAdminEquipment1.setEquipmentIds(null);
  340. addLoginUserParam.setEquipmentIds("all");
  341. } else {
  342. //部分机器
  343. //0:全部机器,1:部分机器
  344. tAdminEquipment1.setType("1");
  345. addLoginUserParam.setEquipmentIds(tAdminEquipment1.getEquipmentIds());
  346. }
  347. }
  348. LambdaQueryWrapper<SysUserRole> query1 = Wrappers.lambdaQuery();
  349. query1.eq(SysUserRole::getUserId, admin.getId());
  350. List<SysUserRole> roleList = sysUserRoleService.list(query1);
  351. List<String> ids = new ArrayList<>();
  352. StringBuilder roleName = new StringBuilder();
  353. if (roleList.size() > 0) {
  354. for (int i = 0; i < roleList.size(); i++) {
  355. SysUserRole sysUserRole = roleList.get(0);
  356. ids.add(sysUserRole.getRoleId());
  357. SysRole sysRole = sysRoleService.getById(sysUserRole.getRoleId());
  358. if (i < roleList.size() - 1) {
  359. roleName.append(sysRole.getRoleName()).append(",");
  360. } else {
  361. roleName.append(sysRole.getRoleName());
  362. }
  363. // addLoginUserParam.setRoleName(roleName);
  364. // List<String> list2 = Arrays.asList(sysRole.getMenuCodesJson().split(","));
  365. // addLoginUserParam.setRoleList(list2);
  366. }
  367. }
  368. addLoginUserParam.setRoleName(roleName.toString());
  369. addLoginUserParam.setRoleList(ids);
  370. returnList.add(addLoginUserParam);
  371. }
  372. }
  373. return R.ok(returnList);
  374. }
  375. @ApiOperation(value = "注册账号/用户注册")
  376. @PostMapping("/save")
  377. @Transactional
  378. @Audit(type = AuditEnum.INSERT, content = "#loginUser.name + '注册账号'")
  379. public ResponseModel<?> save(@RequestBody RegisterParamDTO registerParam) {
  380. if (StringUtils.isEmpty(registerParam.getUsername()) || StringUtils.isEmpty(registerParam.getName()) || StringUtils.isEmpty(registerParam.getPassword())) {
  381. return R.fail(ResponseCodesEnum.A0100, "数据有空!");
  382. }
  383. String phoneOrEmail = registerParam.getPhoneOrEmail();
  384. // 定义国内手机号和邮箱的正则表达式
  385. String phoneReg = "^1[3-9]\\d{9}$";
  386. String emailReg = "^[a-zA-Z0-9_-]+([a-zA-Z0-9_.-]*[a-zA-Z0-9])*@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
  387. if (registerParam.getIfForeign().isEmpty()) {
  388. return R.fail(ResponseCodesEnum.A0001, "是否国内外为空!");
  389. }
  390. // 国内用户注册
  391. if (registerParam.getIfForeign().equals("0")) {
  392. // 判断 phoneOrEmail 是手机号还是邮箱
  393. if (Pattern.matches(phoneReg, phoneOrEmail)) {
  394. System.out.println("这是一个手机号");
  395. if (StringUtils.isEmpty(registerParam.getPhoneOrEmail())) {
  396. return R.fail(ResponseCodesEnum.A0100, "手机号为空!");
  397. }
  398. } else if (Pattern.matches(emailReg, phoneOrEmail)) {
  399. System.out.println("这是一个邮箱地址");
  400. if (StringUtils.isEmpty(registerParam.getPhoneOrEmail())) {
  401. return R.fail(ResponseCodesEnum.A0100, "邮箱为空!");
  402. }
  403. } else {
  404. System.out.println("不是有效的手机号或邮箱地址");
  405. return R.fail(ResponseCodesEnum.A0100, "不是有效的手机号或邮箱地址");
  406. }
  407. } else {
  408. //海外用户注册
  409. if (StringUtils.isEmpty(registerParam.getPhoneOrEmail())) {
  410. return R.fail(ResponseCodesEnum.A0100, "邮箱为空!");
  411. }
  412. }
  413. if (StringUtils.isEmpty(registerParam.getCode())) {
  414. return R.fail(ResponseCodesEnum.A0100, "验证码为空!");
  415. }
  416. //校验是否有重复的
  417. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  418. query.eq(TAdmin::getUsername, registerParam.getUsername());
  419. List<TAdmin> list = tAdminService.list(query);
  420. if (list.size() > 0) {
  421. return R.fail(ResponseCodesEnum.A0201, "用户登录名已存在");
  422. }
  423. LambdaQueryWrapper<TAdmin> query1 = Wrappers.lambdaQuery();
  424. if (registerParam.getIfForeign().equals("0")) {
  425. // 国内分两种
  426. if (Pattern.matches(phoneReg, phoneOrEmail)) {
  427. query1.eq(TAdmin::getPhone, registerParam.getPhoneOrEmail());
  428. } else {
  429. query1.eq(TAdmin::getEmail, registerParam.getPhoneOrEmail());
  430. }
  431. } else {
  432. query1.eq(TAdmin::getEmail, registerParam.getPhoneOrEmail());
  433. }
  434. List<TAdmin> list1 = tAdminService.list(query1);
  435. if (list1.size() > 0) {
  436. return R.fail(ResponseCodesEnum.A0203, "用户手机/邮箱已存在");
  437. }
  438. //校验验证码是否正确
  439. LambdaQueryWrapper<TMessageCode> query2 = Wrappers.lambdaQuery();
  440. if (registerParam.getIfForeign().equals("0")) {
  441. // 国内分两种
  442. if (Pattern.matches(phoneReg, phoneOrEmail)) {
  443. query2.eq(TMessageCode::getPhone, registerParam.getPhoneOrEmail());
  444. } else {
  445. query2.eq(TMessageCode::getPhone, registerParam.getPhoneOrEmail());
  446. }
  447. } else {
  448. query2.eq(TMessageCode::getPhone, registerParam.getPhoneOrEmail());
  449. }
  450. // 0,代表注册验证码
  451. query2.eq(TMessageCode::getType, "0");
  452. query2.eq(TMessageCode::getStatus, "0");
  453. List<TMessageCode> messageCodeList = tMessageCodeService.list(query2);
  454. TAdmin admin = new TAdmin();
  455. if (messageCodeList.size() > 0) {
  456. TMessageCode tMessageCode = messageCodeList.get(messageCodeList.size() - 1);
  457. if (!tMessageCode.getCode().equals(registerParam.getCode())) {
  458. return R.fail(ResponseCodesEnum.A0002, "验证码错误");
  459. }
  460. tMessageCode.setStatus("1");
  461. admin.setId(IDGenerator.commonID());
  462. admin.setCreateDate(new Date());
  463. admin.setModifyDate(new Date());
  464. admin.setIsAdmined(true);
  465. admin.setIsEnabled(true);
  466. admin.setLoginFailureCount(0);
  467. admin.setIsLocked(false);
  468. //默认是商家
  469. admin.setType(2);
  470. admin.setPassword(registerParam.getPassword());
  471. admin.setUsername(registerParam.getUsername());
  472. admin.setName(registerParam.getName());
  473. admin.setIfForeign(registerParam.getIfForeign());
  474. if (registerParam.getIfForeign().equals("1")) {
  475. admin.setPromoCodeOpen("0");
  476. }
  477. admin.setCompanyType(registerParam.getCompanyType());
  478. if (Pattern.matches(phoneReg, phoneOrEmail)) {
  479. admin.setPhone(registerParam.getPhoneOrEmail());
  480. } else if (Pattern.matches(emailReg, phoneOrEmail)) {
  481. admin.setEmail(registerParam.getPhoneOrEmail());
  482. } else {
  483. return R.fail(ResponseCodesEnum.A0100, "不是有效的手机号或邮箱地址");
  484. }
  485. if (registerParam.getCompanyType().equals("1")) { // 如果是七云平台
  486. admin.setTradeMerchantNo("777138500523174"); //七云商户报备号
  487. admin.setPayPlatform("1");
  488. } else {
  489. admin.setPayPlatform("0");
  490. }
  491. boolean b = tAdminService.save(admin);
  492. tMessageCodeService.saveOrUpdate(tMessageCode);
  493. if (b) {
  494. // 绑定商家角色
  495. LambdaQueryWrapper<SysRole> query4 = Wrappers.lambdaQuery();
  496. query4.eq(SysRole::getAdminId, "1");
  497. query4.eq(SysRole::getRoleName, "商家");
  498. List<SysRole> list2 = sysRoleService.list(query4);
  499. if (list2.size() > 0) {
  500. SysRole sysRole = list2.get(0);
  501. SysRole newSysRole = new SysRole();
  502. newSysRole.setAdminId(admin.getId());
  503. newSysRole.setMenuCodesJson(sysRole.getMenuCodesJson());
  504. newSysRole.setRoleName("商家");
  505. sysRoleService.save(newSysRole);
  506. SysUserRole sysUserRole = new SysUserRole();
  507. sysUserRole.setRoleId(newSysRole.getRoleId());
  508. sysUserRole.setUserId(String.valueOf(admin.getId()));
  509. boolean save = sysUserRoleService.save(sysUserRole);
  510. }
  511. tMessageCode.setModifyDate(new Date());
  512. if (admin.getId() != null) {
  513. String managerId = AdminUtils.encrypt(false, admin.getId());
  514. admin.setManagerId(managerId);
  515. tAdminService.getById(admin);
  516. // 新建海外账户的时候创建一个 Airwallex 钱包账户
  517. try {
  518. if ("1".equals(registerParam.getIfForeign())) {
  519. TAirwallexWallet wallet = new TAirwallexWallet();
  520. wallet.setAdminId(admin.getId());
  521. // wallet.setAccountCurrency("USD");
  522. // wallet.setAccountAmount(new BigDecimal("0.00"));
  523. // airwallexWalletService.save(wallet);
  524. // System.out.println("wallet >>> " + wallet);
  525. payFeign.saveAirwallexWallet(wallet);
  526. }
  527. } catch (Exception e) {
  528. logger.error("发生异常》》》:" + e.getMessage(), e);
  529. }
  530. }
  531. }
  532. return R.ok(b);
  533. } else {
  534. return R.fail(ResponseCodesEnum.A0002, "没有找到验证码");
  535. }
  536. }
  537. @ApiOperation(value = "登录")
  538. @PostMapping("/login")
  539. @Audit(type = AuditEnum.LOGIN, content = "#username + '请求登录'")
  540. public ResponseModel<UserDetailBO> login(String username, String password, String hostName, HttpServletRequest request) {
  541. if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
  542. return R.fail(ResponseCodesEnum.A0001, "参数有空");
  543. }
  544. //验证用户名登录
  545. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  546. query.eq(TAdmin::getPassword, password);
  547. query.and(
  548. wrapper -> {
  549. wrapper.eq(TAdmin::getUsername, username)
  550. .or().eq(TAdmin::getPhone, username);
  551. }
  552. );
  553. TAdmin tAdmin = Optional.ofNullable(tAdminService.getOnly(query))
  554. .orElseThrow(() -> new BizException(ResponseCodesEnum.L0002));
  555. // 判断是为申泽用户还是七云用户
  556. String companyType = tAdmin.getCompanyType();
  557. String SZ = "Sunzee";
  558. String SC = "Sevencloud";
  559. // 如果不为管理员
  560. if (tAdmin.getType() >= 1) {
  561. if (SZ.equals(hostName)) {
  562. // 如果companyType不为空,且不等于“0”
  563. if (StringUtils.isNotEmpty(companyType) && !companyType.equals("0")) {
  564. return R.fail(ResponseCodesEnum.L0002);
  565. }
  566. }
  567. if (SC.equals(hostName)) {
  568. // 如果companyType为空,或者不等于“1”
  569. if (StringUtils.isEmpty(companyType) || !(companyType.equals("1"))) {
  570. return R.fail(ResponseCodesEnum.L0002);
  571. }
  572. }
  573. }
  574. // 添加系统id
  575. if (StringUtils.isEmpty(tAdmin.getManagerId())) {
  576. String managerId = AdminUtils.encrypt(false, tAdmin.getId());
  577. tAdmin.setManagerId(managerId);
  578. }
  579. // 设置登录时间
  580. tAdmin.setLoginDate(new Date());
  581. // 登录IP
  582. String ipAddress = null;
  583. // 获取通过代理服务器传递的真实IP地址
  584. String xForwardedForHeader = request.getHeader("X-Forwarded-For");
  585. if (xForwardedForHeader == null) {
  586. ipAddress = request.getRemoteAddr();
  587. } else {
  588. // 多次反向代理后会有多个IP值,第一个IP才是真实IP
  589. String[] ips = xForwardedForHeader.split(",");
  590. ipAddress = ips[0].trim();
  591. }
  592. tAdmin.setLoginIp(ipAddress);
  593. tAdminService.updateById(tAdmin);
  594. UserDetailBO userDetailBO = tAdminService.getUserDetailBO(tAdmin);
  595. return R.ok(userDetailBO);
  596. }
  597. @ApiOperation(value = "切换自动登录")
  598. @GetMapping("/autoLogin")
  599. @Audit(type = AuditEnum.LOGIN, content = "切换登录'")
  600. public ResponseModel<UserDetailBO> autoLogin(@RequestParam String id) {
  601. if (StringUtils.isEmpty(id)) {
  602. return R.fail(ResponseCodesEnum.A0001, "参数有空");
  603. }
  604. //验证用户名登录
  605. Long adminId = Long.valueOf(id);
  606. TAdmin admin = tAdminService.getById(adminId);
  607. TAdmin tAdmin = Optional.ofNullable(admin)
  608. .orElseThrow(() -> new BizException(ResponseCodesEnum.L0002));
  609. // 添加系统id
  610. if (StringUtils.isEmpty(tAdmin.getManagerId())) {
  611. String managerId = AdminUtils.encrypt(false, tAdmin.getId());
  612. tAdmin.setManagerId(managerId);
  613. tAdminService.getById(tAdmin);
  614. }
  615. UserDetailBO userDetailBO = tAdminService.getUserDetailBO(tAdmin);
  616. return R.ok(userDetailBO);
  617. }
  618. @ApiOperation(value = "修改密码")
  619. @PostMapping("/updatePassword")
  620. public ResponseModel<?> updatePassword(String username, String password) {
  621. if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
  622. return R.fail(ResponseCodesEnum.A0001, "参数有空");
  623. }
  624. //查找用户名
  625. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  626. query.eq(TAdmin::getUsername, username);
  627. List<TAdmin> list = tAdminService.list(query);
  628. if (list.size() > 0) {
  629. TAdmin admin = list.get(0);
  630. admin.setPassword(password);
  631. boolean b = tAdminService.saveOrUpdate(admin);
  632. return R.ok(b);
  633. }
  634. return R.fail(ResponseCodesEnum.A0001, "修改失败");
  635. }
  636. @ApiOperation(value = "获取账号信息")
  637. @GetMapping("/getAdmin")
  638. public ResponseModel<TAdmin> getAdmin(@RequestParam String id) {
  639. // TAdmin tAdmin = tAdminService.getById(id);
  640. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  641. // query.eq(TAdmin::getUsername,username);
  642. query.eq(TAdmin::getId, id);
  643. TAdmin tAdmin = Optional.ofNullable(tAdminService.getOnly(query))
  644. .orElseThrow(() -> new BizException(ResponseCodesEnum.L0002));
  645. if (StringUtils.isEmpty(tAdmin.getManagerId())) {
  646. String managerId = AdminUtils.encrypt(false, tAdmin.getId());
  647. tAdmin.setManagerId(managerId);
  648. tAdminService.getById(tAdmin);
  649. }
  650. UserDetailBO userDetailBO = BeanUtil.copyProperties(tAdmin, UserDetailBO.class);
  651. // String token = IdUtil.simpleUUID();
  652. // userDetailBO.setCurrentToken(token);
  653. // // 获取拥有的权限菜单
  654. // Set<String> menuList = sysRoleService.listAuthMenuByUserId(userDetailBO.getId());
  655. // userDetailBO.setMenuCodeList(CollUtil.newArrayList(menuList));
  656. // 抹除密码
  657. // userDetailBO.setPassword(null);
  658. // 保存到redis
  659. // tokenManager.saveAuthentication(token,userDetailBO);
  660. return R.ok(userDetailBO);
  661. }
  662. @ApiOperation(value = "获取账号列表 分页")
  663. @GetMapping("/pageAdmin")
  664. public ResponseModel<IPage<?>> pageAdmin(String id, String name, String userName, String ifForeign,
  665. long current, long size) {
  666. if (StringUtils.isEmpty(id)) {
  667. return R.fail(ResponseCodesEnum.A0001, "null参数");
  668. }
  669. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  670. if (StringUtils.isNotEmpty(name)) {
  671. query.like(TAdmin::getName, name);
  672. }
  673. if (StringUtils.isNotEmpty(userName)) {
  674. query.like(TAdmin::getUsername, userName);
  675. }
  676. if (StringUtils.isNotEmpty(ifForeign)) {
  677. query.eq(TAdmin::getIfForeign, ifForeign);
  678. }
  679. if (StringUtils.isNotEmpty(id)) {
  680. TAdmin admin = tAdminService.getById(id);
  681. if (admin == null || admin.getId() == null) {
  682. return R.fail(ResponseCodesEnum.A0001, "没有找到商家");
  683. }
  684. // 申泽平台管理员
  685. if (admin.getId() == 2738) {
  686. query.isNull(TAdmin::getCompanyType).or()
  687. .eq(TAdmin::getCompanyType, "0");
  688. }
  689. // 七云平台管理员
  690. if (admin.getId() == 2739) {
  691. query.eq(TAdmin::getCompanyType, "1");
  692. }
  693. if (admin.getType() > 1) {
  694. query.eq(TAdmin::getRelationAdminId, id);
  695. }
  696. }
  697. query.eq(TAdmin::getType, "2");
  698. query.orderByDesc(TAdmin::getCreateDate);
  699. Page<TAdmin> page = new Page<>(current, size, true);
  700. IPage<TAdmin> iPage = tAdminService.page(page, query);
  701. return R.ok(iPage);
  702. }
  703. @ApiOperation(value = "获取账号列表 分页")
  704. @GetMapping("/pageAdmin2")
  705. public ResponseModel<IPage<TAdmin>> pageAdmin2(@RequestParam(value = "current") long current,
  706. @RequestParam(value = "size") long size) {
  707. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  708. Page<TAdmin> page = new Page<>(current, size, true);
  709. IPage<TAdmin> iPage = tAdminService.page(page, query);
  710. return R.ok(iPage);
  711. }
  712. @ApiOperation(value = "获取账号列表")
  713. @GetMapping("/listAdmin")
  714. public ResponseModel<?> listAdmin(String adminId) {
  715. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  716. if (StringUtils.isNotEmpty(adminId)) {
  717. query.like(TAdmin::getRelationAdminId, adminId);
  718. }
  719. List<TAdmin> list = tAdminService.list(query);
  720. return R.ok(list);
  721. }
  722. @ApiOperation(value = "修改账号")
  723. @PostMapping("/update")
  724. @Transactional
  725. public ResponseModel<?> update(@RequestBody TAdmin admin) {
  726. if (StringUtils.isEmpty(admin.getUsername()) && admin.getId() == null) {
  727. return R.fail(ResponseCodesEnum.A0001, "参数空");
  728. }
  729. //校验是否有重复的
  730. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  731. if (StringUtils.isNotEmpty(admin.getUsername())) {
  732. query.eq(TAdmin::getUsername, admin.getUsername());
  733. }
  734. if (admin.getId() != null) {
  735. query.eq(TAdmin::getId, admin.getId());
  736. }
  737. List<TAdmin> list = tAdminService.list(query);
  738. TAdmin oldAdmin = list.get(0);
  739. if (StringUtils.isNotEmpty(admin.getPassword())) {
  740. oldAdmin.setPassword(admin.getPassword());
  741. }
  742. if (StringUtils.isNotEmpty(admin.getName())) {
  743. oldAdmin.setName(admin.getName());
  744. }
  745. if (admin.getAreaId() != null) {
  746. oldAdmin.setAreaId(admin.getAreaId());
  747. }
  748. if (StringUtils.isNotEmpty(admin.getIfForeign())) {
  749. oldAdmin.setIfForeign(admin.getIfForeign());
  750. }
  751. if (StringUtils.isNotEmpty(admin.getTradeMerchantNo())) {
  752. oldAdmin.setTradeMerchantNo(admin.getTradeMerchantNo());
  753. }
  754. if (StringUtils.isNotEmpty(admin.getPayPlatform())) {
  755. oldAdmin.setPayPlatform(admin.getPayPlatform());
  756. }
  757. if (StringUtils.isNotEmpty(admin.getPromoCodeOpen())) {
  758. oldAdmin.setPromoCodeOpen(admin.getPromoCodeOpen());
  759. }
  760. if (StringUtils.isNotEmpty(admin.getPhone())) {
  761. oldAdmin.setPhone(admin.getPhone());
  762. }
  763. if (StringUtils.isNotEmpty(admin.getEmail())) {
  764. oldAdmin.setEmail(admin.getEmail());
  765. }
  766. if (StringUtils.isNotEmpty(admin.getCurrencySymbol())) {
  767. oldAdmin.setCurrencySymbol(admin.getCurrencySymbol());
  768. } else {
  769. oldAdmin.setCurrencySymbol("¥");
  770. }
  771. if (admin.getApplyStartTime() != null) {
  772. oldAdmin.setApplyStartTime(admin.getApplyStartTime());
  773. }
  774. if (admin.getApplyEndTime() != null) {
  775. oldAdmin.setApplyEndTime(admin.getApplyEndTime());
  776. }
  777. oldAdmin.setModifyDate(new Date());
  778. tAdminService.updateById(oldAdmin);
  779. return R.ok(null, "修改成功");
  780. }
  781. @ApiOperation(value = "绑定上级账户")
  782. @GetMapping("/setRelationAdmin")
  783. @Transactional
  784. public ResponseModel<?> setRelationAdmin(Long adminId, String username) {
  785. TAdmin admin = tAdminService.getById(adminId);
  786. if (StringUtils.isNotEmpty(username)) {
  787. if (StringUtils.isNotEmpty(admin.getRelationAdminId())) {
  788. return R.fail("已有绑定关系");
  789. }
  790. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  791. query.eq(TAdmin::getUsername, username);
  792. List<TAdmin> list = tAdminService.list(query);
  793. if (list.size() > 0) {
  794. TAdmin parentAdmin = list.get(0);
  795. if (StringUtils.isNotEmpty(parentAdmin.getRelationAdminId()) && parentAdmin.getRelationAdminId().equals(admin.getId().toString())) {
  796. return R.fail("不能互为绑定关系");
  797. } else {
  798. admin.setRelationAdminId(String.valueOf(parentAdmin.getId()));
  799. tAdminService.updateById(admin);
  800. }
  801. } else {
  802. return R.fail("找不到账户");
  803. }
  804. } else {
  805. return R.fail(ResponseCodesEnum.A0001);
  806. }
  807. return R.ok(null, "绑定成功");
  808. }
  809. @ApiOperation(value = "获取所有关联(下级)账号信息")
  810. @GetMapping("/getAdminIdList")
  811. public ResponseModel<List<Long>> getAdminIdList(@RequestParam String adminId) {
  812. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  813. query.eq(TAdmin::getRelationAdminId, adminId);
  814. List<TAdmin> list = tAdminService.list(query);
  815. List<Long> idList = new ArrayList<>();
  816. for (TAdmin admin : list) {
  817. idList.add(admin.getId());
  818. }
  819. return R.ok(idList);
  820. }
  821. @ApiOperation(value = "获取所有关联(下级)账号信息")
  822. @GetMapping("/getAdminList")
  823. public ResponseModel<?> getAdminList(String adminId) {
  824. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  825. query.eq(TAdmin::getRelationAdminId, adminId);
  826. List<TAdmin> list = tAdminService.list(query);
  827. return R.ok(list);
  828. }
  829. @ApiOperation(value = "获取admin信息")
  830. @GetMapping("/getAdminOne/{adminId}")
  831. public ResponseModel<?> getAdminOne(@PathVariable Long adminId) {
  832. LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
  833. wrapper.eq(TAdmin::getId, adminId);
  834. TAdmin admin = tAdminService.getOne(wrapper);
  835. if (Objects.isNull(admin)) {
  836. return R.fail("当前用户不存在");
  837. }
  838. return R.ok(admin);
  839. }
  840. @ApiOperation(value = "获取账号信息byname")
  841. @GetMapping("/getAdminByUsername")
  842. public ResponseModel<TAdmin> getAdminByUsername(@RequestParam String username) {
  843. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  844. query.eq(TAdmin::getUsername, username);
  845. List<TAdmin> list = tAdminService.list(query);
  846. if (list.size() > 0) {
  847. TAdmin tAdmin = list.get(0);
  848. return R.ok(tAdmin);
  849. }
  850. return R.ok();
  851. }
  852. @ApiOperation(value = "获取上级账号名")
  853. @GetMapping("/getRelationAdminUsername")
  854. public String getRelationAdminUsername(String relationAdminId) {
  855. TAdmin admin = tAdminService.getById(relationAdminId);
  856. return admin.getUsername();
  857. }
  858. @ApiOperation(value = "批量设置账户的角色")
  859. @GetMapping("/setRole")
  860. public ResponseModel<?> setRole() {
  861. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  862. query.eq(TAdmin::getType, "2");
  863. List<TAdmin> list = tAdminService.list(query);
  864. if (list.size() > 0) {
  865. for (TAdmin admin : list) {
  866. // 绑定商家角色
  867. LambdaQueryWrapper<SysRole> query4 = Wrappers.lambdaQuery();
  868. query4.eq(SysRole::getAdminId, "1");
  869. query4.eq(SysRole::getRoleName, "商家");
  870. List<SysRole> list2 = sysRoleService.list(query4);
  871. if (list2.size() > 0) {
  872. SysRole sysRole = list2.get(0);
  873. SysRole newSysRole = new SysRole();
  874. newSysRole.setAdminId(admin.getId());
  875. newSysRole.setMenuCodesJson(sysRole.getMenuCodesJson());
  876. newSysRole.setRoleName("商家");
  877. sysRoleService.save(newSysRole);
  878. SysUserRole sysUserRole = new SysUserRole();
  879. sysUserRole.setRoleId(newSysRole.getRoleId());
  880. sysUserRole.setUserId(String.valueOf(admin.getId()));
  881. boolean save = sysUserRoleService.save(sysUserRole);
  882. }
  883. }
  884. }
  885. return R.ok();
  886. }
  887. @ApiOperation(value = "批量设置账户的关联上级")
  888. @GetMapping("/setRelation")
  889. public ResponseModel<?> setRelation() {
  890. List<TAdmin> list = tAdminService.list();
  891. if (list.size() > 0) {
  892. for (TAdmin admin : list) {
  893. if (admin.getParentId() != null) {
  894. admin.setRelationAdminId(admin.getParentId().toString());
  895. tAdminService.updateById(admin);
  896. }
  897. }
  898. }
  899. return R.ok();
  900. }
  901. @ApiOperation(value = "批量修改支付平台")
  902. @GetMapping("/updatePayPlatform")
  903. public ResponseModel<?> updatePayPlatform(@RequestParam String id, @RequestParam String payPlatform) {
  904. Integer adminId = Integer.valueOf(id);
  905. UpdateWrapper<TAdmin> updateWrapper = new UpdateWrapper<>();
  906. // 申泽管理员
  907. if (adminId == 2738) {
  908. updateWrapper.isNull("company_type").or().eq("company_type", 0);
  909. }
  910. // 七云管理员
  911. if (adminId == 2739) {
  912. updateWrapper.eq("company_type", 1);
  913. }
  914. updateWrapper.set("pay_platform",payPlatform);
  915. tAdminService.update(null, updateWrapper);
  916. return R.ok();
  917. }
  918. }