From 4f4c6fa0d62dd408419e60c00bb3e51c09890acb Mon Sep 17 00:00:00 2001 From: hucs Date: Tue, 2 Jul 2024 16:04:57 +0800 Subject: [PATCH] fix --- .../service/IPlayClerkUserInfoService.java | 3 ++ .../impl/PlayClerkUserInfoServiceImpl.java | 54 ++++++++++++++++--- .../modules/system/service/LoginService.java | 2 + .../system/service/impl/LoginServiceImpl.java | 19 +++++++ .../weichat/controller/WxOauthController.java | 31 +++++++++-- 5 files changed, 97 insertions(+), 12 deletions(-) diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/IPlayClerkUserInfoService.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/IPlayClerkUserInfoService.java index 9e23ecc..cdd483f 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/IPlayClerkUserInfoService.java +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/IPlayClerkUserInfoService.java @@ -1,5 +1,6 @@ package com.starry.admin.modules.clerk.service; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.starry.admin.modules.clerk.module.entity.PlayClerkLevelInfoEntity; @@ -210,4 +211,6 @@ public interface IPlayClerkUserInfoService extends IService simpleList(); + + JSONObject getPcData(PlayClerkUserInfoEntity entity); } diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserInfoServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserInfoServiceImpl.java index 1eacf79..c180248 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserInfoServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserInfoServiceImpl.java @@ -1,11 +1,13 @@ package com.starry.admin.modules.clerk.service.impl; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.starry.admin.common.component.JwtToken; import com.starry.admin.common.domain.LoginUser; import com.starry.admin.common.exception.CustomException; import com.starry.admin.modules.balance.service.IPlayBalanceDetailsInfoService; @@ -20,14 +22,21 @@ import com.starry.admin.modules.follow.module.entity.PlayCustomFollowInfoEntity; import com.starry.admin.modules.follow.service.IPlayCustomFollowInfoService; import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity; import com.starry.admin.modules.order.service.IPlayOrderInfoService; +import com.starry.admin.modules.personnel.module.entity.PlayPersonnelAdminInfoEntity; +import com.starry.admin.modules.personnel.module.entity.PlayPersonnelGroupInfoEntity; +import com.starry.admin.modules.personnel.module.entity.PlayPersonnelWaiterInfoEntity; +import com.starry.admin.modules.personnel.service.IPlayPersonnelAdminInfoService; import com.starry.admin.modules.personnel.service.IPlayPersonnelGroupInfoService; +import com.starry.admin.modules.personnel.service.IPlayPersonnelWaiterInfoService; import com.starry.admin.modules.statistics.module.vo.PlayClerkPerformanceInfoQueryVo; +import com.starry.admin.modules.system.service.LoginService; import com.starry.admin.modules.weichat.entity.PlayClerkUserLoginResponseVo; import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoQueryVo; import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoResultVo; import com.starry.admin.utils.SecurityUtils; import com.starry.common.utils.ConvertUtil; import com.starry.common.utils.IdUtils; +import com.starry.common.utils.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -46,26 +55,28 @@ import java.util.stream.Collectors; public class PlayClerkUserInfoServiceImpl extends ServiceImpl implements IPlayClerkUserInfoService { @Resource private PlayClerkUserInfoMapper playClerkUserInfoMapper; - @Resource private PlayClerkDataReviewInfoServiceImpl playClerkDataReviewInfoService; - @Resource private PlayClerkUserReviewInfoServiceImpl playClerkUserReviewInfoService; - @Resource private IPlayClerkCommodityService playClerkCommodityService; - @Resource private IPlayCustomFollowInfoService customFollowInfoService; - @Resource private IPlayBalanceDetailsInfoService playBalanceDetailsInfoService; - @Resource private IPlayOrderInfoService playOrderInfoService; @Resource private IPlayPersonnelGroupInfoService playClerkGroupInfoService; + @Resource + private IPlayPersonnelAdminInfoService playPersonnelAdminInfoService; + @Resource + private IPlayPersonnelWaiterInfoService playClerkWaiterInfoService; + @Resource + private LoginService loginService; + @Resource + private JwtToken jwtToken; @Override @@ -459,9 +470,38 @@ public class PlayClerkUserInfoServiceImpl extends ServiceImpl clerkIdList = playClerkGroupInfoService.getValidClerkIdList(SecurityUtils.getLoginUser()); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getDeleted, 0); - lambdaQueryWrapper.in(PlayClerkUserInfoEntity::getId,clerkIdList); + lambdaQueryWrapper.in(PlayClerkUserInfoEntity::getId, clerkIdList); lambdaQueryWrapper.select(PlayClerkUserInfoEntity::getId, PlayClerkUserInfoEntity::getNickname, PlayClerkUserInfoEntity::getAvatar, PlayClerkUserInfoEntity::getTypeId, PlayClerkUserInfoEntity::getGroupId); lambdaQueryWrapper.orderByDesc(PlayClerkUserInfoEntity::getId); return this.baseMapper.selectList(lambdaQueryWrapper); } + + @Override + public JSONObject getPcData(PlayClerkUserInfoEntity entity) { + JSONObject data = new JSONObject(); + data.fluentPut("token", ""); + data.fluentPut("role", ""); + if (StringUtils.isEmpty(entity.getSysUserId())) { + return data; + } + LoginUser loginUserInfo = loginService.getLoginUserInfo(entity.getSysUserId()); + Map tokenMap = jwtToken.createToken(loginUserInfo); + data.fluentPut("token", tokenMap.get("token")); + PlayPersonnelAdminInfoEntity adminInfoEntity = playPersonnelAdminInfoService.selectByUserId(entity.getSysUserId()); + if (Objects.nonNull(adminInfoEntity)) { + data.fluentPut("role", "operator"); + return data; + } + PlayPersonnelGroupInfoEntity groupInfoEntity = playClerkGroupInfoService.selectByUserId(entity.getSysUserId()); + if (Objects.nonNull(groupInfoEntity)) { + data.fluentPut("role", "leader"); + return data; + } + PlayPersonnelWaiterInfoEntity waiterInfoEntity = playClerkWaiterInfoService.selectByUserId(entity.getSysUserId()); + if (Objects.nonNull(waiterInfoEntity)) { + data.fluentPut("role", "waiter"); + return data; + } + return data; + } } diff --git a/play-admin/src/main/java/com/starry/admin/modules/system/service/LoginService.java b/play-admin/src/main/java/com/starry/admin/modules/system/service/LoginService.java index 1de204f..6a6cc06 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/system/service/LoginService.java +++ b/play-admin/src/main/java/com/starry/admin/modules/system/service/LoginService.java @@ -65,4 +65,6 @@ public interface LoginService { * @return 获取信息 */ LoginUser getLoginUserInfo(String userName, String tenantId); + + LoginUser getLoginUserInfo(String userId); } diff --git a/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/LoginServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/LoginServiceImpl.java index cebb910..1133da0 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/LoginServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/LoginServiceImpl.java @@ -193,4 +193,23 @@ public class LoginServiceImpl implements LoginService { } return null; } + + @Override + public LoginUser getLoginUserInfo(String userId) { + SysUserEntity sysUser = sysUserService.selectUserById(userId); + Set roles = this.getRolePermission(sysUser); + // 权限集合 + Set permissions = this.getMenuPermission(sysUser); + // 查询租户信息 + SysTenantEntity tenant = SysTenantService.selectSysTenantByTenantId(sysUser.getTenantId()); + LoginUser sysUserVo = new LoginUser(); + sysUserVo.setUser(sysUser); + sysUserVo.setRoles(roles); + sysUserVo.setPermissions(permissions); + if (tenant != null) { + sysUserVo.setTenantEndDate(tenant.getTenantTime()); + sysUserVo.setTenantStatus(Integer.valueOf(tenant.getTenantStatus())); + } + return sysUserVo; + } } diff --git a/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxOauthController.java b/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxOauthController.java index b39cebe..33c9bcb 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxOauthController.java +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxOauthController.java @@ -43,19 +43,14 @@ public class WxOauthController { @Resource private WxCustomMpService wxCustomMpService; - @Resource private IPlayCustomUserInfoService customUserInfoService; - @Resource private IPlayClerkUserInfoService clerkUserInfoService; - @Resource private WxTokenService tokenService; - @Resource private WxOauthService wxOauthService; - @Resource private RedisCache redisCache; @@ -104,6 +99,32 @@ public class WxOauthController { jsonObject.put("tokenValue", TOKEN_PREFIX + tokenValue); jsonObject.put("tokenName", CLERK_USER_LOGIN_TOKEN); jsonObject.put("loginDate", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); + jsonObject.put("pcData", clerkUserInfoService.getPcData(entity)); + clerkUserInfoService.updateTokenById(entity.getId(), tokenValue); + return R.ok(jsonObject); + } catch (Exception e) { + log.error("顾客登录失败,", e); + return R.unauthorized(); + } + } + + @PostMapping("/clerk/login/dev") + public R clerkLoginDev(@Validated @RequestBody WxUserLoginVo vo) { + try { + String userId = "a4471ef596a1"; + PlayClerkUserInfoEntity entity = clerkUserInfoService.selectById(userId); + if (entity == null) { + throw new CustomException("用户不存在"); + } + // 缓存租户信息 + String redisKey = "TENANT_INFO:" + entity.getId(); + redisCache.setCacheObject(redisKey, entity.getTenantId()); + String tokenValue = tokenService.createWxUserToken(entity.getId()); + JSONObject jsonObject = JSONObject.from(clerkUserInfoService.getVo(entity)); + jsonObject.put("tokenValue", TOKEN_PREFIX + tokenValue); + jsonObject.put("tokenName", CLERK_USER_LOGIN_TOKEN); + jsonObject.put("loginDate", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); + jsonObject.put("pcData", clerkUserInfoService.getPcData(entity)); clerkUserInfoService.updateTokenById(entity.getId(), tokenValue); return R.ok(jsonObject); } catch (Exception e) {