修改circulator包内的sum类,以及传递消息验证

修改还款类,增加结果判断,验证消息传递
master
jyx 7 years ago
parent 37f910696e
commit 71202c898f

@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Update;
@Mapper @Mapper
public interface paymentMapper { public interface paymentMapper {
@Select("select * from repayment where checkNum =#{checkNum}") @Select("select * from repayment where checkNum = #{checkNum}")
public Repayment selectPepaymentBycheckNum(long checkNum); public Repayment selectPepaymentBycheckNum(long checkNum);
@Update("update repayment set repAmount = {#repAmount} ,repSum = #{repSum} where checkNum = #{checkNum}") @Update("update repayment set repAmount = {#repAmount} ,repSum = #{repSum} where checkNum = #{checkNum}")

@ -8,7 +8,7 @@ import java.util.List;
@Mapper @Mapper
public interface usageDateMapper { public interface usageDateMapper {
@Select("select * from usagedate where transactionNum = #{transactionNum}") @Select("select * from usagedate where checkNum = #{checkNum}")
public UsageDate selectUsageDateByCheckNum(long checkNum); public UsageDate selectUsageDateByCheckNum(long checkNum);
@Select("select * from usagedate") @Select("select * from usagedate")

@ -1,9 +1,9 @@
package com.example.demo.circulator.controller; package com.example.demo.circulator.controller;
import com.example.demo.circulator.service.CirService;
import com.example.demo.circulator.service.EPAIR_CirService; import com.example.demo.circulator.service.EPAIR_CirService;
import com.example.demo.circulator.service.EPR_CirService; import com.example.demo.circulator.service.EPR_CirService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -12,25 +12,30 @@ import javax.servlet.http.HttpServletResponse;
@Controller @Controller
public class NextCirController { public class NextCirController {
//@Autowired @Autowired
private CirService cirService; private EPAIR_CirService epair_cirService;
@Autowired
private EPR_CirService epr_cirService;
@GetMapping("/cir/next") @GetMapping("/cir/next")
public String nextCirculator(HttpServletRequest request,HttpServletResponse response){ public String nextCirculator(HttpServletRequest request,HttpServletResponse response){
long checkNum = (Long)request.getAttribute("checkNum"); long checkNum = (Long)request.getAttribute("checkNum");
int equation = (Integer)request.getAttribute("equation"); int equation = (Integer)request.getAttribute("equation");
double next_principal_and_intrate = 0;
switch (equation){ switch (equation){
case 1: case 1:
cirService = new EPAIR_CirService(); //cirService = new EPAIR_CirService();
next_principal_and_intrate = epair_cirService.NextCirculator(checkNum);
break; break;
case 2: case 2:
cirService = new EPR_CirService(); //cirService = new EPR_CirService();
next_principal_and_intrate = epr_cirService.NextCirculator(checkNum);
break; break;
default: default:
System.out.println("not exit"); System.out.println("not exit");
break; break;
} }
double next_principal_and_intrate = cirService.NextCirculator(checkNum); //double next_principal_and_intrate = cirService.NextCirculator(checkNum);
if(next_principal_and_intrate>=0){ if(next_principal_and_intrate>=0){
request.setAttribute("next",next_principal_and_intrate); request.setAttribute("next",next_principal_and_intrate);
}else if(next_principal_and_intrate==-1){ }else if(next_principal_and_intrate==-1){

@ -1,12 +1,13 @@
package com.example.demo.circulator.controller; package com.example.demo.circulator.controller;
import com.example.demo.circulator.service.PayCirService; import com.example.demo.circulator.service.PayCirService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@Controller @Controller
public class PayCirController { public class PayCirController {
//@Autowired @Autowired
PayCirService payCirService; PayCirService payCirService;
@PostMapping("/pay") @PostMapping("/pay")
@ -16,7 +17,9 @@ public class PayCirController {
return "/还款成功!"; return "/还款成功!";
}else if(result==-2){ }else if(result==-2){
return"/未贷款该业务!"; return"/未贷款该业务!";
}else }else if(result==-3){
return "/无此业务";
}
return "/还款失败"; return "/还款失败";
} }

@ -3,16 +3,21 @@ package com.example.demo.circulator.controller;
import com.example.demo.circulator.service.CirService; import com.example.demo.circulator.service.CirService;
import com.example.demo.circulator.service.EPAIR_CirService; import com.example.demo.circulator.service.EPAIR_CirService;
import com.example.demo.circulator.service.EPR_CirService; import com.example.demo.circulator.service.EPR_CirService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@Controller @Controller
public class SumCirController { public class SumCirController {
//@Autowired @Autowired
private CirService cirService; //private CirService cirService;
private EPR_CirService epr_cirService;
@Autowired
private EPAIR_CirService epair_cirService;
@GetMapping("/cir/sum") @GetMapping("/cir/sum")
public String SumCirculator(HttpServletRequest request, HttpServletResponse response){ public String SumCirculator(HttpServletRequest request, HttpServletResponse response){
@ -21,18 +26,21 @@ public class SumCirController {
int year = Integer.parseInt(request.getParameter("year")); int year = Integer.parseInt(request.getParameter("year"));
int equation = Integer.parseInt(request.getParameter("equation")); int equation = Integer.parseInt(request.getParameter("equation"));
double sum_principal_and_intrate = 0;
switch (equation){ switch (equation){
case 1: case 1:
cirService = new EPAIR_CirService(); //cirService = new EPAIR_CirService();
sum_principal_and_intrate = epair_cirService.SumCirculator(productNum,amount,year);
break; break;
case 2: case 2:
cirService = new EPR_CirService(); //cirService = new EPR_CirService();
sum_principal_and_intrate = epr_cirService.SumCirculator(productNum,amount,year);
break; break;
default: default:
System.out.println("not exit"); System.out.println("not exit");
break; break;
} }
double sum_principal_and_intrate = cirService.SumCirculator(productNum,amount,year); //double sum_principal_and_intrate = cirService.SumCirculator(productNum,amount,year);
if(sum_principal_and_intrate>=0){ if(sum_principal_and_intrate>=0){
request.setAttribute("sum",sum_principal_and_intrate); request.setAttribute("sum",sum_principal_and_intrate);
}else if(sum_principal_and_intrate==-3){ }else if(sum_principal_and_intrate==-3){

@ -1,10 +1,17 @@
package com.example.demo.circulator.service; package com.example.demo.circulator.service;
import com.example.demo.Dao.paymentMapper;
import com.example.demo.Dao.productMapper;
import com.example.demo.Dao.usageDateMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
public abstract class CirService { @Service
public class CirService {
@PostConstruct @PostConstruct
public void init(){} public void init(){}

@ -1,16 +1,21 @@
package com.example.demo.circulator.service; package com.example.demo.circulator.service;
import com.example.demo.Dao.paymentMapper;
import com.example.demo.Dao.productMapper; import com.example.demo.Dao.productMapper;
import com.example.demo.Dao.usageDateMapper; import com.example.demo.Dao.usageDateMapper;
import com.example.demo.bean.Product; import com.example.demo.bean.Product;
import com.example.demo.bean.UsageDate; import com.example.demo.bean.UsageDate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
public class EPAIR_CirService extends CirService { @Service
public class EPAIR_CirService extends CirService{
@Autowired @Autowired
private usageDateMapper usageDateMapper; private usageDateMapper usageDateMapper;
@Autowired @Autowired
private paymentMapper paymentMapper;
@Autowired
private productMapper productMapper; private productMapper productMapper;
@Transactional //数据库与事物的一致性 @Transactional //数据库与事物的一致性

@ -7,12 +7,17 @@ import com.example.demo.bean.Product;
import com.example.demo.bean.Repayment; import com.example.demo.bean.Repayment;
import com.example.demo.bean.UsageDate; import com.example.demo.bean.UsageDate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@Service
public class EPR_CirService extends CirService { public class EPR_CirService extends CirService {
@Autowired @Autowired
private usageDateMapper usageDateMapper; private usageDateMapper usageDateMapper;
@Autowired
private paymentMapper paymentMapper; private paymentMapper paymentMapper;
@Autowired
private productMapper productMapper; private productMapper productMapper;
@Transactional //数据库与事物的一致性 @Transactional //数据库与事物的一致性
@ -44,9 +49,12 @@ public class EPR_CirService extends CirService {
return -1; return -1;
} }
@Transactional
public double SumCirculator(long productNum,double amount,int year){ public double SumCirculator(long productNum,double amount,int year){
Product product = null;
try{ try{
Product product = productMapper.selectProductByProductNum(productNum); product = productMapper.selectProductByProductNum(productNum);
if(product==null)return -3;
float intrate = product.getIntrate(); float intrate = product.getIntrate();
intrate /= 12; intrate /= 12;
int month = year * 12; int month = year * 12;

@ -1,35 +1,94 @@
package com.example.demo.circulator.service; package com.example.demo.circulator.service;
import com.example.demo.Dao.paymentMapper; import com.example.demo.Dao.paymentMapper;
import com.example.demo.Dao.productMapper;
import com.example.demo.Dao.transMapper; import com.example.demo.Dao.transMapper;
import com.example.demo.Dao.usageDateMapper; import com.example.demo.Dao.usageDateMapper;
import com.example.demo.bean.Product;
import com.example.demo.bean.Repayment; import com.example.demo.bean.Repayment;
import com.example.demo.bean.Transaction; import com.example.demo.bean.Transaction;
import com.example.demo.bean.UsageDate; import com.example.demo.bean.UsageDate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class PayCirService { public class PayCirService {
@Autowired
private usageDateMapper usageDateMapper; private usageDateMapper usageDateMapper;
@Autowired
private paymentMapper paymentMapper; private paymentMapper paymentMapper;
@Autowired
private transMapper transMapper; private transMapper transMapper;
@Autowired
private productMapper productMapper;
public int payAmountCirculator(long checkNum,double pay){
try{ public int pay_EPR_AmountCirculator(long checkNum,double pay) {
try {
Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum); Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum);
UsageDate usageDate= usageDateMapper.selectUsageDateByCheckNum(checkNum); UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
if(usageDate==null)return -2; double repamount = 0;
double repamount = repayment.getRepAmount(); long productNum = usageDate.getProductNum();
long userNum = usageDate.getUserNum(); long userNum = usageDate.getUserNum();
int bankNum = usageDate.getBankNum(); int bankNum = usageDate.getBankNum();
double amount = usageDate.getAmount(); double amount = usageDate.getAmount();
int year = usageDate.getYear();
Transaction transaction = new Transaction(checkNum,userNum,bankNum,pay); if (repayment != null)
repamount = repayment.getRepAmount();
Product product = productMapper.selectProductByProductNum(productNum);
if (product == null)
return -3;
Transaction transaction = new Transaction(checkNum, userNum, bankNum, pay);
transMapper.addTransaction(transaction); transMapper.addTransaction(transaction);
repamount = pay - amount/(year*12); double intrate = product.getIntrate();
double rep_amount = repayment.getRepSum();
repamount = pay - (amount - repamount) * intrate;
repayment.setRepAmount(repamount); repayment.setRepAmount(repamount);
repayment.setRepSum(pay); repayment.setRepSum(pay + rep_amount);
if (repayment != null) {
paymentMapper.updateRepayment(repayment);
} else {
paymentMapper.addRepayment(repayment);
}
return 1;
} catch (Exception e) {
e.printStackTrace();
} finally {
}
return 0;
}
public int pay_EPAIR_AmountCirculator(long checkNum,double pay){
try{
UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
int year = usageDate.getYear();
double amount = usageDate.getAmount();
long productNum = usageDate.getProductNum();
Product product = productMapper.selectProductByProductNum(productNum);
if(product==null)return -3;
float intrate = product.getIntrate();
double rep_amount = 0;
//double not_rep_amount = amount - rep_amount;
intrate /= 12;
int month = year*12;
double rep = Math.pow((1+intrate),month)/(Math.pow((1+intrate),month)-1);
double next_principal_and_interest = rep * intrate * amount;
long userNum = usageDate.getUserNum();
long bankNum = usageDate.getBankNum();
Transaction transaction = new Transaction(checkNum,userNum,bankNum,next_principal_and_interest);
transMapper.addTransaction(transaction);
Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum);
double repSum = next_principal_and_interest;
if(repayment!=null){ if(repayment!=null){
repSum += repayment.getRepSum();
repayment.setRepSum(repSum);
paymentMapper.updateRepayment(repayment); paymentMapper.updateRepayment(repayment);
}else{ }else{
paymentMapper.addRepayment(repayment); paymentMapper.addRepayment(repayment);
@ -38,9 +97,27 @@ public class PayCirService {
}catch(Exception e){ }catch(Exception e){
e.printStackTrace(); e.printStackTrace();
}finally { }finally {
}
return 0;
}
public int payAmountCirculator(long checkNum,double pay){
try{
UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
if(usageDate==null){return -2;}
int equation = usageDate.getEquation();
if(equation == 1){
return pay_EPAIR_AmountCirculator(checkNum,pay);
}else if(equation == 2){
return pay_EPR_AmountCirculator(checkNum,pay);
}
}catch (Exception e){
e.printStackTrace();
}finally {
} }
return 0; return 0;
} }
} }

Loading…
Cancel
Save