Przeglądaj źródła

保存车牌和费用来源合伙人等级

helixiao 1 rok temu
rodzic
commit
976a307abe

+ 10 - 0
sql/Online.sql

@@ -154,3 +154,13 @@ CREATE TABLE `pay_user_sign` (
 
 -- 2024.11.1  xuqiang --
 
+-- 2024.11.4  helixiao --
+
+ALTER TABLE `agent`.`sys_premium_details` ADD COLUMN `licenseno` varchar(30) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '车牌号';
+ALTER TABLE `agent`.`sys_premium_details` ADD COLUMN `source` tinyint DEFAULT NULL COMMENT '费用来源(1,2,3,4,5级)';
+
+
+
+
+
+

+ 102 - 0
src/main/java/com/ydtech/modules/admin/controller/APPPartnerController.java

@@ -1,22 +1,29 @@
 package com.ydtech.modules.admin.controller;
 
+import com.alipay.api.AlipayApiException;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysPartnerAccount;
 import com.ydtech.modules.admin.model.SysPremiumDetails;
+import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.admin.service.SysPartnerService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.protocol.utils.AssertionUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.List;
 
 @Api(tags = "合伙人app")
+@Slf4j
 @RestController
 @RequestMapping("/APPPartner")
 public class APPPartnerController extends BaseController {
@@ -177,6 +184,101 @@ public class APPPartnerController extends BaseController {
         return HttpResult.ok("success",this.sysPartnerService.getLevelPartner(type));
     }
 
+    /**
+     * 支付宝登录
+     * @param alipayBindVo
+     * @return
+     */
+    @PostMapping("/loginAlipay")
+    @ApiOperation(value = "支付宝登录")
+    public HttpResult<AlipayVo> loginAlipay(@RequestBody AlipayBindVo alipayBindVo) {
+        try {
+            return sysPartnerService.loginAlipay(alipayBindVo);
+        } catch (AlipayApiException e) {
+            log.info(e.getMessage());
+            throw new SystemException("支付宝授权失败");
+        }
+    }
+
+    /**
+     * 工号绑定支付宝
+     * @param alipayBindVo
+     * @return
+     * @throws AlipayApiException
+     */
+    @PostMapping("/bindAlipay")
+    @ApiOperation(value = "工号绑定支付宝")
+    HttpResult<Object> bindAlipay(@RequestBody AlipayBindVo alipayBindVo){
+        try {
+            String userId = getUserId();
+            return sysPartnerService.bindAlipay(alipayBindVo, userId);
+        } catch (AlipayApiException e) {
+            throw new SystemException("支付宝授权失败");
+        }
+    }
+
+    /**
+     * 是否绑定支付宝
+     * @return
+     */
+    @ApiOperation(value = "是否绑定支付宝")
+    @GetMapping(value = "/checkBindAlipay")
+    public HttpResult checkBindAlipay() {
+
+        String alipayId = sysPartnerService.checkBindAlipay();
+
+        AssertionUtils.isStringEmpty(alipayId, "未绑定支付宝");
+        return HttpResult.ok();
+    }
+
+    /**
+     * 微信登录
+     * @param wechatLoginVo
+     * @return
+     */
+    @PostMapping("/loginWechat")
+    @ApiOperation(value = "微信登录")
+    public HttpResult<WechatVo> loginWechat(@RequestBody WechatLoginVo wechatLoginVo) {
+        try {
+            return sysPartnerService.loginWechat(wechatLoginVo);
+        } catch (WxErrorException e) {
+            log.info(e.getMessage());
+            throw new SystemException("微信授权失败");
+        }
+    }
+
+    /**
+     * 工号绑定微信
+     * @param wechatBindVo
+     * @return
+     * @throws WxErrorException
+     */
+    @PostMapping("/bind")
+    @ApiOperation(value = "工号绑定微信")
+    HttpResult<Object> bindWechat(@RequestBody WechatBindVo wechatBindVo){
+        try {
+            String userId = getUserId();
+            return sysPartnerService.bindWechat(wechatBindVo, userId);
+        } catch (WxErrorException e) {
+            log.info(e.getMessage());
+            throw new SystemException("微信授权失败");
+        }
+    }
+
+    /**
+     * 是否绑定微信
+     */
+    @ApiOperation(value = "是否绑定支付宝")
+    @GetMapping(value = "/checkBindWechat")
+    public HttpResult checkBindWechat() {
+        String openId = sysPartnerService.checkBindWechat();
+        AssertionUtils.isStringEmpty(openId, "未绑定微信");
+        return HttpResult.ok();
+    }
+
+
+
+
 
 
 }

+ 14 - 0
src/main/java/com/ydtech/modules/admin/model/SysPremiumDetails.java

@@ -107,6 +107,20 @@ public class SysPremiumDetails {
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
 
+    /**
+     * 车牌号
+     */
+    @ApiModelProperty(value = "车牌号")
+    private String licenseno;
+
+    /**
+     * 费用来源(1,2,3,4,5级)
+     */
+    @ApiModelProperty(value = "费用来源(1,2,3,4,5级)")
+    private Integer source;
+
+
+
 
 
 }

+ 15 - 0
src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java

@@ -1,13 +1,16 @@
 package com.ydtech.modules.admin.service;
 
 
+import com.alipay.api.AlipayApiException;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.SysPartner;
 import com.ydtech.modules.admin.model.SysPartnerAccount;
 import com.ydtech.modules.admin.model.SysPremiumDetails;
 import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.order.entity.BasePageResult;
+import me.chanjar.weixin.common.error.WxErrorException;
 
 import java.util.List;
 
@@ -69,4 +72,16 @@ public interface SysPartnerService extends IService<SysPartner> {
     PartnerProportionVo getPartnerProportion(PartnerCountDto partnerCountDto);
 
     List<LevelPartnerVo> getLevelPartner(Integer type);
+
+    HttpResult<AlipayVo> loginAlipay(AlipayBindVo alipayBindVo) throws AlipayApiException;
+
+    String checkBindAlipay();
+
+    HttpResult<Object> bindAlipay(AlipayBindVo alipayBindVo, String userId) throws AlipayApiException ;
+
+    HttpResult<WechatVo> loginWechat(WechatLoginVo wechatLoginVo) throws WxErrorException;
+
+    HttpResult<Object> bindWechat(WechatBindVo wechatBindVo, String userId) throws WxErrorException;
+
+    String checkBindWechat();
 }

+ 156 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java

@@ -1,13 +1,22 @@
 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.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.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.aop.exception.DescribeException;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.dao.*;
 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.SysPartnerService;
 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.esm.dao.EsmUserReferrerMapper;
 import com.ydtech.modules.esm.model.EsmUserReferrer;
 import com.ydtech.modules.order.entity.BasePageResult;
 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.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -55,6 +69,9 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
     @Resource
     private SysUserMapper sysUserMapper;
 
+    @Resource
+    private SysUserService sysUserService;
+
     @Resource
     private SysAgencyFeeApprovalMapper sysAgencyFeeApprovalMapper;
     @Resource
@@ -78,6 +95,8 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
     private SysProportionConfigMapper sysProportionConfigMapper;
     @Resource
     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());
     }
 
+    @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();
+    }
+
 
 }

+ 2 - 2
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -932,7 +932,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             esmUserImageService.saveBatch(esmUserImages);
         }
         SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, null);
-        return HttpResult.ok("新增成功");
+        return HttpResult.ok("新增成功",sysUserMapper.selectById(userId));
     }
 
     @Override
@@ -1031,7 +1031,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             esmUserImageService.saveBatch(esmUserImages);
         }
         SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, null);
-        return HttpResult.ok("新增成功");
+        return HttpResult.ok("新增成功",sysUserMapper.selectById(userId));
     }
 
     /**

+ 2 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -405,6 +405,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                         }else if (integer == 5) {
                             sysPremiumDetail.setProportional(fiveProportion);
                         }
+                        sysPremiumDetail.setSource(integer);
+                        sysPremiumDetail.setLicenseno(insOrders.getLicenseno());
                         SysRelationPerson sysRelationPerson = collect.get(integer);
                         int c = integer;
                         if (sysRelationPerson == null) {