diff --git a/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppController.java b/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppController.java index 930bab5..747c4d7 100644 --- a/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppController.java +++ b/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppController.java @@ -76,6 +76,7 @@ public class AppController extends BaseController @GetMapping("/area/list") public TableDataInfo list(EtOperatingArea etOperatingArea) { + etOperatingArea.setStatus("0");//运营区状态:0-运营中;1-停运 startPage(); List list = etOperatingAreaService.selectEtOperatingAreaList(etOperatingArea); return getDataTable(list); diff --git a/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppVerifyController.java b/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppVerifyController.java index 1c8027f..825429a 100644 --- a/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppVerifyController.java +++ b/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppVerifyController.java @@ -15,6 +15,7 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.CommonUtil; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.verify.vo.IDResponse; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.response.FaultResponse; @@ -607,4 +608,34 @@ public class AppVerifyController extends BaseController return success(); } + /** + * 实名认证 + */ + @GetMapping("/user/authentication") + public AjaxResult partnerBillList(AuthenticationVo authenticationVo) + { + logger.info("【实名认证】请求参数:authenticationVo={}", JSON.toJSON(authenticationVo)); + Object authentication = asUserService.authentication(authenticationVo); + //判断o是否是字符串 + if(authentication instanceof String){ + return AjaxResult.error((String) authentication); + }else{ + IDResponse.Result result = (IDResponse.Result)authentication; + if(result.getIsok()){ + //保存身份信息 + AsUser asUser = new AsUser(); + asUser.setUserId(authenticationVo.getUserId()); + asUser.setRealName(authenticationVo.getRealName()); + asUser.setIdCard(authenticationVo.getIdCard()); + int updateUser = asUserService.updateUser(asUser); + if(updateUser==0){ + throw new ServiceException("【实名认证】保存身份信息失败"); + }else{ + logger.info("【实名认证】保存身份信息成功"); + } + } + return AjaxResult.success(authentication); + } + } + } diff --git a/electripper-admin/src/main/resources/application.yml b/electripper-admin/src/main/resources/application.yml index dd31e6f..8b143b6 100644 --- a/electripper-admin/src/main/resources/application.yml +++ b/electripper-admin/src/main/resources/application.yml @@ -225,5 +225,8 @@ iot: geo: # 高德地图key web服务 手续费 key: 834f1f029671d84272554528311ff0f1 -# 手续费 4/1000 千分之几 -handlingCharge: 4 +et: + # 手续费 4/1000 千分之几 + handlingCharge: 4 + verifyUrl: https://zidv2.market.alicloudapi.com/idcheck/Post + appcode: 32b6c6445b1a42ed862dd4202392c47d diff --git a/electripper-common/src/main/java/com/ruoyi/common/core/domain/entity/AsUser.java b/electripper-common/src/main/java/com/ruoyi/common/core/domain/entity/AsUser.java index fddf3a6..bf4864a 100644 --- a/electripper-common/src/main/java/com/ruoyi/common/core/domain/entity/AsUser.java +++ b/electripper-common/src/main/java/com/ruoyi/common/core/domain/entity/AsUser.java @@ -31,6 +31,14 @@ public class AsUser extends BaseEntity @Excel(name = "登录名称") private String userName; + /** 真实姓名 */ + @Excel(name = "真实姓名") + private String realName; + + /** 身份证号 */ + @Excel(name = "身份证号") + private String idCard; + /** 用户昵称 */ @Excel(name = "用户名称") private String nickName; @@ -196,6 +204,22 @@ public class AsUser extends BaseEntity this.userName = userName; } + public String getRealName() { + return realName; + } + + public void setRealName(String realName) { + this.realName = realName; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + @Email(message = "邮箱格式不正确") @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符") public String getEmail() diff --git a/electripper-common/src/main/java/com/ruoyi/common/utils/verify/VerifyIdentityUtil.java b/electripper-common/src/main/java/com/ruoyi/common/utils/verify/VerifyIdentityUtil.java new file mode 100644 index 0000000..c3702e0 --- /dev/null +++ b/electripper-common/src/main/java/com/ruoyi/common/utils/verify/VerifyIdentityUtil.java @@ -0,0 +1,49 @@ +package com.ruoyi.common.utils.verify; + +import cn.hutool.http.HttpUtil; +import cn.hutool.http.Method; +import com.alibaba.fastjson2.JSONObject; +import com.ruoyi.common.utils.verify.vo.IDResponse; +import lombok.extern.slf4j.Slf4j; + +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +public class VerifyIdentityUtil { + + /** + * 校验身份二要素是否一致 + * @param host 请求地址 + * @param appcode appcode + * @param idCard 身份证号 + * @param realName 姓名 + * @return Boolean + */ + public static Object verifyIdentity(String host,String appcode,String idCard,String realName){ + try { + Map headers = new HashMap<>(); + headers.put("Authorization", "APPCODE " + appcode); + //根据API的要求,定义相对应的Content-Type + headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + Map bodys = new HashMap<>(); + bodys.put("cardNo", idCard); + bodys.put("realName", realName); + String result= HttpUtil.createRequest(Method.POST, host).addHeaders(headers).form(bodys).execute().body(); + log.info("实名认证请求返回==================="+result); + IDResponse idResponse = JSONObject.parseObject(result, IDResponse.class); + if("成功".equals(idResponse.getReason())){ + IDResponse.Result result1 = idResponse.getResult(); + return result1; + }else{ + return idResponse.getReason(); + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + +} diff --git a/electripper-common/src/main/java/com/ruoyi/common/utils/verify/vo/IDResponse.java b/electripper-common/src/main/java/com/ruoyi/common/utils/verify/vo/IDResponse.java new file mode 100644 index 0000000..a64de60 --- /dev/null +++ b/electripper-common/src/main/java/com/ruoyi/common/utils/verify/vo/IDResponse.java @@ -0,0 +1,43 @@ +package com.ruoyi.common.utils.verify.vo; + +import lombok.Data; + +@Data +public class IDResponse { + + private int error_code; + + private String reason; + + private Result result; + + private String sn; + + @Data + public class Result { + private String realname; + + private String idcard; + + private Boolean isok; + + private IdCardInfor IdCardInfor; + + } + + @Data + public class IdCardInfor { + private String province; + + private String city; + + private String district; + + private String area; + + private String sex; + + private String birthday; + + } +} diff --git a/electripper-system/src/main/java/com/ruoyi/system/domain/EtFeeRule.java b/electripper-system/src/main/java/com/ruoyi/system/domain/EtFeeRule.java index 23ca9c7..02c21b4 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/domain/EtFeeRule.java +++ b/electripper-system/src/main/java/com/ruoyi/system/domain/EtFeeRule.java @@ -137,4 +137,8 @@ public class EtFeeRule extends BaseEntity /** 封顶金额*/ @Excel(name = "封顶金额") private BigDecimal cappedAmount; + + /** 骑行价格说明*/ + @Excel(name = "骑行价格说明") + private BigDecimal instructions; } diff --git a/electripper-system/src/main/java/com/ruoyi/system/domain/vo/AuthenticationVo.java b/electripper-system/src/main/java/com/ruoyi/system/domain/vo/AuthenticationVo.java new file mode 100644 index 0000000..f38985d --- /dev/null +++ b/electripper-system/src/main/java/com/ruoyi/system/domain/vo/AuthenticationVo.java @@ -0,0 +1,23 @@ +package com.ruoyi.system.domain.vo; + + +import lombok.Data; + +/** + * 实名认证对象 + * + * @author 邱贞招 + * @date 2024-05-25 + */ +@Data +public class AuthenticationVo { + + /** 真实姓名 */ + private String realName; + + /** 身份证 */ + private String idCard; + + /** 身份证 */ + private Long userId; +} diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/IAsUserService.java b/electripper-system/src/main/java/com/ruoyi/system/service/IAsUserService.java index 716b794..da82ee2 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/IAsUserService.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/IAsUserService.java @@ -1,6 +1,7 @@ package com.ruoyi.system.service; import com.ruoyi.common.core.domain.entity.AsUser; +import com.ruoyi.system.domain.vo.AuthenticationVo; import java.util.List; @@ -210,4 +211,10 @@ public interface IAsUserService * 绑定系统用户 */ int bandSystemUser(AsUser user); + + /** + * 实名认证 + * + */ + Object authentication(AuthenticationVo authenticationVo); } diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsUserServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsUserServiceImpl.java index fa2b503..7f4d7d4 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsUserServiceImpl.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsUserServiceImpl.java @@ -11,7 +11,9 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.bean.BeanValidators; +import com.ruoyi.common.utils.verify.VerifyIdentityUtil; import com.ruoyi.system.domain.EtOrder; +import com.ruoyi.system.domain.vo.AuthenticationVo; import com.ruoyi.system.mapper.AsUserMapper; import com.ruoyi.system.service.IAsUserService; import com.ruoyi.system.service.IEtOrderService; @@ -19,6 +21,7 @@ import com.ruoyi.system.service.ISysConfigService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -52,6 +55,12 @@ public class AsUserServiceImpl implements IAsUserService @Autowired private ISysConfigService sysConfigService; + @Value("${et.verifyUrl}") + private String verifyUrl; + + @Value("${et.appcode}") + private String appcode; + /** * 根据条件分页查询用户列表 * @@ -486,4 +495,16 @@ public class AsUserServiceImpl implements IAsUserService return asUserMapper.updateUser(user); } + /** + * 实名认证 + */ + @Override + public Object authentication(AuthenticationVo authenticationVo) { + String idCard = authenticationVo.getIdCard(); + String realName = authenticationVo.getRealName(); + Object o = VerifyIdentityUtil.verifyIdentity(verifyUrl, appcode, idCard, realName); + + return o; + } + } diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/CallbackServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/CallbackServiceImpl.java index ff20144..fb1d8de 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/CallbackServiceImpl.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/CallbackServiceImpl.java @@ -76,7 +76,7 @@ public class CallbackServiceImpl implements CallbackService { @Autowired private IEtCapitalFlowService etCapitalFlowService; - @Value("${handlingCharge}") + @Value("${et.handlingCharge}") private String handlingCharge; @Autowired diff --git a/electripper-system/src/main/resources/mapper/system/AsUserMapper.xml b/electripper-system/src/main/resources/mapper/system/AsUserMapper.xml index a23216b..aed4d7e 100644 --- a/electripper-system/src/main/resources/mapper/system/AsUserMapper.xml +++ b/electripper-system/src/main/resources/mapper/system/AsUserMapper.xml @@ -7,6 +7,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -32,12 +34,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select u.user_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.balance, u.birthday, u.password, u.pay_password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.wxopenid,u.is_sign,u.role,u.sys_user_id + select u.user_id, u.user_name, u.real_name, u.id_card, u.nick_name, u.email, u.avatar, u.phonenumber, u.balance, u.birthday, u.password, u.pay_password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.wxopenid,u.is_sign,u.role,u.sys_user_id from et_user u @@ -75,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" charging_cycle, charging_cycle_value, capped_amount, + instructions, create_by, create_time, @@ -92,6 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{chargingCycle}, #{chargingCycleValue}, #{cappedAmount}, + #{instructions}, #{createBy}, #{createTime}, @@ -113,6 +116,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" charging_cycle = #{chargingCycle}, charging_cycle_value = #{chargingCycleValue}, capped_amount = #{cappedAmount}, + instructions = #{instructions}, create_by = #{createBy}, create_time = #{createTime},