|
@@ -1,13 +1,22 @@
|
|
|
package com.ydtech.modules.admin.service.impl;
|
|
package com.ydtech.modules.admin.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+import cn.dev33.satoken.session.SaSession;
|
|
|
|
|
+import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
+import com.alipay.api.AlipayApiException;
|
|
|
|
|
+import com.alipay.api.AlipayClient;
|
|
|
|
|
+import com.alipay.api.AlipayConfig;
|
|
|
|
|
+import com.alipay.api.DefaultAlipayClient;
|
|
|
|
|
+import com.alipay.api.request.AlipaySystemOauthTokenRequest;
|
|
|
|
|
+import com.alipay.api.response.AlipaySystemOauthTokenResponse;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ydtech.aop.exception.DescribeException;
|
|
import com.ydtech.aop.exception.DescribeException;
|
|
|
|
|
+import com.ydtech.core.page.HttpResult;
|
|
|
import com.ydtech.exception.SystemException;
|
|
import com.ydtech.exception.SystemException;
|
|
|
import com.ydtech.modules.admin.dao.*;
|
|
import com.ydtech.modules.admin.dao.*;
|
|
|
import com.ydtech.modules.admin.model.*;
|
|
import com.ydtech.modules.admin.model.*;
|
|
@@ -17,13 +26,18 @@ import com.ydtech.modules.admin.model.vo.*;
|
|
|
import com.ydtech.modules.admin.service.SysAgencyLeaderService;
|
|
import com.ydtech.modules.admin.service.SysAgencyLeaderService;
|
|
|
import com.ydtech.modules.admin.service.SysPartnerService;
|
|
import com.ydtech.modules.admin.service.SysPartnerService;
|
|
|
import com.ydtech.modules.admin.service.SysPremiumDetailsService;
|
|
import com.ydtech.modules.admin.service.SysPremiumDetailsService;
|
|
|
|
|
+import com.ydtech.modules.admin.service.SysUserService;
|
|
|
import com.ydtech.modules.base.controller.BaseController;
|
|
import com.ydtech.modules.base.controller.BaseController;
|
|
|
import com.ydtech.modules.esm.dao.EsmUserReferrerMapper;
|
|
import com.ydtech.modules.esm.dao.EsmUserReferrerMapper;
|
|
|
import com.ydtech.modules.esm.model.EsmUserReferrer;
|
|
import com.ydtech.modules.esm.model.EsmUserReferrer;
|
|
|
import com.ydtech.modules.order.entity.BasePageResult;
|
|
import com.ydtech.modules.order.entity.BasePageResult;
|
|
|
import com.ydtech.utils.StringUtils;
|
|
import com.ydtech.utils.StringUtils;
|
|
|
|
|
+import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
|
|
|
|
|
+import me.chanjar.weixin.common.error.WxErrorException;
|
|
|
|
|
+import me.chanjar.weixin.mp.api.WxMpService;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
@@ -55,6 +69,9 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
|
|
|
@Resource
|
|
@Resource
|
|
|
private SysUserMapper sysUserMapper;
|
|
private SysUserMapper sysUserMapper;
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private SysUserService sysUserService;
|
|
|
|
|
+
|
|
|
@Resource
|
|
@Resource
|
|
|
private SysAgencyFeeApprovalMapper sysAgencyFeeApprovalMapper;
|
|
private SysAgencyFeeApprovalMapper sysAgencyFeeApprovalMapper;
|
|
|
@Resource
|
|
@Resource
|
|
@@ -78,6 +95,8 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
|
|
|
private SysProportionConfigMapper sysProportionConfigMapper;
|
|
private SysProportionConfigMapper sysProportionConfigMapper;
|
|
|
@Resource
|
|
@Resource
|
|
|
private EsmUserReferrerMapper esmUserReferrerMapper;
|
|
private EsmUserReferrerMapper esmUserReferrerMapper;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private WxMpService wxMpService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1919,5 +1938,142 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
|
|
|
return partnerVoList.stream().sorted(Comparator.comparingInt(LevelPartnerVo::getDeptManNum).reversed()).collect(Collectors.toList());
|
|
return partnerVoList.stream().sorted(Comparator.comparingInt(LevelPartnerVo::getDeptManNum).reversed()).collect(Collectors.toList());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public HttpResult<AlipayVo> loginAlipay(AlipayBindVo alipayBindVo) throws AlipayApiException {
|
|
|
|
|
+ AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
|
|
|
|
|
+
|
|
|
|
|
+ // 构造请求参数以调用接口
|
|
|
|
|
+ AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
|
|
|
|
|
+
|
|
|
|
|
+ // 设置授权码
|
|
|
|
|
+ request.setCode(alipayBindVo.getCode());
|
|
|
|
|
+
|
|
|
|
|
+ // 设置授权方式
|
|
|
|
|
+ request.setGrantType("authorization_code");
|
|
|
|
|
+
|
|
|
|
|
+ AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
|
|
|
|
|
+ String aliPayId = response.getUserId();
|
|
|
|
|
+ SysUser sysUser = sysUserService.lambdaQuery()
|
|
|
|
|
+ .eq(SysUser::getAlipay, aliPayId)
|
|
|
|
|
+ .one();
|
|
|
|
|
+
|
|
|
|
|
+ // 没有绑定支付宝
|
|
|
|
|
+ if (sysUser == null) {
|
|
|
|
|
+ throw new SystemException("您还未绑定工号");
|
|
|
|
|
+ }
|
|
|
|
|
+ SysUser.verifyUser(sysUser);//验证用户状态
|
|
|
|
|
+
|
|
|
|
|
+ String token = StpUtil.createLoginSession(sysUser.getId());
|
|
|
|
|
+ AlipayVo alipayVo = new AlipayVo(token, sysUser.getId());
|
|
|
|
|
+ StpUtil.getSessionByLoginId(sysUser.getId()).set(SaSession.USER, sysUser);
|
|
|
|
|
+ return HttpResult.ok("",alipayVo);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public String checkBindAlipay() {
|
|
|
|
|
+ SysUser sysUser = sysUserMapper.selectById(BaseController.getUserId());
|
|
|
|
|
+ return sysUser.getAlipay();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public HttpResult<Object> bindAlipay(AlipayBindVo alipayBindVo, String userId) throws AlipayApiException {
|
|
|
|
|
+ AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
|
|
|
|
|
+
|
|
|
|
|
+ // 构造请求参数以调用接口
|
|
|
|
|
+ AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
|
|
|
|
|
+
|
|
|
|
|
+ // 设置授权码
|
|
|
|
|
+ request.setCode(alipayBindVo.getCode());
|
|
|
|
|
+
|
|
|
|
|
+ // 设置授权方式
|
|
|
|
|
+ request.setGrantType("authorization_code");
|
|
|
|
|
+
|
|
|
|
|
+ AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
|
|
|
|
|
+ String aliPayId = response.getUserId();
|
|
|
|
|
+ SysUser sysUser = sysUserService.lambdaQuery().eq(SysUser::getAlipay, aliPayId).one();
|
|
|
|
|
+ if (sysUser != null) {
|
|
|
|
|
+ throw new SystemException("同一支付宝不能重复绑定");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ SysUser user = sysUserService.lambdaQuery().eq(SysUser::getId, userId).one();
|
|
|
|
|
+ if (ObjectUtils.isEmpty(user)) {
|
|
|
|
|
+ throw new SystemException("你输入的工号不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ user.setAlipay(aliPayId);
|
|
|
|
|
+ boolean update = sysUserService.updateById(user);
|
|
|
|
|
+
|
|
|
|
|
+ if (update) {
|
|
|
|
|
+ return HttpResult.ok("绑定成功");
|
|
|
|
|
+ }
|
|
|
|
|
+ throw new SystemException("绑定失败");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //获取支付宝账户信息
|
|
|
|
|
+ private static AlipayConfig getAlipayConfig() {
|
|
|
|
|
+ String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCmb0GfNv7ex5SmUiBnMn3szFP4XM5c8KnYll6HGoFCQTxwMSVYq652ELBtGAScqV9QOVcF/1Z1NF+a0AabGd0qSKKsPOhHNg3vG4yHHs4gwOdqFxwjATXqgHaZXSIQGnoPUJ3J05AlYLlinm9oOoTAY68880pM9h9d7t4Aq4WqVfnGteNaV5+oaV/KgX2OGo7m3WPR+e5Yjl9xxYXjVF1Uv7hznNER74KuYhRP44759lgfo0RlncGXuaygKHoxCpKTozGmvedP0hTO/WJTEi5l11Gp4mfMN9Gb/VtjsRDJaCFMmXU19UcHOFxyFOrKoyNYxdj3ue07/l51l4+8TVyJAgMBAAECggEBAJGR09qW9nsSIxEJ2e+I+RzpZjRfr9sYX+XhN1KBuzag6mTSh3Cz0IbReA4jKL2BYq0/Sb8kIpGmukwk0PJNv+Rg3W86YosOW0ecV+BC8FUzg/SFvAVd5LNzosfm7okZL1M/1pKVaYlXvS3ll1mZfUzso3Py8zS3PJ4i86ewXdupp2HcQt8c5O57lkzdhi35a38k9RrrSsYgnUClAMFWvmN4x1v7vuddzW0/q5Ztg1k9Ukz209dMOIc5cZ8+zyX5PO0rEofUETMtF5D5N2qtsMsMlDxvYq7aQoNq5I1p8e2mjZv5U7EvkLENTZmPRtAdddut1LGACU0AAlvvOOgu9wECgYEA27Q/EuQPfFh/aOYyi6zq0AWFN2U+tN/y3/nAvGymisdp6c2q1s6ESvENJep7v9PR/cownHKIllTJbzh03DKrQd0LYJrh4CFr6xv5DSUXMft5+6Te+t1FpULqhtkVLcqqTSqMRo8Yl/QMDxI6mRd4pmEFscOIEW+5lzyofxfL7mECgYEAwe4hNIyz2b/uBCCUMPA8CL8kJILqw0ZHB4EekoLugqYHAi3LPCDpJzFJ3pcZXjUdH9TUKQp67eizk+xedfFdicm0ENzPqCoUPidT88QZImaP8uP2LblTlxNCDf8D15BQzBHDlTDN+2tzFi7qAb3v2mgK5U9WGOOkicmMGzv8jykCgYARP3hIKmFQ2L2/5XqIXp3ckOJhc/BVUNOHY9sOr9TvRjJ5aW0FChd2rq/ijyMB70YoD2x7i75PVv6tXZhHBS9Or2TKQ76B0v3e6kZGEuhcQyrTZ6EdvqtOCw/QYFB6VNPD1RhIHcnHfCBKOpshE6ekIC/LQdd3zvaZ+egceijHYQKBgDgN250z2jxjZKnevNbUaZXhodHH4ZGl+5vor2yL2eL7mGUB1Y/At4OzlHV5WUTIt21e+CAQvm2L6HQmSztuE6pjGeAR4xfpacZ5WaPJF7bAzHTZfWvD+KxfTaV8A6FIPoJt1AmIfNFiQna0AsGUJAMONbAIWYuCKSoGjq/EjADZAoGAS0ZaZdPKKQnd4g/lqM8CnHTfhW11ANP/rPZDU+NvjW2jQ6SIdJhwJaKMEQCcDp63j0SADlghzrvm+KMbnTrFqTHlAizcFxnOOOxO1pKXKuOJWWsyNBN33suB3XPFrsobEtmtnWyvph1GoAZOX457RN5LSmBTbqpbyEsjKg/W1zc=";
|
|
|
|
|
+ String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArP+St5P9dLhPmm/ggf3jPDc2552wu/+91QSAzlEqRSrdWAIwrHcntM0VY/4/+39Z8h44/0TBNTb0j1gdWrCyb+1ENxwwgCqs7f8C/5gClTQCcoNys4MtGAAM7BbNp/LzmswOuPTOMtjlUBArWFvJDgDoSQJ8vGwGHgRcLsSLPwlhwVdnqVbq60CI185U/yZgNITTCGpDXv5bnQQ26GrUbH+5Qm4fYmT2B/2ijAVJUYq+EaBMOyv+AD8C1+CtXcgH86+g13MdD1T8cw5nkV9/4fcPIWD8R1aj20C1+kCMujaydB4yDpHiqQcQEtJoVbZJk5MYp8JcctqDT01brVct5wIDAQAB";
|
|
|
|
|
+ AlipayConfig alipayConfig = new AlipayConfig();
|
|
|
|
|
+ alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
|
|
|
|
|
+ alipayConfig.setAppId("2021004153668213");
|
|
|
|
|
+ alipayConfig.setPrivateKey(privateKey);
|
|
|
|
|
+ alipayConfig.setFormat("json");
|
|
|
|
|
+ alipayConfig.setAlipayPublicKey(alipayPublicKey);
|
|
|
|
|
+ alipayConfig.setCharset("UTF-8");
|
|
|
|
|
+ alipayConfig.setSignType("RSA2");
|
|
|
|
|
+ return alipayConfig;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public HttpResult<WechatVo> loginWechat(WechatLoginVo wechatLoginVo) throws WxErrorException {
|
|
|
|
|
+ WxOAuth2AccessToken accessToken = wxMpService.getOAuth2Service().getAccessToken(wechatLoginVo.getCode());
|
|
|
|
|
+ String openId = accessToken.getOpenId();
|
|
|
|
|
+ SysUser sysUser = sysUserService.lambdaQuery()
|
|
|
|
|
+ .eq(SysUser::getOpenid, openId)
|
|
|
|
|
+ .one();
|
|
|
|
|
+
|
|
|
|
|
+ // 没有绑定微信
|
|
|
|
|
+ if (sysUser == null) {
|
|
|
|
|
+ throw new SystemException("您还未绑定工号。");
|
|
|
|
|
+ }
|
|
|
|
|
+ SysUser.verifyUser(sysUser);
|
|
|
|
|
+
|
|
|
|
|
+ String token = StpUtil.createLoginSession(sysUser.getId());
|
|
|
|
|
+ StpUtil.getSessionByLoginId(sysUser.getId()).set(SaSession.USER, sysUser);
|
|
|
|
|
+ WechatVo wechatVo = new WechatVo(token, sysUser.getId());
|
|
|
|
|
+
|
|
|
|
|
+ return HttpResult.ok("", wechatVo);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public HttpResult<Object> bindWechat(WechatBindVo wechatBindVo, String userId) throws WxErrorException {
|
|
|
|
|
+ WxOAuth2AccessToken accessToken = wxMpService.getOAuth2Service().getAccessToken(wechatBindVo.getCode());
|
|
|
|
|
+ String openId = accessToken.getOpenId();
|
|
|
|
|
+
|
|
|
|
|
+ SysUser sysUser = sysUserService.lambdaQuery().eq(SysUser::getOpenid, openId).one();
|
|
|
|
|
+ if (sysUser != null) {
|
|
|
|
|
+ throw new SystemException("同一微信不能重复绑定");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ SysUser user = sysUserService.lambdaQuery().eq(SysUser::getId, userId).one();
|
|
|
|
|
+ if (ObjectUtils.isEmpty(user)) {
|
|
|
|
|
+ throw new SystemException("你输入的工号不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ user.setOpenid(openId);
|
|
|
|
|
+ boolean update = sysUserService.updateById(user);
|
|
|
|
|
+
|
|
|
|
|
+ if (update) {
|
|
|
|
|
+ return HttpResult.ok("绑定成功");
|
|
|
|
|
+ }
|
|
|
|
|
+ throw new SystemException("绑定失败");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public String checkBindWechat() {
|
|
|
|
|
+ SysUser sysUser = sysUserMapper.selectById(BaseController.getUserId());
|
|
|
|
|
+ return sysUser.getOpenid();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
}
|
|
}
|