1.实名认证
2.收费方式中增加骑行价格说明
This commit is contained in:
		
							parent
							
								
									aca76f9809
								
							
						
					
					
						commit
						2e958a9cc9
					
				|  | @ -76,6 +76,7 @@ public class AppController extends BaseController | |||
|     @GetMapping("/area/list") | ||||
|     public TableDataInfo list(EtOperatingArea etOperatingArea) | ||||
|     { | ||||
|         etOperatingArea.setStatus("0");//运营区状态:0-运营中;1-停运 | ||||
|         startPage(); | ||||
|         List<EtOperatingArea> list = etOperatingAreaService.selectEtOperatingAreaList(etOperatingArea); | ||||
|         return getDataTable(list); | ||||
|  |  | |||
|  | @ -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); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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() | ||||
|  |  | |||
|  | @ -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<String, String> headers = new HashMap<>(); | ||||
|             headers.put("Authorization", "APPCODE " + appcode); | ||||
|             //根据API的要求,定义相对应的Content-Type | ||||
|             headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); | ||||
|             Map<String, Object> 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; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  | @ -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; | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -137,4 +137,8 @@ public class EtFeeRule extends BaseEntity | |||
|     /** 封顶金额*/ | ||||
|     @Excel(name = "封顶金额") | ||||
|     private BigDecimal cappedAmount; | ||||
| 
 | ||||
|     /** 骑行价格说明*/ | ||||
|     @Excel(name = "骑行价格说明") | ||||
|     private BigDecimal instructions; | ||||
| } | ||||
|  |  | |||
|  | @ -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; | ||||
| } | ||||
|  | @ -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); | ||||
| } | ||||
|  |  | |||
|  | @ -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; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -76,7 +76,7 @@ public class CallbackServiceImpl implements CallbackService { | |||
|     @Autowired | ||||
|     private IEtCapitalFlowService etCapitalFlowService; | ||||
| 
 | ||||
|     @Value("${handlingCharge}") | ||||
|     @Value("${et.handlingCharge}") | ||||
|     private String handlingCharge; | ||||
| 
 | ||||
|     @Autowired | ||||
|  |  | |||
|  | @ -7,6 +7,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
|     <resultMap type="AsUser" id="AsUserResult"> | ||||
|         <id     property="userId"       column="user_id"      /> | ||||
|         <result property="userName"     column="user_name"    /> | ||||
|         <result property="realName"     column="real_name"    /> | ||||
|         <result property="idCard"     column="id_card"    /> | ||||
|         <result property="nickName"     column="nick_name"    /> | ||||
|         <result property="email"        column="email"        /> | ||||
|         <result property="phonenumber"  column="phonenumber"  /> | ||||
|  | @ -32,12 +34,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
|     </resultMap> | ||||
| 
 | ||||
| 	<sql id="selectUserVo"> | ||||
|         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 | ||||
|     </sql> | ||||
| 
 | ||||
|     <select id="selectUserList" parameterType="AsUser" resultMap="AsUserResult"> | ||||
| 		select u.user_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.balance, 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 | ||||
| 		select u.user_id, u.nick_name, u.user_name, u.real_name,u.email, u.avatar, u.phonenumber, u.balance, 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 | ||||
| 		where u.del_flag = '0' | ||||
| 		<if test="userId != null and userId != 0"> | ||||
| 			AND u.user_id = #{userId} | ||||
|  | @ -60,7 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
| 	</select> | ||||
| 
 | ||||
| 	<select id="selectAllocatedList" parameterType="AsUser" resultMap="AsUserResult"> | ||||
| 	    select distinct u.user_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.balance, u.status, u.create_time | ||||
| 	    select distinct u.user_id, u.user_name, u.nick_name,u.real_name, u.email, u.phonenumber, u.balance, u.status, u.create_time | ||||
| 	    from et_user u | ||||
| 	    where u.del_flag = '0' | ||||
| 	    <if test="userName != null and userName != ''"> | ||||
|  | @ -72,7 +74,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
| 	</select> | ||||
| 
 | ||||
| 	<select id="selectUnallocatedList" parameterType="AsUser" resultMap="AsUserResult"> | ||||
| 	    select distinct u.user_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time | ||||
| 	    select distinct u.user_id, u.user_name,u.real_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time | ||||
| 	    from et_user u | ||||
| 	    where u.del_flag = '0' | ||||
| 	    <if test="userName != null and userName != ''"> | ||||
|  | @ -139,6 +141,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
|  		insert into et_user( | ||||
|  			<if test="userId != null and userId != 0">user_id,</if> | ||||
|  			<if test="userName != null and userName != ''">user_name,</if> | ||||
|  			<if test="realName != null and realName != ''">real_name,</if> | ||||
|  			<if test="idCard != null and idCard != ''">id_card,</if> | ||||
|  			<if test="nickName != null and nickName != ''">nick_name,</if> | ||||
|  			<if test="email != null and email != ''">email,</if> | ||||
|  			<if test="avatar != null and avatar != ''">avatar,</if> | ||||
|  | @ -157,6 +161,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
|  		)values( | ||||
|  			<if test="userId != null and userId != ''">#{userId},</if> | ||||
|  			<if test="userName != null and userName != ''">#{userName},</if> | ||||
|  			<if test="realName != null and realName != ''">#{realName},</if> | ||||
|  			<if test="idCard != null and idCard != ''">#{idCard},</if> | ||||
|  			<if test="nickName != null and nickName != ''">#{nickName},</if> | ||||
|  			<if test="email != null and email != ''">#{email},</if> | ||||
|  			<if test="avatar != null and avatar != ''">#{avatar},</if> | ||||
|  | @ -179,6 +185,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
|  		update et_user | ||||
|  		<set> | ||||
|  			<if test="userName != null and userName != ''">user_name = #{userName},</if> | ||||
|  			<if test="realName != null and realName != ''">real_name = #{realName},</if> | ||||
|  			<if test="idCard != null and idCard != ''">id_card = #{idCard},</if> | ||||
|  			<if test="nickName != null and nickName != ''">nick_name = #{nickName},</if> | ||||
|  			<if test="email != null ">email = #{email},</if> | ||||
|  			<if test="phonenumber != null ">phonenumber = #{phonenumber},</if> | ||||
|  |  | |||
|  | @ -19,6 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
|         <result property="chargingCycle"    column="charging_cycle"    /> | ||||
|         <result property="chargingCycleValue"    column="charging_cycle_value"    /> | ||||
|         <result property="cappedAmount"    column="capped_amount"    /> | ||||
|         <result property="instructions"    column="instructions"    /> | ||||
|         <result property="createBy"    column="create_by"    /> | ||||
|         <result property="createTime"    column="create_time"    /> | ||||
|     </resultMap> | ||||
|  | @ -27,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
|         select rule_id, `name`, `explain`, | ||||
|                status, auto_refund_deposit, order_exceed_minutes, order_exceed_warn, | ||||
|                free_ride_time, rental_unit, riding_rule, riding_rule_json, charging_cycle, charging_cycle_value, | ||||
|                capped_amount,create_by, create_time from et_fee_rule | ||||
|                capped_amount, instructions, create_by, create_time from et_fee_rule | ||||
|     </sql> | ||||
| 
 | ||||
|     <select id="selectEtFeeRuleList" parameterType="EtFeeRule" resultMap="EtFeeRuleResult"> | ||||
|  | @ -75,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
|             <if test="chargingCycle != null">charging_cycle,</if> | ||||
|             <if test="chargingCycleValue != null">charging_cycle_value,</if> | ||||
|             <if test="cappedAmount != null">capped_amount,</if> | ||||
|             <if test="instructions != null">instructions,</if> | ||||
|             <if test="createBy != null">create_by,</if> | ||||
|             <if test="createTime != null">create_time,</if> | ||||
|          </trim> | ||||
|  | @ -92,6 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
|             <if test="chargingCycle != null">#{chargingCycle},</if> | ||||
|             <if test="chargingCycleValue != null">#{chargingCycleValue},</if> | ||||
|             <if test="cappedAmount != null">#{cappedAmount},</if> | ||||
|             <if test="instructions != null">#{instructions},</if> | ||||
|             <if test="createBy != null">#{createBy},</if> | ||||
|             <if test="createTime != null">#{createTime},</if> | ||||
|          </trim> | ||||
|  | @ -113,6 +116,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
|             <if test="chargingCycle != null">charging_cycle = #{chargingCycle},</if> | ||||
|             <if test="chargingCycleValue != null">charging_cycle_value = #{chargingCycleValue},</if> | ||||
|             <if test="cappedAmount != null">capped_amount = #{cappedAmount},</if> | ||||
|             <if test="instructions != null">instructions = #{instructions},</if> | ||||
|             <if test="createBy != null">create_by = #{createBy},</if> | ||||
|             <if test="createTime != null">create_time = #{createTime},</if> | ||||
|         </trim> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user