天天看點

2、項目規範

1、前台互動,傳遞的對象
1、前段響應類
1、一般正常responseBean.setCode(ErrorCodeEnum.正常.code);//200
2、Result對象正常
3、一般錯誤
4、錯誤資訊了,錄入,code系統錯誤
5、錯誤、枚舉code和desc錄入
6、錯誤、code,message自己填充
 
 
//
 // Source code recreated from a .class file by IntelliJ IDEA
 // (powered by Fernflower decompiler)
 //

package com.duodian.admore.core.bean;

 import com.duodian.admore.enums.ErrorCodeEnum;

 public class ResponseBean {
     private boolean success;
     private Object result = "{}";
     private String message = "";
     private String code = "";
     private String date;

     private ResponseBean() {
     }

     public static ResponseBean buildSuccess() {
         ResponseBean responseBean = new ResponseBean();
         responseBean.setSuccess(true);
         responseBean.setCode(ErrorCodeEnum.正常.code);//200
         responseBean.setDate(System.currentTimeMillis() + "");//系統事件戳
         return responseBean;
     }

     public static ResponseBean buildSuccess(Object result) {
         ResponseBean responseBean = new ResponseBean();
         responseBean.setSuccess(true);
         responseBean.setCode(ErrorCodeEnum.正常.code);
         responseBean.setResult(result);
         responseBean.setDate(System.currentTimeMillis() + "");
         return responseBean;
     }

     public static ResponseBean buildFailure() {
         ResponseBean responseBean = new ResponseBean();
         responseBean.setSuccess(false);
         responseBean.setCode(ErrorCodeEnum.系統錯誤.code);
         responseBean.setDate(System.currentTimeMillis() + "");
         return responseBean;
     }

     public static ResponseBean buildFailure(String message) {
         ResponseBean responseBean = new ResponseBean();
         responseBean.setSuccess(false);
         responseBean.setCode(ErrorCodeEnum.系統錯誤.code);
         responseBean.setMessage(message);
         responseBean.setDate(System.currentTimeMillis() + "");
         return responseBean;
     }

     public static ResponseBean buildFailure(ErrorCodeEnum errorCodeEnum) {
        ResponseBean responseBean = new ResponseBean();
         responseBean.setSuccess(false);
         responseBean.setCode(errorCodeEnum.code);
         responseBean.setMessage(errorCodeEnum.desc);
         responseBean.setDate(System.currentTimeMillis() + "");
         return responseBean;
     }

     public static ResponseBean buildFailure(String code, String message) {
         ResponseBean responseBean = new ResponseBean();
         responseBean.setSuccess(false);
         responseBean.setCode(code);
         responseBean.setMessage(message);
         responseBean.setDate(System.currentTimeMillis() + "");
         return responseBean;
     }

 get set
 } 
2、枚舉資訊類
 
//
 // Source code recreated from a .class file by IntelliJ IDEA
 // (powered by Fernflower decompiler)
 //

package com.duodian.admore.enums;

 public enum ErrorCodeEnum {
     正常("200", "通路正常"),
     條件驗證失敗("201", "條件驗證失敗"),
     參數解析失敗("202", "參數解析失敗"),
     操作确認("203", "操作确認"),
     邏輯錯誤("301", "邏輯錯誤"),
     登入辨別過期("400", "登入辨別過期"),
     強制更新("401", "強制更新"),
     通路禁止("403", "通路禁止"),
     頁面丢失("404", "頁面丢失"),
     系統錯誤("500", "系統内部錯誤"),
     未登入("204", "未登入"),
     不是企業認證("205", "不是企業認證"),
     UNKNOWN("999", "未知錯誤");

     public String code;
     public String desc;

     private ErrorCodeEnum(String code, String desc) {
         this.code = code;
         this.desc = desc;
     }

     public static String getDesc(String code) {
         if (code != null && !"".equals(code)) {
             ErrorCodeEnum[] var1 = values();
             int var2 = var1.length;

             for(int var3 = 0; var3 < var2; ++var3) {
                 ErrorCodeEnum desc = var1[var3];
                 if (desc.code.equals(code)) {
                     return desc.desc;
                 }
             }

             return UNKNOWN.desc;
         } else {
             return UNKNOWN.desc;
         }
     }
 } 
 
1、 儲存操作,
1、一般正常
2、錯誤資訊,錄入
 
@RequestMapping("save")
@ResponseBody
public ResponseBean save(Customer customer){
     try {
         customerService.saveCustomer(customer);
         return ResponseBean.buildSuccess(); //一般正常
     } catch (AppException e) {
         return ResponseBean.buildFailure(e.getMessage()); //将報錯資訊輸入
     }
 } 
 
2、查詢操作findCustomerById(Long id)
1、result的正常傳回
2、錯誤資訊,錄入
 
@RequestMapping("findCustomerById")
@ResponseBody
public ResponseBean findCustomerById(Long id){
     try {
         Customer customer = customerService.findCustomerById(id);
         return ResponseBean.buildSuccess(customer);
     } catch (AppException e) {
         return ResponseBean.buildFailure(e.getMessage());
     }
 } 
 
3、資料字典  (用到了上面的Object 對象)
1、result的正常傳回
 
@RequestMapping("getStatusList")
@ResponseBody
public ResponseBean getStatusList(){
     try {
         return ResponseBean.buildSuccess(EnumCrmUserStatus.getTypeList());
     } catch (AppException e) {
         return ResponseBean.buildFailure(e.getMessage());
     }
 } 
2、枚舉如下
 
package com.duodian.admore.enums.customer;


 import java.util.Arrays;
 import java.util.List;

/**
  * 類名稱:EnumCrmUserType
  * 類描述:crm客戶來源
  * 建立人:shiwei
  * 修改人:
  * 修改時間:2015/12/19 17:47
  * 修改備注:
  *
  * @version 1.0.0
  */
public enum EnumCrmUserStatus {

     潛在客戶(1,"潛在客戶"),
     有意向(2,"有意向"),
     失敗(3,"失敗"),
     已成交(4,"已成交"),
     老客戶(5,"老客戶"),

     無(88,"無"),

     未知(99,"未知")
     ;

     public Integer type;
     public String des;

     EnumCrmUserStatus(Integer type, String des) {
         this.type = type;
         this.des = des;
     }

     public static List<EnumCrmUserStatus> getTypeList() {
         return Arrays.asList(values());
     }


     public Integer getType() {
         return type;
     }

     public String getDes() {
         return des;
     }

     public static boolean checkExist(Integer type){
         if(type == null) return false;
         for (EnumCrmUserStatus value : EnumCrmUserStatus.values()){
             if (value.type.compareTo(type) == 0){
                 return true;
             }
         }
         return false;
     }



     public static EnumCrmUserStatus getEnumCashFlowType(Integer type){
         if(type == null) return EnumCrmUserStatus.未知;
         for (EnumCrmUserStatus value : EnumCrmUserStatus.values()){
             if (value.type.compareTo(type) == 0){
                 return value;
             }
         }
         return EnumCrmUserStatus.未知;
     }

     public static String getDes(Integer type){
         if(type == null) return EnumCrmUserStatus.未知.des;
         for (EnumCrmUserStatus value : EnumCrmUserStatus.values()){
             if (value.type.compareTo(type) == 0){
                 return value.des;
             }
         }
         return EnumCrmUserStatus.未知.des;
     }
 } 
 
4、根據id删除
1、一般正常
2、資訊錯誤錄入
 
@RequestMapping("del")
@ResponseBody
public ResponseBean delCustomer(Long id){
     try {
         customerService.delCustomer(id);
         return ResponseBean.buildSuccess();
     } catch (AppException e) {
         return ResponseBean.buildFailure(e.getMessage());
     }
 } 
2、删除的正确使用方式
 
1、正常情況下不應該從資料庫表中直接删除,而是應該添加字段,讓它變成不可見。(這種不可見需要再查詢的時候特别 注意)
1、删除代碼,
 
@Override
public void delContact(Long ContactId) {
     Contact Contact = ContactDAO.findOne(ContactId);
     Contact.setIsVisible(Contact.DISABLE);
     ContactDAO.save(Contact);
} 
 
2、對應實體類字段
 
@Entity
 @Table(name = "crm_contact_record")
public class Contact implements Serializable {

    public static final int ENABLE = 1;  //可見
     public static final int DISABLE = 0; //不可見

     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
     private Long adminId;
     private Long customerId;
     private String title;
     private String contactName;
     private Integer type;
     private String content;
     private Integer isVisible;
     private Date contactTime;
     private Date cdate; 
 
3、自定義異常的使用
 
1、業務異常
 
/**
  * Created by j.sh on 2015/5/9.
  * 業務異常
  */
public class AppException extends RuntimeException {

     private String code;

     public AppException(String message) {
         super(message);
         this.code = ErrorCodeEnum.邏輯錯誤.code;
     }

     public AppException(String code,String message) {
         super(message);
         this.code = code;
     }

     public String getCode() {
         return code;
     }

     public void setCode(String code) {
         this.code = code;
     }
 } 
 
2、異常錯誤的枚舉值
 
/**
  * 類名稱:ErrorCodeEnum
  * 類描述:錯誤狀态枚舉值
  * 建立人:qingxu
  * 修改人:
  * 修改時間:2015/11/5 11:27
  * 修改備注:
  *
  * @version 1.0.0
  */
public enum ErrorCodeEnum {

     正常("200","通路正常"),
     條件驗證失敗("201","條件驗證失敗"),
     參數解析失敗("202","參數解析失敗"),
     操作确認("203","操作确認"),
     邏輯錯誤("301","邏輯錯誤"),
     登入辨別過期("400","登入辨別過期"),
     強制更新("401","強制更新"),
     通路禁止("403","通路禁止"),
     頁面丢失("404","頁面丢失"),
     系統錯誤("500","系統内部錯誤"),
     未登入("204","未登入"),
     不是企業認證("205","不是企業認證"),
     UNKNOWN("999","未知錯誤")
     ;

     public String code;

     public String desc;

     ErrorCodeEnum(String code, String desc) {
         this.code = code;
         this.desc = desc;
     }

     public static String getDesc(String code){
         if(code == null || "".equals(code)){
             return ErrorCodeEnum.UNKNOWN.desc;
         }
         for(ErrorCodeEnum desc: ErrorCodeEnum.values()){
             if(desc.code.equals(code)){
                 return desc.desc;
             }
         }
         return ErrorCodeEnum.UNKNOWN.desc;
     }
 } 
3、正确使用
 
@RequestMapping("config/loadDockedQuery")
@ResponseBody
public ResponseBean loadDockedQuery(Integer dockedType,String validate){
     try {
         AppsDockedConfigData data = appsDockedBufferService.loadAppsDockedConfigData(validate,dockedType);
         return ResponseBean.buildSuccess(data);
     } catch (AppException e) {
         return ResponseBean.buildFailure(e.getCode(),e.getMessage());
     } catch (Exception e) {
         logger.error(e.getMessage(),e);
         return ResponseBean.buildFailure(ErrorCodeEnum.系統錯誤);
     }
 } 
4、js前端調用
 
$http.post(ctx + '/skin/enable', {
     appId: item.trackId,
     channelListsEnableValue: $scope.channelListsEnableValue
}).success(function (data, status) {
         $scope.processing = false;
         if (data.success) {
             toastr.success('操作成功', '提示');
             $scope.skinData();
         } else {
             ngDialog.alert(data.message);
         }
     })
     .error(function (data, status) {
         $scope.processing = false;
         ngDialog.alert('操作失敗');
     });