系统记账中转账功能

213 阅读3分钟

1、这个需求是一个微信公众号上的一个功能需求,功能解释:

用户A 转帐 1000元 到用户B ,用户A的账户要减1000元,退款表加一条1000元的退款记录;用户B的账户要加1000元,充值表加1000元 新增一张转账记录表,就是记录谁向谁,在什么时候转账了多少钱,新增的表都必须有创建时间 CREATETIME 、更新时间 UPDATETIME这几个字段。

项目的话前端是vue,后端是spring,技术还算比较新


<!--确认弹框 start-->
<div class="refund_dialog" id="refundDialog" style="display: none;">
    <div class="weui-mask"></div>
    <div class="weui-dialog">
        <div class="weui-dialog__bd">请确认是否向{{userName}}({{jobNO}})发起转账?</div>
        <div class="weui-dialog__ft">
            <div class="weui-dialog__btn weui-dialog__btn_default" @click="stopDining()">取消</div>
            <div class="weui-dialog__btn weui-dialog__btn_primary" @click="transferAccounts()">确定</div>
        </div>
    </div>
</div>
<!--确认弹框 end-->


methods:{
    //显示弹窗
    showDining(){
        this.$('#refundDialog').fadeIn(0);
    },
    //隐藏弹窗
    stopDining(){
        this.$('#refundDialog').fadeOut(0);
    },




if(this.userName == '' || this.money == '' || this.jobNO == ''){
    _this.resultData.msg = "转账人信息有空或转账金额为空";
    _this.resultData.color = "red";
    _this.showResultTips();
    return; //前端不往下走了,return就可以了,
}

后端代码

//通过三种类型查找收款人
String phone = "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$";
String userName = "^[\\u4e00-\\u9fa5]{0,}$";
String jobNo = "^[0-9]{1,}$";

            if (userInfo.matches(userName)){
                //模糊查询会员用户信息
                resultJson.put("data", map);
                return resultJson;
            }
            if (userInfo.matches(phone)){
                //手机号查询会员用户信息
                resultJson.put("data", map);
                return resultJson;
            }
            if (userInfo.matches(jobNo)){
                //工号查询会员用户信息
                resultJson.put("data", map);
                return resultJson;
            }
            

//判断BigDecimal类型金额的大小
if (new BigDecimal(money).compareTo(new BigDecimal(String.valueOf(transferorMap.get("BALANCE")))) > 0){
                resultJson.put("result", false);
                resultJson.put("code", "10013");
                resultJson.put("msg", "当前现金账户余额少于转账金额");
                return resultJson;
            }
            
  //重要学到的一条sql

select a.*,( SELECT NAME FROM info WHERE ID = a.TRANSFEROR ) TRANSFEROR_NAME 
        ( SELECT NAME FROM info WHERE ID = a.PAYEE ) PAYEE_NAME  from trans a 
        where CREATE_TIME BETWEEN startTime AND endTime ;
  

由于公司代码有专利在,我也只能贴一些我觉得我学到的地方的代码或不太关键公司的代码。剩下都是一些业务代码,给条狗,都会写了。

2、这次我觉得学得最有用的地方是在远程服务器上部署项目的了,我写一下Linux命令吧,

这次说的是部署在tomcat上的项目

1、首先要cd 到服务器上tomcat的bin目录下
cd /tomcat/apache-tomcat-8.5.43/bin

2、如果只有部署前端vue的话,就不用停tomcat的,把vue项目打包build,
把打包文件从本地通过Xshell 7等软件传输到服务器上就行,后端就需要停tomcat了,命令为:
./shutdown.sh

3、查看运行的程序:ps -ef | grep tomcat
找到对应的tomcat服务
4589 /usr/local/jdk/jdk1.8.0_211/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/apache-tomcat-8.5.43/conf/logging.properties -Djava.util.logg

4、杀掉程序命令:kill -s 9 4589
可以再看一遍杀掉了吗:ps -ef | grep tomcat

5、然后把后端更新完的编译后的class文件传输到服务器对应位置就行了,再启动tomcat
命令为:./startup.sh

在外网就可以正常访问了

vue项目打包过程:右键划线地方

image.png

最后

这次需求真的就难搞了,需求总是变是最难受的,给我了两天,但是实际搞了一个星期5天,天天加班到晚上11点,昨天最狠,加到00:24了,到宿舍1点钟才休息,才上班两个星期,这样了,这家公司是真狠呀,需求排期是真赶。唉,还是熬过这段时间就好了,主要是有一个很好的同学在这家公司,所以生活再难也要坚持了。