From 84c64df95e49de18a13377c147e227b0283c5522 Mon Sep 17 00:00:00 2001 From: "201530126012@qq.com" <22279326bbq> Date: Mon, 7 Jan 2019 09:22:12 +0800 Subject: [PATCH 01/12] Login,Phone Login --- Front-end/Login/Login.html | 443 +++++++++++++++++++++++++++ Front-end/Login/NEOTERICc.ttf | Bin 0 -> 108044 bytes Front-end/Login/main.css | 274 +++++++++++++++++ Front-end/PhoneLogin/NEOTERICc.ttf | Bin 0 -> 108044 bytes Front-end/PhoneLogin/PhoneLogin.html | 442 ++++++++++++++++++++++++++ Front-end/PhoneLogin/main.css | 274 +++++++++++++++++ 6 files changed, 1433 insertions(+) create mode 100644 Front-end/Login/Login.html create mode 100644 Front-end/Login/NEOTERICc.ttf create mode 100644 Front-end/Login/main.css create mode 100644 Front-end/PhoneLogin/NEOTERICc.ttf create mode 100644 Front-end/PhoneLogin/PhoneLogin.html create mode 100644 Front-end/PhoneLogin/main.css diff --git a/Front-end/Login/Login.html b/Front-end/Login/Login.html new file mode 100644 index 0000000..9ba9ad7 --- /dev/null +++ b/Front-end/Login/Login.html @@ -0,0 +1,443 @@ + + + + + + + + + 账号登录 + + + + + +
+
+

登录失败

+
+
+
+
+ + + +
+ +
+

+

+

+ + +
+ 忘记密码 +
+
+ +
+ + + + + + + + + + + + + + + + + + +

CLOUD

+
+
+
+ + + + diff --git a/Front-end/Login/NEOTERICc.ttf b/Front-end/Login/NEOTERICc.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9ec11776abbccd8de459dee3f8b5a085d86d2d28 GIT binary patch literal 108044 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
I7HL_$gR^T>J@V&b>|OqvxBcT9O@8Gl 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
I7HL_$gR^T>J@V&b>|OqvxBcT9O@8Gl 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 + + + + + + + + 手机登录 + + + + + +
+
+

登录失败

+
+
+
+
+ + + +
+ +
+

+

+

+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + +

CLOUD

+
+
+
+ + + + diff --git a/Front-end/PhoneLogin/main.css b/Front-end/PhoneLogin/main.css new file mode 100644 index 0000000..81f985b --- /dev/null +++ b/Front-end/PhoneLogin/main.css @@ -0,0 +1,274 @@ +*{ + margin: 0; + padding: 0; +} + +html, +body { + height: 100%; +} + +@font-face { + font-family: 'neo'; + src: url("NEOTERICc-1.ttf")/*tpa=http://www.17sucai.com/preview/384665/2018-12-28/login/css/font/NEOTERICc.ttf*/; +} +input:focus{ + outline: none; +} +.form input{ + width: 300px; + height: 30px; + font-size: 18px; + background: none; + border: none; + border-bottom: 1px solid #fff; + color: #fff; + margin-bottom: 20px; +} +.form input::placeholder{ + color: rgba(255,255,255,0.8); + font-size: 18px; + font-family: "neo"; +} +.confirm{ + height: 0; + overflow: hidden; + transition: .25s; +} +.btn{ + width:140px; + height: 40px; + border: 1px solid #fff; + background: none; + font-size:20px; + color: #fff; + cursor: pointer; + margin-top: 25px; + font-family: "neo"; + transition: .25s; +} +.btn:hover{ + background: rgba(255,255,255,.25); +} +#login_wrap{ + width: 980px; + min-height: 500px; + border-radius: 10px; + font-family: "neo"; + overflow: hidden; + box-shadow: 0px 0px 120px rgba(0, 0, 0, 0.25); + position: fixed; + top: 50%; + right: 50%; + margin-top: -250px; + margin-right: -490px; +} +#login{ + width: 50%; + height: 100%; + min-height: 500px; + background: linear-gradient(45deg, #9a444e, #e06267); + position: relative; + float: right; +} +#login #status{ + width: 90px; + height: 35px; + margin: 40px auto; + color: #fff; + font-size: 30px; + font-weight: 600; + position: relative; + overflow: hidden; +} +#login #status i{ + font-style: normal; + position: absolute; + transition: .5s +} +#login span{ + text-align: center; + position: absolute; + left: 50%; + margin-left: -150px; + top: 52%; + margin-top: -140px; +} +#login span a{ + text-decoration: none; + color: #fff; + display: block; + margin-top: 80px; + font-size: 18px; +} +#bg{ + background: linear-gradient(45deg, #211136, #bf5853); + height: 100%; +} +/*绘图*/ +#login_img{ + width: 50%; + min-height: 500px; + background: linear-gradient(45deg, #221334, #6c3049); + float: left; + position: relative; +} +#login_img span{ + position: absolute; + display: block; +} +#login_img .circle{ + width: 200px; + height: 200px; + border-radius: 50%; + background: linear-gradient(45deg, #df5555, #ef907a); + top: 70px; + left: 50%; + margin-left: -100px; + overflow: hidden; +} +#login_img .circle span{ + width: 150px; + height: 40px; + border-radius: 50px; + position: absolute; +} +#login_img .circle span:nth-child(1){ + top: 30px; + left: -38px; + background: #c55c59; +} +#login_img .circle span:nth-child(2){ + bottom: 20px; + right: -35px; + background: #934555; +} +#login_img .star span{ + background: radial-gradient(#fff 10%,#fff 20%,rgba(72, 34, 64, 0)); + border-radius: 50%; + box-shadow: 0 0 7px #fff; +} +#login_img .star span:nth-child(1){ + width: 15px; + height: 15px; + top: 50px; + left: 30px; +} +#login_img .star span:nth-child(2){ + width: 10px; + height: 10px; + left: 360px; + top: 80px; +} +#login_img .star span:nth-child(3){ + width: 5px; + height: 5px; + top: 400px; + left: 80px; +} +#login_img .star span:nth-child(4){ + width: 8px; + height: 8px; + top: 240px; + left: 60px; +} +#login_img .star span:nth-child(5){ + width: 4px; + height: 4px; + top: 20px; + left: 200px; +} +#login_img .star span:nth-child(6){ + width: 4px; + height: 4px; + top: 460px; + left: 410px; +} +#login_img .star span:nth-child(7){ + width: 6px; + height: 6px; + top: 250px; + left: 350px; +} +#login_img .fly_star span{ + width: 90px; + height: 3px; + background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.67), rgba(255,255,255,0)); + background: -o-linear-gradient(left, rgba(255, 255, 255, 0.67), rgba(255,255,255,0)); + background: linear-gradient(to right, rgba(255, 255, 255, 0.67), rgba(255,255,255,0)); + transform: rotate(-45deg); +} +#login_img .fly_star span:nth-child(1){ + top:60px; + left: 80px; +} +#login_img .fly_star span:nth-child(2){ + top: 210px; + left: 332px; + opacity: 0.6; +} +#login_img p{ + text-align: center; + color: #af4b55; + font-weight: 600; + margin-top: 365px; + font-size: 25px; +} +#login_img p i{ + font-style: normal; + margin-right: 45px; +} +#login_img p i:nth-last-child(1){ + margin-right: 0; +} +/*提示*/ +#hint{ + width: 100%; + line-height: 70px; + background: linear-gradient(-90deg, #9b494d, #bf5853); + text-align: center; + font-size: 25px; + color: #fff; + box-shadow: 0 0 20px #733544; + display: none; + opacity: 0; + transition: .5s; + position: absolute; + top: 0; + z-index: 999; +} +/* 响应式 */ +@media screen and (max-width:1000px ) { + #login_img{ + display: none; + } + #login_wrap{ + width: 490px; + margin-right: -245px; + } + #login{ + width: 100%; + + } +} +@media screen and (max-width:560px ) { + #login_wrap{ + width: 330px; + margin-right: -165px; + } + #login span{ + margin-left: -125px; + } + .form input{ + width: 250px; + } + .btn{ + width: 113px; + } +} +@media screen and (max-width:345px ) { + #login_wrap { + width: 290px; + margin-right: -145px; + } +} \ No newline at end of file From 471a98e6f296f5d32779ba2fdd5cd76c93d8d472 Mon Sep 17 00:00:00 2001 From: jyx <1584081113@qq.com> Date: Mon, 7 Jan 2019 12:27:00 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9dao=E5=92=8Cbean?= =?UTF-8?q?=E5=8C=85=E4=BB=A5=E5=8F=8A=E5=AE=9E=E7=8E=B0=E5=88=A9=E6=81=AF?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E4=B8=A4=E4=B8=AA=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/Dao/productMapper.java | 7 +-- ...tionMapping.java => transationMapper.java} | 2 +- .../com/example/demo/Dao/usageDateMapper.java | 11 ++++ .../example/demo/Dao/usageDateMapping.java | 7 --- .../java/com/example/demo/bean/Audit.java | 1 + .../java/com/example/demo/bean/UsageDate.java | 9 ++-- .../circulator/service/CirculatorService.java | 53 +++++++++++++++++-- .../service/controller/NextCirController.java | 36 +++++++++++++ .../service/controller/SumCirController.java | 38 +++++++++++++ .../controller/SumCirculatorController.java | 4 -- 10 files changed, 143 insertions(+), 25 deletions(-) rename demo/src/test/java/com/example/demo/Dao/{transationMapping.java => transationMapper.java} (69%) create mode 100644 demo/src/test/java/com/example/demo/Dao/usageDateMapper.java delete mode 100644 demo/src/test/java/com/example/demo/Dao/usageDateMapping.java create mode 100644 demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java create mode 100644 demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java delete mode 100644 demo/src/test/java/com/example/demo/circulator/service/controller/SumCirculatorController.java diff --git a/demo/src/test/java/com/example/demo/Dao/productMapper.java b/demo/src/test/java/com/example/demo/Dao/productMapper.java index 6a5faa8..800151e 100644 --- a/demo/src/test/java/com/example/demo/Dao/productMapper.java +++ b/demo/src/test/java/com/example/demo/Dao/productMapper.java @@ -8,13 +8,10 @@ import java.util.List; @Mapper public interface productMapper { @Select("select * from product where productNum = #{productNum}") - public Product selectProductByProductNum(String productNum); - - @Select("select intrate from product where productNum = #{productNum}") - public Product selectProductIntrateByProductNum(String productNum); + public Product selectProductByProductNum(long productNum); @Select("select * from product where productName = #{productName}") - public Product selectProductByProductName(String productName); + public Product selectProductByProductName(long productName); @Select("select * from product") public List select(); diff --git a/demo/src/test/java/com/example/demo/Dao/transationMapping.java b/demo/src/test/java/com/example/demo/Dao/transationMapper.java similarity index 69% rename from demo/src/test/java/com/example/demo/Dao/transationMapping.java rename to demo/src/test/java/com/example/demo/Dao/transationMapper.java index 67128f7..1d82127 100644 --- a/demo/src/test/java/com/example/demo/Dao/transationMapping.java +++ b/demo/src/test/java/com/example/demo/Dao/transationMapper.java @@ -3,6 +3,6 @@ package com.example.demo.Dao; import org.apache.ibatis.annotations.Mapper; @Mapper -public interface transationMapping { +public interface transationMapper { } \ No newline at end of file diff --git a/demo/src/test/java/com/example/demo/Dao/usageDateMapper.java b/demo/src/test/java/com/example/demo/Dao/usageDateMapper.java new file mode 100644 index 0000000..ff81952 --- /dev/null +++ b/demo/src/test/java/com/example/demo/Dao/usageDateMapper.java @@ -0,0 +1,11 @@ +package com.example.demo.Dao; + +import com.example.demo.bean.UsageDate; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface usageDateMapper { + @Select("select * from usageDate where check = {#checkNum}") + public UsageDate selectUsageDateByCheckNum(long checkNum); +} diff --git a/demo/src/test/java/com/example/demo/Dao/usageDateMapping.java b/demo/src/test/java/com/example/demo/Dao/usageDateMapping.java deleted file mode 100644 index 7867168..0000000 --- a/demo/src/test/java/com/example/demo/Dao/usageDateMapping.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.demo.Dao; - -import org.apache.ibatis.annotations.Mapper; -@Mapper -public interface usageDateMapping { - -} diff --git a/demo/src/test/java/com/example/demo/bean/Audit.java b/demo/src/test/java/com/example/demo/bean/Audit.java index a9035e7..3b9c377 100644 --- a/demo/src/test/java/com/example/demo/bean/Audit.java +++ b/demo/src/test/java/com/example/demo/bean/Audit.java @@ -18,6 +18,7 @@ public class Audit { private short isSignContract; private String productNum; private int year; + private int equation; public Audit(){}; diff --git a/demo/src/test/java/com/example/demo/bean/UsageDate.java b/demo/src/test/java/com/example/demo/bean/UsageDate.java index 0b6d9a3..953b891 100644 --- a/demo/src/test/java/com/example/demo/bean/UsageDate.java +++ b/demo/src/test/java/com/example/demo/bean/UsageDate.java @@ -7,12 +7,13 @@ import javax.persistence.Entity; @Getter @Entity public class UsageDate { - private String checkNum; - private String productNum; - private String userNum; + private long checkNum; + private long productNum; + private long userNum; private String bankAccount; - private String bankNum; + private int bankNum; private int year; private float amount; private String startTime; + private int equation; } diff --git a/demo/src/test/java/com/example/demo/circulator/service/CirculatorService.java b/demo/src/test/java/com/example/demo/circulator/service/CirculatorService.java index 03eabe9..97beeee 100644 --- a/demo/src/test/java/com/example/demo/circulator/service/CirculatorService.java +++ b/demo/src/test/java/com/example/demo/circulator/service/CirculatorService.java @@ -2,7 +2,9 @@ package com.example.demo.circulator.service; import com.example.demo.Dao.auditMapper; import com.example.demo.Dao.productMapper; +import com.example.demo.Dao.usageDateMapper; import com.example.demo.bean.Product; +import com.example.demo.bean.UsageDate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; @@ -10,16 +12,59 @@ import javax.annotation.PostConstruct; public class CirculatorService { @Autowired + private com.example.demo.Dao.usageDateMapper usageDateMapper; private productMapper productMapper; - private auditMapper auditMapper; @PostConstruct public void init(){} @Transactional //数据库与事物的一致性 - public double countSumCirculator(String userNum,String productNum,float amount,int year){ - Product product = productMapper.selectProductIntrateByProductNum(productNum); + public double Equal_principal_and_interest_repaymentNextCirculator(long checkNum){ + UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum); + int year = usageDate.getYear(); + double amount = usageDate.getAmount(); + long productNum = usageDate.getProductNum(); + + Product product = productMapper.selectProductByProductNum(productNum); + float intrate = product.getIntrate(); + 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; + return next_principal_and_interest; + } + + public double Equal_principal_and_interest_repaymentSumCirculator(long productNum,double amount,int year){ + Product product = productMapper.selectProductByProductNum(productNum); + float intrate = product.getIntrate(); + double rep = Math.pow((1+intrate),year)/(Math.pow((1+intrate),year)-1); + double principal_and_interest = rep * intrate * amount * year; + return principal_and_interest; + } + + public double Equal_principal_repaymentNextCirculator(long checkNum){ + UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum); + int year = usageDate.getYear(); + double amount = usageDate.getAmount(); + long productNum = usageDate.getProductNum(); + + Product product = productMapper.selectProductByProductNum(productNum); + float intrate = product.getIntrate(); + double rep_amount = 0; + intrate /= 12; + int month = year*12; + double next_principal_and_interest = amount/month + (amount - rep_amount) * intrate; + return next_principal_and_interest; + } + + public double Equal_principal_repaymentSumCirculator(long productNum,double amount,int year){ + Product product = productMapper.selectProductByProductNum(productNum); float intrate = product.getIntrate(); - return intrate; + intrate /= 12; + int month = year * 12; + double first_principal_and_interest = amount/month + amount*intrate; + double last_principal_and_interest = amount/month + amount*(1-(month-1)/month)*intrate; + double principal_and_interest = (first_principal_and_interest + last_principal_and_interest)*month/2; + return principal_and_interest; } } diff --git a/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java b/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java new file mode 100644 index 0000000..4fff0f3 --- /dev/null +++ b/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java @@ -0,0 +1,36 @@ +package com.example.demo.circulator.service.controller; + +import com.example.demo.circulator.service.CirculatorService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Controller +public class NextCirController { + //@Autowired + private CirculatorService circulatorService; + + @GetMapping("/cir/next") + public String nextCirculator(HttpServletRequest request,HttpServletResponse response){ + long checkNum = (Long)request.getAttribute("checkNum"); + int equation = (Integer)request.getAttribute("equation"); + double next_principal_and_intrate = 0; + switch (equation){ + case 1: + next_principal_and_intrate = circulatorService.Equal_principal_and_interest_repaymentNextCirculator(checkNum); + break; + case 2: + next_principal_and_intrate = circulatorService.Equal_principal_repaymentNextCirculator(checkNum); + break; + default: + System.out.println("not exit"); + break; + } + next_principal_and_intrate = circulatorService.Equal_principal_and_interest_repaymentNextCirculator(checkNum); + request.setAttribute("next",next_principal_and_intrate); + return "/next"; + } +} diff --git a/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java b/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java new file mode 100644 index 0000000..0645151 --- /dev/null +++ b/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java @@ -0,0 +1,38 @@ +package com.example.demo.circulator.service.controller; + +import com.example.demo.circulator.service.CirculatorService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Controller +public class SumCirController { + //@Autowired + private CirculatorService circulatorService; + + @GetMapping("/cir/sum") + public String SumCirculator(HttpServletRequest request, HttpServletResponse response){ + long productNum = Long.parseLong(request.getParameter("productNum")); + double amount = Double.parseDouble(request.getParameter("amount")); + int year = Integer.parseInt(request.getParameter("year")); + int equation = Integer.parseInt(request.getParameter("equation")); + + double sum_principal_and_intrate = 0; + switch (equation){ + case 1: + sum_principal_and_intrate = circulatorService.Equal_principal_and_interest_repaymentSumCirculator(productNum,amount,year); + break; + case 2: + sum_principal_and_intrate = circulatorService.Equal_principal_repaymentSumCirculator(productNum,amount,year); + break; + default: + System.out.println("not exit"); + break; + } + request.setAttribute("sum",sum_principal_and_intrate); + return "/circulator"; + } +} diff --git a/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirculatorController.java b/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirculatorController.java deleted file mode 100644 index 13d4485..0000000 --- a/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirculatorController.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.example.demo.circulator.service.controller; - -public class SumCirculatorController { -} From 3add1fc53a6d4c9d738fe0648a5e54648f2ada29 Mon Sep 17 00:00:00 2001 From: jyx <1584081113@qq.com> Date: Mon, 7 Jan 2019 12:47:15 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E7=AE=97=E6=B3=95=E7=9A=84=E8=A7=84=E8=8C=83=EF=BC=8C=E4=B8=8A?= =?UTF-8?q?=E5=A1=91=E9=80=A0=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../circulator/service/CirculatorService.java | 70 ------------------- .../service/controller/NextCirController.java | 14 ++-- .../service/controller/SumCirController.java | 15 ++-- 3 files changed, 15 insertions(+), 84 deletions(-) delete mode 100644 demo/src/test/java/com/example/demo/circulator/service/CirculatorService.java diff --git a/demo/src/test/java/com/example/demo/circulator/service/CirculatorService.java b/demo/src/test/java/com/example/demo/circulator/service/CirculatorService.java deleted file mode 100644 index 97beeee..0000000 --- a/demo/src/test/java/com/example/demo/circulator/service/CirculatorService.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.example.demo.circulator.service; - -import com.example.demo.Dao.auditMapper; -import com.example.demo.Dao.productMapper; -import com.example.demo.Dao.usageDateMapper; -import com.example.demo.bean.Product; -import com.example.demo.bean.UsageDate; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.PostConstruct; - -public class CirculatorService { - @Autowired - private com.example.demo.Dao.usageDateMapper usageDateMapper; - private productMapper productMapper; - - @PostConstruct - public void init(){} - - @Transactional //数据库与事物的一致性 - public double Equal_principal_and_interest_repaymentNextCirculator(long checkNum){ - UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum); - int year = usageDate.getYear(); - double amount = usageDate.getAmount(); - long productNum = usageDate.getProductNum(); - - Product product = productMapper.selectProductByProductNum(productNum); - float intrate = product.getIntrate(); - 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; - return next_principal_and_interest; - } - - public double Equal_principal_and_interest_repaymentSumCirculator(long productNum,double amount,int year){ - Product product = productMapper.selectProductByProductNum(productNum); - float intrate = product.getIntrate(); - double rep = Math.pow((1+intrate),year)/(Math.pow((1+intrate),year)-1); - double principal_and_interest = rep * intrate * amount * year; - return principal_and_interest; - } - - public double Equal_principal_repaymentNextCirculator(long checkNum){ - UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum); - int year = usageDate.getYear(); - double amount = usageDate.getAmount(); - long productNum = usageDate.getProductNum(); - - Product product = productMapper.selectProductByProductNum(productNum); - float intrate = product.getIntrate(); - double rep_amount = 0; - intrate /= 12; - int month = year*12; - double next_principal_and_interest = amount/month + (amount - rep_amount) * intrate; - return next_principal_and_interest; - } - - public double Equal_principal_repaymentSumCirculator(long productNum,double amount,int year){ - Product product = productMapper.selectProductByProductNum(productNum); - float intrate = product.getIntrate(); - intrate /= 12; - int month = year * 12; - double first_principal_and_interest = amount/month + amount*intrate; - double last_principal_and_interest = amount/month + amount*(1-(month-1)/month)*intrate; - double principal_and_interest = (first_principal_and_interest + last_principal_and_interest)*month/2; - return principal_and_interest; - } -} diff --git a/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java b/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java index 4fff0f3..91dd649 100644 --- a/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java +++ b/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java @@ -1,7 +1,8 @@ package com.example.demo.circulator.service.controller; -import com.example.demo.circulator.service.CirculatorService; -import org.springframework.beans.factory.annotation.Autowired; +import com.example.demo.circulator.service.CirService; +import com.example.demo.circulator.service.EPAIR_CirService; +import com.example.demo.circulator.service.EPR_CirService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @@ -11,25 +12,24 @@ import javax.servlet.http.HttpServletResponse; @Controller public class NextCirController { //@Autowired - private CirculatorService circulatorService; + private CirService cirService; @GetMapping("/cir/next") public String nextCirculator(HttpServletRequest request,HttpServletResponse response){ long checkNum = (Long)request.getAttribute("checkNum"); int equation = (Integer)request.getAttribute("equation"); - double next_principal_and_intrate = 0; switch (equation){ case 1: - next_principal_and_intrate = circulatorService.Equal_principal_and_interest_repaymentNextCirculator(checkNum); + cirService = new EPAIR_CirService(); break; case 2: - next_principal_and_intrate = circulatorService.Equal_principal_repaymentNextCirculator(checkNum); + cirService = new EPR_CirService(); break; default: System.out.println("not exit"); break; } - next_principal_and_intrate = circulatorService.Equal_principal_and_interest_repaymentNextCirculator(checkNum); + double next_principal_and_intrate = cirService.NextCirculator(checkNum); request.setAttribute("next",next_principal_and_intrate); return "/next"; } diff --git a/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java b/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java index 0645151..64ac7d0 100644 --- a/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java +++ b/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java @@ -1,7 +1,8 @@ package com.example.demo.circulator.service.controller; -import com.example.demo.circulator.service.CirculatorService; -import org.springframework.beans.factory.annotation.Autowired; +import com.example.demo.circulator.service.CirService; +import com.example.demo.circulator.service.EPAIR_CirService; +import com.example.demo.circulator.service.EPR_CirService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @@ -11,7 +12,7 @@ import javax.servlet.http.HttpServletResponse; @Controller public class SumCirController { //@Autowired - private CirculatorService circulatorService; + private CirService cirService; @GetMapping("/cir/sum") public String SumCirculator(HttpServletRequest request, HttpServletResponse response){ @@ -20,18 +21,18 @@ public class SumCirController { int year = Integer.parseInt(request.getParameter("year")); int equation = Integer.parseInt(request.getParameter("equation")); - double sum_principal_and_intrate = 0; switch (equation){ case 1: - sum_principal_and_intrate = circulatorService.Equal_principal_and_interest_repaymentSumCirculator(productNum,amount,year); + cirService = new EPAIR_CirService(); break; case 2: - sum_principal_and_intrate = circulatorService.Equal_principal_repaymentSumCirculator(productNum,amount,year); + cirService = new EPR_CirService(); break; default: - System.out.println("not exit"); + System.out.println("not exit "); break; } + double sum_principal_and_intrate = cirService.SumCirculator(productNum,amount,year); request.setAttribute("sum",sum_principal_and_intrate); return "/circulator"; } From a5c90895cbfb9ac69303971fec2afab4d02b3a28 Mon Sep 17 00:00:00 2001 From: jyx <1584081113@qq.com> Date: Mon, 7 Jan 2019 12:48:53 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E7=AE=97=E6=B3=95=E7=9A=84=E8=A7=84=E8=8C=83=EF=BC=8C=E4=B8=8A?= =?UTF-8?q?=E5=A1=91=E9=80=A0=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/circulator/service/CirService.java | 16 +++++++ .../circulator/service/EPAIR_CirService.java | 40 +++++++++++++++++ .../circulator/service/EPR_CirService.java | 43 +++++++++++++++++++ .../service/controller/NextCirController.java | 2 +- .../service/controller/SumCirController.java | 2 +- 5 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 demo/src/test/java/com/example/demo/circulator/service/CirService.java create mode 100644 demo/src/test/java/com/example/demo/circulator/service/EPAIR_CirService.java create mode 100644 demo/src/test/java/com/example/demo/circulator/service/EPR_CirService.java diff --git a/demo/src/test/java/com/example/demo/circulator/service/CirService.java b/demo/src/test/java/com/example/demo/circulator/service/CirService.java new file mode 100644 index 0000000..c3be9ef --- /dev/null +++ b/demo/src/test/java/com/example/demo/circulator/service/CirService.java @@ -0,0 +1,16 @@ +package com.example.demo.circulator.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.PostConstruct; + +public abstract class CirService { + @PostConstruct + public void init(){} + + @Transactional //数据库与事物的一致性 + public double NextCirculator(long checkNum){return 0;} + public double SumCirculator(long productNum,double amount,int year){return 0;} + +} diff --git a/demo/src/test/java/com/example/demo/circulator/service/EPAIR_CirService.java b/demo/src/test/java/com/example/demo/circulator/service/EPAIR_CirService.java new file mode 100644 index 0000000..e93758b --- /dev/null +++ b/demo/src/test/java/com/example/demo/circulator/service/EPAIR_CirService.java @@ -0,0 +1,40 @@ +package com.example.demo.circulator.service; + +import com.example.demo.Dao.productMapper; +import com.example.demo.Dao.usageDateMapper; +import com.example.demo.bean.Product; +import com.example.demo.bean.UsageDate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.PostConstruct; + +public class EPAIR_CirService extends CirService{ + @Autowired + private usageDateMapper usageDateMapper; + private productMapper productMapper; + + @Transactional //数据库与事物的一致性 + public double NextCirculator(long checkNum){ + UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum); + int year = usageDate.getYear(); + double amount = usageDate.getAmount(); + long productNum = usageDate.getProductNum(); + + Product product = productMapper.selectProductByProductNum(productNum); + float intrate = product.getIntrate(); + 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; + return next_principal_and_interest; + } + + public double SumCirculator(long productNum,double amount,int year){ + Product product = productMapper.selectProductByProductNum(productNum); + float intrate = product.getIntrate(); + double rep = Math.pow((1+intrate),year)/(Math.pow((1+intrate),year)-1); + double principal_and_interest = rep * intrate * amount * year; + return principal_and_interest; + } +} diff --git a/demo/src/test/java/com/example/demo/circulator/service/EPR_CirService.java b/demo/src/test/java/com/example/demo/circulator/service/EPR_CirService.java new file mode 100644 index 0000000..e47223e --- /dev/null +++ b/demo/src/test/java/com/example/demo/circulator/service/EPR_CirService.java @@ -0,0 +1,43 @@ +package com.example.demo.circulator.service; + +import com.example.demo.Dao.productMapper; +import com.example.demo.Dao.usageDateMapper; +import com.example.demo.bean.Product; +import com.example.demo.bean.UsageDate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.PostConstruct; + +public class EPR_CirService extends CirService{ + @Autowired + private usageDateMapper usageDateMapper; + private productMapper productMapper; + + @Transactional //数据库与事物的一致性 + public double NextCirculator(long checkNum){ + UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum); + int year = usageDate.getYear(); + double amount = usageDate.getAmount(); + long productNum = usageDate.getProductNum(); + + Product product = productMapper.selectProductByProductNum(productNum); + float intrate = product.getIntrate(); + double rep_amount = 0; + intrate /= 12; + int month = year*12; + double next_principal_and_interest = amount/month + (amount - rep_amount) * intrate; + return next_principal_and_interest; + } + + public double SumCirculator(long productNum,double amount,int year){ + Product product = productMapper.selectProductByProductNum(productNum); + float intrate = product.getIntrate(); + intrate /= 12; + int month = year * 12; + double first_principal_and_interest = amount/month + amount*intrate; + double last_principal_and_interest = amount/month + amount*(1-(month-1)/month)*intrate; + double principal_and_interest = (first_principal_and_interest + last_principal_and_interest)*month/2; + return principal_and_interest; + } +} diff --git a/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java b/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java index 91dd649..7b1e666 100644 --- a/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java +++ b/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java @@ -26,7 +26,7 @@ public class NextCirController { cirService = new EPR_CirService(); break; default: - System.out.println("not exit"); + System.out.println("not exit!!"); break; } double next_principal_and_intrate = cirService.NextCirculator(checkNum); diff --git a/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java b/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java index 64ac7d0..9b445ce 100644 --- a/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java +++ b/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java @@ -29,7 +29,7 @@ public class SumCirController { cirService = new EPR_CirService(); break; default: - System.out.println("not exit "); + System.out.println("not exit!!"); break; } double sum_principal_and_intrate = cirService.SumCirculator(productNum,amount,year); From 767af1113ddfc57c9fc08ead71c1691be2e70a06 Mon Sep 17 00:00:00 2001 From: Aokiso <1010390029@qq.com> Date: Mon, 7 Jan 2019 09:17:48 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/Dao/transMapper.java | 29 ++++++++++++++++++ .../example/demo/Dao/useageDataMapper.java | 30 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 demo/src/test/java/com/example/demo/Dao/transMapper.java create mode 100644 demo/src/test/java/com/example/demo/Dao/useageDataMapper.java diff --git a/demo/src/test/java/com/example/demo/Dao/transMapper.java b/demo/src/test/java/com/example/demo/Dao/transMapper.java new file mode 100644 index 0000000..6036abd --- /dev/null +++ b/demo/src/test/java/com/example/demo/Dao/transMapper.java @@ -0,0 +1,29 @@ +package com.example.demo.Dao; + +import com.example.demo.bean.transaction; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper +public interface transMapper { + @Select("select * from transaction where transactionNum = #{transactionNum}") + public transaction selectAudioByCheckNum(int transactionNum); + + @Select("select * from transaction") + public List select(); + + @Insert("insert into transaction(transactionNum, payer, payee," + + " transactionTime, transactionAmount, note)" + + " values (#{transactionNum},#{payer},#{payee},#{transactionTime},#{transactionAmount}," + + "#{note})") + public void addTransaction(transaction transactions); + + @Update("update audio set transactionNum=#{transactionNum},payer=#{payer}" + + ",payee=#{payee},transactionTime=#{transactionTime},transactionAmount=#{transactionAmount}," + + "note=#{note}") + public void updateTransaction(transaction transactions); + + @Delete("delete from audio where transactionNum=#{transactionNum}") + public void deleteTransaction(int transactionNum); +} diff --git a/demo/src/test/java/com/example/demo/Dao/useageDataMapper.java b/demo/src/test/java/com/example/demo/Dao/useageDataMapper.java new file mode 100644 index 0000000..dbacb96 --- /dev/null +++ b/demo/src/test/java/com/example/demo/Dao/useageDataMapper.java @@ -0,0 +1,30 @@ +package com.example.demo.Dao; + +import com.example.demo.bean.transaction; +import org.apache.ibatis.annotations.*; + +import java.util.List; + + +@Mapper +public interface useageDataMapper { + @Select("select * from transaction where transactionNum = #{transactionNum}") + public transaction selectAudioByCheckNum(int transactionNum); + + @Select("select * from transaction") + public List select(); + + @Insert("insert into transaction(transactionNum, payer, payee," + + " transactionTime, transactionAmount, note)" + + " values (#{transactionNum},#{payer},#{payee},#{transactionTime},#{transactionAmount}," + + "#{note})") + public void addTransaction(transaction transactions); + + @Update("update audio set transactionNum=#{transactionNum},payer=#{payer}" + + ",payee=#{payee},transactionTime=#{transactionTime},transactionAmount=#{transactionAmount}," + + "note=#{note}") + public void updateTransaction(transaction transactions); + + @Delete("delete from audio where transactionNum=#{transactionNum}") + public void deleteTransaction(int transactionNum); +} From 90ac37bece2e3ae74f269e036d67b07d24a7294b Mon Sep 17 00:00:00 2001 From: Aokiso <1010390029@qq.com> Date: Mon, 7 Jan 2019 09:23:14 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/uiDesigner.xml | 124 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 .idea/uiDesigner.xml diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 593f28809524fddd073b0f77a769cd7909acbb1d Mon Sep 17 00:00:00 2001 From: Aokiso <1010390029@qq.com> Date: Mon, 7 Jan 2019 14:46:35 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/Dao/auditMapper.java | 4 +- .../java/com/example/demo/Dao/bankMapper.java | 2 +- .../demo/Dao/productHistroyMapper.java | 31 ++++++ .../com/example/demo/Dao/transMapper.java | 10 +- .../example/demo/Dao/transationMapper.java | 8 -- .../example/demo/Dao/useageDataMapper.java | 32 +++---- .../example/demo/Dao/userBankIdentify.java | 26 +++++ .../java/com/example/demo/Dao/userMapper.java | 4 +- .../java/com/example/demo/bean/Audit.java | 96 ++----------------- .../test/java/com/example/demo/bean/Bank.java | 31 ++---- .../java/com/example/demo/bean/Manager.java | 43 ++------- .../java/com/example/demo/bean/Product.java | 65 ++----------- .../com/example/demo/bean/ProductHistroy.java | 37 +++++++ .../com/example/demo/bean/Transaction.java | 55 ++--------- .../java/com/example/demo/bean/UsageDate.java | 2 + .../test/java/com/example/demo/bean/User.java | 87 ++--------------- .../example/demo/bean/UserBankIdentify.java | 2 +- 17 files changed, 166 insertions(+), 369 deletions(-) create mode 100644 demo/src/test/java/com/example/demo/Dao/productHistroyMapper.java delete mode 100644 demo/src/test/java/com/example/demo/Dao/transationMapper.java create mode 100644 demo/src/test/java/com/example/demo/Dao/userBankIdentify.java create mode 100644 demo/src/test/java/com/example/demo/bean/ProductHistroy.java diff --git a/demo/src/test/java/com/example/demo/Dao/auditMapper.java b/demo/src/test/java/com/example/demo/Dao/auditMapper.java index 9af18e7..354e466 100644 --- a/demo/src/test/java/com/example/demo/Dao/auditMapper.java +++ b/demo/src/test/java/com/example/demo/Dao/auditMapper.java @@ -12,7 +12,7 @@ import java.util.List; @Mapper public interface auditMapper { @Select("select * from audit where checkNum = #{checkNum}") - public Audit selectAudioByCheckNum(String checkNum); + public Audit selectAudioByCheckNum(int checkNum); @Select("select * from audit") public List select(); @@ -31,5 +31,5 @@ public interface auditMapper { public void updateAudit(Audit audits); @Delete("delete from audit where checkNum=#{checkNum}") - public void deleteAudit(String checkNum); + public void deleteAudit(int checkNum); } diff --git a/demo/src/test/java/com/example/demo/Dao/bankMapper.java b/demo/src/test/java/com/example/demo/Dao/bankMapper.java index 91469e7..2c89c79 100644 --- a/demo/src/test/java/com/example/demo/Dao/bankMapper.java +++ b/demo/src/test/java/com/example/demo/Dao/bankMapper.java @@ -9,7 +9,7 @@ import java.util.List; public interface bankMapper { @Select("select * from bank where bankNum = #{bankNum}") - public Bank selectBankByBankNum(String bankNum); + public Bank selectBankByBankNum(int bankNum); @Select("select * from bank where bankName = #{bankName}") public Bank selectBankByBankName(String bankName); diff --git a/demo/src/test/java/com/example/demo/Dao/productHistroyMapper.java b/demo/src/test/java/com/example/demo/Dao/productHistroyMapper.java new file mode 100644 index 0000000..2156934 --- /dev/null +++ b/demo/src/test/java/com/example/demo/Dao/productHistroyMapper.java @@ -0,0 +1,31 @@ +package com.example.demo.Dao; + + +import com.example.demo.bean.ProductHistroy; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper +public interface productHistroyMapper { + @Select("select * from producthistroy where productNum = #{productNum}") + public ProductHistroy selectAudioByCheckNum(int productNum); + + @Select("select * from producthistroy") + public List select(); + + @Insert("insert into productHistroy(productNum, productName, category, " + + "intrate, bankNum, productDescription, uploadTime, deleteTime, alterTime)" + + " values (#{productNum},#{productName},#{category},#{intrate},#{bankNum}," + + "#{productDescription},#{uploadTime},#{deleteTime},#{alterTime})") + public void addProductHistroy(ProductHistroy productHistroys); + + @Update("update producthistroy set productNum=#{productNum},productName=#{productName}" + + ",category=#{category},intrate=#{intrate},bankNum=#{bankNum}," + + "productDescription=#{productDescription},uploadTime=#{uploadTime},deleteTime=#{deleteTime}," + + "alterTime=#{alterTime}where productNum=#{productNum}") + public void updateProductHistroy(ProductHistroy productHistroys); + + @Delete("delete from producthistroy where productNum=#{productNum}") + public void deleteProductHistroy(int productNum); +} diff --git a/demo/src/test/java/com/example/demo/Dao/transMapper.java b/demo/src/test/java/com/example/demo/Dao/transMapper.java index 6036abd..4aaf7a5 100644 --- a/demo/src/test/java/com/example/demo/Dao/transMapper.java +++ b/demo/src/test/java/com/example/demo/Dao/transMapper.java @@ -1,6 +1,6 @@ package com.example.demo.Dao; -import com.example.demo.bean.transaction; +import com.example.demo.bean.Transaction; import org.apache.ibatis.annotations.*; import java.util.List; @@ -8,21 +8,21 @@ import java.util.List; @Mapper public interface transMapper { @Select("select * from transaction where transactionNum = #{transactionNum}") - public transaction selectAudioByCheckNum(int transactionNum); + public Transaction selectAudioByCheckNum(int transactionNum); @Select("select * from transaction") - public List select(); + public List select(); @Insert("insert into transaction(transactionNum, payer, payee," + " transactionTime, transactionAmount, note)" + " values (#{transactionNum},#{payer},#{payee},#{transactionTime},#{transactionAmount}," + "#{note})") - public void addTransaction(transaction transactions); + public void addTransaction(Transaction transactions); @Update("update audio set transactionNum=#{transactionNum},payer=#{payer}" + ",payee=#{payee},transactionTime=#{transactionTime},transactionAmount=#{transactionAmount}," + "note=#{note}") - public void updateTransaction(transaction transactions); + public void updateTransaction(Transaction transactions); @Delete("delete from audio where transactionNum=#{transactionNum}") public void deleteTransaction(int transactionNum); diff --git a/demo/src/test/java/com/example/demo/Dao/transationMapper.java b/demo/src/test/java/com/example/demo/Dao/transationMapper.java deleted file mode 100644 index 1d82127..0000000 --- a/demo/src/test/java/com/example/demo/Dao/transationMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.example.demo.Dao; - -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface transationMapper { - -} \ No newline at end of file diff --git a/demo/src/test/java/com/example/demo/Dao/useageDataMapper.java b/demo/src/test/java/com/example/demo/Dao/useageDataMapper.java index dbacb96..bb33fb8 100644 --- a/demo/src/test/java/com/example/demo/Dao/useageDataMapper.java +++ b/demo/src/test/java/com/example/demo/Dao/useageDataMapper.java @@ -1,6 +1,6 @@ package com.example.demo.Dao; -import com.example.demo.bean.transaction; +import com.example.demo.bean.UsageDate; import org.apache.ibatis.annotations.*; import java.util.List; @@ -8,23 +8,23 @@ import java.util.List; @Mapper public interface useageDataMapper { - @Select("select * from transaction where transactionNum = #{transactionNum}") - public transaction selectAudioByCheckNum(int transactionNum); + @Select("select * from usagedate where transactionNum = #{transactionNum}") + public UsageDate selectUsageDateByCheckNum(int checkNum); - @Select("select * from transaction") - public List select(); + @Select("select * from usagedate") + public List select(); - @Insert("insert into transaction(transactionNum, payer, payee," + - " transactionTime, transactionAmount, note)" + - " values (#{transactionNum},#{payer},#{payee},#{transactionTime},#{transactionAmount}," + - "#{note})") - public void addTransaction(transaction transactions); + @Insert("insert into usagedate(checkNum, productNum, userNum," + + " bankAccount, bankNum, year, amount, startTime)" + + " values (#{checkNum},#{productNum},#{userNum},#{bankAccount},#{bankNum}," + + "#{year},#{amount},#{startTime})") + public void addUsageDate(UsageDate usageDate); - @Update("update audio set transactionNum=#{transactionNum},payer=#{payer}" + - ",payee=#{payee},transactionTime=#{transactionTime},transactionAmount=#{transactionAmount}," + - "note=#{note}") - public void updateTransaction(transaction transactions); + @Update("update usagedate set checkNum=#{checkNum},productNum=#{productNum}" + + ",userNum=#{userNum},bankAccount=#{bankAccount},bankNum=#{bankNum}," + + "year=#{year},amount=#{amount},startTime=#{startTime}") + public void updateUsageDate(UsageDate usageDate); - @Delete("delete from audio where transactionNum=#{transactionNum}") - public void deleteTransaction(int transactionNum); + @Delete("delete from usagedate where checkNum=#{checkNum}") + public void deleteUsageDate(int checkNum); } diff --git a/demo/src/test/java/com/example/demo/Dao/userBankIdentify.java b/demo/src/test/java/com/example/demo/Dao/userBankIdentify.java new file mode 100644 index 0000000..fabaf77 --- /dev/null +++ b/demo/src/test/java/com/example/demo/Dao/userBankIdentify.java @@ -0,0 +1,26 @@ +package com.example.demo.Dao; + +import com.example.demo.bean.UserBankIdentify; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper +public interface userBankIdentify { + @Select("select * from userbankidentify where userName = #{userName}") + public UserBankIdentify selectUsageDateByCheckNum(String userName); + + @Select("select * from userBankIdentify") + public List select(); + + @Insert("insert into usagedate(userName, bankAccount, bankAccountIdentify)" + + " values (#{userName},#{bankAccount},#{bankAccountIdentify})") + public void addUserBankIdentify(UserBankIdentify userBankIdentifys); + + @Update("update usagedate set userName=#{userName},bankAccount=#{bankAccount}" + + ",bankAccountIdentify=#{bankAccountIdentify}") + public void updateUserBankIdentify(UserBankIdentify userBankIdentifys); + + @Delete("delete from usagedate where userName=#{userName}") + public void deleteUserBankIdentify(String userName); +} diff --git a/demo/src/test/java/com/example/demo/Dao/userMapper.java b/demo/src/test/java/com/example/demo/Dao/userMapper.java index f16e7a3..0399e77 100644 --- a/demo/src/test/java/com/example/demo/Dao/userMapper.java +++ b/demo/src/test/java/com/example/demo/Dao/userMapper.java @@ -8,7 +8,7 @@ import java.util.List; @Mapper public interface userMapper { @Select("select * from user where userNum = #{userNum}") - public User selectUserByuserNum(String userNum); + public User selectUserByuserNum(int userNum); @Select("select * from user") public List select(); @@ -26,5 +26,5 @@ public interface userMapper { public void updateUser(User users); @Delete("delete from user where userNum=#{userNum}") - public void deleteUser(String userNum); + public void deleteUser(int userNum); } diff --git a/demo/src/test/java/com/example/demo/bean/Audit.java b/demo/src/test/java/com/example/demo/bean/Audit.java index 3b9c377..a6d1085 100644 --- a/demo/src/test/java/com/example/demo/bean/Audit.java +++ b/demo/src/test/java/com/example/demo/bean/Audit.java @@ -1,104 +1,28 @@ package com.example.demo.bean; -import javax.persistence.*; +import lombok.Getter; +import lombok.Setter; +import javax.persistence.*; +@Getter +@Setter @Entity public class Audit { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private String checkNum; - private String userNum; - private float amount; + private int checkNum; + private int userNum; + private double amount; private String applyTime; private String bankAccount; private int checkState; - private String contractNum; + private int contractNum; private short isSignContract; - private String productNum; + private int productNum; private int year; private int equation; public Audit(){}; - - public int getYear() { - return year; - } - - public void setYear(int year) { - this.year = year; - } - - public String getProductNum() { - return productNum; - } - - public void setProductNum(String productNum) { - this.productNum = productNum; - } - - public short getIsSignContract() { - return isSignContract; - } - - public void setIsSignContract(short isSignContract) { - this.isSignContract = isSignContract; - } - - public String getContractNum() { - return contractNum; - } - - public void setContractNum(String contractNum) { - this.contractNum = contractNum; - } - - public int getCheckState() { - return checkState; - } - - public void setCheckState(int checkState) { - this.checkState = checkState; - } - - public String getCheckNum() { - return checkNum; - } - - public void setCheckNum(String checkNum) { - this.checkNum = checkNum; - } - - public float getAmount() { - return amount; - } - - public void setAmount(float amount) { - this.amount = amount; - } - - public String getBankAccount() { - return bankAccount; - } - - public void setBankAccount(String bankAccount) { - this.bankAccount = bankAccount; - } - - public String getApplyTime() { - return applyTime; - } - - public void setApplyTime(String applyTime) { - this.applyTime = applyTime; - } - - public String getUserNum() { - return userNum; - } - - public void setUserNum(String userNum) { - this.userNum = userNum; - } } diff --git a/demo/src/test/java/com/example/demo/bean/Bank.java b/demo/src/test/java/com/example/demo/bean/Bank.java index 51b1b10..5db2090 100644 --- a/demo/src/test/java/com/example/demo/bean/Bank.java +++ b/demo/src/test/java/com/example/demo/bean/Bank.java @@ -1,37 +1,18 @@ package com.example.demo.bean; +import lombok.Getter; +import lombok.Setter; + import javax.persistence.*; +@Getter +@Setter @Entity public class Bank { - private String bankNum; + private int bankNum; private String bankName; private String contact;//联系方式 public Bank(){}; - - public String getBankNum() { - return bankNum; - } - - public void setBankNum(String bankNum) { - this.bankNum = bankNum; - } - - public String getContact() { - return contact; - } - - public void setContact(String contact) { - this.contact = contact; - } - - public String getBankName() { - return bankName; - } - - public void setBankName(String bankName) { - this.bankName = bankName; - } } diff --git a/demo/src/test/java/com/example/demo/bean/Manager.java b/demo/src/test/java/com/example/demo/bean/Manager.java index 2d84b3b..83f7476 100644 --- a/demo/src/test/java/com/example/demo/bean/Manager.java +++ b/demo/src/test/java/com/example/demo/bean/Manager.java @@ -1,15 +1,20 @@ package com.example.demo.bean; +import lombok.Getter; +import lombok.Setter; + import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +@Getter +@Setter @Entity public class Manager { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private String managerNum; + private int managerNum; private String managerName; private String managerPwd; private String managerRight; @@ -17,43 +22,11 @@ public class Manager { public Manager(){}; - public String getTelephoneNum() { - return telephoneNum; - } - - public void setTelephoneNum(String telephoneNum) { - this.telephoneNum = telephoneNum; - } - - public String getManagerRight() { - return managerRight; - } - - public void setManagerRight(String managerRight) { - this.managerRight = managerRight; - } - - public String getManagerPwd() { - return managerPwd; - } - - public void setManagerPwd(String managerPwd) { - this.managerPwd = managerPwd; - } - - public String getManagerName() { - return managerName; - } - - public void setManagerName(String managerName) { - this.managerName = managerName; - } - - public String getManagerNum() { + public int getManagerNum() { return managerNum; } - public void setManagerNum(String managerNum) { + public void setManagerNum(int managerNum) { this.managerNum = managerNum; } } diff --git a/demo/src/test/java/com/example/demo/bean/Product.java b/demo/src/test/java/com/example/demo/bean/Product.java index 4f74c16..1498502 100644 --- a/demo/src/test/java/com/example/demo/bean/Product.java +++ b/demo/src/test/java/com/example/demo/bean/Product.java @@ -1,77 +1,26 @@ package com.example.demo.bean; +import lombok.Getter; +import lombok.Setter; + import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +@Getter +@Setter @Entity public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private String productNum; + private int productNum; private String productName; private String category; private float intrate; - private String bankNum; + private int bankNum; private String productDescription; private String pictureAddress; public Product(){}; - - public String getPictureAddress() { - return pictureAddress; - } - - public void setPictureAddress(String pictureAddress) { - this.pictureAddress = pictureAddress; - } - - public String getProductDescription() { - return productDescription; - } - - public void setProductDescription(String productDescription) { - this.productDescription = productDescription; - } - - public String getBankNum() { - return bankNum; - } - - public void setBankNum(String bankNum) { - this.bankNum = bankNum; - } - - public float getIntrate() { - return intrate; - } - - public void setIntrate(float intrate) { - this.intrate = intrate; - } - - public String getCategory() { - return category; - } - - public void setCategory(String category) { - this.category = category; - } - - public String getProductName() { - return productName; - } - - public void setProductName(String productName) { - this.productName = productName; - } - - public String getProductNum() { - return productNum; - } - - public void setProductNum(String productNum) { - this.productNum = productNum; - } } diff --git a/demo/src/test/java/com/example/demo/bean/ProductHistroy.java b/demo/src/test/java/com/example/demo/bean/ProductHistroy.java new file mode 100644 index 0000000..3a84063 --- /dev/null +++ b/demo/src/test/java/com/example/demo/bean/ProductHistroy.java @@ -0,0 +1,37 @@ +package com.example.demo.bean; + + +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +@Getter +@Setter +public class ProductHistroy { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int productNum; + private int bankNum; + private String productName; + private String category; + private float intrate; + private String productDescription; + private String upLoadTime; + private String deleteTime; + private String alterTime; + + public ProductHistroy(){}; + + public int getProductNum() { + return productNum; + } + + public void setProductNum(int productNum) { + this.productNum = productNum; + } +} diff --git a/demo/src/test/java/com/example/demo/bean/Transaction.java b/demo/src/test/java/com/example/demo/bean/Transaction.java index c3bb192..c6291cf 100644 --- a/demo/src/test/java/com/example/demo/bean/Transaction.java +++ b/demo/src/test/java/com/example/demo/bean/Transaction.java @@ -1,15 +1,20 @@ package com.example.demo.bean; +import lombok.Getter; +import lombok.Setter; + import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +@Getter +@Setter @Entity public class Transaction { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private String transaction; + private int transactionNum; private String payer; private String payee; private float transactionTime; @@ -17,52 +22,4 @@ public class Transaction { private String note; public Transaction(){}; - - public String getNote() { - return note; - } - - public void setNote(String note) { - this.note = note; - } - - public float getTransactionAmount() { - return transactionAmount; - } - - public void setTransactionAmount(float transactionAmount) { - this.transactionAmount = transactionAmount; - } - - public float getTransactionTime() { - return transactionTime; - } - - public void setTransactionTime(float transactionTime) { - this.transactionTime = transactionTime; - } - - public String getPayee() { - return payee; - } - - public void setPayee(String payee) { - this.payee = payee; - } - - public String getPayer() { - return payer; - } - - public void setPayer(String payer) { - this.payer = payer; - } - - public String getTransaction() { - return transaction; - } - - public void setTransaction(String transaction) { - this.transaction = transaction; - } } diff --git a/demo/src/test/java/com/example/demo/bean/UsageDate.java b/demo/src/test/java/com/example/demo/bean/UsageDate.java index 953b891..76d44c2 100644 --- a/demo/src/test/java/com/example/demo/bean/UsageDate.java +++ b/demo/src/test/java/com/example/demo/bean/UsageDate.java @@ -15,5 +15,7 @@ public class UsageDate { private int year; private float amount; private String startTime; + + public UsageDate(){}; private int equation; } diff --git a/demo/src/test/java/com/example/demo/bean/User.java b/demo/src/test/java/com/example/demo/bean/User.java index 6cabcb9..964c3a6 100644 --- a/demo/src/test/java/com/example/demo/bean/User.java +++ b/demo/src/test/java/com/example/demo/bean/User.java @@ -1,15 +1,20 @@ package com.example.demo.bean; +import lombok.Getter; +import lombok.Setter; + import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +@Getter +@Setter @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private String userNum; + private int userNum; private String userName; private String userPwd; private String userRight; @@ -21,84 +26,4 @@ public class User { private String registerTime; public User(){}; - - public String getRegisterTime() { - return registerTime; - } - - public void setRegisterTime(String registerTime) { - this.registerTime = registerTime; - } - - public int getIsIdentify() { - return isIdentify; - } - - public void setIsIdentify(int isIdentify) { - this.isIdentify = isIdentify; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getTelephoneNum() { - return telephoneNum; - } - - public void setTelephoneNum(String telephoneNum) { - this.telephoneNum = telephoneNum; - } - - public String getIdNum() { - return idNum; - } - - public void setIdNum(String idNum) { - this.idNum = idNum; - } - - public String getTrueName() { - return trueName; - } - - public void setTrueName(String trueName) { - this.trueName = trueName; - } - - public String getUserRight() { - return userRight; - } - - public void setUserRight(String userRight) { - this.userRight = userRight; - } - - public String getUserPwd() { - return userPwd; - } - - public void setUserPwd(String userPwd) { - this.userPwd = userPwd; - } - - public String getUserName() { - return userName; - } - - public void setUserName(String userName) { - this.userName = userName; - } - - public String getUserNum() { - return userNum; - } - - public void setUserNum(String userNum) { - this.userNum = userNum; - } } diff --git a/demo/src/test/java/com/example/demo/bean/UserBankIdentify.java b/demo/src/test/java/com/example/demo/bean/UserBankIdentify.java index 84ef770..f4bff53 100644 --- a/demo/src/test/java/com/example/demo/bean/UserBankIdentify.java +++ b/demo/src/test/java/com/example/demo/bean/UserBankIdentify.java @@ -7,7 +7,7 @@ import javax.persistence.Entity; @Getter @Entity public class UserBankIdentify { - private String userNum; + private String userName; private String bankAccount; private short bankAccountIdentify; } From c8a6e33be71649600bd96fe33a143af9e096ad0b Mon Sep 17 00:00:00 2001 From: Aokiso <1010390029@qq.com> Date: Mon, 7 Jan 2019 14:51:24 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/libraries/Maven__javax_servlet_jstl_1_2.xml | 13 +++++++++++++ ...ache_tomcat_embed_tomcat_embed_jasper_9_0_13.xml | 13 +++++++++++++ .../Maven__org_eclipse_jdt_ecj_3_13_102.xml | 13 +++++++++++++ .../libraries/Maven__org_mybatis_mybatis_3_4_0.xml | 13 +++++++++++++ .../libraries/Maven__org_mybatis_mybatis_3_4_6.xml | 13 +++++++++++++ .../Maven__org_mybatis_mybatis_spring_1_3_0.xml | 13 +++++++++++++ .../Maven__org_mybatis_mybatis_spring_1_3_2.xml | 13 +++++++++++++ ...boot_mybatis_spring_boot_autoconfigure_1_1_1.xml | 13 +++++++++++++ ...boot_mybatis_spring_boot_autoconfigure_1_3_2.xml | 13 +++++++++++++ ...pring_boot_mybatis_spring_boot_starter_1_1_1.xml | 13 +++++++++++++ ...pring_boot_mybatis_spring_boot_starter_1_3_2.xml | 13 +++++++++++++ .../Maven__org_projectlombok_lombok_1_18_2.xml | 13 +++++++++++++ ...g_boot_configuration_processor_2_1_1_RELEASE.xml | 13 +++++++++++++ ...work_boot_spring_boot_devtools_2_1_1_RELEASE.xml | 13 +++++++++++++ 14 files changed, 182 insertions(+) create mode 100644 .idea/libraries/Maven__javax_servlet_jstl_1_2.xml create mode 100644 .idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_jasper_9_0_13.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jdt_ecj_3_13_102.xml create mode 100644 .idea/libraries/Maven__org_mybatis_mybatis_3_4_0.xml create mode 100644 .idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml create mode 100644 .idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_0.xml create mode 100644 .idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml create mode 100644 .idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_1_1.xml create mode 100644 .idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_3_2.xml create mode 100644 .idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_1_1.xml create mode 100644 .idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_3_2.xml create mode 100644 .idea/libraries/Maven__org_projectlombok_lombok_1_18_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_1_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_1_1_RELEASE.xml diff --git a/.idea/libraries/Maven__javax_servlet_jstl_1_2.xml b/.idea/libraries/Maven__javax_servlet_jstl_1_2.xml new file mode 100644 index 0000000..f329893 --- /dev/null +++ b/.idea/libraries/Maven__javax_servlet_jstl_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_jasper_9_0_13.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_jasper_9_0_13.xml new file mode 100644 index 0000000..f0ca441 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_jasper_9_0_13.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jdt_ecj_3_13_102.xml b/.idea/libraries/Maven__org_eclipse_jdt_ecj_3_13_102.xml new file mode 100644 index 0000000..74c992f --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jdt_ecj_3_13_102.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_mybatis_3_4_0.xml b/.idea/libraries/Maven__org_mybatis_mybatis_3_4_0.xml new file mode 100644 index 0000000..655ae2e --- /dev/null +++ b/.idea/libraries/Maven__org_mybatis_mybatis_3_4_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml b/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml new file mode 100644 index 0000000..377b7a7 --- /dev/null +++ b/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_0.xml b/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_0.xml new file mode 100644 index 0000000..bd108d5 --- /dev/null +++ b/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml b/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml new file mode 100644 index 0000000..713f604 --- /dev/null +++ b/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_1_1.xml b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_1_1.xml new file mode 100644 index 0000000..218b48a --- /dev/null +++ b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_3_2.xml b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_3_2.xml new file mode 100644 index 0000000..af2905f --- /dev/null +++ b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_1_1.xml b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_1_1.xml new file mode 100644 index 0000000..77694f1 --- /dev/null +++ b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_3_2.xml b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_3_2.xml new file mode 100644 index 0000000..6cce5e6 --- /dev/null +++ b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_projectlombok_lombok_1_18_2.xml b/.idea/libraries/Maven__org_projectlombok_lombok_1_18_2.xml new file mode 100644 index 0000000..638f01b --- /dev/null +++ b/.idea/libraries/Maven__org_projectlombok_lombok_1_18_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_1_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_1_RELEASE.xml new file mode 100644 index 0000000..4e07165 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_1_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_1_1_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_1_1_RELEASE.xml new file mode 100644 index 0000000..d688488 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_1_1_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file From 5c8bec7f35ca7ca0962c92d4940205780df98ff9 Mon Sep 17 00:00:00 2001 From: Aokiso <1010390029@qq.com> Date: Mon, 7 Jan 2019 15:05:54 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/Dao/usageDateMapper.java | 27 ++++++++++++++--- .../example/demo/Dao/useageDataMapper.java | 30 ------------------- 2 files changed, 23 insertions(+), 34 deletions(-) delete mode 100644 demo/src/test/java/com/example/demo/Dao/useageDataMapper.java diff --git a/demo/src/test/java/com/example/demo/Dao/usageDateMapper.java b/demo/src/test/java/com/example/demo/Dao/usageDateMapper.java index ff81952..b4edeb8 100644 --- a/demo/src/test/java/com/example/demo/Dao/usageDateMapper.java +++ b/demo/src/test/java/com/example/demo/Dao/usageDateMapper.java @@ -1,11 +1,30 @@ package com.example.demo.Dao; import com.example.demo.bean.UsageDate; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.*; + +import java.util.List; + @Mapper public interface usageDateMapper { - @Select("select * from usageDate where check = {#checkNum}") - public UsageDate selectUsageDateByCheckNum(long checkNum); + @Select("select * from usagedate where transactionNum = #{transactionNum}") + public UsageDate selectUsageDateByCheckNum(int checkNum); + + @Select("select * from usagedate") + public List select(); + + @Insert("insert into usagedate(checkNum, productNum, userNum," + + " bankAccount, bankNum, year, amount, startTime)" + + " values (#{checkNum},#{productNum},#{userNum},#{bankAccount},#{bankNum}," + + "#{year},#{amount},#{startTime})") + public void addUsageDate(UsageDate usageDate); + + @Update("update usagedate set checkNum=#{checkNum},productNum=#{productNum}" + + ",userNum=#{userNum},bankAccount=#{bankAccount},bankNum=#{bankNum}," + + "year=#{year},amount=#{amount},startTime=#{startTime}") + public void updateUsageDate(UsageDate usageDate); + + @Delete("delete from usagedate where checkNum=#{checkNum}") + public void deleteUsageDate(int checkNum); } diff --git a/demo/src/test/java/com/example/demo/Dao/useageDataMapper.java b/demo/src/test/java/com/example/demo/Dao/useageDataMapper.java deleted file mode 100644 index bb33fb8..0000000 --- a/demo/src/test/java/com/example/demo/Dao/useageDataMapper.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.example.demo.Dao; - -import com.example.demo.bean.UsageDate; -import org.apache.ibatis.annotations.*; - -import java.util.List; - - -@Mapper -public interface useageDataMapper { - @Select("select * from usagedate where transactionNum = #{transactionNum}") - public UsageDate selectUsageDateByCheckNum(int checkNum); - - @Select("select * from usagedate") - public List select(); - - @Insert("insert into usagedate(checkNum, productNum, userNum," + - " bankAccount, bankNum, year, amount, startTime)" + - " values (#{checkNum},#{productNum},#{userNum},#{bankAccount},#{bankNum}," + - "#{year},#{amount},#{startTime})") - public void addUsageDate(UsageDate usageDate); - - @Update("update usagedate set checkNum=#{checkNum},productNum=#{productNum}" + - ",userNum=#{userNum},bankAccount=#{bankAccount},bankNum=#{bankNum}," + - "year=#{year},amount=#{amount},startTime=#{startTime}") - public void updateUsageDate(UsageDate usageDate); - - @Delete("delete from usagedate where checkNum=#{checkNum}") - public void deleteUsageDate(int checkNum); -} From 83207439658b6a7b4bb7edfe5313e3409b33d169 Mon Sep 17 00:00:00 2001 From: Aokiso <1010390029@qq.com> Date: Mon, 7 Jan 2019 16:44:53 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Maven__org_mybatis_mybatis_3_4_6.xml | 13 ---- ...aven__org_mybatis_mybatis_spring_1_3_2.xml | 13 ---- ...ybatis_spring_boot_autoconfigure_1_3_2.xml | 13 ---- ...boot_mybatis_spring_boot_starter_1_3_2.xml | 13 ---- .../demo/Dao/productHistroyMapper.java | 16 ++-- .../com/example/demo/Dao/productMapper.java | 4 +- .../java/com/example/demo/bean/Product.java | 56 ++++++++++++++ .../com/example/demo/bean/ProductHistroy.java | 73 +++++++++++++++++++ .../demo/productService/tools/addPro.java | 26 +++++++ .../demo/productService/tools/delectPro.java | 20 +++++ .../demo/productService/tools/nowTime.java | 14 ++++ .../demo/productService/tools/record.java | 5 ++ .../demo/productService/tools/updatePro.java | 26 +++++++ 13 files changed, 230 insertions(+), 62 deletions(-) delete mode 100644 .idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml delete mode 100644 .idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml delete mode 100644 .idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_3_2.xml delete mode 100644 .idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_3_2.xml create mode 100644 demo/src/test/java/com/example/demo/productService/tools/addPro.java create mode 100644 demo/src/test/java/com/example/demo/productService/tools/delectPro.java create mode 100644 demo/src/test/java/com/example/demo/productService/tools/nowTime.java create mode 100644 demo/src/test/java/com/example/demo/productService/tools/record.java create mode 100644 demo/src/test/java/com/example/demo/productService/tools/updatePro.java diff --git a/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml b/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml deleted file mode 100644 index 377b7a7..0000000 --- a/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml b/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml deleted file mode 100644 index 713f604..0000000 --- a/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_3_2.xml b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_3_2.xml deleted file mode 100644 index af2905f..0000000 --- a/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_3_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_3_2.xml b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_3_2.xml deleted file mode 100644 index 6cce5e6..0000000 --- a/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_3_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/demo/src/test/java/com/example/demo/Dao/productHistroyMapper.java b/demo/src/test/java/com/example/demo/Dao/productHistroyMapper.java index 2156934..0f2661f 100644 --- a/demo/src/test/java/com/example/demo/Dao/productHistroyMapper.java +++ b/demo/src/test/java/com/example/demo/Dao/productHistroyMapper.java @@ -20,12 +20,12 @@ public interface productHistroyMapper { "#{productDescription},#{uploadTime},#{deleteTime},#{alterTime})") public void addProductHistroy(ProductHistroy productHistroys); - @Update("update producthistroy set productNum=#{productNum},productName=#{productName}" + - ",category=#{category},intrate=#{intrate},bankNum=#{bankNum}," + - "productDescription=#{productDescription},uploadTime=#{uploadTime},deleteTime=#{deleteTime}," + - "alterTime=#{alterTime}where productNum=#{productNum}") - public void updateProductHistroy(ProductHistroy productHistroys); - - @Delete("delete from producthistroy where productNum=#{productNum}") - public void deleteProductHistroy(int productNum); +// @Update("update producthistroy set productNum=#{productNum},productName=#{productName}" + +// ",category=#{category},intrate=#{intrate},bankNum=#{bankNum}," + +// "productDescription=#{productDescription},uploadTime=#{uploadTime},deleteTime=#{deleteTime}," + +// "alterTime=#{alterTime}where productNum=#{productNum}") +// public void updateProductHistroy(ProductHistroy productHistroys); + +// @Delete("delete from producthistroy where productNum=#{productNum}") +// public void deleteProductHistroy(int productNum); } diff --git a/demo/src/test/java/com/example/demo/Dao/productMapper.java b/demo/src/test/java/com/example/demo/Dao/productMapper.java index 800151e..638b330 100644 --- a/demo/src/test/java/com/example/demo/Dao/productMapper.java +++ b/demo/src/test/java/com/example/demo/Dao/productMapper.java @@ -25,8 +25,8 @@ public interface productMapper { @Update("update product set productNum=#{productNum},productName=#{productName}" + ",category=#{category},intrate=#{intrate},bankNum=#{bankNum}," + "productDescription=#{productDescription},pictureAddress=#{pictureAddress}") - public void updateAudio(Product products); + public void updateProduct(Product products); @Delete("delete from product where productNum=#{productNum}") - public void deleteAudio(String productNum); + public void deleteProduct(int productNum); } diff --git a/demo/src/test/java/com/example/demo/bean/Product.java b/demo/src/test/java/com/example/demo/bean/Product.java index 1498502..754ac93 100644 --- a/demo/src/test/java/com/example/demo/bean/Product.java +++ b/demo/src/test/java/com/example/demo/bean/Product.java @@ -23,4 +23,60 @@ public class Product { private String pictureAddress; public Product(){}; + + public String getProductName() { + return productName; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getPictureAddress() { + return pictureAddress; + } + + public void setPictureAddress(String pictureAddress) { + this.pictureAddress = pictureAddress; + } + + public String getProductDescription() { + return productDescription; + } + + public void setProductDescription(String productDescription) { + this.productDescription = productDescription; + } + + public int getBankNum() { + return bankNum; + } + + public void setBankNum(int bankNum) { + this.bankNum = bankNum; + } + + public float getIntrate() { + return intrate; + } + + public void setIntrate(float intrate) { + this.intrate = intrate; + } + + public int getProductNum() { + return productNum; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public void setProductNum(int productNum) { + this.productNum = productNum; + } } diff --git a/demo/src/test/java/com/example/demo/bean/ProductHistroy.java b/demo/src/test/java/com/example/demo/bean/ProductHistroy.java index 3a84063..95c1f24 100644 --- a/demo/src/test/java/com/example/demo/bean/ProductHistroy.java +++ b/demo/src/test/java/com/example/demo/bean/ProductHistroy.java @@ -17,6 +17,7 @@ public class ProductHistroy { @GeneratedValue(strategy = GenerationType.IDENTITY) private int productNum; private int bankNum; + private int managerNum; private String productName; private String category; private float intrate; @@ -27,6 +28,14 @@ public class ProductHistroy { public ProductHistroy(){}; + public int getManagerNum() { + return managerNum; + } + + public void setManagerNum(int managerNum) { + this.managerNum = managerNum; + } + public int getProductNum() { return productNum; } @@ -34,4 +43,68 @@ public class ProductHistroy { public void setProductNum(int productNum) { this.productNum = productNum; } + + public String getAlterTime() { + return alterTime; + } + + public void setAlterTime(String alterTime) { + this.alterTime = alterTime; + } + + public String getDeleteTime() { + return deleteTime; + } + + public void setDeleteTime(String deleteTime) { + this.deleteTime = deleteTime; + } + + public String getUpLoadTime() { + return upLoadTime; + } + + public void setUpLoadTime(String upLoadTime) { + this.upLoadTime = upLoadTime; + } + + public String getProductDescription() { + return productDescription; + } + + public void setProductDescription(String productDescription) { + this.productDescription = productDescription; + } + + public float getIntrate() { + return intrate; + } + + public void setIntrate(float intrate) { + this.intrate = intrate; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getProductName() { + return productName; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public int getBankNum() { + return bankNum; + } + + public void setBankNum(int bankNum) { + this.bankNum = bankNum; + } } diff --git a/demo/src/test/java/com/example/demo/productService/tools/addPro.java b/demo/src/test/java/com/example/demo/productService/tools/addPro.java new file mode 100644 index 0000000..5dcc4e0 --- /dev/null +++ b/demo/src/test/java/com/example/demo/productService/tools/addPro.java @@ -0,0 +1,26 @@ +package com.example.demo.productService.tools; + +import com.example.demo.Dao.productHistroyMapper; +import com.example.demo.Dao.productMapper; +import com.example.demo.bean.Product; +import com.example.demo.bean.ProductHistroy; + +public class addPro { + private com.example.demo.productService.tools.nowTime nowTime; + private productMapper productMapper; + private productHistroyMapper proHisMapper; + private ProductHistroy productHistroy; + + public addPro(Product product1){ + productMapper.addProduct(product1); + productHistroy.setProductNum(product1.getProductNum()); + productHistroy.setProductName(product1.getProductName()); + productHistroy.setBankNum(product1.getBankNum()); + productHistroy.setCategory(product1.getCategory()); + productHistroy.setIntrate(product1.getIntrate()); + //productHistroy.setManagerNum(); manager.setManagerNum();调用登陆里面的一个接口得到managerNum + productHistroy.setProductDescription(product1.getProductDescription()); + productHistroy.setUpLoadTime(nowTime.nowTime()); + proHisMapper.addProductHistroy(productHistroy); + } +} diff --git a/demo/src/test/java/com/example/demo/productService/tools/delectPro.java b/demo/src/test/java/com/example/demo/productService/tools/delectPro.java new file mode 100644 index 0000000..ddeacca --- /dev/null +++ b/demo/src/test/java/com/example/demo/productService/tools/delectPro.java @@ -0,0 +1,20 @@ +package com.example.demo.productService.tools; + +import com.example.demo.Dao.productHistroyMapper; +import com.example.demo.bean.Product; +import com.example.demo.bean.ProductHistroy; + +public class delectPro { + private com.example.demo.productService.tools.nowTime nowTime; + private com.example.demo.Dao.productMapper productMapper; + private productHistroyMapper proHisMapper; + private ProductHistroy productHistroy; + + public delectPro(Product product1){ + productMapper.deleteProduct(product1.getProductNum()); + productHistroy.setProductNum(product1.getProductNum()); + //productHistroy.setManagerNum(); manager.setManagerNum();调用登陆里面的一个接口得到managerNum + productHistroy.setUpLoadTime(nowTime.nowTime()); + proHisMapper.addProductHistroy(productHistroy); + } +} diff --git a/demo/src/test/java/com/example/demo/productService/tools/nowTime.java b/demo/src/test/java/com/example/demo/productService/tools/nowTime.java new file mode 100644 index 0000000..92065f9 --- /dev/null +++ b/demo/src/test/java/com/example/demo/productService/tools/nowTime.java @@ -0,0 +1,14 @@ +package com.example.demo.productService.tools; + + +import java.util.Date; +import java.text.SimpleDateFormat; + + +public class nowTime{ + public String nowTime(){ + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 + String time=(String)df.format(new Date()); + return time; + } +} diff --git a/demo/src/test/java/com/example/demo/productService/tools/record.java b/demo/src/test/java/com/example/demo/productService/tools/record.java new file mode 100644 index 0000000..e2e7d6b --- /dev/null +++ b/demo/src/test/java/com/example/demo/productService/tools/record.java @@ -0,0 +1,5 @@ +package com.example.demo.productService.tools; + +public class record { + +} diff --git a/demo/src/test/java/com/example/demo/productService/tools/updatePro.java b/demo/src/test/java/com/example/demo/productService/tools/updatePro.java new file mode 100644 index 0000000..09401dc --- /dev/null +++ b/demo/src/test/java/com/example/demo/productService/tools/updatePro.java @@ -0,0 +1,26 @@ +package com.example.demo.productService.tools; + +import com.example.demo.Dao.productHistroyMapper; +import com.example.demo.Dao.productMapper; +import com.example.demo.bean.Product; +import com.example.demo.bean.ProductHistroy; + +public class updatePro { + private com.example.demo.productService.tools.nowTime nowTime; + private productMapper productMapper; + private productHistroyMapper proHisMapper; + private ProductHistroy productHistroy; + + public updatePro(Product product1){ + productMapper.updateProduct(product1); + productHistroy.setProductNum(product1.getProductNum()); + productHistroy.setProductName(product1.getProductName()); + productHistroy.setBankNum(product1.getBankNum()); + productHistroy.setCategory(product1.getCategory()); + productHistroy.setIntrate(product1.getIntrate()); + //productHistroy.setManagerNum(); manager.setManagerNum();调用登陆里面的一个接口得到managerNum + productHistroy.setProductDescription(product1.getProductDescription()); + productHistroy.setAlterTime(nowTime.nowTime()); + proHisMapper.addProductHistroy(productHistroy); + } +} From 7874543d82bcd392d2f0b6eb7c9eed0779d3291b Mon Sep 17 00:00:00 2001 From: Aokiso <1010390029@qq.com> Date: Mon, 7 Jan 2019 16:45:47 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/productService/tools/record.java | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 demo/src/test/java/com/example/demo/productService/tools/record.java diff --git a/demo/src/test/java/com/example/demo/productService/tools/record.java b/demo/src/test/java/com/example/demo/productService/tools/record.java deleted file mode 100644 index e2e7d6b..0000000 --- a/demo/src/test/java/com/example/demo/productService/tools/record.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.demo.productService.tools; - -public class record { - -} From 94bd4de5cad272b88fe7701fe86da3eb36f293f8 Mon Sep 17 00:00:00 2001 From: Aokiso <1010390029@qq.com> Date: Mon, 7 Jan 2019 18:35:17 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/addController.java | 46 +++++++++++++++++++ .../controller/deleteController.java | 40 ++++++++++++++++ .../controller/updateController.java | 46 +++++++++++++++++++ .../demo/productService/tools/addPro.java | 3 +- .../tools/{delectPro.java => deletePro.java} | 9 ++-- .../demo/productService/tools/updatePro.java | 3 +- 6 files changed, 141 insertions(+), 6 deletions(-) create mode 100644 demo/src/test/java/com/example/demo/productService/controller/addController.java create mode 100644 demo/src/test/java/com/example/demo/productService/controller/deleteController.java create mode 100644 demo/src/test/java/com/example/demo/productService/controller/updateController.java rename demo/src/test/java/com/example/demo/productService/tools/{delectPro.java => deletePro.java} (76%) diff --git a/demo/src/test/java/com/example/demo/productService/controller/addController.java b/demo/src/test/java/com/example/demo/productService/controller/addController.java new file mode 100644 index 0000000..5536160 --- /dev/null +++ b/demo/src/test/java/com/example/demo/productService/controller/addController.java @@ -0,0 +1,46 @@ +package com.example.demo.productService.controller; + +import com.example.demo.bean.Product; +import com.example.demo.productService.tools.addPro; +import org.springframework.web.bind.annotation.RequestMapping; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; +import org.springframework.stereotype.Controller; + +@Controller +public class addController extends HttpServlet { + Product product; + addPro addPro; + @RequestMapping("/addproduct") + public String doPost(HttpServletResponse response,HttpServletRequest request){ + PrintWriter writer=null; + try{ + product.setProductNum(Integer.parseInt(request.getParameter("productNum"))); + product.setProductName(request.getParameter("productName")); + product.setBankNum(Integer.parseInt(request.getParameter("bankNum"))); + product.setCategory(request.getParameter("productName")); + product.setIntrate(Integer.parseInt(request.getParameter("intrate"))); + product.setProductDescription(request.getParameter("description")); + product.setPictureAddress(request.getParameter("address")); + int result= addPro.add(product); + response.setContentType("text/hmtl;charset=utf-8"); + writer=response.getWriter(); + if(result==1){ + writer.write("增加成功"); + return "/";//返回增加删除修改的总页面 + } + writer.write("增加失败"); + return "/";//返回增加的页面 + }catch(Exception e){ + e.printStackTrace(); + }finally { + if(writer!=null){ + writer.close(); + } + } + return "页面出错"; + } + +} diff --git a/demo/src/test/java/com/example/demo/productService/controller/deleteController.java b/demo/src/test/java/com/example/demo/productService/controller/deleteController.java new file mode 100644 index 0000000..cdd6510 --- /dev/null +++ b/demo/src/test/java/com/example/demo/productService/controller/deleteController.java @@ -0,0 +1,40 @@ +package com.example.demo.productService.controller; + + +import com.example.demo.bean.Product; +import com.example.demo.productService.tools.deletePro; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; + +@Controller +public class deleteController { + Product product; + deletePro deletes; + @RequestMapping("/deleteproduct") + public String doPost(HttpServletResponse response, HttpServletRequest request){ + PrintWriter writer=null; + try{ + int productNum=Integer.parseInt(request.getParameter("productNum")); + int result= deletes.delete(productNum); + response.setContentType("text/hmtl;charset=utf-8"); + writer=response.getWriter(); + if(result==1){ + writer.write("删除成功"); + return "/";//返回增加删除修改的总页面 + } + writer.write("删除失败"); + return "/";//返回删除的页面 + }catch(Exception e){ + e.printStackTrace(); + }finally { + if(writer!=null){ + writer.close(); + } + } + return "页面出错"; + } +} diff --git a/demo/src/test/java/com/example/demo/productService/controller/updateController.java b/demo/src/test/java/com/example/demo/productService/controller/updateController.java new file mode 100644 index 0000000..56ca6f8 --- /dev/null +++ b/demo/src/test/java/com/example/demo/productService/controller/updateController.java @@ -0,0 +1,46 @@ +package com.example.demo.productService.controller; + +import com.example.demo.bean.Product; +import com.example.demo.productService.tools.updatePro; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; + +@Controller +public class updateController { + Product product; + updatePro updatePro; + @RequestMapping("/updateproduct") + public String doPost(HttpServletResponse response, HttpServletRequest request){ + PrintWriter writer=null; + try{ + product.setProductNum(Integer.parseInt(request.getParameter("productNum"))); + product.setProductName(request.getParameter("productName")); + product.setBankNum(Integer.parseInt(request.getParameter("bankNum"))); + product.setCategory(request.getParameter("productName")); + product.setIntrate(Integer.parseInt(request.getParameter("intrate"))); + product.setProductDescription(request.getParameter("description")); + product.setPictureAddress(request.getParameter("address")); + int result= updatePro.update(product); + response.setContentType("text/hmtl;charset=utf-8"); + writer=response.getWriter(); + if(result==1){ + writer.write("修改成功"); + return "/";//返回增加删除修改的总页面 + } + writer.write("修改失败"); + return "/";//返回修改的页面 + }catch(Exception e){ + e.printStackTrace(); + }finally { + if(writer!=null){ + writer.close(); + } + } + return "页面出错"; + } + +} diff --git a/demo/src/test/java/com/example/demo/productService/tools/addPro.java b/demo/src/test/java/com/example/demo/productService/tools/addPro.java index 5dcc4e0..3d60f75 100644 --- a/demo/src/test/java/com/example/demo/productService/tools/addPro.java +++ b/demo/src/test/java/com/example/demo/productService/tools/addPro.java @@ -11,7 +11,7 @@ public class addPro { private productHistroyMapper proHisMapper; private ProductHistroy productHistroy; - public addPro(Product product1){ + public int add(Product product1){ productMapper.addProduct(product1); productHistroy.setProductNum(product1.getProductNum()); productHistroy.setProductName(product1.getProductName()); @@ -22,5 +22,6 @@ public class addPro { productHistroy.setProductDescription(product1.getProductDescription()); productHistroy.setUpLoadTime(nowTime.nowTime()); proHisMapper.addProductHistroy(productHistroy); + return 1; } } diff --git a/demo/src/test/java/com/example/demo/productService/tools/delectPro.java b/demo/src/test/java/com/example/demo/productService/tools/deletePro.java similarity index 76% rename from demo/src/test/java/com/example/demo/productService/tools/delectPro.java rename to demo/src/test/java/com/example/demo/productService/tools/deletePro.java index ddeacca..886e14c 100644 --- a/demo/src/test/java/com/example/demo/productService/tools/delectPro.java +++ b/demo/src/test/java/com/example/demo/productService/tools/deletePro.java @@ -4,17 +4,18 @@ import com.example.demo.Dao.productHistroyMapper; import com.example.demo.bean.Product; import com.example.demo.bean.ProductHistroy; -public class delectPro { +public class deletePro { private com.example.demo.productService.tools.nowTime nowTime; private com.example.demo.Dao.productMapper productMapper; private productHistroyMapper proHisMapper; private ProductHistroy productHistroy; - public delectPro(Product product1){ - productMapper.deleteProduct(product1.getProductNum()); - productHistroy.setProductNum(product1.getProductNum()); + public int delete(int productNum){ + productMapper.deleteProduct(productNum); + productHistroy.setProductNum(productNum); //productHistroy.setManagerNum(); manager.setManagerNum();调用登陆里面的一个接口得到managerNum productHistroy.setUpLoadTime(nowTime.nowTime()); proHisMapper.addProductHistroy(productHistroy); + return 1; } } diff --git a/demo/src/test/java/com/example/demo/productService/tools/updatePro.java b/demo/src/test/java/com/example/demo/productService/tools/updatePro.java index 09401dc..fe43ceb 100644 --- a/demo/src/test/java/com/example/demo/productService/tools/updatePro.java +++ b/demo/src/test/java/com/example/demo/productService/tools/updatePro.java @@ -11,7 +11,7 @@ public class updatePro { private productHistroyMapper proHisMapper; private ProductHistroy productHistroy; - public updatePro(Product product1){ + public int update(Product product1){ productMapper.updateProduct(product1); productHistroy.setProductNum(product1.getProductNum()); productHistroy.setProductName(product1.getProductName()); @@ -22,5 +22,6 @@ public class updatePro { productHistroy.setProductDescription(product1.getProductDescription()); productHistroy.setAlterTime(nowTime.nowTime()); proHisMapper.addProductHistroy(productHistroy); + return 1; } }