diff --git a/deal2/META-INF/MANIFEST.MF b/deal2/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/deal2/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/deal2/WEB-INF/classes/applicationContext.xml b/deal2/WEB-INF/classes/applicationContext.xml new file mode 100644 index 0000000..cda9763 --- /dev/null +++ b/deal2/WEB-INF/classes/applicationContext.xml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/deal2/WEB-INF/classes/business.xml b/deal2/WEB-INF/classes/business.xml new file mode 100644 index 0000000..6ebd00f --- /dev/null +++ b/deal2/WEB-INF/classes/business.xml @@ -0,0 +1,58 @@ + + + + + 2015-11-24 + 0 + 1 + 86.5 + 1 + 001 + zhangsan + + + 2015-11-24 + 0 + 1 + 86.5 + 1 + 002 + success1 + + + 2015-11-24 + 0 + 1 + 86.5 + 2 + 003 + success2 + + + 2015-11-24 + 0 + 1 + 86.5 + 1 + 004 + success3 + + + 2015-11-24 + 1 + 1 + -86.5 + 1 + 006 + fail1 + + + 2015-11-24 + 1 + 1 + 0 + 1 + 007 + fail2 + + diff --git a/deal2/WEB-INF/classes/com/wendell/controller/DealController.class b/deal2/WEB-INF/classes/com/wendell/controller/DealController.class new file mode 100644 index 0000000..1705e56 Binary files /dev/null and b/deal2/WEB-INF/classes/com/wendell/controller/DealController.class differ diff --git a/deal2/WEB-INF/classes/com/wendell/controller/DealController.java b/deal2/WEB-INF/classes/com/wendell/controller/DealController.java new file mode 100644 index 0000000..3a19bf5 --- /dev/null +++ b/deal2/WEB-INF/classes/com/wendell/controller/DealController.java @@ -0,0 +1,73 @@ +package com.wendell.controller; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import com.wendell.dealService.DealService; +import com.wendell.domain.Deal; + +/** + * 交易controller层 + * @author Wendell + * + */ +@Controller +@RequestMapping("/rest") +public class DealController { + + //注入DealService对象 + @Autowired + private DealService dealService; + + //使用springmvc向外提供Rest风格服务 + @RequestMapping(value="/addDeal",method=RequestMethod.POST) + @ResponseBody + public ModelAndView makeDeal(Deal deal){ + + try { + //设置交易记录ID + deal.setId(UUID.randomUUID().toString()); + //设置交易记录时间 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String dateFormat = simpleDateFormat.format(new Date()); + deal.setDate(dateFormat); + //设置交易状态 + if(Double.valueOf(deal.getMoney())<=0){ + //如果交易金额为负数,则交易失败 + deal.setState(String.valueOf(1)); + }else{ + //否则交易成功 + deal.setState(String.valueOf(0)); + } + //保存交易记录 + dealService.addDeal(deal); + ModelAndView view = new ModelAndView(); + view.setViewName("success"); + return view; + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("添加交易记录失败!"); + } + } + + //对外提供查询交易记录的接口 + @RequestMapping(value="/getDeals/{state}",method=RequestMethod.GET) + @ResponseBody + public List getDealList(@PathVariable String state){ + List dealList = dealService.getDealList(state); + return dealList; + + } + + +} diff --git a/deal2/WEB-INF/classes/com/wendell/dealDao/BusinessDao.class b/deal2/WEB-INF/classes/com/wendell/dealDao/BusinessDao.class new file mode 100644 index 0000000..212172a Binary files /dev/null and b/deal2/WEB-INF/classes/com/wendell/dealDao/BusinessDao.class differ diff --git a/deal2/WEB-INF/classes/com/wendell/dealDao/BusinessDao.java b/deal2/WEB-INF/classes/com/wendell/dealDao/BusinessDao.java new file mode 100644 index 0000000..0b27fe2 --- /dev/null +++ b/deal2/WEB-INF/classes/com/wendell/dealDao/BusinessDao.java @@ -0,0 +1,12 @@ +package com.wendell.dealDao; + +import java.util.List; + +import com.wendell.domain.Deal; + +public interface BusinessDao { + //保存交易记录到business.xml中 + void saveDeal(Deal deal); + //根据交易状态查询交易信息 + List getDealList(String state); +} diff --git a/deal2/WEB-INF/classes/com/wendell/dealDaoImpl/BusinessDaoImpl.class b/deal2/WEB-INF/classes/com/wendell/dealDaoImpl/BusinessDaoImpl.class new file mode 100644 index 0000000..b69b5be Binary files /dev/null and b/deal2/WEB-INF/classes/com/wendell/dealDaoImpl/BusinessDaoImpl.class differ diff --git a/deal2/WEB-INF/classes/com/wendell/dealDaoImpl/BusinessDaoImpl.java b/deal2/WEB-INF/classes/com/wendell/dealDaoImpl/BusinessDaoImpl.java new file mode 100644 index 0000000..c122cfc --- /dev/null +++ b/deal2/WEB-INF/classes/com/wendell/dealDaoImpl/BusinessDaoImpl.java @@ -0,0 +1,154 @@ +package com.wendell.dealDaoImpl; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.Element; +import org.dom4j.io.OutputFormat; +import org.dom4j.io.SAXReader; +import org.dom4j.io.XMLWriter; +import org.springframework.stereotype.Repository; + +import com.wendell.dealDao.BusinessDao; +import com.wendell.domain.Deal; +/** + * 对business.xml操作的DAO实现类 + * @author Wendell + * + */ +@Repository +public class BusinessDaoImpl implements BusinessDao{ + + //保存交易信息到business.xml中 + public void saveDeal(Deal deal) { + //获得xml数据源的文档对象 + Document dc = getDocument(); + //获得根元素deals + Element deals = dc.getRootElement(); + //在根元素下增加deal子元素并添加id属性 + Element dealEle = deals.addElement("deal").addAttribute("id", deal.getId()); + //为deal增加其他子元素 + dealEle.addElement("date").addText(deal.getDate()); + dealEle.addElement("state").addText(deal.getState()); + dealEle.addElement("type").addText(deal.getType()); + dealEle.addElement("money").addText(deal.getMoney()); + dealEle.addElement("currency").addText(deal.getCurrency()); + dealEle.addElement("userId").addText(deal.getUserId()); + dealEle.addElement("userName").addText(deal.getUserName()); + //将修改后的内容写回到xml文件中 + saveDocument(dc); + + + } + //通过交易状态查询交易记录 + public List getDealList(String state) { + //得到document对象 + Document document = getDocument(); + //定义xpath + String xpath = "/deals/deal"; + //根据xpath找到所有的元素 + List elements = document.selectNodes(xpath); + //判断集合是否为空 + if(elements==null){ + return Collections.EMPTY_LIST; + } + List dealList = new ArrayList(); + for(Element element:elements){ + Deal deal = ele2deal(element); + if(deal.getState().equals(state)){ + dealList.add(deal); + } + } + return dealList; + } + //---------以下是抽取通用方法------------------------- + //获得文档对象 + private Document getDocument(){ + try { + //创建解析器 + SAXReader reader = new SAXReader(); + //获得xml的资源流,交给解析器解析,得到Document对象 + String path = getXmlPath(); + InputStream fis = new FileInputStream(path); + Document document = reader.read(fis); + //关闭资源流 + fis.close(); + //返回Document对象 + return document; + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("读取xml文件失败!"); + + } + + } + //获得xml文件的路径 + private String getXmlPath(){ + URL url = BusinessDaoImpl.class.getResource("/business.xml"); + String path = url.getPath(); + return path; + } + //将document写回到xml文件中 + private void saveDocument(Document dc){ + try { + //准备输出到xml文件中的输出流 + String path = getXmlPath(); + FileOutputStream os = new FileOutputStream(path); + //创建outputFormat + OutputFormat format = OutputFormat.createPrettyPrint(); + //创建XmlWriter + XMLWriter writer = new XMLWriter(os, format); + //写入 + writer.write(dc); + //关闭资源 + os.close(); + writer.close(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("文件写入失败!"); + } + } + //将元素封装到Deal中 + public Deal ele2deal(Element dealEle){ + Deal deal = new Deal(); + //封装交易记录ID + String id = dealEle.attributeValue("id"); + deal.setId(id); + //封装用户ID + String userId = dealEle.elementText("userId"); + deal.setUserId(userId); + //封装用户名 + String userName = dealEle.elementText("userName"); + deal.setUserName(userName); + //封装交易金额 + String money = dealEle.elementText("money"); + deal.setMoney(money); + //封装交易类型 + String type = dealEle.elementText("type"); + deal.setType(type); + //封装交易时间 + String date = dealEle.elementText("date"); + deal.setDate(date); + //封装交易状态 + String state = dealEle.elementText("state"); + deal.setState(state); + //封装交易币种 + String currency = dealEle.elementText("currency"); + deal.setCurrency(currency); + return deal; + } + + + + +} \ No newline at end of file diff --git a/deal2/WEB-INF/classes/com/wendell/dealService/DealService.class b/deal2/WEB-INF/classes/com/wendell/dealService/DealService.class new file mode 100644 index 0000000..9305b87 Binary files /dev/null and b/deal2/WEB-INF/classes/com/wendell/dealService/DealService.class differ diff --git a/deal2/WEB-INF/classes/com/wendell/dealService/DealService.java b/deal2/WEB-INF/classes/com/wendell/dealService/DealService.java new file mode 100644 index 0000000..73545dc --- /dev/null +++ b/deal2/WEB-INF/classes/com/wendell/dealService/DealService.java @@ -0,0 +1,12 @@ +package com.wendell.dealService; + +import java.util.List; + +import com.wendell.domain.Deal; + +public interface DealService { + //增加交易记录 + void addDeal(Deal deal); + //获得交易记录 + List getDealList(String state); +} diff --git a/deal2/WEB-INF/classes/com/wendell/dealServiceImpl/DealServiceImpl.class b/deal2/WEB-INF/classes/com/wendell/dealServiceImpl/DealServiceImpl.class new file mode 100644 index 0000000..2d80422 Binary files /dev/null and b/deal2/WEB-INF/classes/com/wendell/dealServiceImpl/DealServiceImpl.class differ diff --git a/deal2/WEB-INF/classes/com/wendell/dealServiceImpl/DealServiceImpl.java b/deal2/WEB-INF/classes/com/wendell/dealServiceImpl/DealServiceImpl.java new file mode 100644 index 0000000..6dd88e6 --- /dev/null +++ b/deal2/WEB-INF/classes/com/wendell/dealServiceImpl/DealServiceImpl.java @@ -0,0 +1,31 @@ +package com.wendell.dealServiceImpl; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.wendell.dealDao.BusinessDao; +import com.wendell.dealService.DealService; +import com.wendell.domain.Deal; +/** + * 交易Service层 + * @author Wendell + * + */ +@Service +public class DealServiceImpl implements DealService { + //注入DealDao实现类 + @Autowired + private BusinessDao businessDao; + //增加交易记录 + public void addDeal(Deal deal) { + businessDao.saveDeal(deal); + } + //获得交易记录 + public List getDealList(String state) { + List dealList = businessDao.getDealList(state); + return dealList; + } + +} diff --git a/deal2/WEB-INF/classes/com/wendell/domain/Deal.class b/deal2/WEB-INF/classes/com/wendell/domain/Deal.class new file mode 100644 index 0000000..5ab965a Binary files /dev/null and b/deal2/WEB-INF/classes/com/wendell/domain/Deal.class differ diff --git a/deal2/WEB-INF/classes/com/wendell/domain/Deal.java b/deal2/WEB-INF/classes/com/wendell/domain/Deal.java new file mode 100644 index 0000000..4fcaef2 --- /dev/null +++ b/deal2/WEB-INF/classes/com/wendell/domain/Deal.java @@ -0,0 +1,68 @@ +package com.wendell.domain; + +public class Deal { + //交易ID + private String id; + //交易时间 + private String date; + //交易状态,0:交易成功,1:交易失败 + private String state; + //交易类型,1:支付。2:退款 + private String type; + //交易金额 + private String money; + //交易币种 + private String currency; + //用户ID + private String userId; + //用户姓名 + private String userName; + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + public String getDate() { + return date; + } + public void setDate(String date) { + this.date = date; + } + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public String getMoney() { + return money; + } + public void setMoney(String money) { + this.money = money; + } + public String getCurrency() { + return currency; + } + public void setCurrency(String currency) { + this.currency = currency; + } + public String getUserId() { + return userId; + } + public void setUserId(String userId) { + this.userId = userId; + } + public String getUserName() { + return userName; + } + public void setUserName(String userName) { + this.userName = userName; + } +} diff --git a/deal2/WEB-INF/classes/springmvc.xml b/deal2/WEB-INF/classes/springmvc.xml new file mode 100644 index 0000000..ba6faee --- /dev/null +++ b/deal2/WEB-INF/classes/springmvc.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/deal2/WEB-INF/jsp/success.jsp b/deal2/WEB-INF/jsp/success.jsp new file mode 100644 index 0000000..e1c650f --- /dev/null +++ b/deal2/WEB-INF/jsp/success.jsp @@ -0,0 +1,12 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +Insert title here + + +Successful! + + \ No newline at end of file diff --git a/deal2/WEB-INF/lib/commons-beanutils-1.8.3.jar b/deal2/WEB-INF/lib/commons-beanutils-1.8.3.jar new file mode 100644 index 0000000..218510b Binary files /dev/null and b/deal2/WEB-INF/lib/commons-beanutils-1.8.3.jar differ diff --git a/deal2/WEB-INF/lib/commons-logging-1.1.1.jar b/deal2/WEB-INF/lib/commons-logging-1.1.1.jar new file mode 100644 index 0000000..8758a96 Binary files /dev/null and b/deal2/WEB-INF/lib/commons-logging-1.1.1.jar differ diff --git a/deal2/WEB-INF/lib/dom4j-1.6.1.jar b/deal2/WEB-INF/lib/dom4j-1.6.1.jar new file mode 100644 index 0000000..c8c4dbb Binary files /dev/null and b/deal2/WEB-INF/lib/dom4j-1.6.1.jar differ diff --git a/deal2/WEB-INF/lib/jackson-core-asl-1.9.11.jar b/deal2/WEB-INF/lib/jackson-core-asl-1.9.11.jar new file mode 100644 index 0000000..145fc48 Binary files /dev/null and b/deal2/WEB-INF/lib/jackson-core-asl-1.9.11.jar differ diff --git a/deal2/WEB-INF/lib/jackson-mapper-asl-1.9.11.jar b/deal2/WEB-INF/lib/jackson-mapper-asl-1.9.11.jar new file mode 100644 index 0000000..3e686c6 Binary files /dev/null and b/deal2/WEB-INF/lib/jackson-mapper-asl-1.9.11.jar differ diff --git a/deal2/WEB-INF/lib/jaxen-1.1-beta-6.jar b/deal2/WEB-INF/lib/jaxen-1.1-beta-6.jar new file mode 100644 index 0000000..6cef35d Binary files /dev/null and b/deal2/WEB-INF/lib/jaxen-1.1-beta-6.jar differ diff --git a/deal2/WEB-INF/lib/jstl-1.2.jar b/deal2/WEB-INF/lib/jstl-1.2.jar new file mode 100644 index 0000000..0fd275e Binary files /dev/null and b/deal2/WEB-INF/lib/jstl-1.2.jar differ diff --git a/deal2/WEB-INF/lib/spring-aop-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-aop-3.2.0.RELEASE.jar new file mode 100644 index 0000000..e945961 Binary files /dev/null and b/deal2/WEB-INF/lib/spring-aop-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/lib/spring-aspects-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-aspects-3.2.0.RELEASE.jar new file mode 100644 index 0000000..f1e2c48 Binary files /dev/null and b/deal2/WEB-INF/lib/spring-aspects-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/lib/spring-beans-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-beans-3.2.0.RELEASE.jar new file mode 100644 index 0000000..e036195 Binary files /dev/null and b/deal2/WEB-INF/lib/spring-beans-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/lib/spring-context-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-context-3.2.0.RELEASE.jar new file mode 100644 index 0000000..995d2a4 Binary files /dev/null and b/deal2/WEB-INF/lib/spring-context-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/lib/spring-context-support-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-context-support-3.2.0.RELEASE.jar new file mode 100644 index 0000000..5aeb9b7 Binary files /dev/null and b/deal2/WEB-INF/lib/spring-context-support-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/lib/spring-core-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-core-3.2.0.RELEASE.jar new file mode 100644 index 0000000..f8dede4 Binary files /dev/null and b/deal2/WEB-INF/lib/spring-core-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/lib/spring-expression-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-expression-3.2.0.RELEASE.jar new file mode 100644 index 0000000..cf14aff Binary files /dev/null and b/deal2/WEB-INF/lib/spring-expression-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/lib/spring-jdbc-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-jdbc-3.2.0.RELEASE.jar new file mode 100644 index 0000000..583d5bc Binary files /dev/null and b/deal2/WEB-INF/lib/spring-jdbc-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/lib/spring-orm-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-orm-3.2.0.RELEASE.jar new file mode 100644 index 0000000..48aaf1f Binary files /dev/null and b/deal2/WEB-INF/lib/spring-orm-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/lib/spring-test-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-test-3.2.0.RELEASE.jar new file mode 100644 index 0000000..59c4437 Binary files /dev/null and b/deal2/WEB-INF/lib/spring-test-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/lib/spring-tx-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-tx-3.2.0.RELEASE.jar new file mode 100644 index 0000000..6f4f8d8 Binary files /dev/null and b/deal2/WEB-INF/lib/spring-tx-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/lib/spring-web-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-web-3.2.0.RELEASE.jar new file mode 100644 index 0000000..0061f35 Binary files /dev/null and b/deal2/WEB-INF/lib/spring-web-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/lib/spring-webmvc-3.2.0.RELEASE.jar b/deal2/WEB-INF/lib/spring-webmvc-3.2.0.RELEASE.jar new file mode 100644 index 0000000..acded7a Binary files /dev/null and b/deal2/WEB-INF/lib/spring-webmvc-3.2.0.RELEASE.jar differ diff --git a/deal2/WEB-INF/web.xml b/deal2/WEB-INF/web.xml new file mode 100644 index 0000000..44f9d76 --- /dev/null +++ b/deal2/WEB-INF/web.xml @@ -0,0 +1,35 @@ + + + deal2 + + index.html + index.htm + index.jsp + default.html + default.htm + default.jsp + + + + contextConfigLocation + classpath:applicationContext.xml + + + org.springframework.web.context.ContextLoaderListener + + + + springmvc + org.springframework.web.servlet.DispatcherServlet + + + contextConfigLocation + classpath:springmvc.xml + + 1 + + + springmvc + / + + \ No newline at end of file diff --git a/deal2/makeDeal.jsp b/deal2/makeDeal.jsp new file mode 100644 index 0000000..45be6f4 --- /dev/null +++ b/deal2/makeDeal.jsp @@ -0,0 +1,54 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +Insert title here + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
用户ID + +
用户姓名 + +
交易金额 + +
交易币种 + RMB + dollar +
交易类型 + +
+ +
+
+ + \ No newline at end of file