From 78bf8f8a8da6b840b3f848e467f27d2f39444c91 Mon Sep 17 00:00:00 2001 From: yechenhao Date: Thu, 7 May 2020 18:03:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E5=BE=AE=E4=BF=A1=E7=99=BB?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ic/login/controller/LoginController.java | 29 +++++++ .../kiisoo/ic/login/service/LoginService.java | 1 + .../login/service/impl/LoginServiceImpl.java | 82 ++++++++++++++++++- .../store/mapper/PoiStoreStaffDOMapper.java | 5 ++ .../ic/wx/controller/WechatController.java | 24 ++++++ .../wx/service/QWMailListManageService.java | 2 +- .../PrivilageUserShopRelationDOMapper.xml | 4 + 7 files changed, 145 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/kiisoo/ic/login/controller/LoginController.java b/src/main/java/com/kiisoo/ic/login/controller/LoginController.java index fbb6f45..47e3da4 100644 --- a/src/main/java/com/kiisoo/ic/login/controller/LoginController.java +++ b/src/main/java/com/kiisoo/ic/login/controller/LoginController.java @@ -119,6 +119,35 @@ public class LoginController extends BaseController { } } + /** + * 根据cpUserId关联账号 + * @param cpUserId + * @return 返回成功用户信息 + */ + @RequestMapping(value = "/cpuser/login",method = RequestMethod.GET) + @ResponseBody + public Map cpuserLoginAccount(@RequestParam("cpUserId") String cpUserId){ + try{ + Map resultMap = new HashMap<>(); + + if(StringUtils.isNotBlank(cpUserId)){ + LoginBean loginBean = loginService.cpUserIdLogin(cpUserId); + resultMap.put("code", loginBean.getLoginInfo().get("code")); + resultMap.put("results", loginBean); + resultMap.put("success", Boolean.TRUE); + }else{ + //企业微信账号为空 + resultMap.put("code", "0010"); + resultMap.put("success", Boolean.FALSE); + } + + return resultMap; + }catch (Exception e){ + log.error("登录失败", e); + return fail(); + } + } + /** * 登录账号 * @param code diff --git a/src/main/java/com/kiisoo/ic/login/service/LoginService.java b/src/main/java/com/kiisoo/ic/login/service/LoginService.java index 7bc1fb4..1e09897 100644 --- a/src/main/java/com/kiisoo/ic/login/service/LoginService.java +++ b/src/main/java/com/kiisoo/ic/login/service/LoginService.java @@ -52,4 +52,5 @@ public interface LoginService { Map qyMiniAutoLogin(String code) throws WxErrorException; LoginBean mobileLogin(String mobile); + LoginBean cpUserIdLogin(String cpUserId); } diff --git a/src/main/java/com/kiisoo/ic/login/service/impl/LoginServiceImpl.java b/src/main/java/com/kiisoo/ic/login/service/impl/LoginServiceImpl.java index d05aa96..dabf4eb 100644 --- a/src/main/java/com/kiisoo/ic/login/service/impl/LoginServiceImpl.java +++ b/src/main/java/com/kiisoo/ic/login/service/impl/LoginServiceImpl.java @@ -9,6 +9,7 @@ import com.kiisoo.ic.login.enums.LoginEnum; import com.kiisoo.ic.login.service.LoginService; import com.kiisoo.ic.store.entity.PoiStoreStaff; import com.kiisoo.ic.store.mapper.PoiStoreStaffDOMapper; +import com.kiisoo.ic.store.mapper.PrivilageCpUserStoreDOMapper; import com.kiisoo.ic.system.entity.PrivilageAccountDO; import com.kiisoo.ic.system.entity.PrivilageRoleDO; import com.kiisoo.ic.system.entity.PrivilageUserDO; @@ -55,6 +56,11 @@ public class LoginServiceImpl implements LoginService { */ private final PrivilageUserDOMapper privilageUserDOMapper; + /** + * 用户 mapper + */ + private final PrivilageCpUserStoreDOMapper privilageCpUserStoreDOMapper; + /** * 角色 mapper */ @@ -78,12 +84,13 @@ public class LoginServiceImpl implements LoginService { @Autowired public LoginServiceImpl(PrivilageAccountDOMapper privilageAccountDOMapper, PrivilageUserDOMapper privilageUserDOMapper, PrivilageRoleDOMapper privilageRoleDOMapper, QWMailListManageService qwMailListManageService, - PoiStoreStaffDOMapper poiStoreStaffDOMapper) { + PoiStoreStaffDOMapper poiStoreStaffDOMapper,PrivilageCpUserStoreDOMapper privilageCpUserStoreDOMapper) { this.privilageAccountDOMapper = privilageAccountDOMapper; this.privilageUserDOMapper = privilageUserDOMapper; this.privilageRoleDOMapper = privilageRoleDOMapper; this.qwMailListManageService = qwMailListManageService; this.poiStoreStaffDOMapper = poiStoreStaffDOMapper; + this.privilageCpUserStoreDOMapper = privilageCpUserStoreDOMapper; } @@ -257,6 +264,79 @@ public class LoginServiceImpl implements LoginService { return loginBean; } + @Override + public LoginBean cpUserIdLogin(String cpUserId) { + //查询账号 + QueryWrapper accountQw = new QueryWrapper<>(); + accountQw.eq("login",cpUserId); + accountQw.eq("type",AccountEnum.ACCOUNT_TYPE_QYWX.getType()); + List mobileAccounts = privilageAccountDOMapper.selectList(accountQw); + Long userId = null; + if (CollectionUtils.isNotEmpty(mobileAccounts)){ + userId = mobileAccounts.get(0).getUserId(); + }else{ + Long storeId = privilageCpUserStoreDOMapper.selectOneByCpUserId(cpUserId); + if (null == storeId){ + return new LoginBean(Constants.ERROR_USER_NO_PERMISSION); + } + PoiStoreStaff poiStoreStaff = poiStoreStaffDOMapper.selectShopManagerDetailByShop(storeId); + if (null == poiStoreStaff){ + return new LoginBean(Constants.ERROR_USER_NO_PERMISSION); + } + //无账号则绑定账号 + PrivilageUserDO privilageUserDO = privilageUserDOMapper.selectById(poiStoreStaff.getUserId()); + if (null != privilageUserDO){ + userId = privilageUserDO.getId(); + PrivilageAccountDO privilageAccountDO = new PrivilageAccountDO(); + privilageAccountDO.setLogin(cpUserId); + privilageAccountDO.setStatus(1); + privilageAccountDO.setUserId(userId); + privilageAccountDO.setType(AccountEnum.ACCOUNT_TYPE_QYWX.getType()); + int insert = privilageAccountDOMapper.insert(privilageAccountDO); + if (insert == 0){ + return new LoginBean(Constants.ERROR_SYSTEM); + } + }else{ + return new LoginBean(Constants.ERROR_ROLE_NO_PERMISSION); + } + } + + + LoginBean loginBean = new LoginBean(); + Map selectAccountMap = new HashMap<>(); + + PrivilageUserDO privilageUserDO = privilageUserDOMapper.selectById(userId); + + // 用户不存在 + if(null == privilageUserDO){ + return new LoginBean(Constants.ERROR_USER_NO_PERMISSION); + } + + PrivilageAccountDO result = privilageAccountService.getAccountByUserId(userId); + + // 该账号已暂停,请联系店长 + if(null != result && result.getStatus().equals(2)){ + return new LoginBean(com.kiisoo.ic.constants.Constants.ERROR_ACCOUNT_STOP); + } + + PrivilageRoleDO roleDO = privilageRoleDOMapper.selectRoleName(userId); + Long storeId = privilageUserDOMapper.selectStoreIdByUserId(userId); + Map loginInfoMap = new HashMap<>(); + //成功设置信息 + loginBean.setUserName(privilageUserDO.getName()); + loginBean.setUserId(privilageUserDO.getId()); + loginBean.setRoleId(privilageUserDO.getId()); + loginBean.setRoleCode(roleDO.getCode()); + loginBean.setStoreId(storeId); + if (StringUtils.isNotBlank(roleDO.getCode()) && !MINI_ROLE_CODE.contains(roleDO.getCode())){ + return new LoginBean(Constants.ERROR_ROLE_NO_PERMISSION); + } + loginBean.setLogin(cpUserId); + loginInfoMap.put("code", LoginEnum.LOGIN_SUCCEED.getCode()); + loginBean.setLoginInfo(loginInfoMap); + return loginBean; + } + @Override public void bindQywxUserIdByUserId(Long userId, String qywxUserId) { Map selectAccountMap = new HashMap<>(); diff --git a/src/main/java/com/kiisoo/ic/store/mapper/PoiStoreStaffDOMapper.java b/src/main/java/com/kiisoo/ic/store/mapper/PoiStoreStaffDOMapper.java index f3ac537..896804c 100644 --- a/src/main/java/com/kiisoo/ic/store/mapper/PoiStoreStaffDOMapper.java +++ b/src/main/java/com/kiisoo/ic/store/mapper/PoiStoreStaffDOMapper.java @@ -37,6 +37,11 @@ public interface PoiStoreStaffDOMapper extends BaseMapper { */ String selectShopManagerByShop (@Param("shopId") Long shopId); + /** + * 查询店铺店长 + */ + PoiStoreStaff selectShopManagerDetailByShop (@Param("shopId") Long shopId); + /** * 根据用户id找到导购信息 */ diff --git a/src/main/java/com/kiisoo/ic/wx/controller/WechatController.java b/src/main/java/com/kiisoo/ic/wx/controller/WechatController.java index a2b48b2..30b7512 100644 --- a/src/main/java/com/kiisoo/ic/wx/controller/WechatController.java +++ b/src/main/java/com/kiisoo/ic/wx/controller/WechatController.java @@ -7,6 +7,7 @@ import com.kiisoo.ic.base.mapper.BasicConfigDOMapper; import com.kiisoo.ic.common.BaseController; import com.kiisoo.ic.common.utils.httpClientUtil.HttpClientUtil; import com.kiisoo.ic.common.utils.httpClientUtil.HttpResult; +import com.kiisoo.ic.wx.service.QWMailListManageService; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.codec.Base64; import org.springframework.beans.factory.annotation.Autowired; @@ -31,6 +32,8 @@ public class WechatController extends BaseController { @Autowired private BasicConfigDOMapper basicConfigDOMapper; + @Autowired + private QWMailListManageService qwMailListManageService; @RequestMapping("/openId") @@ -86,6 +89,27 @@ public class WechatController extends BaseController { return fail(); } + + @RequestMapping("/code2Session") + @ResponseBody + public Map qwcode2Session(String code) { // 小程序端获取的CODE + Map result = new HashMap<>(); + result.put("code", 0); + try { + boolean check = (StringUtils.isEmpty(code)) ? true : false; + if (check) { + throw new Exception("参数异常"); + } + + Map codeInfo = qwMailListManageService.getCpUserIdByCode(code); + + return data(codeInfo); + } catch (Exception e) { + e.printStackTrace(); + } + return fail(); + } + /** * 解密并且获取用户手机号码 * diff --git a/src/main/java/com/kiisoo/ic/wx/service/QWMailListManageService.java b/src/main/java/com/kiisoo/ic/wx/service/QWMailListManageService.java index 2f13ddc..d4d9d27 100644 --- a/src/main/java/com/kiisoo/ic/wx/service/QWMailListManageService.java +++ b/src/main/java/com/kiisoo/ic/wx/service/QWMailListManageService.java @@ -244,7 +244,7 @@ public class QWMailListManageService { */ public Map getCpUserIdByCode(String code) throws WxErrorException { Map result = new HashMap<> (); - wxCpService = WxCpConfiguration.getCpService(1); + wxCpService = WxCpConfiguration.getCpService(applicationid); WxCpMaJsCode2SessionResult wxCpMaJsCode2SessionResult = wxCpService.jsCode2Session(code); String userId = wxCpMaJsCode2SessionResult.getUserId(); String sessionKey = wxCpMaJsCode2SessionResult.getSessionKey(); diff --git a/src/main/resources/mapper/PrivilageUserShopRelationDOMapper.xml b/src/main/resources/mapper/PrivilageUserShopRelationDOMapper.xml index 8c28660..642d465 100644 --- a/src/main/resources/mapper/PrivilageUserShopRelationDOMapper.xml +++ b/src/main/resources/mapper/PrivilageUserShopRelationDOMapper.xml @@ -31,6 +31,10 @@ select staff_code from poi_store_staff where store_id = #{shopId} and status = 1 and type = 1 and user_id != 0 limit 1 +