From b0b94a084ed6c1a685caebb8dfb1a0d65fdd9ef6 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 16 七月 2024 10:57:42 +0800 Subject: [PATCH] 提交 --- server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 154 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 140 insertions(+), 14 deletions(-) diff --git a/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java index 80576f9..9dce68e 100644 --- a/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java +++ b/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java @@ -4,6 +4,11 @@ import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; import com.alibaba.fastjson.JSONObject; import com.doumee.biz.system.SystemDictDataBiz; +import com.doumee.biz.zbom.ZbomZhongTaiService; +import com.doumee.biz.zbom.model.zhongtai.ZTBaseRequst; +import com.doumee.biz.zbom.model.zhongtai.ZTUserGetTokenRequest; +import com.doumee.biz.zbom.model.zhongtai.ZTUserInfoUpdateRequest; +import com.doumee.biz.zbom.model.zhongtai.response.ZTUserGetTokenResponse; import com.doumee.config.Jwt.JwtPayLoad; import com.doumee.config.Jwt.JwtTokenUtil; import com.doumee.core.constants.ResponseStatus; @@ -13,11 +18,14 @@ import com.doumee.core.oss.FileModel; import com.doumee.core.utils.CodeVerifyUtils; import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; import com.doumee.core.wx.WxMiniConfig; import com.doumee.dao.business.MemberMapper; +import com.doumee.dao.business.UsersMapper; import com.doumee.dao.business.model.InterfaceLog; import com.doumee.dao.business.model.Member; +import com.doumee.dao.business.model.Users; import com.doumee.dao.web.reqeust.EditMemberRequest; import com.doumee.dao.web.reqeust.WxPhoneRequest; import com.doumee.dao.web.response.AccountResponse; @@ -30,6 +38,7 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; +import org.apache.catalina.User; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; @@ -53,7 +62,13 @@ private MemberMapper memberMapper; @Autowired + private UsersMapper usersMapper; + + @Autowired private SystemDictDataBiz systemDictDataBiz; + + @Autowired + private ZbomZhongTaiService zbomZhongTaiService; @Autowired private RedisTemplate<String,Object> redisTemplate; @@ -251,14 +266,13 @@ @Override public AccountResponse wxLogin(String code){ -// try { - //鑾峰彇寰俊鏁忔劅鏁版嵁 -// WxMaJscode2SessionResult session = WxMiniConfig.wxCustomerService.getUserService().getSessionInfo(code); -// String openId = session.getOpenid(); -// if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) { -// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�"); -// } - String openId = code; + try { +// 鑾峰彇寰俊鏁忔劅鏁版嵁 + WxMaJscode2SessionResult session = WxMiniConfig.wxCustomerService.getUserService().getSessionInfo(code); + String openId = session.getOpenid(); + if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) { + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�"); + } Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId)); if (member == null) { member = new Member(); @@ -273,13 +287,13 @@ String token = JwtTokenUtil.generateToken(payLoad); AccountResponse accountResponse = new AccountResponse(); accountResponse.setToken(token); -// accountResponse.setSessionKey(session.getSessionKey()); + accountResponse.setSessionKey(session.getSessionKey()); accountResponse.setMember(member); return accountResponse; -// } catch (WxErrorException e) { -// e.printStackTrace(); -// } -// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�"); + } catch (WxErrorException e) { + e.printStackTrace(); + } + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�"); } @Override @@ -301,6 +315,28 @@ @Override public void updMemberDetail(EditMemberRequest editMemberRequest){ + Member member = memberMapper.selectById(editMemberRequest.getMemberId()); + ZTUserInfoUpdateRequest ztUserInfoUpdateRequest = new ZTUserInfoUpdateRequest(); + ztUserInfoUpdateRequest.setOpenId(member.getOpenid()); + String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode(); + ztUserInfoUpdateRequest.setAppId(appId); + ztUserInfoUpdateRequest.setPlatform(Constants.PLATFORM); + ztUserInfoUpdateRequest.setPhone(editMemberRequest.getPhone()); + ztUserInfoUpdateRequest.setName(editMemberRequest.getName()); + ztUserInfoUpdateRequest.setAddress(editMemberRequest.getProvinceName()+editMemberRequest.getCityName()+editMemberRequest.getAreaName()); + ztUserInfoUpdateRequest.setFullAddress(editMemberRequest.getAddress()); + String prefix = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() + + systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.MEMBER).getCode(); + if(StringUtils.isNotBlank(editMemberRequest.getImgurl())){ + ztUserInfoUpdateRequest.setAvatarUrl(prefix + editMemberRequest.getImgurl()); + } + ztUserInfoUpdateRequest.setUptown(editMemberRequest.getDistrict()); + ztUserInfoUpdateRequest.setHouseArea(editMemberRequest.getHousearea().toString()); + ztUserInfoUpdateRequest.setHouseLayout(Constants.getHouseLayout(editMemberRequest.getHousetype())); + ZTUserGetTokenResponse userUpdateInfo = zbomZhongTaiService.userUpdateInfo(ztUserInfoUpdateRequest); + if(Objects.isNull(userUpdateInfo)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓彴淇℃伅鏇存柊澶辫触锛岃鑱旂郴绠$悊鍛�"); + } memberMapper.update(new UpdateWrapper<Member>() .lambda() .set(StringUtils.isNotBlank(editMemberRequest.getImgurl()),Member::getImgurl,editMemberRequest.getImgurl()) @@ -318,8 +354,8 @@ .set(StringUtils.isNotBlank(editMemberRequest.getHousetype()),Member::getHousetype,editMemberRequest.getHousetype()) .set(Objects.nonNull(editMemberRequest.getLatitude()),Member::getLatitude,editMemberRequest.getLatitude()) .set(Objects.nonNull(editMemberRequest.getLongitude()),Member::getLongitude,editMemberRequest.getLongitude()) + .set(Member::getToken,userUpdateInfo.getToken()) .eq(Member::getId,editMemberRequest.getMemberId())); - } @Override @@ -334,4 +370,94 @@ return member; } + + + + public static String getZTToken(ZbomZhongTaiService zbomZhongTaiService, MemberMapper memberMapper, UsersMapper usersMapper, SystemDictDataBiz systemDictDataBiz, String id, String userType){ + if(userType.equals(Constants.CUSTOMER)){ + Member member = memberMapper.selectById(id); + if(Objects.isNull(member)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + //濡傛灉鏃犳湁鏁堟湡/宸茶繃鏈� 閲嶆柊鑾峰彇 + if(Objects.isNull(member.getTokenDate()) || member.getTokenDate().getTime()<=System.currentTimeMillis() ){ + ZTUserGetTokenRequest param = new ZTUserGetTokenRequest(); + //鏌ヨAPPID + String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode(); + param.setAppId(appId); + param.setOpenId(member.getOpenid()); + ZTUserGetTokenResponse ztUserGetTokenResponse = zbomZhongTaiService.getUserToken(param); + if(Objects.nonNull(ztUserGetTokenResponse)){ + member.setToken(ztUserGetTokenResponse.getToken()); + //TODO 鏆傛棤杩囨湡鏃ユ湡 + memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getToken,ztUserGetTokenResponse.getToken()) + .eq(Member::getId,member.getId())); + return ztUserGetTokenResponse.getToken(); + }else{ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓彴TOKEN鑾峰彇澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + } + return member.getToken(); + }else if(userType.equals(Constants.BUSINESS)){ + Users users = usersMapper.selectById(id); + if(Objects.isNull(users)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + if(Objects.isNull(users.getTokenDate()) || users.getTokenDate().getTime()<=System.currentTimeMillis() ){ + ZTUserGetTokenRequest param = new ZTUserGetTokenRequest(); + //鏌ヨAPPID + String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode(); + param.setAppId(appId); + param.setOpenId(users.getOpenid()); + ZTUserGetTokenResponse ztUserGetTokenResponse = zbomZhongTaiService.getUserToken(param); + if(Objects.nonNull(ztUserGetTokenResponse)){ + users.setToken(ztUserGetTokenResponse.getToken()); + //TODO 鏆傛棤杩囨湡鏃ユ湡 + usersMapper.update(new UpdateWrapper<Users>().lambda().set(Users::getToken,ztUserGetTokenResponse.getToken()) + .eq(Users::getId,users.getId())); + return ztUserGetTokenResponse.getToken(); + }else{ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓彴TOKEN鑾峰彇澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + } + return users.getToken(); + }else{ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍙傛暟閿欒"); + } + } + + + + + @Override + public void logOff(Long memberId){ + Member member = memberMapper.selectById(memberId); + if(Objects.isNull(member)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(StringUtils.isBlank(member.getPhone())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸叉敞閿�"); + } + //鏍¢獙鐢ㄦ埛token淇℃伅 + MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,member.getId().toString(),Constants.CUSTOMER); + //璋冭捣涓彴娉ㄩ攢鎺ュ彛 + ZTBaseRequst ztBaseRequst = new ZTBaseRequst(); + ztBaseRequst.setUserType(Constants.CUSTOMER); + ztBaseRequst.setOpenId(member.getOpenid()); + ztBaseRequst.setToken(member.getToken()); + Boolean logoutFlag = zbomZhongTaiService.userLogout(ztBaseRequst); + if(logoutFlag){ + memberMapper.update(new UpdateWrapper<Member>().lambda() + .set(Member::getPhone,null) + .set(Member::getEditDate,new Date()) + .eq(Member::getId,member.getId()) + ); + return; + } + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓彴娉ㄩ攢澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + + + + } -- Gitblit v1.9.3