业务账号的修改

1、业务
    服务器出租业务,对于每个人的费用是在月底结算的。因此如果当前有人要改资费,不能立刻生效,而是在下个月月初生效,即,在月底使用PL/SQL先计算本月的费用,然后再将套餐进行变更。
2、思路
    保存时将资费类型存入临时表,在月底自动结算完以后,使用此临时表的数据来更新service。这里有可能一个月客户变更了数次资费,导致临时表中对于一个业务账号有多个资费类型,那么更新时可以采用最后一次变更的资费类型,即ID最大的。更新完service表后,需要将临时数据删除。

注意重定向到Action时,可以使用param来给目标Action的属性传值。其中name属性指定了目标Action中要接收参数的属性名,param中间的内容指定了其来源.

DAO:

public void update(Service service) throws DAOException {
	
	if(service == null){
		return;
	}
	
	String sql = "insert into service_update_bak "+
				" values(service_bak_seq.nextval,?,?)";
	Connection con = DBUtil.getConnection();
	try {
		PreparedStatement ps = con.prepareStatement(sql);
		ps.setObject(1, service.getId());
		ps.setObject(2, service.getCostId());
		ps.executeUpdate();
	} catch (SQLException e) {
		e.printStackTrace();
		throw new DAOException("更新业务账号失败", e);
	} finally{
		DBUtil.close();
	}
}

public Service findById(Integer id) throws DAOException {
	if(id == null){
		return null;
	}
	
	String sql = "select * from service where id=?";
	Connection con = DBUtil.getConnection();
	try {
		PreparedStatement ps = con.prepareStatement(sql);
		ps.setObject(1, id);
		ResultSet rs = ps.executeQuery();
		if(rs.next()){
			Service s = createService(rs);
			return s;
		}
	} catch (SQLException e) {
		e.printStackTrace();
		throw new DAOException("查询业务账号失败", e);
	} finally{
		DBUtil.close();
	}
	
	return null;
}

Action:

public class ToUpdateServiceAction {
	
	public String execute(){
		IServiceDAO serdao = DAOFactory.getServiceDAO();
		ICostDAO costdao = DAOFactory.getCostDAO();
		
		try {
			service = serdao.findById(id);
			costs = costdao.findAll();
		} catch (DAOException e) {
			e.printStackTrace();
			return "error";
		}
		
		return "success";
	}
	
	//input
	private Integer id;
	//output
	private Service service;
	private List<Cost> costs;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Service getService() {
		return service;
	}
	public void setService(Service service) {
		this.service = service;
	}
	public List<Cost> getCosts() {
		return costs;
	}
	public void setCosts(List<Cost> costs) {
		this.costs = costs;
	}
	
	
}

public class UpdateServiceAction {
	
	public String execute(){
		
		IServiceDAO dao = DAOFactory.getServiceDAO();
		try {
			dao.update(service);
		} catch (DAOException e) {
			e.printStackTrace();
			return "error";
		}
		
		return "success";
	}
	
	//input
	private Service service;

	public Service getService() {
		return service;
	}

	public void setService(Service service) {
		this.service = service;
	}
	
}

struts.xml

<!-- 打开修改页面Action -->
<action name="toUpdateService" class="netctoss.action.service.ToUpdateServiceAction">
	<result name="success">
		/WEB-INF/service/updateService.jsp
	</result>
</action>
<!-- 修改保存Action -->
<action name="updateService" class="netctoss.action.service.UpdateServiceAction">
	<result name="success" type="redirectAction">
		<param name="actionName">toUpdateService</param>
		<param name="id">${service.id}</param>
	</result>
</action>

Jsp:

<form action="updateService" method="post" class="main_form">
          
	<div class="text_info clearfix"><span>业务账号ID:</span></div>
	<div class="input_info">
		<s:textfield name="service.id" cssClass="readonly" readonly="true"/>
	</div>
	<div class="text_info clearfix"><span>OS 账号:</span></div>
	<div class="input_info">
		<s:textfield name="service.osUserName" cssClass="readonly"readonly="true"/>
	</div>
	<div class="text_info clearfix"><span>服务器 IP:</span></div>
	<div class="input_info">
		<s:textfield name="service.unixHost" cssClass="readonly" readonly="true"/>
	</div>
	<div class="text_info clearfix"><span>资费类型:</span></div>
	<div class="input_info">
		<s:select name="service.costId" list="costs" listKey="id" listValue="name" cssClass="width150"/>
	    <div class="validate_msg_long">请修改资费类型,或者取消修改操作。</div>                      
	</div>
	<!--操作按钮-->
	<div class="button_info clearfix">
	    <input type="submit" value="保存" class="btn_save" />
	    <input type="button" value="取消" class="btn_save" />
	</div>

	
	<p>业务说明:<br />
	1、修改资费后,点击保存,并未真正修改数据库中的数据;<br />
	2、提交操作到消息队列;<br />
	3、每月月底由程序自动完成业务所关联的资费;</p>
	
    </form>  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值