业务账号的修改

来源:互联网 发布:淘宝众筹卖家怎么赚钱 编辑:程序博客网 时间:2024/05/18 00:10
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";}//inputprivate Integer id;//outputprivate 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";}//inputprivate 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