ylb-接口13实名认证

总览:
在这里插入图片描述
在api模块下的service包,创建一个充值接口RechargeService,并创建一个(根据userID查询它的充值记录)方法:

package com.bjpowernode.api.service;import com.bjpowernode.api.model.RechargeRecord;import java.util.List;/*** 充值接口*/
public interface RechargeService {/*根据userID查询它的充值记录*/List<RechargeRecord> queryByUid(Integer uid,Integer pageNo, Integer pageSize);int addRechargeRecord(RechargeRecord record);/*处理后续充值*/int handleKQNotify(String orderId, String payAmount, String payResult);
}

实现这个接口方法,在dataservice模块service包下,创建相应的实现类RechargeServiceImpl:(根据userID查询它的充值记录)

package com.bjpowernode.dataservice.service;import com.bjpowernode.api.model.RechargeRecord;
import com.bjpowernode.api.service.RechargeService;
import com.bjpowernode.common.constants.YLBConstant;
import com.bjpowernode.common.util.CommonUtil;
import com.bjpowernode.dataservice.mapper.FinanceAccountMapper;
import com.bjpowernode.dataservice.mapper.RechargeRecordMapper;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.locks.ReentrantLock;@DubboService(interfaceClass = RechargeService.class,version = "1.0")
public class RechargeServiceImpl implements RechargeService {@Resourceprivate RechargeRecordMapper rechargeMapper;@Resourceprivate FinanceAccountMapper accountMapper;/*根据userID查询它的充值记录*/@Overridepublic List<RechargeRecord> queryByUid(Integer uid, Integer pageNo, Integer pageSize) {List<RechargeRecord> records  = new ArrayList<>();if( uid != null && uid > 0 ){pageNo  = CommonUtil.defaultPageNo(pageNo);pageSize = CommonUtil.defaultPageSize(pageSize);int offset = (pageNo -1 ) * pageSize;records = rechargeMapper.selectByUid(uid, offset, pageSize);}return records;}@Overridepublic int addRechargeRecord(RechargeRecord record) {return rechargeMapper.insertSelective(record);}/*处理后续充值*/@Transactional(rollbackFor = Exception.class)@Overridepublic synchronized int handleKQNotify(String orderId, String payAmount, String payResult) {int result = 0;//订单不存在int rows =  0;//1.查询订单RechargeRecord record = rechargeMapper.selectByRechargeNo(orderId);if(record != null ){if( record.getRechargeStatus() == YLBConstant.RECHARGE_STATUS_PROCESSING){//2.判断金额是否一致String fen = record.getRechargeMoney().multiply(new BigDecimal("100")).stripTrailingZeros().toPlainString();if( fen.equals(payAmount)){//金额一致if("10".equals(payResult)){//成功rows = accountMapper.updateAvailableMoneyByRecharge(record.getUid(),record.getRechargeMoney());if(rows < 1 ){throw new RuntimeException("充值更新资金账号失败");}//更新充值记录的状态rows = rechargeMapper.updateStatus(record.getId(),YLBConstant.RECHARGE_STATUS_SUCCESS);if( rows < 1) {throw new RuntimeException("充值更新充值记录状态失败");}result  = 1;//成功} else {//充值失败//更新充值记录的状态rows = rechargeMapper.updateStatus(record.getId(),YLBConstant.RECHARGE_STATUS_FAIL);if( rows < 1) {throw new RuntimeException("充值更新充值记录状态失败");}result = 2;//充值结果是失败的}} else {result = 4;//金额不一样}} else {result = 3;//订单已经处理过了}}return result;}
}

其中:
1、查询充值记录RechargeRecordMapper:
(需要在dataservice模块mapper包下的UserMapper接口添加方法,并在resources/mappers/UserMapper.xml编写SQL语句):

    /*按userId查询充值记录*/List<RechargeRecord> selectByUid(@Param("uid") Integer uid,@Param("offset") int offset,@Param("rows") Integer rows);
  <!--按userId查询充值记录--><select id="selectByUid" resultMap="BaseResultMap">select <include refid="Base_Column_List" />from b_recharge_recordwhere uid= #{uid}order by recharge_time desclimit #{offset},#{rows}</select>

在web模块的controller包下,BaseController添加充值服务:

package com.bjpowernode.front.controller;import com.bjpowernode.api.service.*;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.data.redis.core.StringRedisTemplate;import javax.annotation.Resource;/***/
public class BaseController {//声明公共的方法,属性的等@Resourceprotected StringRedisTemplate stringRedisTemplate;//平台信息服务@DubboReference(interfaceClass = PlatBaseInfoService.class,version = "1.0")protected PlatBaseInfoService platBaseInfoService;//产品服务@DubboReference(interfaceClass = ProductService.class,version = "1.0")protected ProductService productService;//投资服务@DubboReference(interfaceClass = InvestService.class,version = "1.0")protected InvestService investService;//用户服务@DubboReference(interfaceClass = UserService.class,version = "1.0")protected UserService userService;//充值服务@DubboReference(interfaceClass = RechargeService.class,version = "1.0")protected RechargeService rechargeService;
}

在web模块的controller包下,创建RechargeController(查询充值流水):

package com.bjpowernode.front.controller;import com.bjpowernode.api.model.RechargeRecord;
import com.bjpowernode.front.view.RespResult;
import com.bjpowernode.front.view.recharge.ResultView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;@Api(tags = "充值业务")
@RestController
public class RechargeController extends BaseController {/*查询充值流水*/@ApiOperation(value = "查询某个用户的充值记录")@GetMapping("/v1/recharge/records")public RespResult queryRechargePage(@RequestHeader("uid") Integer uid,@RequestParam(required = false,defaultValue = "1") Integer pageNo,@RequestParam(required = false,defaultValue = "6") Integer pageSize){RespResult result = RespResult.fail();if( uid != null && uid > 0 ){List<RechargeRecord> records = rechargeService.queryByUid(uid, pageNo, pageSize);result = RespResult.ok();result.setList( toView(records));//没有做分页。}return result;}private List<ResultView> toView(List<RechargeRecord> src){List<ResultView> target = new ArrayList<>();src.forEach( record -> {target.add( new ResultView(record));});return target;}
}

在web模块view.recharge包下,创建ResultView(查询数据记录转换):

package com.bjpowernode.front.view.recharge;import com.bjpowernode.api.model.RechargeRecord;
import org.apache.commons.lang3.time.DateFormatUtils;import java.math.BigDecimal;/*** 查询数据记录转换*/
public class ResultView {private Integer id;private String result = "未知";private String rechargeDate = "-";private BigDecimal rechargeMoney;public ResultView(RechargeRecord record) {this.id = record.getId();this.rechargeMoney = record.getRechargeMoney();if (record.getRechargeTime() != null) {rechargeDate = DateFormatUtils.format(record.getRechargeTime(), "yyyy-MM-dd");}switch (record.getRechargeStatus()) {case 0:result = "充值中";break;case 1:result = "成功";break;case 2:result = "失败";}}public Integer getId() {return id;}public String getResult() {return result;}public String getRechargeDate() {return rechargeDate;}public BigDecimal getRechargeMoney() {return rechargeMoney;}}

在web模块的controller包下,RechargeController添加查询数据记录转换toView:

package com.bjpowernode.front.controller;import com.bjpowernode.api.model.RechargeRecord;
import com.bjpowernode.front.view.RespResult;
import com.bjpowernode.front.view.recharge.ResultView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;@Api(tags = "充值业务")
@RestController
public class RechargeController extends BaseController {/*查询充值流水*/@ApiOperation(value = "查询某个用户的充值记录")@GetMapping("/v1/recharge/records")public RespResult queryRechargePage(@RequestHeader("uid") Integer uid,@RequestParam(required = false,defaultValue = "1") Integer pageNo,@RequestParam(required = false,defaultValue = "6") Integer pageSize){RespResult result = RespResult.fail();if( uid != null && uid > 0 ){List<RechargeRecord> records = rechargeService.queryByUid(uid, pageNo, pageSize);result = RespResult.ok();result.setList( toView(records));//没有做分页。}return result;}private List<ResultView> toView(List<RechargeRecord> src){List<ResultView> target = new ArrayList<>();src.forEach( record -> {target.add( new ResultView(record));});return target;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/23417.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【漂移-扩散通量重建 FV 方案】用于半导体和气体放电模拟的电子传输的更准确的 Sharfetter-Gummel 算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

ELK中grok插件、mutate插件、multiline插件、date插件的相关配置

目录 grok 正则捕获插件 自定义表达式调用 mutate 数据修改插件 示例&#xff1a; ●将字段old_field重命名为new_field ●添加字段 ●将字段删除 ●将filedName1字段数据类型转换成string类型&#xff0c;filedName2字段数据类型转换成float类型 ●将filedName字段中…

大华相机接入web页面实现人脸识别

先看下效果&#xff0c;中间主视频流就是大华相机&#xff08;视频编码H.264&#xff09;&#xff0c;海康相机&#xff08;视屏编码H.265&#xff09; 前端接入视屏流代码 <!--视频流--><div id"col2"><div class"cell" style"flex: …

SpringCloud——分布式请求链路跟踪Sleuth

安装运行zipkin SpringCloud从F版已不需要自己构建Zipkin Server&#xff0c;只需要调用jar包即可 https://dl.bintray.com/oenzipkin/maven/io/zipkin/java/zipkin-server/ 下载&#xff1a;zipkin-server-2.12.9-exec.jar 运行&#xff1a;java -jar zipkin-server-2.12.9-e…

Word 插件实现读取excel自动填写

日常工作中碰到需要将EXCEL的对应数据记录填写到word文档对应的位置&#xff0c;人工操作的方式是&#xff1a; 打开exel表—>查找对应报告号的行—>逐列复制excel表列单元格内容到WORD对应的位置&#xff08;如下图标注所示&#xff09; 这种方法耗时且容易出错。实际上…

三菱PLC上位机测试

利用三菱的MX Component与三菱PLC进行以太网通信&#xff0c;我们可以用官方的dll编写C#代码&#xff0c;特别简单&#xff0c;最后附上整个源码下载。 1. 安装MX Component&#xff08;必须&#xff09;和GX WORKS3&#xff08;主要是仿真用&#xff0c;实际可以不装&#xf…

【USRP X310】如何将你的X310转化为USRP RIO 可以用于FPGA编程

X310 转化为USRP RIO X310产品X310和NI-USRP对应关系 简介第一步原理解释打开工具运行 Initialize Flash.vi可以去选择设备类型Hardware Current Version 如何选择 第二步创建工程运行校准程序 附录&#xff1a;射频子板的IDWBXSBXCBXUBXTwinRX X310产品 X310和NI-USRP对应关系…

Android Java代码与JNI交互 JNI访问Java类方法 (七)

🔥 Android Studio 版本 🔥 🔥 创建包含JNI的类 JNIAccessMethod.java 🔥 package com.cmake.ndk1.jni;import com.cmake.ndk1.model.Animal;public class JNIAccessMethod {static {System.loadLibrary("access-method-lib");}public native void access…

Meta提出全新参数高效微调方案,仅需一个RNN,Transformer模型GPU使用量减少84%!

近来&#xff0c;随着ChatGPT和GPT-4模型的不断发展&#xff0c;国内外互联网大厂纷纷推出了自家的大语言模型&#xff0c;例如谷歌的PaLM系列&#xff0c;MetaAI的LLaMA系列&#xff0c;还有国内公司和高校推出的一些大模型&#xff0c;例如百度的文心一言&#xff0c;清华的C…

【VTK】VTK 显示小球例子,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK

知识不是单独的&#xff0c;一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏&#xff1a;Visual Studio。 编号内容1【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK2【Visual Studio】在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK3【VTK】VTK 显…

java导出pdf(纯代码实现)

java导出pdf 在项目开发中&#xff0c;产品的需求越来越奇葩啦&#xff0c;开始文件下载都是下载为excel的&#xff0c;做着做着需求竟然变了&#xff0c;要求能导出pdf。导出pdf倒也不是特别大的问题关键就是麻烦。 导出pdf我知道的一共有3中方法&#xff1a; 方法一&#xff…

如何通过CRM系统减低客户流失率并提高销售业绩?

销售人员如何提高业绩&#xff0c;减低客户流失率&#xff1f;通过CRM客户管理系统与客户建立良好的客户关系、提升客户体验助力销售人员业绩节节攀升&#xff0c;降低客户流失率。接下来我们就来说一说CRM系统如何实现的&#xff1f; 1.全渠道沟通提升客户体验 只有足够多的…