2024-10-21 朱宝民 虚拟卡销卡接口、获取虚拟卡充值记录接口
| | |
| | | * @param money |
| | | */ |
| | | void updateMoney(@Param("id")Long id , @Param("money")Double money); |
| | | |
| | | /** |
| | | * 根据农户ID及虚拟卡ID获取正常状态的虚拟卡对象,销卡使用 |
| | | * @param clientId |
| | | * @param vcId |
| | | * @return |
| | | */ |
| | | SeVirtualCard getVcByClientIdAndVcId(@Param("clientId")Long clientId, @Param("vcId")Long vcId); |
| | | |
| | | /** |
| | | * 注销虚拟卡 |
| | | * @param vcId |
| | | * @return |
| | | */ |
| | | Integer cancelVc(@Param("clientId")Long clientId, @Param("vcId")Long vcId); |
| | | } |
| | |
| | | private Double money; |
| | | |
| | | /** |
| | | * 水卡状态;1-正常,2-已注销 |
| | | */ |
| | | @Min(value = 1, message = "水卡状态不能小于1") |
| | | @Max(value = 2, message = "水卡状态不能大于2") |
| | | private Byte state; |
| | | |
| | | /** |
| | | * 最后操作;1-开户,2-充值,3-消费,4-申请退款,5-退款审核 |
| | | */ |
| | | @Schema(description = "操作类型", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | |
| | | package com.dy.pipIrrGlobal.voSe; |
| | | |
| | | import com.alibaba.fastjson2.annotation.JSONField; |
| | | import com.alibaba.fastjson2.writer.ObjectWriterImplToString; |
| | | import com.dy.common.po.BaseEntity; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.fasterxml.jackson.annotation.JsonPropertyOrder; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.util.Date; |
| | | |
| | |
| | | * @Description |
| | | */ |
| | | @Data |
| | | @JsonPropertyOrder({"vcId", "clientId", "rechargeTime", "rechargeAmount", "afterRecharge", "rechargeType"}) |
| | | public class VoVcRecharge implements BaseEntity { |
| | | private static final long serialVersionUID = 202410211420001L; |
| | | |
| | | @Schema(title = "充值ID") |
| | | private Long id; |
| | | |
| | | @Schema(description = "虚拟卡ID") |
| | | /** |
| | | * 虚拟卡ID |
| | | */ |
| | | @JSONField(serializeUsing= ObjectWriterImplToString.class) |
| | | private Long vcId; |
| | | |
| | | @Schema(description = "农户ID") |
| | | /** |
| | | * 农户ID |
| | | */ |
| | | @JSONField(serializeUsing= ObjectWriterImplToString.class) |
| | | private Long clientId; |
| | | |
| | | |
| | | @Schema(description = "钱包余额") |
| | | private Double money; |
| | | |
| | | @Schema(description = "充值后余额") |
| | | private Double afterRecharge; |
| | | |
| | | @Schema(description = "订单号") |
| | | private String orderNumber; |
| | | |
| | | @Schema(description = "充值金额") |
| | | private Integer rechargeAmount; |
| | | |
| | | @Schema(description = "下单时间") |
| | | private Date orderTime; |
| | | |
| | | @Schema(description = "充值完成时间") |
| | | /** |
| | | * 充值完成时间 |
| | | */ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date rechargeTime; |
| | | |
| | | @Schema(description = "订单状态") |
| | | private Byte orderState; |
| | | /** |
| | | * 充值金额 |
| | | */ |
| | | private Integer rechargeAmount; |
| | | |
| | | @Schema(description = "订单状态") |
| | | private String orderStateName; |
| | | /** |
| | | * 充值后余额 |
| | | */ |
| | | private Double afterRecharge; |
| | | |
| | | /** |
| | | * 充值类型 |
| | | */ |
| | | private String rechargeType; |
| | | |
| | | /** |
| | | * 虚拟卡状态,暂时不用,直接过滤掉已注销虚拟卡 |
| | | */ |
| | | //private String cardState; |
| | | |
| | | } |
| | |
| | | <user name="超级管理员" phone="admin" password="admin" supperAdmin="1" /> |
| | | <payments> |
| | | <item1 name="现金"/> |
| | | <item2 name="微信支付"/> |
| | | <item3 name="支付宝支付"/> |
| | | <item4 name="银行转账"/> |
| | | <item2 name="POS机"/> |
| | | <item3 name="银行转账"/> |
| | | </payments> |
| | | <settings> |
| | | <item1 item_name="lng" item_value="101.87345" remarks="经度"/> |
| | |
| | | <user name="超级管理员" phone="admin" password="admin" supperAdmin="1" /> |
| | | <payments> |
| | | <item1 name="现金"/> |
| | | <item2 name="微信支付"/> |
| | | <item3 name="支付宝支付"/> |
| | | <item4 name="银行转账"/> |
| | | <item2 name="POS机"/> |
| | | <item3 name="银行转账"/> |
| | | </payments> |
| | | <settings> |
| | | <item1 item_name="lng" item_value="101.87345" remarks="经度"/> |
| | |
| | | |
| | | <!--根据农户编号获取5级行政区划代码--> |
| | | <select id="getAreaCodeByNum" resultType="java.lang.Long"> |
| | | SELECT districtNum FROM se_client WHERE clientNum = ${clientNum} LIMIT 0,1 |
| | | SELECT districtNum FROM se_client WHERE clientNum = #{clientNum} LIMIT 0,1 |
| | | </select> |
| | | |
| | | <!--根据农户编号获取5级行政区划串areaCode,补卡过程中开新卡使用--> |
| | |
| | | |
| | | <!--根据农户编号获取农户ID--> |
| | | <select id="getClientIdByNum" resultType="java.lang.Long"> |
| | | SELECT id FROM se_client WHERE clientNum = ${clientNum} LIMIT 0,1 |
| | | SELECT id FROM se_client WHERE clientNum = #{clientNum} LIMIT 0,1 |
| | | </select> |
| | | |
| | | <!--根据电话号码获取农户ID--> |
| | |
| | | update se_client set deleted = 1 |
| | | <where> |
| | | <if test = "id != null and id > 0"> |
| | | AND id = ${id} |
| | | AND id = #{id} |
| | | </if> |
| | | </where> |
| | | </update> |
| | | |
| | | <!--根据主键获取村ID--> |
| | | <select id="getVillageIdById" parameterType="java.lang.Long" resultType="java.lang.Long"> |
| | | SELECT villageId FROM se_client WHERE id = ${id} |
| | | SELECT villageId FROM se_client WHERE id = #{id} |
| | | </select> |
| | | |
| | | <!--获取虚拟卡号最大值--> |
| | |
| | | <result column="vc_num" jdbcType="BIGINT" property="vcNum" /> |
| | | <result column="client_id" jdbcType="BIGINT" property="clientId" /> |
| | | <result column="money" jdbcType="FLOAT" property="money" /> |
| | | <result column="state" jdbcType="TINYINT" property="state" /> |
| | | <result column="last_operate" jdbcType="TINYINT" property="lastOperate" /> |
| | | <result column="last_operate_time" jdbcType="TIMESTAMP" property="lastOperateTime" /> |
| | | <result column="in_use" jdbcType="TINYINT" property="inUse" /> |
| | |
| | | </resultMap> |
| | | <sql id="Base_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, vc_num, client_id, money, last_operate, last_operate_time, in_use, intake_id, create_time |
| | | id, vc_num, client_id, money, state, last_operate, last_operate_time, in_use, intake_id, create_time |
| | | </sql> |
| | | <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> |
| | | <!--@mbg.generated--> |
| | |
| | | <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> |
| | | <!--@mbg.generated--> |
| | | insert into se_virtual_card (id, vc_num, client_id, |
| | | money, last_operate, last_operate_time, |
| | | money, state, last_operate, last_operate_time, |
| | | in_use, intake_id, create_time) |
| | | values (#{id,jdbcType=BIGINT}, #{vcNum,jdbcType=BIGINT}, #{clientId,jdbcType=BIGINT}, |
| | | #{money,jdbcType=FLOAT}, #{lastOperate,jdbcType=TINYINT}, #{lastOperateTime,jdbcType=TIMESTAMP}, |
| | | #{money,jdbcType=FLOAT}, #{state,jdbcType=TINYINT}, #{lastOperate,jdbcType=TINYINT}, #{lastOperateTime,jdbcType=TIMESTAMP}, |
| | | #{inUse,jdbcType=TINYINT}, #{intakeId,jdbcType=BIGINT},#{createTime,jdbcType=TIMESTAMP}) |
| | | </insert> |
| | | <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> |
| | |
| | | </if> |
| | | <if test="money != null"> |
| | | money, |
| | | </if> |
| | | <if test="state != null"> |
| | | state, |
| | | </if> |
| | | <if test="lastOperate != null"> |
| | | last_operate, |
| | |
| | | </if> |
| | | <if test="money != null"> |
| | | #{money,jdbcType=FLOAT}, |
| | | </if> |
| | | <if test="state != null"> |
| | | #{state,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="lastOperate != null"> |
| | | #{lastOperate,jdbcType=TINYINT}, |
| | |
| | | <if test="money != null"> |
| | | money = #{money,jdbcType=FLOAT}, |
| | | </if> |
| | | <if test="state != null"> |
| | | state = #{state,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="lastOperate != null"> |
| | | last_operate = #{lastOperate,jdbcType=TINYINT}, |
| | | </if> |
| | |
| | | set vc_num = #{vcNum,jdbcType=BIGINT}, |
| | | client_id = #{clientId,jdbcType=BIGINT}, |
| | | money = #{money,jdbcType=FLOAT}, |
| | | state = #{state,jdbcType=TINYINT}, |
| | | last_operate = #{lastOperate,jdbcType=TINYINT}, |
| | | last_operate_time = #{lastOperateTime,jdbcType=TIMESTAMP}, |
| | | in_use = #{inUse,jdbcType=TINYINT}, |
| | |
| | | SELECT COUNT(*) AS recordCount |
| | | FROM se_virtual_card |
| | | <where> |
| | | AND state = 1 |
| | | <if test = "clientId != null and clientId > 0"> |
| | | AND client_id = #{clientId} |
| | | </if> |
| | |
| | | END) AS isAlarmValue |
| | | FROM se_virtual_card |
| | | <where> |
| | | AND state = 1 |
| | | <if test = "clientId != null"> |
| | | AND client_id = #{clientId} |
| | | </if> |
| | |
| | | WHEN in_use = 1 THEN '使用中' |
| | | END) AS inUseName |
| | | FROM se_virtual_card |
| | | WHERE id = #{vcId} |
| | | WHERE state = 1 AND id = #{vcId} |
| | | </select> |
| | | |
| | | <!--根据虚拟卡编号获取虚拟卡--> |
| | | <select id="getVcCardByNum" resultType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> |
| | | select |
| | | <include refid="Base_Column_List" /> |
| | | FROM se_virtual_card WHERE vc_num = #{vcNum} |
| | | FROM se_virtual_card WHERE state = 1 AND vc_num = #{vcNum} |
| | | </select> |
| | | |
| | | <!--根据虚拟卡编号获取虚拟卡ID--> |
| | | <select id="getVcIdByNum" resultType="java.lang.Long"> |
| | | SELECT id FROM se_virtual_card WHERE vc_num = #{vcNum} |
| | | SELECT id FROM se_virtual_card WHERE state = 1 AND vc_num = #{vcNum} |
| | | </select> |
| | | |
| | | <!--根据虚拟卡编号获取虚拟卡ID--> |
| | |
| | | cli.name AS clientName |
| | | FROM se_virtual_card card |
| | | INNER JOIN se_client cli ON card.client_id = cli.id |
| | | WHERE card.vc_num = #{vcNum} |
| | | WHERE card.state = 1 AND card.vc_num = #{vcNum} |
| | | </select> |
| | | |
| | | <!-- 根据水卡编号获取虚拟水卡 --> |
| | |
| | | id, |
| | | money |
| | | FROM se_virtual_card |
| | | WHERE vc_num = #{cardNum} |
| | | WHERE state = 1 AND vc_num = #{cardNum} |
| | | </select> |
| | | |
| | | <!--根据行政区划串模糊查询虚拟卡编号--> |
| | | <select id="getVcCardNumOfMax" resultType="java.lang.String"> |
| | | SELECT vc_num |
| | | FROM se_virtual_card |
| | | WHERE vc_num LIKE CONCAT('%',#{areaCode},'%') |
| | | WHERE state = 1 AND vc_num LIKE CONCAT('%',#{areaCode},'%') |
| | | ORDER BY vc_num desc |
| | | LIMIT 0,1 |
| | | </select> |
| | | |
| | | <!--获取虚拟卡充值记录--> |
| | | <!--获取虚拟卡充值记录,不包括已已注销卡的充值记录--> |
| | | <select id="getVcRechargeRecords" resultType="com.dy.pipIrrGlobal.voSe.VoVcRecharge" > |
| | | SELECT |
| | | CAST(id AS char) AS id, |
| | | CAST(vc_id AS char) AS vcId, |
| | | CAST(client_id AS char) AS clientId, |
| | | money, |
| | | after_recharge AS afterRecharge, |
| | | order_number AS orderNumber, |
| | | recharge_amount AS rechargeAmount, |
| | | order_time AS orderTime, |
| | | recharge_time AS rechargeTime, |
| | | order_state AS orderState, |
| | | (CASE |
| | | WHEN order_state = 1 THEN '未支付' |
| | | WHEN order_state = 2 THEN '已支付' |
| | | END) AS orderStateName |
| | | FROM se_vc_recharge |
| | | where order_state = 2 |
| | | order by recharge_time DESC |
| | | rec.vc_id AS vcId, |
| | | rec.client_id AS clientId, |
| | | rec.recharge_time AS rechargeTime, |
| | | rec.recharge_amount AS rechargeAmount, |
| | | rec.after_recharge AS afterRecharge, |
| | | '微信支付' AS rechargeType |
| | | <!-- CASE--> |
| | | <!-- WHEN card.state = 1 THEN '正常销虚拟卡'--> |
| | | <!-- WHEN card.state = 2 THEN '已注销虚拟卡'--> |
| | | <!-- END AS cardState,--> |
| | | FROM se_vc_recharge rec |
| | | INNER JOIN se_virtual_card card ON card.id = rec.vc_id |
| | | <where> |
| | | AND card.state = 1 |
| | | AND rec.order_state = 2 |
| | | <if test = "vcId != null and vcId > 0"> |
| | | AND rec.vc_id = #{vcId} |
| | | </if> |
| | | </where> |
| | | order by rec.recharge_time DESC |
| | | <if test="start != null and count != null"> |
| | | LIMIT #{start}, #{count} |
| | | </if> |
| | |
| | | <select id="getRechargeRecordCount" resultType="java.lang.Long"> |
| | | SELECT |
| | | COUNT(*) |
| | | FROM se_vc_recharge |
| | | where order_state = 2 |
| | | FROM se_vc_recharge rec |
| | | INNER JOIN se_virtual_card card ON card.id = rec.vc_id |
| | | <where> |
| | | AND card.state = 1 |
| | | AND rec.order_state = 2 |
| | | <if test = "vcId != null and vcId > 0"> |
| | | AND rec.vc_id = #{vcId} |
| | | </if> |
| | | </where> |
| | | </select> |
| | | |
| | | <!--根据农户ID及虚拟卡ID获取正常状态的虚拟卡对象,销卡使用--> |
| | | <select id="getVcByClientIdAndVcId" resultType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> |
| | | SELECT * FROM se_virtual_card |
| | | WHERE state = 1 AND client_id = #{clientId} AND id = #{vcId} |
| | | </select> |
| | | |
| | | <!--注销虚拟卡--> |
| | | <update id="cancelVc"> |
| | | UPDATE se_virtual_card SET state = 2, last_operate = 4 , last_operate_time = NOW() |
| | | WHERE id = #{vcId} AND client_id = #{clientId} |
| | | </update> |
| | | </mapper> |
| | |
| | | } |
| | | |
| | | /** |
| | | * 强制因此未关阀记录:为指定(阀控器地址、水卡编号、无关阀记录)开关阀最新记录添加关阀时间,使之不在未关阀记录中显示 |
| | | * 强制隐藏未关阀记录:为指定(阀控器地址、水卡编号、无关阀记录)开关阀最新记录添加关阀时间,使之不在未关阀记录中显示 |
| | | * @param po |
| | | * @param bindingResult |
| | | * @return |
| | |
| | | /** |
| | | * 微信用户 |
| | | */ |
| | | PHONE_NUMBER_CANNOT_BE_NULL(20001, "手机号不能为空"), |
| | | SECURITY_CODE_SEND_FAIL(20001, "验证码发送失败"), |
| | | VERIFY_PARAMS_INCOMPLETE(20001, "验证参数不完整"), |
| | | CODE_VERIFY_FAIL(20001, "验证码校验失败"), |
| | | PHONE_NUMBER_CANNOT_BE_NULL(30001, "手机号不能为空"), |
| | | SECURITY_CODE_SEND_FAIL(30002, "验证码发送失败"), |
| | | VERIFY_PARAMS_INCOMPLETE(30003, "验证参数不完整"), |
| | | CODE_VERIFY_FAIL(30004, "验证码校验失败"), |
| | | |
| | | NO_SECURITY_CODE_FOR_PHONE(20002, "该手机号未发送验证码"), |
| | | SECURITY_CODE_ERROR(20003, "验证码错误"), |
| | | VALIDATION_TIMEOUT(20004, "验证超时"), |
| | | PHONE_NUMBER_IS_ERROR(20004, "手机号错误,非注册农户"), |
| | | INVALID_CODE(20004, "无效的临时登录凭证"), |
| | | LOGIN_FAIL(20004, "登录失败"), |
| | | NO_SECURITY_CODE_FOR_PHONE(30005, "该手机号未发送验证码"), |
| | | SECURITY_CODE_ERROR(30006, "验证码错误"), |
| | | VALIDATION_TIMEOUT(30007, "验证超时"), |
| | | PHONE_NUMBER_IS_ERROR(30008, "手机号错误,非注册农户"), |
| | | INVALID_CODE(30009, "无效的临时登录凭证"), |
| | | LOGIN_FAIL(30010, "登录失败"), |
| | | |
| | | /** |
| | | * 虚拟卡 |
| | | */ |
| | | AREA_CODE_MISTAKE(10001, "该农户行政区划异常"), |
| | | ABNORMAL(10001, "退款异常"), |
| | | PROCESSING(10001, "退款处理中"), |
| | | VC_OPEN_ACCOUNT_FAIL(90002, "虚拟卡账户注册失败"), |
| | | CARD_NUMBER_OVERRUN(10002, "水卡编号已满"), |
| | | VIRTUAL_CARD_NOT_EXIST(90006, "虚拟卡账户不存在"), |
| | | RECHARGE_NOT_EXIST(90006, "充值记录不存在"), |
| | | RECHARGE_FAIL(90006, "充值失败"), |
| | | RECHARGE_ADD_FAIL(10001, "充值记录添加失败"), |
| | | NO_ACCOUNT(40001, "您指定的虚拟卡未注册"), |
| | | VIRTUAL_CARD_CLIENT_NOT_EXIST(40001, "虚拟卡所属农户不存在"), |
| | | AREA_CODE_MISTAKE(40001, "该农户行政区划异常"), |
| | | ABNORMAL(40002, "退款异常"), |
| | | PROCESSING(40003, "退款处理中"), |
| | | VC_OPEN_ACCOUNT_FAIL(40004, "虚拟卡账户注册失败"), |
| | | NO_VC_FIT_THE_BILL(40004, "没有符合条件的虚拟卡"), |
| | | VC_CANCEL_FAIL(40005, "虚拟卡注销失败"), |
| | | |
| | | CARD_NUMBER_OVERRUN(40006, "水卡编号已满"), |
| | | VIRTUAL_CARD_NOT_EXIST(40007, "虚拟卡账户不存在"), |
| | | RECHARGE_NOT_EXIST(40008, "充值记录不存在"), |
| | | RECHARGE_FAIL(40009, "充值失败"), |
| | | RECHARGE_ADD_FAIL(40010, "充值记录添加失败"), |
| | | NO_ACCOUNT(40011, "您指定的虚拟卡未注册"), |
| | | VIRTUAL_CARD_CLIENT_NOT_EXIST(40012, "虚拟卡所属农户不存在"), |
| | | |
| | | /** |
| | | * 位置支付 |
| | |
| | | import com.dy.pipIrrGlobal.voSe.VoVirtualCard; |
| | | import com.dy.pipIrrWechat.result.WechatResultCode; |
| | | import com.dy.pipIrrWechat.util.PayHelper; |
| | | import com.dy.pipIrrWechat.virtualCard.dto.DtoCancel; |
| | | import com.dy.pipIrrWechat.virtualCard.dto.DtoRegist; |
| | | import com.dy.pipIrrWechat.virtualCard.dto.DtoVcRecharge; |
| | | import com.dy.pipIrrWechat.virtualCard.enums.LastOperateENUM; |
| | | import com.dy.pipIrrWechat.virtualCard.qo.QoVcRecharge; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.validation.Valid; |
| | | import lombok.RequiredArgsConstructor; |
| | |
| | | seVirtualCard.setVcNum(Long.parseLong(vcNum)); |
| | | seVirtualCard.setClientId(clientId); |
| | | seVirtualCard.setMoney(0d); |
| | | seVirtualCard.setState((byte)1); |
| | | seVirtualCard.setLastOperate(LastOperateENUM.OPEN_ACCOUNT.getCode()); |
| | | seVirtualCard.setLastOperateTime(new Date()); |
| | | seVirtualCard.setInUse((byte) 0); |
| | |
| | | seVcOperate.setVcId(vcId); |
| | | seVcOperate.setClientId(clientId); |
| | | seVcOperate.setOperateType(LastOperateENUM.OPEN_ACCOUNT.getCode()); |
| | | seVcOperate.setOperator(clientId); |
| | | seVcOperate.setOperateTime(new Date()); |
| | | Long vcOperateId = virtualCardSv.insertVcOperate(seVcOperate); |
| | | if(vcOperateId == null) { |
| | | return BaseResponseUtils.buildErrorMsg(WechatResultCode.VC_OPEN_ACCOUNT_FAIL.getMessage()); |
| | | } |
| | | |
| | | return BaseResponseUtils.buildSuccess(true) ; |
| | | } |
| | | |
| | | /** |
| | | * 根据虚拟卡ID注销虚拟卡 |
| | | * @param po |
| | | * @param bindingResult |
| | | * @return |
| | | */ |
| | | @PostMapping(path = "cancel") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public BaseResponse<Boolean> cancelVC(@RequestBody @Valid DtoCancel po, BindingResult bindingResult) { |
| | | if(bindingResult != null && bindingResult.hasErrors()){ |
| | | return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | | } |
| | | |
| | | Long clientId = po.getClientId(); |
| | | Long vcId = po.getVcId(); |
| | | |
| | | // 根据农户ID及虚拟卡Id判断是否存在正常状态(可注销)的虚拟卡 |
| | | SeVirtualCard seVirtualCard = virtualCardSv.getVcByClientIdAndVcId(clientId, vcId); |
| | | if(seVirtualCard == null) { |
| | | return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_VC_FIT_THE_BILL.getMessage()); |
| | | } |
| | | |
| | | // 注销虚拟卡 |
| | | Integer rec = virtualCardSv.cancelVc(clientId, vcId); |
| | | if(rec == null || rec == 0) { |
| | | return BaseResponseUtils.buildErrorMsg(WechatResultCode.VC_CANCEL_FAIL.getMessage()); |
| | | } |
| | | |
| | | // 生成虚拟卡操作记录,注册虚拟卡操作人为农户 |
| | | SeVcOperate seVcOperate = new SeVcOperate(); |
| | | seVcOperate.setVcId(vcId); |
| | | seVcOperate.setClientId(clientId); |
| | | seVcOperate.setOperateType(LastOperateENUM.CLOSING_ACCOUNT.getCode()); |
| | | seVcOperate.setOperator(clientId); |
| | | seVcOperate.setOperateTime(new Date()); |
| | | Long vcOperateId = virtualCardSv.insertVcOperate(seVcOperate); |
| | |
| | | * @return |
| | | */ |
| | | @GetMapping(path = "/getVcRechargeRecords") |
| | | public BaseResponse<QueryResultVo<List<VoVcRecharge>>> getVcRechargeRecords(DtoVcRecharge dtoVcRecharge){ |
| | | public BaseResponse<QueryResultVo<List<VoVcRecharge>>> getVcRechargeRecords(QoVcRecharge dtoVcRecharge){ |
| | | try { |
| | | if(dtoVcRecharge.getVcId() == null) { |
| | | return BaseResponseUtils.buildErrorMsg("虚拟卡不能为空"); |
| | | } |
| | | |
| | | QueryResultVo<List<VoVcRecharge>> res = virtualCardSv.getVcRechargeRecords(dtoVcRecharge); |
| | | return BaseResponseUtils.buildSuccess(res); |
| | | } catch (Exception e) { |
| | |
| | | import com.dy.pipIrrGlobal.voSe.VoOrders; |
| | | import com.dy.pipIrrGlobal.voSe.VoVcRecharge; |
| | | import com.dy.pipIrrGlobal.voSe.VoVirtualCard; |
| | | import com.dy.pipIrrWechat.virtualCard.dto.DtoVcRecharge; |
| | | import com.dy.pipIrrWechat.result.WechatResultCode; |
| | | import com.dy.pipIrrWechat.virtualCard.dto.DtoVirtualCard; |
| | | import com.dy.pipIrrWechat.virtualCard.enums.LastOperateENUM; |
| | | import com.dy.pipIrrWechat.virtualCard.enums.OrderStateENUM; |
| | | import com.dy.pipIrrWechat.result.WechatResultCode; |
| | | import com.dy.pipIrrWechat.virtualCard.qo.QoVcRecharge; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.dubbo.common.utils.PojoUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | public Long insertVirtualCard(SeVirtualCard po) { |
| | | seVirtualCardMapper.insert(po); |
| | | return po.getId(); |
| | | } |
| | | |
| | | /** |
| | | * 根据农户ID及虚拟卡ID获取正常状态的虚拟卡对象 |
| | | * @param clientId |
| | | * @param vcId |
| | | * @return |
| | | */ |
| | | public SeVirtualCard getVcByClientIdAndVcId (Long clientId, Long vcId) { |
| | | return seVirtualCardMapper.getVcByClientIdAndVcId(clientId, vcId); |
| | | } |
| | | |
| | | /** |
| | | * 根据虚拟卡ID注销虚拟卡 |
| | | * @param clientId |
| | | * @param vcId |
| | | * @return |
| | | */ |
| | | public Integer cancelVc(Long clientId, Long vcId) { |
| | | return seVirtualCardMapper.cancelVc(clientId, vcId); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param dtoVcRecharge |
| | | * @return |
| | | */ |
| | | public QueryResultVo<List<VoVcRecharge>> getVcRechargeRecords(DtoVcRecharge dtoVcRecharge){ |
| | | public QueryResultVo<List<VoVcRecharge>> getVcRechargeRecords(QoVcRecharge dtoVcRecharge){ |
| | | Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(dtoVcRecharge); |
| | | Long itemTotal = seVirtualCardMapper.getRechargeRecordCount(params); |
| | | |
New file |
| | |
| | | package com.dy.pipIrrWechat.virtualCard.dto; |
| | | |
| | | import jakarta.validation.constraints.NotNull; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2024-10-21 10:43 |
| | | * @LastEditTime 2024-10-21 10:43 |
| | | * @Description 注销虚拟卡参数对象 |
| | | */ |
| | | |
| | | @Data |
| | | public class DtoCancel { |
| | | public static final long serialVersionUID = 202410211044001L; |
| | | |
| | | /** |
| | | * 农户ID |
| | | */ |
| | | @NotNull(message = "农户ID不能为空") |
| | | private Long clientId; |
| | | |
| | | /** |
| | | * 虚拟卡ID |
| | | */ |
| | | @NotNull(message = "虚拟卡ID不能为空") |
| | | private Long vcId; |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrWechat.virtualCard.qo; |
| | | |
| | | import com.dy.common.webUtil.QueryConditionVo; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2024-07-11 15:41 |
| | | * @LastEditTime 2024-07-11 15:41 |
| | | * @Description 充值记录查询对象 |
| | | */ |
| | | |
| | | @Data |
| | | public class QoVcRecharge extends QueryConditionVo { |
| | | |
| | | /** |
| | | * 虚拟卡ID |
| | | */ |
| | | private Long vcId; |
| | | } |