Explorar el Código

修复用户ID为负数时报无法转化为int异常

wuxw hace 7 años
padre
commit
b8f24f50a6

+ 1 - 1
UserService/src/main/java/com/java110/user/listener/SaveUserInfoListener.java

@@ -61,7 +61,7 @@ public class SaveUserInfoListener  extends AbstractBusinessServiceDataFlowListen
 
         Assert.jsonObjectHaveKey(businessUser,"userId","businessUser 节点下没有包含 userId 节点");
 
-        if(businessUser.getInteger("userId") < 0){
+        if(businessUser.getString("userId").startsWith("-")){
             //生成userId
             String userId = GenerateCodeFactory.getUserId();
             businessUser.put("userId",userId);

+ 46 - 0
WebService/src/main/java/com/java110/web/components/AddStaffComponent.java

@@ -0,0 +1,46 @@
+package com.java110.web.components;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.IStaffServiceSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ * 添加员工 组件
+ * Created by Administrator on 2019/4/2.
+ */
+@Component("addStaff")
+public class AddStaffComponent {
+
+    @Autowired
+    IStaffServiceSMO staffServiceSMOImpl;
+
+    /**
+     * 保存员工
+     * @param pd
+     * @return
+     */
+    public ResponseEntity<String> saveStaff(IPageData pd){
+
+        ResponseEntity<String> responseEntity = null;
+        try{
+            responseEntity =  staffServiceSMOImpl.saveStaff(pd);
+        }catch (Exception e){
+            responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+        }finally {
+            return responseEntity;
+        }
+    }
+
+    public IStaffServiceSMO getStaffServiceSMOImpl() {
+        return staffServiceSMOImpl;
+    }
+
+    public void setStaffServiceSMOImpl(IStaffServiceSMO staffServiceSMOImpl) {
+        this.staffServiceSMOImpl = staffServiceSMOImpl;
+    }
+}

+ 29 - 0
WebService/src/main/java/com/java110/web/components/StaffComponent.java

@@ -0,0 +1,29 @@
+package com.java110.web.components;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.context.IPageData;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * 员工展示组件
+ * Created by Administrator on 2019/4/2.
+ */
+@Component("staff")
+public class StaffComponent {
+
+    public ResponseEntity<String> loadData(IPageData pd){
+
+        String result = "{'total':1,'page':1,'row':10,'data':[" +
+                "{'userId':'111','name':'123','email':'928255095@qq.com','address':'张安1','sex':'男','tel':'17797173944','statusCd':'0','createTime':'2019-03-19'}," +
+                "{'userId':'111','name':'123','email':'928255095@qq.com','address':'张安2','sex':'男','tel':'17797173945','statusCd':'0','createTime':'2019-03-19'}," +
+                "{'userId':'111','name':'123','email':'928255095@qq.com','address':'张安3','sex':'男','tel':'17797173946','statusCd':'0','createTime':'2019-03-19'}" +
+                "]}";
+
+        JSONObject resultObjs = JSONObject.parseObject(result);
+
+        return new ResponseEntity<String>(resultObjs.toJSONString(), HttpStatus.OK);
+    }
+}

+ 34 - 0
WebService/src/main/java/com/java110/web/core/BaseComponentSMO.java

@@ -1,6 +1,8 @@
 package com.java110.web.core;
 
+import com.alibaba.fastjson.JSONObject;
 import com.java110.common.constant.CommonConstant;
+import com.java110.common.constant.ServiceConstant;
 import com.java110.common.factory.ApplicationContextFactory;
 import com.java110.common.util.Assert;
 import com.java110.core.base.smo.BaseServiceSMO;
@@ -8,8 +10,10 @@ import com.java110.core.context.IPageData;
 import com.java110.web.smo.impl.LoginServiceSMOImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
 
 import java.lang.reflect.Method;
 
@@ -53,4 +57,34 @@ public class BaseComponentSMO extends BaseServiceSMO {
             return responseEntity;
         }
     }
+
+
+    /**
+     * 获取用户信息
+     * @param pd
+     * @param restTemplate
+     * @return
+     */
+    protected ResponseEntity<String> getUserInfo(IPageData pd, RestTemplate restTemplate){
+        Assert.hasLength(pd.getUserId(),"用户未登录请先登录");
+        ResponseEntity<String> responseEntity = null;
+        responseEntity = this.callCenterService(restTemplate,pd,"", ServiceConstant.SERVICE_API_URL+"/api/query.user.userInfo?userId="+pd.getUserId(), HttpMethod.GET);
+        // 过滤返回报文中的字段,只返回name字段
+        //{"address":"","orderTypeCd":"Q","serviceCode":"","responseTime":"20190401194712","sex":"","localtionCd":"","userId":"302019033054910001","levelCd":"00","transactionId":"-1","dataFlowId":"-1","response":{"code":"0000","message":"成功"},"name":"996icu","tel":"18909780341","bId":"-1","businessType":"","email":""}
+
+        return responseEntity;
+
+    }
+
+    /**
+     * 查询商户信息
+     * @return
+     */
+    protected ResponseEntity<String> getStoreInfo(IPageData pd, RestTemplate restTemplate){
+        Assert.hasLength(pd.getUserId(),"用户未登录请先登录");
+        ResponseEntity<String> responseEntity = null;
+        responseEntity = this.callCenterService(restTemplate,pd,"", ServiceConstant.SERVICE_API_URL+"/api/query.store.byuser?userId="+pd.getUserId(), HttpMethod.GET);
+
+        return responseEntity;
+    }
 }

+ 18 - 0
WebService/src/main/java/com/java110/web/smo/IStaffServiceSMO.java

@@ -0,0 +1,18 @@
+package com.java110.web.smo;
+
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * 员工管理服务接口类
+ * Created by Administrator on 2019/4/2.
+ */
+public interface IStaffServiceSMO {
+
+    /**
+     * 保存员工信息
+     * @param pd
+     * @return
+     */
+    public ResponseEntity<String> saveStaff(IPageData pd);
+}

+ 9 - 1
WebService/src/main/java/com/java110/web/smo/impl/NavServiceSMOImpl.java

@@ -49,11 +49,19 @@ public class NavServiceSMOImpl extends BaseComponentSMO implements INavServiceSM
     @Override
     public ResponseEntity<String> getUserInfo(IPageData pd) {
         Assert.hasLength(pd.getUserId(),"用户未登录请先登录");
-        ResponseEntity<String> responseEntity = null;
+        /*ResponseEntity<String> responseEntity = null;
         responseEntity = this.callCenterService(restTemplate,pd,"", ServiceConstant.SERVICE_API_URL+"/api/query.user.userInfo?userId="+pd.getUserId(), HttpMethod.GET);
         // 过滤返回报文中的字段,只返回name字段
         //{"address":"","orderTypeCd":"Q","serviceCode":"","responseTime":"20190401194712","sex":"","localtionCd":"","userId":"302019033054910001","levelCd":"00","transactionId":"-1","dataFlowId":"-1","response":{"code":"0000","message":"成功"},"name":"996icu","tel":"18909780341","bId":"-1","businessType":"","email":""}
 
+        if(responseEntity.getStatusCode() == HttpStatus.OK){
+            JSONObject tmpUserInfo = JSONObject.parseObject(responseEntity.getBody().toString());
+            JSONObject resultUserInfo = new JSONObject();
+            resultUserInfo.put("name",tmpUserInfo.getString("name"));
+            responseEntity = new ResponseEntity<String>(resultUserInfo.toJSONString(),HttpStatus.OK);
+        }*/
+        ResponseEntity<String> responseEntity = null;
+        responseEntity = super.getUserInfo(pd,restTemplate);
         if(responseEntity.getStatusCode() == HttpStatus.OK){
             JSONObject tmpUserInfo = JSONObject.parseObject(responseEntity.getBody().toString());
             JSONObject resultUserInfo = new JSONObject();

+ 64 - 0
WebService/src/main/java/com/java110/web/smo/impl/StaffServiceSMOImpl.java

@@ -0,0 +1,64 @@
+package com.java110.web.smo.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.constant.ServiceConstant;
+import com.java110.common.util.Assert;
+import com.java110.core.context.IPageData;
+import com.java110.web.core.BaseComponentSMO;
+import com.java110.web.smo.IStaffServiceSMO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * 员工服务类
+ * Created by Administrator on 2019/4/2.
+ */
+@Service("staffServiceSMOImpl")
+public class StaffServiceSMOImpl extends BaseComponentSMO implements IStaffServiceSMO {
+    private final static Logger logger = LoggerFactory.getLogger(StaffServiceSMOImpl.class);
+
+    @Autowired
+    private RestTemplate restTemplate;
+    /**
+     * 添加员工信息
+     * @param pd
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> saveStaff(IPageData pd) {
+        logger.debug("保存员工信息入参:{}",pd.toString());
+        Assert.jsonObjectHaveKey(pd.getReqData(),"username","请求报文格式错误或未包含用户名信息");
+        Assert.jsonObjectHaveKey(pd.getReqData(),"email","请求报文格式错误或未包含邮箱信息");
+        Assert.jsonObjectHaveKey(pd.getReqData(),"tel","请求报文格式错误或未包含手机信息");
+        Assert.jsonObjectHaveKey(pd.getReqData(),"sex","请求报文格式错误或未包含性别信息");
+        Assert.jsonObjectHaveKey(pd.getReqData(),"address","请求报文格式错误或未包含地址信息");
+
+        ResponseEntity responseEntity = super.getStoreInfo(pd,restTemplate);
+
+        if(responseEntity.getStatusCode() != HttpStatus.OK){
+            return responseEntity;
+        }
+        Assert.jsonObjectHaveKey(responseEntity.getBody().toString(),"storeId","根据用户ID查询商户ID失败,未包含storeId节点");
+
+        String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId");
+        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
+        reqJson.put("storeId",storeId);
+        responseEntity = this.callCenterService(restTemplate,pd,reqJson.toJSONString(), ServiceConstant.SERVICE_API_URL+"/api/user.staff.add", HttpMethod.POST);
+        return responseEntity;
+    }
+
+
+    public RestTemplate getRestTemplate() {
+        return restTemplate;
+    }
+
+    public void setRestTemplate(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+}

+ 46 - 0
WebService/src/main/resources/components/add-staff/addStaff.html

@@ -0,0 +1,46 @@
+<div id = "addStaffModel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" >
+    <div class="modal-dialog modal-lg">
+        <div class="modal-content">
+            <div class="modal-body">
+                <h3 class="m-t-none m-b ">添加员工</h3>
+                <div class="ibox-content">
+                    <div>
+                        <p style="color:red;">{{addStaffInfo.errorInfo}}</p>
+                        <div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">员工名称</label>
+                                <div class="col-sm-10"><input v-model="addStaffInfo.username" type="text" placeholder="必填,请填写员工名称" class="form-control"></div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">员工邮箱</label>
+                                <div class="col-sm-10"><input v-model="addStaffInfo.email" type="email" placeholder="必填,请填写员工名称" class="form-control"></div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">手机号码</label>
+                                <div class="col-sm-10"><input v-model="addStaffInfo.tel" type="tel" placeholder="必填,请填写手机号码" class="form-control"></div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">员工性别</label>
+                                <div class="col-sm-10">
+                                    <select class="custom-select" v-model="addStaffInfo.sex">
+                                        <option selected value="">必填,请选择员工性别</option>
+                                        <option value="0">男</option>
+                                        <option value="1">女</option>
+                                    </select>
+                                </div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">家庭住址</label>
+                                <div class="col-sm-10"><input v-model="addStaffInfo.address" type="text" placeholder="请填写家庭住址" class="form-control"></div>
+                            </div>
+                            <div class="ibox-content">
+                                <button class="btn btn-primary float-right" type="button" v-on:click="saveStaffInfo()" ><i class="fa fa-check"></i>&nbsp;保存</button>
+                                <button type="button" class="btn btn-warning float-right" style="margin-right:20px;" data-dismiss="modal">取消</button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 127 - 0
WebService/src/main/resources/components/add-staff/addStaff.js

@@ -0,0 +1,127 @@
+(function(vc){
+
+    vc.extends({
+        data:{
+            addStaffInfo:{
+                username:'',
+                email:'',
+                tel:'',
+                sex:'',
+                address:'',
+                errorInfo:''
+            }
+        },
+         _initMethod:function(){
+
+         },
+         _initEvent:function(){
+
+        },
+        methods:{
+            addStaffValidate(){
+                return vc.validate.validate({
+                    addStaffInfo:vc.component.addStaffInfo
+                },{
+                    'addStaffInfo.username':[
+                        {
+                            limit:"required",
+                            param:"",
+                            errInfo:"用户名不能为空"
+                        },
+                        {
+                            limit:"maxin",
+                            param:"4,6",
+                            errInfo:"用户名长度必须在4位至6位"
+                        },
+                    ],
+                    'addStaffInfo.email':[
+                        {
+                            limit:"required",
+                            param:"",
+                            errInfo:"密码不能为空"
+                        },
+                        {
+                            limit:"email",
+                            param:"",
+                            errInfo:"不是有效的邮箱"
+                        },
+                    ],
+                    'addStaffInfo.tel':[
+                        {
+                            limit:"required",
+                            param:"",
+                            errInfo:"手机号不能为空"
+                        },
+                        {
+                            limit:"phone",
+                            param:"",
+                            errInfo:"不是有效的手机号"
+                        }
+                    ],
+                    'addStaffInfo.sex':[
+                        {
+                            limit:"required",
+                            param:"",
+                            errInfo:"性别不能为空"
+                        }
+                    ],
+                    'addStaffInfo.address':[
+                        {
+                            limit:"required",
+                            param:"",
+                            errInfo:"地址不能为空"
+                        },
+                        {
+                            limit:"maxLength",
+                            param:"200",
+                            errInfo:"地址长度不能超过200位"
+                        },
+                    ]
+
+                });
+            },
+            saveStaffInfo:function(){
+                if(!vc.component.addStaffValidate()){
+                    vc.component.addStaffInfo.errorInfo = vc.validate.errInfo;
+                    return ;
+                }
+
+                vc.component.addStaffInfo.errorInfo = "";
+                vc.http.post(
+                    'addStaff',
+                    'saveStaff',
+                    JSON.stringify(vc.component.addStaffInfo),
+                    {
+                        emulateJSON:true
+                     },
+                     function(json,res){
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if(res.status == 200){
+                            //关闭model
+                            $('#addStaffModel').modal({show:false});
+                            vc.component.clearAddStaffInfo();
+                            vc.component.$emit('addStaff_reload_event',{});
+                            return ;
+                        }
+                        vc.component.addStaffInfo.errorInfo = json;
+                     },
+                     function(errInfo,error){
+                        console.log('请求失败处理');
+
+                        vc.component.addStaffInfo.errorInfo = errInfo;
+                     });
+            },
+            clearAddStaffInfo:function(){
+                vc.component.addStaffInfo = {
+                                            username:'',
+                                            email:'',
+                                            tel:'',
+                                            sex:'',
+                                            address:'',
+                                            errorInfo:''
+                                        };
+            }
+        }
+    });
+
+})(window.vc);

+ 11 - 0
WebService/src/main/resources/components/pagination/pagination.html

@@ -0,0 +1,11 @@
+<nav aria-label="Page navigation example">
+    <ul class="pagination justify-content-end">
+        <li class="page-item" v-bind:class="{disabled:paginationInfo.currentPage == 1}">
+            <a class="page-link" v-on:click="previous()">上一页</a>
+        </li>
+        <li class="page-item" v-for="index in paginationInfo.total"><a class="page-link" v-on:click="current(index)">{{index}}</a></li>
+        <li class="page-item" v-bind:class="{disabled:paginationInfo.currentPage == paginationInfo.total}">
+            <a class="page-link" v-on:click="next()">下一页</a>
+        </li>
+    </ul>
+</nav>

+ 46 - 0
WebService/src/main/resources/components/pagination/pagination.js

@@ -0,0 +1,46 @@
+/**
+    分页组件
+**/
+(function(vc){
+    vc.extends({
+        data:{
+            paginationInfo:{
+                total:0,
+                currentPage:1
+            }
+        },
+        _initEvent:function(){
+             vc.component.$on('pagination_info_event',function(_paginationInfo){
+                    vc.component.paginationInfo.total = _paginationInfo.total;
+                    vc.component.paginationInfo.total = _paginationInfo.currentPage;
+                });
+        },
+        methods:{
+            previous:function(){
+                // 当前页为 1时 不触发消息
+                if(vc.component.paginationInfo.currentPage <=1){
+                    return;
+                }
+                vc.component.paginationInfo.currentPage = vc.component.paginationInfo.currentPage -1;
+                vc.component.$emit('pagination_page_event',vc.component.paginationInfo.currentPage);
+            },
+            next:function(){
+                if(vc.component.paginationInfo.currentPage >=vc.component.paginationInfo.total){
+                    return ;
+                }
+                vc.component.paginationInfo.currentPage = vc.component.paginationInfo.currentPage +1;
+                vc.component.$emit('pagination_page_event',vc.component.paginationInfo.currentPage);
+
+            },
+            current:function(_page){
+                if(_page > vc.component.paginationInfo.currentPage){
+                    return ;
+                }
+                vc.component.paginationInfo.currentPage = _page;
+
+                vc.component.$emit('pagination_page_event',vc.component.paginationInfo.currentPage);
+
+            }
+        }
+    });
+})(window.vc);

+ 49 - 0
WebService/src/main/resources/components/staff/staff.html

@@ -0,0 +1,49 @@
+<div class="row" >
+    <div class="col-lg-12">
+        <div class="ibox ">
+            <div class="ibox-title">
+                <h5>员工管理</h5>
+                <div class="ibox-tools">
+                        <button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#addStaffModel">添加员工</button>
+                </div>
+            </div>
+            <div class="ibox-content">
+                <div class="table-responsive">
+                    <table class="table table-striped table-bordered table-hover dataTables-example">
+                        <thead>
+                            <tr>
+                                <th>员工ID</th>
+                                <th>名称</th>
+                                <th>邮箱</th>
+                                <th>地址</th>
+                                <th>性别</th>
+                                <th>手机号</th>
+                                <th>状态</th>
+                                <th>创建时间</th>
+                                <th>操作</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            <tr class="gradeX" v-for="staff in staffData">
+                                <td>{{staff.userId}}</td>
+                                <td>{{staff.name}}</td>
+                                <td>{{staff.email}}</td>
+                                <td>{{staff.address}}</td>
+                                <td>{{staff.sex}}</td>
+                                <td>{{staff.tel}}</td>
+                                <td>{{staff.statusCd}}</td>
+                                <td>{{staff.createTime}}</td>
+                                <td>
+                                    <i class="glyphicon glyphicon-edit" style="color: #17a2b8;"></i>
+                                    <i class="glyphicon glyphicon-remove-sign" style="color: #dc3545;margin-left:5px"></i>
+                                </td>
+                            </tr>
+                        </tbody>
+                    </table>
+                    <!-- 分页 -->
+                    <vc:create name="pagination"></vc:create>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 94 - 0
WebService/src/main/resources/components/staff/staff.js

@@ -0,0 +1,94 @@
+(function(vc){
+   vc.extends({
+            data:{
+                staffData:[],
+
+            },
+            _initMethod:function(){
+                vc.component.loadData();
+            },
+            _initEvent:function(){
+                 vc.component.$on('pagination_page_event',function(_currentPage){
+                        vc.component.currentPage(_currentPage);
+                    });
+                 vc.component.$on('addStaff_reload_event',function(){
+                     vc.component.loadData();
+                 });
+            },
+            methods:{
+                loadData:function(){
+                    var param = {
+                        msg:'123',
+                    };
+
+                    //发送get请求
+                   vc.http.get('staff',
+                                'loadData',
+                                 param,
+                                 function(json){
+                                    var _staffInfo = JSON.parse(json);
+                                    vc.component.staffData = _staffInfo.data;
+                                    vc.component.$emit('pagination_info_event',{
+                                        total:_staffInfo.total,
+                                        currentPage:_staffInfo.page
+                                    });
+
+                                 },function(){
+                                    console.log('请求失败处理');
+                                 }
+                               );
+
+                },
+                currentPage:function(_currentPage){
+
+                },
+                addStaff:function(){
+                    var param = {
+                        msg:123
+                    };
+                      //发送get请求
+                   vc.http.post('nav',
+                                'logout',
+                                JSON.stringify(param),
+                               {
+                                   emulateJSON:true
+                                },
+                                 function(json,res){
+                                   if(res.status == 200){
+                                       vc.jumpToPage("/flow/login");
+                                       return ;
+                                   }
+                                 },function(){
+                                    console.log('请求失败处理');
+                                 }
+                               );
+                },
+                enableStaff:function(){
+                    //获取用户名
+                    var param = {
+                                        msg:'123',
+                    };
+
+                    //发送get请求
+                   vc.http.get('nav',
+                                'getUserInfo',
+                                 param,
+                                 function(json,res){
+                                    if(res.status == 200){
+                                        var tmpUserInfo = JSON.parse(json);
+                                       vc.component.userName = tmpUserInfo.name;
+                                   }
+                                 },function(){
+                                    console.log('请求失败处理');
+                                 }
+                               );
+                },
+                disableStaff:function(){
+
+                }
+            }
+
+
+        });
+
+})(window.vc);

+ 34 - 0
WebService/src/main/resources/views/staff.html

@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="en"
+      xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:th="http://www.thymeleaf.org"
+      xmlns:vc="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8"/>
+    <title>添加员工|java110</title>
+    <vc:create name="commonTop"></vc:create>
+</head>
+<body>
+<div id="wrapper">
+    <vc:create name="menu"></vc:create>
+
+
+    <div id="page-wrapper" class="gray-bg dashbard-1">
+        <div class="row border-bottom">
+            <vc:create name="nav"></vc:create>
+        </div>
+        <!-- id="component" -->
+        <div id="component" class="wrapper wrapper-content animated fadeInRight">
+            <vc:create name="staff"></vc:create>
+            <vc:create name="addStaff"></vc:create>
+        </div>
+
+
+        <vc:create name="copyright"></vc:create>
+
+    </div>
+</div>
+
+<vc:create name="commonBottom"></vc:create>
+</body>
+</html>