From 10486e593aa78681e96271b72f30549706be4c70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=AF=28004796=29?= Date: Fri, 19 Apr 2024 18:33:45 +0800 Subject: [PATCH] init --- .../xq/controller/AreaCodeController.java | 9 ++ .../ruoyi/xq/controller/UserController.java | 12 ++- .../xq/controller/UserInfoController.java | 8 -- .../main/java/com/ruoyi/xq/domain/User.java | 2 +- .../dto/admin/areacode/AreaCodeAdminTree.java | 18 ++++ .../ruoyi/xq/dto/admin/user/FullUserVo.java | 1 + .../xq/dto/admin/user/req/AddUserReq.java | 23 +++++ .../xq/dto/admin/user/req/UpdateUserReq.java | 23 +++++ .../ruoyi/xq/dto/app/user/HomePageReq.java | 2 +- .../xq/dto/app/user/UpdateBaseInfoReq.java | 2 +- .../dto/app/user/UpdateUserFullInfoReq.java | 2 +- .../app/user/vo/CurrentUserFullInfoVo.java | 2 +- .../xq/dto/app/user/vo/CurrentUserInfoVo.java | 2 +- .../ruoyi/xq/dto/app/user/vo/HomeUserVo.java | 2 +- .../ruoyi/xq/manager/CurrentUserManager.java | 4 +- .../com/ruoyi/xq/service/AreaCodeService.java | 3 + .../com/ruoyi/xq/service/UserService.java | 10 ++ .../xq/service/impl/AreaCodeServiceImpl.java | 31 ++++++- .../xq/service/impl/UserServiceImpl.java | 92 ++++++++++++++++++- 19 files changed, 225 insertions(+), 23 deletions(-) create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/areacode/AreaCodeAdminTree.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/AddUserReq.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/UpdateUserReq.java diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/AreaCodeController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/AreaCodeController.java index 7733e7a..7dc0800 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/AreaCodeController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/AreaCodeController.java @@ -13,6 +13,8 @@ import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.xq.domain.AreaCode; +import com.ruoyi.xq.dto.admin.areacode.AreaCodeAdminTree; +import com.ruoyi.xq.dto.app.areacode.AreaCodeTree; import com.ruoyi.xq.service.AreaCodeService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; @@ -21,6 +23,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.Arrays; +import java.util.List; /** * 行政区划 @@ -58,6 +61,12 @@ public class AreaCodeController extends BaseController { return R.ok(areaCodeService.getById(code)); } + @GetMapping("/tree") + public R> areaCodeTree(){ + List node = areaCodeService.treeAdmin(); + return R.ok(node); + } + /** * 新增行政区划 */ diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserController.java index b2ee47e..655a347 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserController.java @@ -15,8 +15,10 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.xq.domain.User; import com.ruoyi.xq.dto.admin.user.FullUserVo; import com.ruoyi.xq.dto.admin.user.UserAdminVo; +import com.ruoyi.xq.dto.admin.user.req.AddUserReq; import com.ruoyi.xq.dto.admin.user.req.ResetPasswordAdminReq; import com.ruoyi.xq.dto.admin.user.req.UpdateMobileAdminReq; +import com.ruoyi.xq.dto.admin.user.req.UpdateUserReq; import com.ruoyi.xq.dto.app.common.IdReq; import com.ruoyi.xq.service.UserInviteService; import com.ruoyi.xq.service.UserService; @@ -169,8 +171,9 @@ public class UserController extends BaseController { @Log(title = "用户管理", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody User bo) { - return toAjax(userService.save(bo)); + public R add(@RequestBody AddUserReq bo) { + userService.saveUser(bo); + return R.ok(); } /** @@ -180,8 +183,9 @@ public class UserController extends BaseController { @Log(title = "用户管理", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody User bo) { - return toAjax(userService.updateById(bo)); + public R edit(@RequestBody UpdateUserReq bo) { + userService.updateBaseUser(bo); + return R.ok(); } /** diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserInfoController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserInfoController.java index f9dde45..c2a033b 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserInfoController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserInfoController.java @@ -12,7 +12,6 @@ import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.xq.domain.UserInfo; -import com.ruoyi.xq.dto.admin.user.UserInfoDetailAdminVo; import com.ruoyi.xq.dto.admin.user.UserInfoListAdminVo; import com.ruoyi.xq.service.UserInfoService; import lombok.RequiredArgsConstructor; @@ -47,13 +46,6 @@ public class UserInfoController extends BaseController { return TableDataInfo.build(page); } - @SaCheckPermission("xq:userInfo:query") - @GetMapping("/fullUserInfo/{id}") - public R fullUserInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { - UserInfoDetailAdminVo vo = userInfoService.fullUserInfo(id); - return R.ok(vo); - } - /** * 获取用户信息详细信息 * diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/User.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/User.java index b9d7035..86d6b0a 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/User.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/User.java @@ -106,7 +106,7 @@ public class User implements Serializable { /** * 户籍地代码 */ - private String addressCode; + private Integer addressCode; /** * 学历 diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/areacode/AreaCodeAdminTree.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/areacode/AreaCodeAdminTree.java new file mode 100644 index 0000000..3230745 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/areacode/AreaCodeAdminTree.java @@ -0,0 +1,18 @@ +package com.ruoyi.xq.dto.admin.areacode; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class AreaCodeAdminTree { + private Integer id; + private String label; + private Integer parentId; + private List children = new ArrayList<>(); + + public void addChild(AreaCodeAdminTree node) { + children.add(node); + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/FullUserVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/FullUserVo.java index 77ed295..2991c1d 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/FullUserVo.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/FullUserVo.java @@ -11,5 +11,6 @@ public class FullUserVo { private UserInfo userInfo; private UserAuth userAuth; private UserLogin userLogin; + private UserExtend account; private List userPicturesList; } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/AddUserReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/AddUserReq.java new file mode 100644 index 0000000..c4763d8 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/AddUserReq.java @@ -0,0 +1,23 @@ +package com.ruoyi.xq.dto.admin.user.req; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class AddUserReq { + private String mobile; + private Integer userType; + private String nickname; + private String avatar; + private Integer gender; + private LocalDate birthday; + private Integer height; + private Integer weight; + private Integer residenceCode; + private Integer addressCode; + private Integer education; + private Integer marriage; + private String profession; + private Integer annualIncome; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/UpdateUserReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/UpdateUserReq.java new file mode 100644 index 0000000..0468af2 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/UpdateUserReq.java @@ -0,0 +1,23 @@ +package com.ruoyi.xq.dto.admin.user.req; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class UpdateUserReq { + private Long userId; + private Integer userType; + private String nickname; + private String avatar; + private Integer gender; + private LocalDate birthday; + private Integer height; + private Integer weight; + private Integer residenceCode; + private Integer addressCode; + private Integer education; + private Integer marriage; + private String profession; + private Integer annualIncome; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/HomePageReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/HomePageReq.java index 56471b1..0b5ee25 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/HomePageReq.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/HomePageReq.java @@ -67,7 +67,7 @@ public class HomePageReq extends PageQuery { @Schema(description = "购车情况") private Integer carStatus; @Schema(description = "户籍地") - private String addressCode; + private Integer addressCode; } public void initBirthdayByAge(){ diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/UpdateBaseInfoReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/UpdateBaseInfoReq.java index c37e578..294b8dc 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/UpdateBaseInfoReq.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/UpdateBaseInfoReq.java @@ -34,7 +34,7 @@ public class UpdateBaseInfoReq { * 户籍地 */ @Schema(description = "户籍地") - private String addressCode; + private Integer addressCode; /** * 学历 */ diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/UpdateUserFullInfoReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/UpdateUserFullInfoReq.java index fe17dd6..eb72af1 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/UpdateUserFullInfoReq.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/UpdateUserFullInfoReq.java @@ -32,7 +32,7 @@ public class UpdateUserFullInfoReq { @Schema(description = "居住地") private Integer residenceCode; @Schema(description = "户籍地") - private String addressCode; + private Integer addressCode; @Schema(description = "学历") private Integer education; @Schema(description = "婚况") diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/CurrentUserFullInfoVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/CurrentUserFullInfoVo.java index f980a37..18264ac 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/CurrentUserFullInfoVo.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/CurrentUserFullInfoVo.java @@ -76,7 +76,7 @@ public class CurrentUserFullInfoVo { * 户籍地 */ @Schema(description = "户籍地") - private String addressCode; + private Integer addressCode; @Schema(description = "户籍地名称") private String addressName; /** diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/CurrentUserInfoVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/CurrentUserInfoVo.java index 6a34e6d..d838d17 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/CurrentUserInfoVo.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/CurrentUserInfoVo.java @@ -51,7 +51,7 @@ public class CurrentUserInfoVo { @Schema(description = "户籍地名称") private String addressName; @Schema(description = "户籍地编码") - private String addressCode; + private Integer addressCode; /** * 状态 0 可用 1 不可用 */ diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/HomeUserVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/HomeUserVo.java index 9504ee6..2d92d60 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/HomeUserVo.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/HomeUserVo.java @@ -69,7 +69,7 @@ public class HomeUserVo { @Schema(description = "户籍地名称") private String addressName; @Schema(description = "户籍地编码") - private String addressCode; + private Integer addressCode; /** * 学历 */ diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java index 814a83c..4610417 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java @@ -140,7 +140,7 @@ public class CurrentUserManager { String cos = systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN); updateUser.setAvatar(cos + userGenderEnum.getDefaultAvatar()); } - if(StringUtils.isNotEmpty(req.getAddressCode())){ + if(req.getAddressCode() != null){ AreaCode areaCode = areaCodeService.getById(req.getAddressCode()); updateUser.setAddressCode(req.getAddressCode()); updateUser.setAddressName(areaCode.getName()); @@ -261,7 +261,7 @@ public class CurrentUserManager { public void updateInfo(UpdateUserFullInfoReq req) { Long userId = LoginHelper.getUserId(); User updateUser = BeanConvertUtil.convertTo(req, User::new); - if(StringUtils.isNotEmpty(req.getAddressCode())){ + if(req.getAddressCode() != null){ AreaCode areaCode = areaCodeService.getById(req.getAddressCode()); updateUser.setAddressCode(req.getAddressCode()); updateUser.setAddressName(areaCode.getFullname()); diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/AreaCodeService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/AreaCodeService.java index 5c71e28..806b43c 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/AreaCodeService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/AreaCodeService.java @@ -2,6 +2,7 @@ package com.ruoyi.xq.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.xq.domain.AreaCode; +import com.ruoyi.xq.dto.admin.areacode.AreaCodeAdminTree; import com.ruoyi.xq.dto.app.areacode.AreaCodeQuery; import com.ruoyi.xq.dto.app.areacode.AreaCodeTree; @@ -17,6 +18,8 @@ public interface AreaCodeService extends IService { List listAreaCode(AreaCodeQuery query); + List treeAdmin(); + List tree(); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserService.java index 87fcff1..e8e37a2 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserService.java @@ -6,11 +6,14 @@ import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.xq.domain.User; import com.ruoyi.xq.dto.admin.user.FullUserVo; import com.ruoyi.xq.dto.admin.user.UserAdminVo; +import com.ruoyi.xq.dto.admin.user.req.AddUserReq; import com.ruoyi.xq.dto.admin.user.req.UpdateMobileAdminReq; +import com.ruoyi.xq.dto.admin.user.req.UpdateUserReq; import com.ruoyi.xq.dto.app.user.HomePageReq; import com.ruoyi.xq.dto.app.user.vo.HomeUserListVo; import com.ruoyi.xq.dto.app.user.vo.HomeUserVo; import com.ruoyi.xq.dto.common.user.MinUser; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -49,4 +52,11 @@ public interface UserService extends IService { boolean unlock(Long id); FullUserVo fullUserAdmin(Long userId); + + User getByMobile(String mobile); + + void saveUser(AddUserReq bo); + + @Transactional(rollbackFor = Exception.class) + void updateBaseUser(UpdateUserReq updateUserReq); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/AreaCodeServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/AreaCodeServiceImpl.java index 513b060..ea7e5ce 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/AreaCodeServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/AreaCodeServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.BeanConvertUtil; import com.ruoyi.xq.domain.AreaCode; +import com.ruoyi.xq.dto.admin.areacode.AreaCodeAdminTree; import com.ruoyi.xq.dto.app.areacode.AreaCodeQuery; import com.ruoyi.xq.dto.app.areacode.AreaCodeTree; import com.ruoyi.xq.mapper.AreaCodeMapper; @@ -12,7 +13,6 @@ import com.ruoyi.xq.service.AreaCodeService; import org.springframework.stereotype.Service; import java.util.*; -import java.util.function.Function; import java.util.stream.Collectors; /** @@ -32,6 +32,35 @@ public class AreaCodeServiceImpl extends ServiceImpl im return list; } + @Override + public List treeAdmin() { + List list = this.list(); + List nodeList = list.stream().map(i -> { + AreaCodeAdminTree areaCodeAdminTree = new AreaCodeAdminTree(); + areaCodeAdminTree.setId(i.getCode()); + areaCodeAdminTree.setLabel(i.getName()); + areaCodeAdminTree.setParentId(i.getPcode()); + return areaCodeAdminTree; + }).collect(Collectors.toList()); + Map nodeMap = new HashMap<>(); + Set roots = new HashSet<>(); + // 遍历列表构建节点映射表 + for (AreaCodeAdminTree node : nodeList) { + nodeMap.put(node.getId(), node); + if (node.getParentId() == 0 || !nodeMap.containsKey(node.getParentId())) { + roots.add(node); + } + } + // 建立父子关系 + for (AreaCodeAdminTree node : nodeList) { + if (nodeMap.containsKey(node.getParentId())) { + AreaCodeAdminTree parentNode = nodeMap.get(node.getParentId()); + parentNode.addChild(node); + } + } + return new ArrayList<>(roots); + } + @Override public List tree() { List list = this.list(); diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java index 8446427..3defdd8 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.xq.service.impl; import cn.dev33.satoken.secure.BCrypt; import cn.hutool.core.util.PhoneUtil; +import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -14,7 +15,9 @@ import com.ruoyi.common.utils.BeanConvertUtil; import com.ruoyi.xq.domain.*; import com.ruoyi.xq.dto.admin.user.FullUserVo; import com.ruoyi.xq.dto.admin.user.UserAdminVo; +import com.ruoyi.xq.dto.admin.user.req.AddUserReq; import com.ruoyi.xq.dto.admin.user.req.UpdateMobileAdminReq; +import com.ruoyi.xq.dto.admin.user.req.UpdateUserReq; import com.ruoyi.xq.dto.app.user.HomePageReq; import com.ruoyi.xq.dto.app.user.vo.HomeUserListVo; import com.ruoyi.xq.dto.app.user.vo.HomeUserVo; @@ -22,6 +25,8 @@ import com.ruoyi.xq.dto.common.user.MinUser; import com.ruoyi.xq.enums.ErrorEnum; import com.ruoyi.xq.enums.common.SystemConfigEnum; import com.ruoyi.xq.enums.userinfo.UserGenderEnum; +import com.ruoyi.xq.lock.LockKey; +import com.ruoyi.xq.manager.LoginManager; import com.ruoyi.xq.manager.SystemConfigManager; import com.ruoyi.xq.mapper.UserMapper; import com.ruoyi.xq.service.*; @@ -32,8 +37,11 @@ import com.ruoyi.yunxin.req.UpdateUinfoReq; import com.ruoyi.yunxin.resp.YxCommonR; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; @@ -68,6 +76,12 @@ public class UserServiceImpl extends ServiceImpl implements Use private UserAuthService userAuthService; @Autowired private UserStatusService userStatusService; + @Autowired + private UserExtendService userExtendService; + @Autowired + private RedissonClient redissonClient; + @Autowired + private AreaCodeService areaCodeService; @Override public MinUser getMinUserById(Long userId){ @@ -223,7 +237,7 @@ public class UserServiceImpl extends ServiceImpl implements Use if(StringUtils.isNotEmpty(vipQuery.getProfession()) || vipQuery.getAnnualIncome() != null || vipQuery.getZodiac() != null || vipQuery.getSign() != null || vipQuery.getChildStatus() != null || vipQuery.getHousingStatus() != null || - vipQuery.getCarStatus() != null || StringUtils.isNotEmpty(vipQuery.getAddressCode())){ + vipQuery.getCarStatus() != null || vipQuery.getAddressCode() != null){ if(userId == null){ throw new ServiceException(ErrorEnum.VIP_AUTH); } @@ -290,6 +304,82 @@ public class UserServiceImpl extends ServiceImpl implements Use vo.setUserLogin(userLogin); List userPicturesList = userPicturesService.listByUserIdSuccess(userId); vo.setUserPicturesList(userPicturesList); + UserExtend userExtend = userExtendService.getByUserId(userId); + vo.setAccount(userExtend); return vo; } + + @Override + public User getByMobile(String mobile){ + return this.getOne(Wrappers.lambdaQuery(User.class).eq(User::getMobile, mobile) + .last("limit 1")); + } + + @Autowired + private LoginManager loginManager; + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveUser(AddUserReq bo) { + User user = this.getByMobile(bo.getMobile()); + if(user != null){ + throw new ServiceException("手机号已存在!"); + } + String lockKey = LockKey.getRegisterLockKey(bo.getMobile()); + RLock lock = redissonClient.getLock(lockKey); + if(lock.isLocked()){ + throw new ServiceException("您点击太快了"); + } + lock.lock(); + try { + user = this.getByMobile(bo.getMobile()); + if(user != null){ + throw new ServiceException("手机号已存在!"); + } + user = loginManager.registerUser(bo.getMobile(), null); + UpdateUserReq updateUser = BeanConvertUtil.convertTo(bo, UpdateUserReq::new); + updateUser.setUserId(user.getId()); + UserService userService = SpringUtil.getBean(UserService.class); + userService.updateBaseUser(updateUser); + }finally { + lock.unlock(); + } + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateBaseUser(UpdateUserReq updateUserReq){ + User user = this.getById(updateUserReq.getUserId()); + if(user == null){ + throw new ServiceException("用户不存在!"); + } + User updateUser = new User(); + updateUser.setId(user.getId()); + updateUser.setType(updateUserReq.getUserType()); + updateUser.setNickname(updateUserReq.getNickname()); + updateUser.setAvatar(updateUserReq.getAvatar()); + updateUser.setGender(updateUserReq.getGender()); + updateUser.setHeight(updateUserReq.getHeight()); + updateUser.setWeight(updateUserReq.getWeight()); + updateUser.setBirthday(updateUserReq.getBirthday()); + if(updateUserReq.getResidenceCode() != null){ + updateUser.setResidenceCode(updateUserReq.getResidenceCode()); + AreaCode areaCode = areaCodeService.getById(updateUserReq.getResidenceCode()); + updateUser.setResidenceCode(updateUserReq.getResidenceCode()); + updateUser.setResidenceName(areaCode.getName()); + updateUser.setResidenceCityCode(areaCode.getPcode()); + updateUser.setResidenceCityName(areaCode.getPname()); + } + if(updateUserReq.getAddressCode() != null){ + AreaCode areaCode = areaCodeService.getById(updateUserReq.getAddressCode()); + updateUser.setAddressCode(updateUserReq.getAddressCode()); + updateUser.setAddressName(areaCode.getFullname()); + } + updateUser.setEducation(updateUserReq.getEducation()); + updateUser.setMarriage(updateUserReq.getMarriage()); + updateUser.setProfession(updateUserReq.getProfession()); + updateUser.setAnnualIncome(updateUserReq.getAnnualIncome()); + this.updateById(updateUser); + } }