From 73a0dd36f421d7aa004760ead9d60b2d4146bf17 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 24 Mar 2023 09:46:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E8=B0=83=E6=95=B4=E3=80=81?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=9A=84=E6=8B=9C=E8=AE=BF=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qs/serve/controller/WxSvcLoginApi.java | 33 ++++ .../biz/controller/api/BizCusVisitApi.java | 151 ++++++++++++++++++ .../service/impl/SysUserLoginServiceImpl.java | 31 +++- 3 files changed, 211 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/biz/controller/api/BizCusVisitApi.java diff --git a/src/main/java/com/qs/serve/controller/WxSvcLoginApi.java b/src/main/java/com/qs/serve/controller/WxSvcLoginApi.java index 08c02d5a..c36c3d8a 100644 --- a/src/main/java/com/qs/serve/controller/WxSvcLoginApi.java +++ b/src/main/java/com/qs/serve/controller/WxSvcLoginApi.java @@ -10,6 +10,7 @@ import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.HttpCode; import com.qs.serve.common.model.enums.InterType; import com.qs.serve.common.util.*; +import com.qs.serve.modules.sys.mapper.SysTenantMapper; import com.qs.serve.modules.wx.entity.WxUser; import com.qs.serve.modules.wx.entity.dto.WxLoginUser; import com.qs.serve.modules.wx.service.WxUserService; @@ -42,6 +43,8 @@ public class WxSvcLoginApi { private final RedisService redisService; + private final SysTenantMapper sysTenantMapper; + /** * 公众号登录 @@ -68,6 +71,21 @@ public class WxSvcLoginApi { ServletUtils.getIp(request), LoginUserType.APP_USER,new ArrayList<>(),null,AuthContextUtils.getTenant()); redisService.set(key, JsonUtil.objectToJson(loginUser.loginUserDTO()),2, TimeUnit.DAYS); objectMap.put("token",token); + + //后台管理员信息 + Map tokenMap = new HashMap<>(10); + String client = "wx_app"; + String redisKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_APP,client,wxUser.getSysUserId()); + String pctoken = JwtUtils.generateToken(wxUser.getSysUserId(),loginUser.getTypeFlag(),client); + redisService.set(redisKey,pctoken); + tokenMap.put("token", pctoken); + tokenMap.put("userId", wxUser.getSysUserId()); + tokenMap.put("IP", loginUser.getLoginIp()); + tokenMap.put("tenant", sysTenantMapper.selectById(loginUser.getTenant())); + tokenMap.put("loginType",client); + tokenMap.put("client",client); + //关联 + objectMap.put("adminTokenInfo",tokenMap); return R.ok(objectMap); } @@ -83,6 +101,21 @@ public class WxSvcLoginApi { ServletUtils.getIp(request), LoginUserType.APP_USER,new ArrayList<>(),null,AuthContextUtils.getTenant()); redisService.set(key, JsonUtil.objectToJson(loginUser.loginUserDTO()),2, TimeUnit.DAYS); objectMap.put("token",token); + + Map tokenMap = new HashMap<>(10); + String client = "wx_app"; + String redisKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_APP,client,loginUser.getUserId()); + String pctoken = JwtUtils.generateToken(loginUser.getUserId(),loginUser.getTypeFlag(),client); + redisService.set(redisKey,pctoken); + tokenMap.put("token", pctoken); + tokenMap.put("userId", loginUser.getUserId()); + tokenMap.put("IP", loginUser.getLoginIp()); + tokenMap.put("tenant", sysTenantMapper.selectById(loginUser.getTenant())); + tokenMap.put("loginType",client); + tokenMap.put("client",client); + //关联 + objectMap.put("adminTokenInfo",tokenMap); + return R.ok(objectMap); } diff --git a/src/main/java/com/qs/serve/modules/biz/controller/api/BizCusVisitApi.java b/src/main/java/com/qs/serve/modules/biz/controller/api/BizCusVisitApi.java new file mode 100644 index 00000000..f84eaf5b --- /dev/null +++ b/src/main/java/com/qs/serve/modules/biz/controller/api/BizCusVisitApi.java @@ -0,0 +1,151 @@ +package com.qs.serve.modules.biz.controller.api; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.biz.entity.BizCusVisit; +import com.qs.serve.modules.biz.entity.BizVisit; +import com.qs.serve.modules.biz.service.BizCusVisitService; +import com.qs.serve.modules.biz.service.BizVisitService; +import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.service.BmsSupplierService; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.wx.entity.WxUser; +import com.qs.serve.modules.wx.service.WxUserService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +/** + * API业务 拜访日志2 + * @author YenHex + * @since 2022-10-26 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("/api/cusVisit") +public class BizCusVisitApi { + + private BizCusVisitService bizVisitService; + private WxUserService wxUserService; + private SysUserService sysUserService; + private BmsSupplierService supplierService; + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + public R> getPage(BizCusVisit param){ + WxUser wxUser = wxUserService.getCurrentWxUser(); + if(wxUser.getSysUserId()==null||wxUser.getSysUserId().equals("0")){ + return R.byEmptyList(); + } + String userId = wxUser.getSysUserId(); + param.setVisitorId(userId); + PageUtil.startPage(); + LambdaQueryWrapper visitWrapper = new LambdaQueryWrapper<>(param); + List list = bizVisitService.list(visitWrapper); + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + public R getById(@PathVariable("id") String id){ + WxUser wxUser = wxUserService.getCurrentWxUser(); + if(wxUser.getSysUserId()==null||wxUser.getSysUserId().equals("0")){ + return R.ok(); + } + String userId = wxUser.getSysUserId(); + BizCusVisit bizVisit = bizVisitService.getById(id); + if(!bizVisit.getVisitorId().equals(userId)){ + return R.ok(); + } + return R.ok(bizVisit); + } + + + + /** + * 更新 + * @param param + * @return + */ + @PostMapping("/updateById") + public R updateById(@RequestBody @Valid BizCusVisit param){ + WxUser wxUser = wxUserService.getCurrentWxUser(); + if(wxUser.getSysUserId()==null||wxUser.getSysUserId().equals("0")){ + return R.ok(); + } + String userId = wxUser.getSysUserId(); + BizCusVisit bizVisit = bizVisitService.getById(param.getId()); + if(!bizVisit.getVisitorId().equals(userId)){ + return R.ok(); + } + if(StringUtils.hasText(param.getCustomerId())){ + BmsSupplier supplier = supplierService.getById(param.getCustomerId()); + param.setCustomerId(supplier.getId()); + param.setCustomerName(supplier.getName()); + param.setCustomerCode(supplier.getCode()); + } + boolean result = bizVisitService.updateById(param); + return R.isTrue(result); + } + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/save") + public R save(@RequestBody @Valid BizCusVisit param){ + WxUser wxUser = wxUserService.getCurrentWxUser(); + if(wxUser.getSysUserId()==null||wxUser.getSysUserId().equals("0")){ + return R.ok(); + } + String userId = wxUser.getSysUserId(); + SysUser sysUser = sysUserService.getById(userId); + param.setVisitorId(userId); + param.setVisitorName(sysUser.getName()); + BmsSupplier supplier = supplierService.getById(param.getCustomerId()); + param.setCustomerId(supplier.getId()); + param.setCustomerName(supplier.getName()); + param.setCustomerCode(supplier.getCode()); + boolean result = bizVisitService.save(param); + return R.isTrue(result); + } + + /** + * 删除 + * @param id + * @return + */ + @DeleteMapping("/deleteById/{id}") + public R deleteById(@PathVariable("id") Long id){ + WxUser wxUser = wxUserService.getCurrentWxUser(); + if(wxUser.getSysUserId()==null||wxUser.getSysUserId().equals("0")){ + return R.ok(); + } + String userId = wxUser.getSysUserId(); + BizCusVisit bizVisit = bizVisitService.getById(id); + if(!bizVisit.getVisitorId().equals(userId)){ + return R.ok(); + } + boolean result = bizVisitService.removeById(id); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLoginServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLoginServiceImpl.java index 40117bf1..1545bdf2 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLoginServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLoginServiceImpl.java @@ -4,18 +4,18 @@ import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qs.serve.common.framework.redis.RedisService; import com.qs.serve.common.framework.security.model.LoginUser; +import com.qs.serve.common.framework.security.model.LoginUserType; import com.qs.serve.common.framework.security.service.SysUserDetailsServiceImpl; import com.qs.serve.common.model.consts.RedisCacheKeys; -import com.qs.serve.common.util.Assert; -import com.qs.serve.common.util.AuthContextUtils; -import com.qs.serve.common.util.JwtUtils; -import com.qs.serve.common.util.StringUtils; +import com.qs.serve.common.util.*; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.dto.SysLoginByPhoneParam; import com.qs.serve.modules.sys.entity.dto.SysLoginParam; import com.qs.serve.modules.sys.mapper.SysTenantMapper; import com.qs.serve.modules.sys.mapper.SysUserMapper; import com.qs.serve.modules.sys.service.SysUserLoginService; +import com.qs.serve.modules.wx.entity.WxUser; +import com.qs.serve.modules.wx.mapper.WxUserMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.authentication.BadCredentialsException; @@ -24,9 +24,11 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; /** * @author YenHex @@ -45,6 +47,8 @@ public class SysUserLoginServiceImpl implements SysUserLoginService { private final RedisService redisService; + private final WxUserMapper wxUserMapper; + @Override public Map login(SysLoginParam loginParam) { UserDetails userDetails = userDetailsService.loadUserByUsername(loginParam.getAccount()); @@ -104,6 +108,25 @@ public class SysUserLoginServiceImpl implements SysUserLoginService { tokenMap.put("tenant", sysTenantMapper.selectById(loginUser.getTenant())); tokenMap.put("loginType",loginType); tokenMap.put("client",client); + //拓展微信token + String wxtoken = IdUtil.fastSimpleUUID(); + String key = RedisCacheKeys.LOGIN_KEY_WX + wxtoken; + LambdaQueryWrapper wxUsrLqw = new LambdaQueryWrapper<>(); + wxUsrLqw.eq(WxUser::getSysUserId,loginUser.getUserId()); + WxUser wxUser = null; + try { + wxUser = wxUserMapper.selectOne(wxUsrLqw); + } catch (Exception e) { + e.printStackTrace(); + } + if(wxUser!=null){ + LoginUser wxloginUser = new LoginUser(wxUser.getId(),wxUser.getEmpName(),"", + "", LoginUserType.APP_USER,new ArrayList<>(),null,AuthContextUtils.getTenant()); + redisService.set(key, JsonUtil.objectToJson(wxloginUser.loginUserDTO()),2, TimeUnit.DAYS); + tokenMap.put("wxToken",token); + }else { + tokenMap.put("wxToken","notBindWx"); + } return tokenMap; }