From f0ee71145111bc6ef12c1990fd44d02e688ca31f Mon Sep 17 00:00:00 2001
From: wangwh <2397901735@qq.com>
Date: Tue, 10 Sep 2024 22:54:20 +0800
Subject: [PATCH] 办理部门和申请部门查询修改 查询人、组织接口修改
---
dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaAccountService.java | 140 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 136 insertions(+), 4 deletions(-)
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaAccountService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaAccountService.java
index 20a6a8a..7d261fc 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaAccountService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaAccountService.java
@@ -1,22 +1,33 @@
package cn.huge.module.pauser.service;
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.huge.base.common.exception.ServiceException;
-import cn.huge.base.common.utils.DateUtils;
-import cn.huge.base.common.utils.IdUtils;
+import cn.huge.base.common.utils.*;
import cn.huge.module.client.api.impl.UtilsClientImpl;
+import cn.huge.module.constant.BaseConsts;
+import cn.huge.module.cust.constant.UserBaseConsts;
import cn.huge.module.pauser.dao.mapper.PaAccountMapper;
import cn.huge.module.pauser.domain.po.PaAccount;
+import cn.huge.module.pauser.domain.po.PaUser;
+import cn.huge.module.oper.dto.SeCustWechatDTO;
+import cn.huge.module.pauser.dto.WeChatEmpowerDTO;
+import cn.huge.module.pauser.dto.WeChatLoginDTO;
+import cn.huge.module.utils.JwtUtils;
+import cn.huge.module.wechat.miniapp.service.WeixinMaService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Maps;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.DigestUtils;
-import javax.annotation.PostConstruct;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -39,6 +50,15 @@
@Autowired
private UtilsClientImpl utilsClient;
+
+ @Autowired
+ private WeixinMaService weixinMaService;
+
+ @Autowired
+ private WxMaService wxMaService;
+
+ @Autowired
+ private PaUserService paUserService;
/**
* 更新对象
@@ -130,4 +150,116 @@
}
}
+ /**
+ * 当事人小程序-微信用户授权
+ * @param weChatEmpowerDTO 微信用户授权信息
+ * @return WeChatLoginDTO
+ */
+ public WeChatLoginDTO wechatEmpower(WeChatEmpowerDTO weChatEmpowerDTO) {
+ try{
+ Date nowDate = new Date();
+ WeChatLoginDTO weChatLoginDTO = new WeChatLoginDTO();
+ SeCustWechatDTO seCustWechatDTO = mapper.getSeCustWechatByAppid(weChatEmpowerDTO.getAppid());
+ weixinMaService.createConfig(seCustWechatDTO);
+ WxMaJscode2SessionResult session = wxMaService.getUserService().getSessionInfo(weChatEmpowerDTO.getCode());
+ weChatLoginDTO.setSessionKey(session.getSessionKey());
+ weChatLoginDTO.setOpenId(session.getOpenid());
+ PaUser paUser = null;
+ PaAccount account = this.getByTypeAndAcc(UserBaseConsts.ACC_TYPE_2, session.getOpenid(), seCustWechatDTO.getCustId());
+ // 是否新注册
+ if (ObjectUtils.isEmpty(account)) {
+ weChatLoginDTO.setLastLoginTime(nowDate);
+ // 新建用户信息
+ paUser = new PaUser();
+ paUser.setId(utilsClient.getNewTimeId());
+ paUser.setAvatar(weChatEmpowerDTO.getAvatar());
+ paUser.setRealStatus(UserBaseConsts.REAL_STATUS_0);
+// paUser.setFaceStatus(UserBaseConsts.REAL_STATUS_0);
+ paUser.setStatus(UserBaseConsts.USER_STATUS_1);
+ paUser.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
+ paUser.setCustId(seCustWechatDTO.getCustId());
+ paUser.setCreateTime(nowDate);
+ paUser.setUpdateTime(nowDate);
+ paUserService.save(paUser);
+ // 新增账号信息
+ account = new PaAccount();
+ account.setId(utilsClient.getNewTimeId());
+ account.setUserId(paUser.getId());
+ account.setAccType(UserBaseConsts.ACC_TYPE_2);
+ account.setAcc(session.getOpenid());
+ account.setCipher(DigestUtils.md5DigestAsHex(session.getOpenid().getBytes()));
+ account.setCipherOpen(session.getOpenid());
+ account.setLoginTime(nowDate);
+ account.setCustId(seCustWechatDTO.getCustId());
+ account.setCreateTime(nowDate);
+ account.setUpdateTime(nowDate);
+ mapper.insert(account);
+ }else {
+ weChatLoginDTO.setLastLoginTime(account.getLoginTime());
+ // 更新登录时间
+ account.setLoginTime(nowDate);
+ mapper.updatePaAccount(account);
+ // 获取用户信息
+ paUser = paUserService.getById(account.getUserId());
+ }
+ // 封装用户信息
+ weChatLoginDTO.setUserId(paUser.getId());
+ weChatLoginDTO.setTrueName(paUser.getTrueName());
+ weChatLoginDTO.setRealStatus(paUser.getRealStatus());
+// weChatLoginDTO.setFaceStatus(paUser.getFaceStatus());
+ //生成JWT
+ String token = JwtUtils.buildJWT(account.getCustId(), account.getUserId());
+ weChatLoginDTO.setToken(token);
+ return weChatLoginDTO;
+ }catch (Exception e){
+ log.error("service方法[PaAccountService.wechatEmpower]调用异常:"+e, e);
+ throw new ServiceException("PaAccountService.wechatEmpower", e);
+ }
+ }
+
+ /**
+ * 通过账号类型和授权凭证查询
+ * @param accType 账户类型
+ * @param acc 账号
+ * @param custId 客户编号
+ * @return PaAccount
+ */
+ public PaAccount getByTypeAndAcc(Integer accType, String acc, String custId){
+ QueryWrapper<PaAccount> paAccountQueryWrapper = new QueryWrapper<>();
+ paAccountQueryWrapper.eq("acc_type", accType).eq("acc", acc).eq("cust_id", custId);
+ PaAccount paAccount = mapper.selectOne(paAccountQueryWrapper);
+ return paAccount;
+ }
+
+ /**
+ * 当事人小程序-获取手机号码
+ * @param weChatEmpowerDTO 请求信息
+ * @return String
+ */
+ public String wechatGetPhone(WeChatEmpowerDTO weChatEmpowerDTO) {
+ try{
+ SeCustWechatDTO seCustWechatDTO = mapper.getSeCustWechatByAppid(weChatEmpowerDTO.getAppid());
+ weixinMaService.createConfig(seCustWechatDTO);
+ String accessToken = wxMaService.getAccessToken();
+ String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token="+accessToken;
+ Map<String, String> map = Maps.newHashMap();
+ map.put("code", weChatEmpowerDTO.getCode());
+ JsonMapper jsonMapper = new JsonMapper();
+ String jsonStr = jsonMapper.toJson(map);
+ String result = HttpClientUtils.httpPostRaw(url, jsonStr, null, null);
+ JSONObject resultJson = JSONObject.parseObject(new String(result));
+ int errcode = resultJson.getIntValue("errcode");
+ if (errcode == 0){
+ JSONObject phoneInfoJson = resultJson.getJSONObject("phone_info");
+ String phoneNumber = phoneInfoJson.getString("phoneNumber");
+ return phoneNumber;
+ }else {
+ throw new ServiceException("errcode:"+errcode+";errmsg:"+resultJson.getIntValue("errmsg"));
+ }
+ }catch (Exception e){
+ log.error("service方法[PaAccountService.wechatGetPhone]调用异常:"+e, e);
+ throw new ServiceException("PaAccountService.wechatGetPhone", e);
+ }
+ }
+
}
--
Gitblit v1.8.0