浏览代码

接口添加

wangmh 7 年之前
父节点
当前提交
bb44a46474
共有 20 个文件被更改,包括 2839 次插入168 次删除
  1. 83 0
      sso-common/src/main/java/com/uas/sso/core/Status.java
  2. 303 0
      sso-common/src/main/java/com/uas/sso/entity/PartnershipRecordView.java
  3. 112 0
      sso-common/src/main/java/com/uas/sso/entity/RequestStatus.java
  4. 194 166
      sso-common/src/main/java/com/uas/sso/util/AccountUtils.java
  5. 1 1
      sso-server/src/main/java/com/uas/sso/SSOConfiguration.java
  6. 244 0
      sso-server/src/main/java/com/uas/sso/controller/PartnershipController.java
  7. 185 0
      sso-server/src/main/java/com/uas/sso/controller/PartnershipManagerController.java
  8. 13 0
      sso-server/src/main/java/com/uas/sso/dao/PartnershipLogDao.java
  9. 96 0
      sso-server/src/main/java/com/uas/sso/dao/PartnershipRecordDao.java
  10. 192 0
      sso-server/src/main/java/com/uas/sso/entity/InvitationRecord.java
  11. 38 0
      sso-server/src/main/java/com/uas/sso/entity/PageInfo.java
  12. 73 0
      sso-server/src/main/java/com/uas/sso/entity/PartnershipLog.java
  13. 420 0
      sso-server/src/main/java/com/uas/sso/entity/PartnershipRecord.java
  14. 24 0
      sso-server/src/main/java/com/uas/sso/logging/PartnershipBufferedLogger.java
  15. 12 0
      sso-server/src/main/java/com/uas/sso/service/PartnershipLogService.java
  16. 237 0
      sso-server/src/main/java/com/uas/sso/service/PartnershipService.java
  17. 1 0
      sso-server/src/main/java/com/uas/sso/service/UserspaceService.java
  18. 31 0
      sso-server/src/main/java/com/uas/sso/service/impl/PartnershipLogServiceImpl.java
  19. 579 0
      sso-server/src/main/java/com/uas/sso/service/impl/PartnershipServiceImpl.java
  20. 1 1
      sso-server/src/main/java/com/uas/sso/service/impl/UserServiceImpl.java

+ 83 - 0
sso-common/src/main/java/com/uas/sso/core/Status.java

@@ -0,0 +1,83 @@
+package com.uas.sso.core;
+
+/**
+ * 状态
+ *
+ * @author wangmh
+ * @date 2018/1/2
+ */
+public enum Status {
+
+    NOT_APPLYING(0, "未申请"),
+    TO_BE_CERTIFIED(1, "待认证"),
+    AUTHENTICATED(2, "已认证"),
+    NOT_PASSED(3, "未通过"),
+
+    /**
+     * {@code 310 未启用}
+     */
+    UNAPPLY(310, "未启用"),
+    /**
+     * {@code 311 申请中}
+     */
+    UNAUDIT(311, "申请中"),
+    /**
+     * {@code 312 未激活}
+     */
+    UNACT(312, "未激活"),
+    /**
+     * {@code 313 已激活}
+     */
+    ENABLED(313, "已激活"),
+    /**
+     * {@code 314 已禁用}
+     */
+    DISABLED(314, "已禁用"),
+    /**
+     * {@code 315 已注销,已取消}
+     */
+    CANCELLED(315, "已注销"),
+    /**
+     * {@code 316 已同意}
+     */
+    AGREE(316, "已同意"),
+    /**
+     * {@code 317 已拒绝}
+     */
+    DISAGREE(317, "已拒绝"),
+    /**
+     * {@code 400 信息资料还未验证}
+     */
+    UNAPPROVED(400, "待验证"),
+    /**
+     * {@code 401 信息资料已进行验证,但未通过审核}
+     */
+    APPROVED_ERROR(401, "验证不通过"),
+    /**
+     * {@code 402 信息资料已验证通过}
+     */
+    APPROVED_SUCCESS(402, "已验证");
+
+    /**
+     * 代码
+     */
+    private final int code;
+
+    /**
+     * 短语描述
+     */
+    private final String phrase;
+
+    Status(int code, String phrase) {
+        this.code = code;
+        this.phrase = phrase;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public String getPhrase() {
+        return phrase;
+    }
+}

+ 303 - 0
sso-common/src/main/java/com/uas/sso/entity/PartnershipRecordView.java

@@ -0,0 +1,303 @@
+package com.uas.sso.entity;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+/**
+ * @author wangmh
+ * @create 2018-02-06 10:50
+ * @desc 合作伙伴关系视图
+ **/
+public class PartnershipRecordView implements Serializable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 应用
+     */
+    private String appId;
+
+    /**
+     * 申请时间
+     */
+    private Timestamp requestDate;
+
+    /**
+     * 申请企业uu号
+     */
+    private Long custSpaceUU;
+
+    /**
+     * 申请企业的名称
+     */
+    private String custSpaceName;
+
+    /**
+     * 申请企业的营业执照号
+     */
+    private String custBusinessCode;
+
+    /**
+     * 申请人的uu号
+     */
+    private Long custUserUU;
+
+    /**
+     * 申请人的姓名
+     */
+    private String custUserName;
+
+    /**
+     * 申请人的联系方式
+     */
+    private String custUserTel;
+
+    /**
+     * 申请人的联系方式
+     */
+    private String custUserEmail;
+
+    /**
+     * 客户的标识(如UU号等)
+     */
+    private Long vendSpaceUU;
+
+    /**
+     * 客户的企业名称
+     */
+    private String vendSpaceName;
+
+    /**
+     * 客户的营业执照号
+     */
+    private String vendBusinessCode;
+
+    /**
+     * 审核人标志(uu号等)
+     */
+    private Long vendUserUU;
+
+    /**
+     * 审核人姓名
+     */
+    private String vendUserName;
+
+    /**
+     * 审核人联系方式
+     */
+    private String vendUserTel;
+
+    /**
+     * 审核人邮箱
+     */
+    private String vendUserEmail;
+
+    /**
+     * 审核时间
+     */
+    private Timestamp operateDate;
+
+    /**
+     * 申请状态码
+     */
+    private Integer statusCode;
+
+    /**
+     * 申请状态
+     */
+    private String status;
+
+    /**
+     * 原因
+     */
+    private String reason;
+
+    /**
+     * 添加合作伙伴关系后方式
+     */
+    private String method;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
+    public Timestamp getRequestDate() {
+        return requestDate;
+    }
+
+    public void setRequestDate(Timestamp requestDate) {
+        this.requestDate = requestDate;
+    }
+
+    public Long getCustSpaceUU() {
+        return custSpaceUU;
+    }
+
+    public void setCustSpaceUU(Long custSpaceUU) {
+        this.custSpaceUU = custSpaceUU;
+    }
+
+    public String getCustSpaceName() {
+        return custSpaceName;
+    }
+
+    public void setCustSpaceName(String custSpaceName) {
+        this.custSpaceName = custSpaceName;
+    }
+
+    public String getCustBusinessCode() {
+        return custBusinessCode;
+    }
+
+    public void setCustBusinessCode(String custBusinessCode) {
+        this.custBusinessCode = custBusinessCode;
+    }
+
+    public Long getCustUserUU() {
+        return custUserUU;
+    }
+
+    public void setCustUserUU(Long custUserUU) {
+        this.custUserUU = custUserUU;
+    }
+
+    public String getCustUserName() {
+        return custUserName;
+    }
+
+    public void setCustUserName(String custUserName) {
+        this.custUserName = custUserName;
+    }
+
+    public String getCustUserTel() {
+        return custUserTel;
+    }
+
+    public void setCustUserTel(String custUserTel) {
+        this.custUserTel = custUserTel;
+    }
+
+    public String getCustUserEmail() {
+        return custUserEmail;
+    }
+
+    public void setCustUserEmail(String custUserEmail) {
+        this.custUserEmail = custUserEmail;
+    }
+
+    public Long getVendSpaceUU() {
+        return vendSpaceUU;
+    }
+
+    public void setVendSpaceUU(Long vendSpaceUU) {
+        this.vendSpaceUU = vendSpaceUU;
+    }
+
+    public String getVendSpaceName() {
+        return vendSpaceName;
+    }
+
+    public void setVendSpaceName(String vendSpaceName) {
+        this.vendSpaceName = vendSpaceName;
+    }
+
+    public String getVendBusinessCode() {
+        return vendBusinessCode;
+    }
+
+    public void setVendBusinessCode(String vendBusinessCode) {
+        this.vendBusinessCode = vendBusinessCode;
+    }
+
+    public Long getVendUserUU() {
+        return vendUserUU;
+    }
+
+    public void setVendUserUU(Long vendUserUU) {
+        this.vendUserUU = vendUserUU;
+    }
+
+    public String getVendUserName() {
+        return vendUserName;
+    }
+
+    public void setVendUserName(String vendUserName) {
+        this.vendUserName = vendUserName;
+    }
+
+    public String getVendUserTel() {
+        return vendUserTel;
+    }
+
+    public void setVendUserTel(String vendUserTel) {
+        this.vendUserTel = vendUserTel;
+    }
+
+    public String getVendUserEmail() {
+        return vendUserEmail;
+    }
+
+    public void setVendUserEmail(String vendUserEmail) {
+        this.vendUserEmail = vendUserEmail;
+    }
+
+    public Timestamp getOperateDate() {
+        return operateDate;
+    }
+
+    public void setOperateDate(Timestamp operateDate) {
+        this.operateDate = operateDate;
+    }
+
+    public Integer getStatusCode() {
+        return statusCode;
+    }
+
+    public void setStatusCode(Integer statusCode) {
+        this.statusCode = statusCode;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public String getMethod() {
+        return method;
+    }
+
+    public void setMethod(String method) {
+        this.method = method;
+    }
+}

+ 112 - 0
sso-common/src/main/java/com/uas/sso/entity/RequestStatus.java

@@ -0,0 +1,112 @@
+package com.uas.sso.entity;
+
+import java.io.Serializable;
+
+/**
+ * 通过当前分页的企业营业执照和当前登录企业的营业执照号查询申请状态
+ * 
+ * @author hejq
+ * @time 创建时间:2017年2月20日
+ */
+public class RequestStatus implements Serializable {
+
+	/**
+	 * 序号
+	 */
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 申请方uu号
+	 */
+	private Long custUU;
+
+	/**
+	 * 申请方营业执照号
+	 */
+	private String custBusinessCode;
+
+	/**
+	 * 接收方uu号
+	 */
+	private Long vendUU;
+
+	/**
+	 * 接收方执照号
+	 */
+	private String vendBusinessCode;
+
+	/**
+	 * 申请状态
+	 */
+	private Integer StatusCode;
+
+	/**
+	 * 方式(主动还是被动)<br>
+	 * 1: 主动发出 <br>
+	 * 0: 对方发出
+	 */
+	private Integer method;
+
+	/**
+	 * 是否需要操作(即他人发出请求且为待回复)<br>
+	 * 1: 需要 <br>
+	 * 0: 不需要
+	 */
+	private Integer needAgreed;
+
+	public Long getCustUU() {
+		return custUU;
+	}
+
+	public void setCustUU(Long custUU) {
+		this.custUU = custUU;
+	}
+
+	public String getCustBusinessCode() {
+		return custBusinessCode;
+	}
+
+	public void setCustBusinessCode(String custBusinessCode) {
+		this.custBusinessCode = custBusinessCode;
+	}
+
+	public Long getVendUU() {
+		return vendUU;
+	}
+
+	public void setVendUU(Long vendUU) {
+		this.vendUU = vendUU;
+	}
+
+	public String getVendBusinessCode() {
+		return vendBusinessCode;
+	}
+
+	public void setVendBusinessCode(String vendBusinessCode) {
+		this.vendBusinessCode = vendBusinessCode;
+	}
+
+	public Integer getStatusCode() {
+		return StatusCode;
+	}
+
+	public void setStatusCode(Integer statusCode) {
+		StatusCode = statusCode;
+	}
+
+	public Integer getMethod() {
+		return method;
+	}
+
+	public void setMethod(Integer method) {
+		this.method = method;
+	}
+
+	public Integer getNeedAgreed() {
+		return needAgreed;
+	}
+
+	public void setNeedAgreed(Integer needAgreed) {
+		this.needAgreed = needAgreed;
+	}
+}

+ 194 - 166
sso-common/src/main/java/com/uas/sso/util/AccountUtils.java

@@ -6,16 +6,14 @@ import com.alibaba.fastjson.TypeReference;
 import com.uas.sso.AccountConfig;
 import com.uas.sso.ResultWrap;
 import com.uas.sso.common.util.HttpUtil;
-import com.uas.sso.entity.ApplyUserSpaceView;
-import com.uas.sso.entity.UserSpaceView;
-import com.uas.sso.entity.UserView;
+import com.uas.sso.entity.*;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 /**
  * 客户端使用,操作企业资料、用户资料
@@ -366,6 +364,28 @@ public class AccountUtils {
         return null;
     }
 
+    /**
+     * 通过当前企业号和企业列表中的企业号查询申请状态
+     *
+     * @return
+     * @throws Exception
+     */
+    public static RequestStatus getStatusByCustUidAndVendUid(String custBusinessCode, String vendBusinessCode) throws Exception {
+        String url = AccountConfig.getEnPartnersUrl();
+        RequestStatus request = new RequestStatus();
+        if (!StringUtils.isEmpty(url)) {
+            HttpUtil.ResponseWrap res = HttpUtil.doGet(url, new ModelMap("_operate", "getRequestStatus")
+                    .addAttribute("vendBusinessCode", vendBusinessCode)
+                    .addAttribute("custBusinessCode", custBusinessCode));
+            if (!res.isSuccess()) {
+                throw new Exception(res.getContent());
+            } else {
+                request = JSON.parseObject(res.getContent(), RequestStatus.class);
+            }
+        }
+        return request;
+    }
+
 /// 之后方法会恢复并修改
 //
 //	/**
@@ -500,32 +520,39 @@ public class AccountUtils {
 //		}
 //		return user;
 //	}
-//
-//	/**
-//	 * 传入当前登录的企业的营业执照号,查询发出的申请
-//	 *
-//	 * @param businessCode
-//	 * @param statusCode
-//	 * @param keyword
-//	 * @param pageNumber
-//	 * @param pageSize
-//	 * @return
-//	 * @throws Exception
-//	 */
-//	public static Page<PartnershipRecord> getAllRequest(String businessCode, Integer statusCode, String keyword, int pageNumber,
-//														int pageSize) throws Exception {
-//		String getUrl = AccountConfig.getEnPartnersUrl();
-//		if (!StringUtils.isEmpty(getUrl)) {
-//			ResponseWrap res = HttpUtil.doGet(getUrl, new ModelMap("_operate", "getAllRequest").addAttribute("businessCode", businessCode)
-//					.addAttribute("statusCode", statusCode).addAttribute("businessCode", businessCode).addAttribute("keyword", keyword)
-//					.addAttribute("pageNumber", pageNumber).addAttribute("pageSize", pageSize));
-//			if (!res.isSuccess())
-//				throw new Exception(res.getContent());
-//			return JSONObject.parseObject(res.getContent(), new TypeReference<Page<PartnershipRecord>>() {
-//			});
-//		}
-//		return null;
-//	}
+
+	/**
+	 * 传入当前登录的企业的营业执照号,查询发出的申请
+	 *
+	 * @param businessCode 营业执照号
+	 * @param statusCode 状态吗
+	 * @param keyword 关键词
+	 * @param pageNumber 页号(0开始)
+	 * @param pageSize 每页数量
+	 * @return
+	 * @throws Exception
+	 */
+	public static Page<PartnershipRecordView> getAllRequest(String businessCode, Integer statusCode, String keyword, int pageNumber,
+                                                            int pageSize) throws Exception {
+		String getUrl = AccountConfig.getEnPartnersUrl();
+		if (!StringUtils.isEmpty(getUrl)) {
+			HttpUtil.ResponseWrap res = HttpUtil.doGet(getUrl, new ModelMap("_operate", "getAllRequest").addAttribute("businessCode", businessCode)
+					.addAttribute("statusCode", statusCode).addAttribute("businessCode", businessCode).addAttribute("keyword", keyword)
+					.addAttribute("pageNumber", pageNumber).addAttribute("pageSize", pageSize));
+			if (!res.isSuccess()) {
+                throw new Exception(res.getContent());
+            } else {
+                ResultWrap result = JSON.parseObject(res.getContent(), ResultWrap.class);
+                if (!result.isSuccess()) {
+                    throw new Exception(result.getErrMsg());
+                } else if (result.getContent() != null) {
+                    return JSONObject.parseObject(res.getContent(), new TypeReference<Page<PartnershipRecordView>>() {});
+                }
+            }
+
+		}
+		return null;
+	}
 //
 //	/**
 //	 * 通过已存在uu过滤,取出全部合作伙伴(UAS接口用)
@@ -551,16 +578,16 @@ public class AccountUtils {
 //		return null;
 //	}
 //
-//	/**
-//	 * 进入企业圈
-//	 *
-//	 * @return
-//	 * @throws Exception
-//	 */
-//	public static String redirectContactPage() throws Exception {
-//		String enterUrl = AccountConfig.getContactPageUrl();
-//		return enterUrl;
-//	}
+	/**
+	 * 进入企业圈
+	 *
+	 * @return
+	 * @throws Exception
+	 */
+	public static String redirectContactPage() throws Exception {
+		String enterUrl = AccountConfig.getContactPageUrl();
+		return enterUrl;
+	}
 //
 //	/**
 //	 * 通过关键词搜索企业信息
@@ -625,98 +652,98 @@ public class AccountUtils {
 //		}
 //		return null;
 //	}
+
+	/**
+	 * 新增一条合作关系记录
+	 *
+	 * @param record
+	 * @return
+	 * @throws Exception
+	 */
+	public static String addNewRecord(PartnershipRecordView record) throws Exception {
+		String url = AccountConfig.getEnPartnersUrl();
+		String result = null;
+		if (!StringUtils.isEmpty(url)) {
+			JSONObject formData = JSON.parseObject(JSON.toJSONString(record));
+			formData.put("_operate", "addPartner");
+			HttpUtil.ResponseWrap res = HttpUtil.doPost(url, formData);
+			result = res.getContent();
+		}
+		return result;
+	}
+
+	/**
+	 * 同步供应商关系为合作关系记录
+	 *
+	 * @param record
+	 * @return
+	 * @throws Exception
+	 */
+	public static String synchronizeRecord(PartnershipRecordView record) throws Exception {
+		String url = AccountConfig.getEnPartnersUrl();
+		String result = null;
+		if (!StringUtils.isEmpty(url)) {
+			JSONObject formData = JSON.parseObject(JSON.toJSONString(record));
+			formData.put("_operate", "synchronizePartner");
+			HttpUtil.ResponseWrap res = HttpUtil.doPost(url, formData);
+			result = res.getContent();
+		}
+		return result;
+	}
+
+	/**
+	 * 通过id和申请人的电话进行确认
+	 *
+	 * @param id
+	 * @param vendUserTel
+     * @param appId
+	 * @return
+	 * @throws Exception
+	 */
+	public static String acceptRequest(Long id, String vendUserTel, String appId) throws Exception {
+		String url = AccountConfig.getEnPartnersUrl();
+		String result = null;
+		if (!StringUtils.isEmpty(url)) {
+			HttpUtil.ResponseWrap res = HttpUtil.doGet(
+					url,
+					new ModelMap("_operate", "acceptRequest").addAttribute("id", id).addAttribute("vendUserTel", vendUserTel)
+							.addAttribute("appId", appId));
+			if (!res.isSuccess()) {
+                throw new Exception(res.getContent());
+            } else {
+				result = res.getContent();
+			}
+		}
+		return result;
+	}
 //
-//	/**
-//	 * 新增一条合作关系记录
-//	 *
-//	 * @param record
-//	 * @return
-//	 * @throws Exception
-//	 */
-//	public static String addNewRecord(PartnershipRecord record) throws Exception {
-//		String url = AccountConfig.getEnPartnersUrl();
-//		String result = null;
-//		if (!StringUtils.isEmpty(url)) {
-//			JSONObject formData = JSON.parseObject(JSON.toJSONString(record));
-//			formData.put("_operate", "addPartner");
-//			ResponseWrap res = HttpUtil.doPost(url, formData);
-//			result = res.getContent();
-//		}
-//		return result;
-//	}
-//
-//	/**
-//	 * 同步供应商关系为合作关系记录
-//	 *
-//	 * @param record
-//	 * @return
-//	 * @throws Exception
-//	 */
-//	public static String synchronizeRecord(PartnershipRecord record) throws Exception {
-//		String url = AccountConfig.getEnPartnersUrl();
-//		String result = null;
-//		if (!StringUtils.isEmpty(url)) {
-//			JSONObject formData = JSON.parseObject(JSON.toJSONString(record));
-//			formData.put("_operate", "synchronizePartner");
-//			ResponseWrap res = HttpUtil.doPost(url, formData);
-//			result = res.getContent();
-//		}
-//		return result;
-//	}
-//
-//	/**
-//	 * 通过id和申请人的电话进行确认
-//	 *
-//	 * @param id
-//	 * @param vendUserTel
-//     * @param appId
-//	 * @return
-//	 * @throws Exception
-//	 */
-//	public static String acceptRequest(Long id, String vendUserTel, String appId) throws Exception {
-//		String url = AccountConfig.getEnPartnersUrl();
-//		String result = null;
-//		if (!StringUtils.isEmpty(url)) {
-//			ResponseWrap res = HttpUtil.doGet(
-//					url,
-//					new ModelMap("_operate", "acceptRequest").addAttribute("id", id).addAttribute("vendUserTel", vendUserTel)
-//							.addAttribute("appId", appId));
-//			if (!res.isSuccess())
-//				throw new Exception(res.getContent());
-//			else {
-//				result = res.getContent();
-//			}
-//		}
-//		return result;
-//	}
-//
-//	/**
-//	 * 申请不通过,通过申请人的电话操作,并标出原因
-//	 *
-//	 * @param id
-//	 * @param reason
-//	 * @param vendUserTel
-//     * @param appId
-//	 * @return
-//	 * @throws Exception
-//	 */
-//	public static String rejectRequest(Long id, String reason, String vendUserTel, String appId) throws Exception {
-//		String url = AccountConfig.getEnPartnersUrl();
-//		String result = null;
-//		if (!StringUtils.isEmpty(url)) {
-//			ResponseWrap res = HttpUtil.doGet(
-//					url,
-//					new ModelMap("_operate", "rejectRequest").addAttribute("id", id).addAttribute("reason", reason)
-//							.addAttribute("vendUserTel", vendUserTel).addAttribute("appId", appId));
-//			if (!res.isSuccess())
-//				throw new Exception(res.getContent());
-//			else {
-//				result = res.getContent();
-//			}
-//		}
-//		return result;
-//	}
-//
+	/**
+	 * 申请不通过,通过申请人的电话操作,并标出原因
+	 *
+	 * @param id
+	 * @param reason
+	 * @param vendUserTel
+     * @param appId
+	 * @return
+	 * @throws Exception
+	 */
+	public static String rejectRequest(Long id, String reason, String vendUserTel, String appId) throws Exception {
+		String url = AccountConfig.getEnPartnersUrl();
+		String result = null;
+		if (!StringUtils.isEmpty(url)) {
+			HttpUtil.ResponseWrap res = HttpUtil.doGet(
+					url,
+					new ModelMap("_operate", "rejectRequest").addAttribute("id", id).addAttribute("reason", reason)
+							.addAttribute("vendUserTel", vendUserTel).addAttribute("appId", appId));
+			if (!res.isSuccess()) {
+                throw new Exception(res.getContent());
+            } else {
+				result = res.getContent();
+			}
+		}
+		return result;
+	}
+
 //	/**
 //	 * 通过当前企业号和企业列表中的企业号查询申请状态
 //	 *
@@ -757,41 +784,42 @@ public class AccountUtils {
 //		}
 //		return details;
 //	}
-//
-//	/**
-//	 * 通过企业营业执照查询收到的待处理的请求
-//	 *
-//	 * @param businessCode
-//	 * @return
-//	 * @throws Exception
-//	 */
-//	public static String getRequestTodo(String businessCode) throws Exception {
-//		String url = AccountConfig.getEnPartnersUrl();
-//		String result = null;
-//		if (!StringUtils.isEmpty(url)) {
-//			ResponseWrap res = HttpUtil.doGet(url,
-//					new ModelMap("_operate", "getRequestTodo").addAttribute("businessCode", businessCode));
-//			if (!res.isSuccess())
-//				throw new Exception(res.getContent());
-//			else
-//				result = res.getContent();
-//		}
-//		return result;
-//	}
-//
-//	/**
-//	 * 其他应用发起邀请注册,同步数据
-//	 *
-//	 * @param jsonStr
-//	 * @throws Exception
-//	 */
-//	public static void synchroInvitation(String jsonStr) throws Exception {
-//		String url = AccountConfig.getEnPartnersUrl();
-//		if (!StringUtils.isEmpty(url)) {
-//			HttpUtil.doPost(url, new ModelMap("_operate", "invitation").addAttribute("jsonStr", jsonStr));
-//		}
-//	}
-//
+
+	/**
+	 * 通过企业营业执照查询收到的待处理的请求
+	 *
+	 * @param businessCode
+	 * @return
+	 * @throws Exception
+	 */
+	public static String getRequestTodo(String businessCode) throws Exception {
+		String url = AccountConfig.getEnPartnersUrl();
+		String result = null;
+		if (!StringUtils.isEmpty(url)) {
+			HttpUtil.ResponseWrap res = HttpUtil.doGet(url,
+					new ModelMap("_operate", "getRequestTodo").addAttribute("businessCode", businessCode));
+			if (!res.isSuccess()) {
+                throw new Exception(res.getContent());
+            } else {
+                result = res.getContent();
+            }
+		}
+		return result;
+	}
+
+	/**
+	 * 其他应用发起邀请注册,同步数据
+	 *
+	 * @param jsonStr
+	 * @throws Exception
+	 */
+	public static void synchroInvitation(String jsonStr) throws Exception {
+		String url = AccountConfig.getEnPartnersUrl();
+		if (!StringUtils.isEmpty(url)) {
+			HttpUtil.doPost(url, new ModelMap("_operate", "invitation").addAttribute("jsonStr", jsonStr));
+		}
+	}
+
 //	/**
 //	 * ERP、SAAS新开账套名称校验
 //	 *

+ 1 - 1
sso-server/src/main/java/com/uas/sso/SSOConfiguration.java

@@ -37,7 +37,7 @@ public class SSOConfiguration extends WebMvcConfigurerAdapter {
          */
         registry.addInterceptor(ssoInterceptor).addPathPatterns("/**").
                 excludePathPatterns("/sso/*/register/**", "/sso/login/**", "/api/user/**", "/api/userspace/**",
-                        "/sso/resetPwd/**", "/appeal/resetPwd");
+                        "/sso/resetPwd/**", "/appeal/resetPwd", "/api/partners");
 
     }
 

+ 244 - 0
sso-server/src/main/java/com/uas/sso/controller/PartnershipController.java

@@ -0,0 +1,244 @@
+package com.uas.sso.controller;
+
+import com.uas.sso.service.PartnershipService;
+import com.uas.sso.service.UserspaceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+
+/**
+ * 合作关系操作记录的controller
+ * 
+ * @author hejq
+ * @time 创建时间:2017年1月11日
+ */
+@Controller
+@RequestMapping("/partnership")
+public class PartnershipController extends BaseController {
+
+	@Autowired
+	private PartnershipService partnershipService;
+	@Autowired
+	private UserspaceService userSpaceService;
+
+	/**
+	 * 发送企业请求
+	 *
+	 * @param spaceUU 接收方企业uu号
+	 * @return
+	 */
+	@RequestMapping(value = "/sendRequest")
+	@ResponseBody
+	public ModelMap SendRequest(Long spaceUU) {
+		partnershipService.sendRequestBySpaceUU(spaceUU);
+		return success();
+	}
+
+//	/**
+//	 * 查找发出的请求,待审批
+//	 *
+//	 * @param name
+//	 * @param businessCode
+//	 * @param pageNumber
+//	 * @param pageSize
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/sendRequest/list", params = "status=UNAUDIT", method = RequestMethod.GET)
+//	@ResponseBody
+//	public Page<PartnershipRecord> findAllSendUNAUDIT(String name, String businessCode, String custUserName,
+//			int pageNumber, int pageSize) {
+//		return partnershipService.findAllSendUnAudit(name, businessCode, custUserName, pageNumber, pageSize);
+//	}
+//
+//	/**
+//	 * 查找发出的请求,已通过
+//	 *
+//	 * @param name
+//	 * @param businessCode
+//	 * @param pageNumber
+//	 * @param pageSize
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/sendRequest/list", params = "status=ENABLED", method = RequestMethod.GET)
+//	@ResponseBody
+//	public Page<PartnershipRecord> findAllSendEnabled(String name, String businessCode, String custUserName,
+//			int pageNumber,
+//			int pageSize) {
+//		return partnershipService.findAllSendEnable(name, businessCode, custUserName, pageNumber, pageSize);
+//	}
+//
+//	/**
+//	 * 查找发出的请求,未通过
+//	 *
+//	 * @param name
+//	 * @param businessCode
+//	 * @param pageNumber
+//	 * @param pageSize
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/sendRequest/list", params = "status=UNAPPLY", method = RequestMethod.GET)
+//	@ResponseBody
+//	public Page<PartnershipRecord> findAllSendUNAPPLY(String name, String businessCode, String custUserName,
+//			int pageNumber, int pageSize) {
+//		return partnershipService.findAllSendUnApply(name, businessCode, custUserName, pageNumber, pageSize);
+//	}
+//
+//	/**
+//	 * 通过id查找发出请求的详情
+//	 *
+//	 * @param id
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/sendRequest/detail/id/{id}", method = RequestMethod.GET)
+//	@ResponseBody
+//	public ModelMap findSendDetailById(@PathVariable Long id) {
+//		return success(partnershipService.findSendRequestById(id));
+//	}
+//
+//	/**
+//	 * 查找收到的请求,待审批
+//	 *
+//	 * @param name
+//	 * @param businessCode
+//	 * @param pageNumber
+//	 * @param pageSize
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/receivedRequest/list", params = "status=UNAUDIT", method = RequestMethod.GET)
+//	@ResponseBody
+//	public Page<PartnershipRecord> findAllReceivedUNAUDIT(String name, String businessCode, String custUserName,
+//			int pageNumber, int pageSize) {
+//		return partnershipService.findAllReceivedUnAudit(name, businessCode, custUserName, pageNumber, pageSize);
+//	}
+//
+//	/**
+//	 * 查找收到的请求,已通过
+//	 *
+//	 * @param name
+//	 * @param businessCode
+//	 * @param pageNumber
+//	 * @param pageSize
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/receivedRequest/list", params = "status=ENABLED", method = RequestMethod.GET)
+//	@ResponseBody
+//	public Page<PartnershipRecord> findAllReceivedEnabled(String name, String businessCode, String custUserName,
+//			int pageNumber, int pageSize) {
+//		return partnershipService.findAllReceivedEnable(name, businessCode, custUserName, pageNumber, pageSize);
+//	}
+//
+//	/**
+//	 * 查找收到的请求,未通过
+//	 *
+//	 * @param name
+//	 * @param businessCode
+//	 * @param pageNumber
+//	 * @param pageSize
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/receivedRequest/list", params = "status=UNAPPLY", method = RequestMethod.GET)
+//	@ResponseBody
+//	public Page<PartnershipRecord> findAllReceivedUNAPPLY(String name, String businessCode, String custUserName,
+//			int pageNumber, int pageSize) {
+//		return partnershipService.findAllReceivedUnApply(name, businessCode, custUserName, pageNumber, pageSize);
+//	}
+//
+//	/**
+//	 * 通过id查找收到请求的详情
+//	 *
+//	 * @param id
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/receivedRequest/detail/id/{id}", method = RequestMethod.GET)
+//	@ResponseBody
+//	public ModelMap findReceivedDetailById(@PathVariable Long id) {
+//		return success(partnershipService.findReceivedRequestById(id));
+//	}
+//
+//	/**
+//	 * 审核通过
+//	 *
+//	 * @param id
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/receivedRequest/audit", params = "enable=1")
+//	@ResponseBody
+//	public ModelMap enableDetail(Long id) {
+//		partnershipService.enable(id);
+//		return success();
+//	}
+//
+//	/**
+//	 * 审批未通过
+//	 *
+//	 * @param reason
+//	 * @param businessCode
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/receivedRequest/audit", params = "enable=0")
+//	@ResponseBody
+//	public ModelMap disableDetail(String reason, Long id) {
+//		partnershipService.disable(id, reason);
+//		return success();
+//	}
+//
+//	/**
+//	 * 再次申请
+//	 *
+//	 * @param id
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/sendRequest/resend")
+//	@ResponseBody
+//	public ModelMap resendRequest(Long id) {
+//		partnershipService.resendRequestById(id);
+//		return success();
+//	}
+//
+//	/**
+//	 * 发出的请求统计
+//	 *
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/sendRequest/count", method = RequestMethod.GET)
+//	@ResponseBody
+//	public ModelMap sendRequestCount() {
+//		return success(partnershipService.getsendRequestCount());
+//	}
+//
+//	/**
+//	 * 收到的请求统计
+//	 *
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/receivedRequest/count", method = RequestMethod.GET)
+//	@ResponseBody
+//	public ModelMap receivedRequestCount() {
+//		return success(partnershipService.getreceivedRequestCount());
+//	}
+//
+//	/**
+//	 * 查询当前登录人信息
+//	 *
+//	 * @return
+//	 */
+//	@RequestMapping(value = "/getCurrentUserInfo", method = RequestMethod.GET)
+//	@ResponseBody
+//	public ModelMap getCurrentUserInfo() {
+//		User user = SystemSession.getUser();
+//		ModelMap map = new ModelMap();
+//		if (user == null) {
+//			return error("暂未检测到当前用户信息,请通过商务平台或ERP系统进行登录");
+//		} else {
+//			List<UserSpace> space = userSpaceService.findByUID(user.getSpaceUID());
+//			map.put("username", user.getName());
+//			map.put("enName", space.get(0).getName());
+//			map.put("enBusCode", space.get(0).getUid());
+//		}
+//
+//		return success(map);
+//	}
+}

+ 185 - 0
sso-server/src/main/java/com/uas/sso/controller/PartnershipManagerController.java

@@ -0,0 +1,185 @@
+package com.uas.sso.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.sso.entity.InvitationRecord;
+import com.uas.sso.entity.PartnershipRecord;
+import com.uas.sso.entity.RequestStatus;
+import com.uas.sso.entity.UserSpaceView;
+import com.uas.sso.exception.VisibleError;
+import com.uas.sso.service.PartnershipService;
+import com.uas.sso.service.UserspaceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 为平台和ERP用户提供公共接口查询当前企业的合作伙伴
+ * 
+ * @author hejq
+ * @time 创建时间:2017年1月17日
+ */
+@RestController
+@RequestMapping(value = "/api/partners")
+public class PartnershipManagerController {
+
+	@Autowired
+	private PartnershipService partnershipService;
+
+	@Autowired
+	private UserspaceService userSpaceService;
+
+	/**
+	 * 查询发出的申请
+	 *
+	 * @param businessCode 申请方营业执照号
+	 * @param statusCode 申请状态
+	 * @param keyword
+	 * @param pageNumber
+	 * @param pageSize
+	 * @return
+	 */
+	@RequestMapping(params = "_operate=getAllRequest")
+	public Page<PartnershipRecord> getAllRequest(String businessCode, Integer statusCode, String keyword,
+												 @RequestParam(defaultValue = "0") int pageNumber, @RequestParam(defaultValue = "20") int pageSize) {
+		return partnershipService.findByBusinessCodeAndStatusCode(businessCode, statusCode, keyword, pageNumber, pageSize);
+	}
+
+//	/**
+//	 * 过滤掉已存在UU,查询发出的申请(UAS接口)
+//	 *
+//	 * @param businessCode
+//	 * @param statusCode
+//	 * @param keyword
+//	 * @param pageNumber
+//	 * @param pageSize
+//	 * @return
+//	 */
+//	@RequestMapping(params = "_operate=getAllRequestFilterByPartnerUUs")
+//	@ResponseBody
+//	public Page<PartnershipRecord> getAllRequestFilterByPartnerUUs(String businessCode, Integer statusCode, String keyword, int pageNumber, int pageSize, String partnerUUs) {
+//		List<Long> UUs = JSON.parseArray(partnerUUs, Long.class);
+//		if (!CollectionUtils.isEmpty(UUs)) { // 存在需要过滤的UU时
+//			return partnershipService.findBySpaceUidAndStatusCodeFilterByPartnerUUs(businessCode, statusCode, keyword, UUs, pageNumber, pageSize);
+//		}
+//		return partnershipService.findBySpaceUidAndStatusCode(businessCode, statusCode, keyword, pageNumber, pageSize);
+//	}
+//
+//	/**
+//	 * 查询所有企业列表
+//	 */
+//	@RequestMapping(params = "_operate=getUserSpaces")
+//	@ResponseBody
+//	public Page<UserSpaceDetail> getUserSpaces(String keyword, int pageNumber, int pageSize) {
+//		return userSpaceService.findByKeyword(keyword, pageNumber, pageSize);
+//	}
+
+	/**
+	 * 从各应用新增一条合作关系
+	 *
+	 * @param record
+	 * @return
+	 */
+	@RequestMapping(params = "_operate=addPartner", method = RequestMethod.POST)
+	@ResponseBody
+	public ModelMap addPartner(PartnershipRecord record) {
+		try {
+			partnershipService.addPartner(record);
+			return new ModelMap("success", "申请发送成功");
+		} catch (VisibleError e) {
+			return new ModelMap("error", e.getMessage());
+		}
+	}
+
+	/**
+	 * b2b因为单据产生新增一条合作关系
+	 *
+	 * @param record
+	 * @return
+	 */
+	@RequestMapping(params = "_operate=synchronizePartner", method = RequestMethod.POST)
+	@ResponseBody
+	public ModelMap synchronizePartner(PartnershipRecord record) {
+		return partnershipService.synchronizePartner(record);
+	}
+
+	/**
+	 * 拒绝申请
+	 *
+	 * @param id
+	 * @param reason
+	 * @param vendUserTel
+	 * @param appId
+	 * @return
+	 */
+	@RequestMapping(params = "_operate=rejectRequest")
+	@ResponseBody
+	public ModelMap rejectRequest(Long id, String reason, String vendUserTel, String appId) {
+		return partnershipService.rejectRequest(id, reason, vendUserTel, appId);
+	}
+
+	/**
+	 * 通过申请
+	 *
+	 * @param id
+	 * @param vendUserTel
+	 * @param appId
+	 * @return
+	 */
+	@RequestMapping(params = "_operate=acceptRequest")
+	@ResponseBody
+	public ModelMap acceptRequest(Long id, String vendUserTel, String appId) {
+		return partnershipService.acceptRequest(id, vendUserTel, appId);
+	}
+
+	/**
+	 * 通过uu号获取申请状态
+	 *
+	 * @param custBusinessCode 申请方营业执照号
+	 * @param vendBusinessCode 被申请方营业执照号
+	 * @return
+	 */
+	@RequestMapping(params = "_operate=getRequestStatus")
+	@ResponseBody
+	public RequestStatus getRequestStatus(String custBusinessCode, String vendBusinessCode) {
+		return partnershipService.getRequestByBusinessCode(custBusinessCode, vendBusinessCode);
+	}
+
+//	/**
+//	 * 通过id查询企业信息(方便平台搜索调用)
+//	 *
+//	 * @param ids
+//	 * @return
+//	 */
+//	@RequestMapping(params = "_operate=findAll")
+//	@ResponseBody
+//	public List<UserSpaceView> findAll(String ids) {
+//		return userSpaceService.findAll(ids);
+//	}
+
+	/**
+	 * 获取收到的待处理的请求的数量
+	 *
+	 * @param businessCode
+	 * @return
+	 */
+	@RequestMapping(params = "_operate=getRequestTodo")
+	public ModelMap getRequestTodo(String businessCode) {
+		return partnershipService.getRequestTodo(businessCode);
+	}
+
+	/**
+	 * 邀请合作伙伴记录
+	 *
+	 * @param formStore
+	 */
+	@RequestMapping(params = "_operate=invitation", method = RequestMethod.POST)
+	@ResponseBody
+	public void invite(String jsonStr) {
+		InvitationRecord record = JSONObject.parseObject(jsonStr, InvitationRecord.class);
+		partnershipService.invite(record);
+	}
+}

+ 13 - 0
sso-server/src/main/java/com/uas/sso/dao/PartnershipLogDao.java

@@ -0,0 +1,13 @@
+package com.uas.sso.dao;
+
+import com.uas.sso.entity.PartnershipLog;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+/**
+ * @author wangmh
+ * @create 2018-02-07 9:36
+ * @desc
+ **/
+public interface PartnershipLogDao extends JpaRepository<PartnershipLog, Long>, JpaSpecificationExecutor<PartnershipLog>{
+}

+ 96 - 0
sso-server/src/main/java/com/uas/sso/dao/PartnershipRecordDao.java

@@ -0,0 +1,96 @@
+package com.uas.sso.dao;
+
+import com.uas.sso.entity.PartnershipRecord;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.security.access.method.P;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+
+/**
+ * 合作伙伴dao
+ * @author wangmh
+ */
+public interface PartnershipRecordDao extends JpaRepository<PartnershipRecord, Long>, JpaSpecificationExecutor<PartnershipRecord> {
+
+	/**
+	 * 通过申请企业的uid和客户的uid查询信息
+	 *
+	 * @param custSpaceUU 申请企业uu号
+	 * @param vendSpaceUU 被申请企业uu号
+	 * @return
+	 */
+	PartnershipRecord findByCustSpaceUUAndVendSpaceUU(Long custSpaceUU, Long vendSpaceUU);
+
+	/**
+	 * 根据申请方和被申请方营业执照号查询
+	 * @param custBusinessCode 申请方营业执照号
+	 * @param vendBusinessCode 被申请方营业执照号
+	 * @return
+	 */
+	@Query("select t from PartnershipRecord t where t.custSpace.businessCode=:custBusinessCode and t.vendSpace.businessCode=:vendBusinessCode")
+	PartnershipRecord findByBusinessCode(@Param("custBusinessCode") String custBusinessCode, @Param("vendBusinessCode") String vendBusinessCode);
+//
+//	/**
+//	 * 发出请求的数量
+//	 * @param custSpaceUU 申请企业uu号
+//	 * @return
+//	 */
+//	@Query("select count(t) PartnershipRecord t where t.custSpaceUU=:custSpaceUU")
+//	ModelMap getSendRequestCount(@RequestParam("custSpaceUU") Long custSpaceUU);
+//
+//	/**
+//	 * 收到请求的数量
+//	 * @param vendSpaceUU 被申请企业uu号
+//	 *
+//	 * @return
+//	 */
+//	@Query("select count(t) PartnershipRecord t where t.vendSpaceUU=:vendSpaceUU")
+//	ModelMap getReceivedRequestCount(@RequestParam("vendSpaceUU") Long vendSpaceUU);
+//
+//	/**
+//	 * 发出的总数(企业)
+//	 *
+//	 * @param custSpaceUU 申请企业uu号
+//	 * @return
+//	 */
+//	int getAllSendCount(String custSpaceUU);
+//
+//	/**
+//	 * 收到的总数(企业)
+//	 *
+//	 * @param vendSpaceUU 被申请企业uu号
+//	 * @return
+//	 */
+//	int getAllReceivedCount(String vendSpaceUU);
+
+	/**
+	 * 获取收到的待处理请求
+	 *
+	 * @param businessCode
+	 * @return
+	 */
+	@Query("select count(t) from PartnershipRecord t where t.vendSpace.businessCode=:businessCode and t.statusCode=311")
+	int getRequestTodo(@Param("businessCode") String businessCode);
+//
+//	/**
+//	 * 记录邀请注册记录
+//	 *
+//	 * @param record
+//	 */
+//	void saveInvitation(InvitationRecord record);
+//
+//	/**
+//	 * 通过当前注册企业名称查询邀请记录进行添加合作伙伴操作
+//	 *
+//	 * @param vendname
+//	 * @return
+//	 */
+//	List<InvitationRecord> findByVendname(String vendname);
+}

+ 192 - 0
sso-server/src/main/java/com/uas/sso/entity/InvitationRecord.java

@@ -0,0 +1,192 @@
+package com.uas.sso.entity;
+
+import java.util.Date;
+
+/**
+ * 合作伙伴邀请记录
+ * 
+ * @author hejq
+ * @time 创建时间:2017年7月28日
+ */
+public class InvitationRecord {
+
+	private Long id;
+	
+	/**
+	 * 邀请企业uu
+	 */
+	private Long enuu;
+	
+	/**
+	 * 邀请注册营业执照号
+	 */
+	private String bussinesscode;
+
+	/**
+	 * 用户uu
+	 */
+	private Long useruu;
+
+	/**
+	 * 最后一次邀请时间
+	 */
+	private Date date;
+
+	/**
+	 * 邀请的客户名称
+	 */
+	private String vendname;
+
+	/**
+	 * 邀请的用户名称
+	 */
+	private String vendusername;
+
+	/**
+	 * 邀请的用户的电话
+	 */
+	private String vendusertel;
+
+	/**
+	 * 邀请的用户的邮箱
+	 */
+	private String venduseremail;
+
+	/**
+	 * 可能出现重复邀请的情况,记录邀请次数
+	 */
+	private Integer count;
+
+	/**
+	 * 是否已激活
+	 */
+	private Short active;
+
+	/**
+	 * 相同名称企业的数量
+	 */
+	private Integer samecount;
+
+	/**
+	 * 企业uu(如果有相同名称的设置方便查询)
+	 */
+	private Long venduu;
+
+	/**
+	 * 邀请来源,如果设置了来源是ERP,需要自动添加为供应商
+	 */
+	private String source;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getEnuu() {
+		return enuu;
+	}
+
+	public void setEnuu(Long enuu) {
+		this.enuu = enuu;
+	}
+
+	public String getBussinesscode() {
+		return bussinesscode;
+	}
+
+	public void setBussinesscode(String bussinesscode) {
+		this.bussinesscode = bussinesscode;
+	}
+
+	public Long getUseruu() {
+		return useruu;
+	}
+
+	public void setUseruu(Long useruu) {
+		this.useruu = useruu;
+	}
+
+	public Date getDate() {
+		return date;
+	}
+
+	public void setDate(Date date) {
+		this.date = date;
+	}
+
+	public String getVendname() {
+		return vendname;
+	}
+
+	public void setVendname(String vendname) {
+		this.vendname = vendname;
+	}
+
+	public String getVendusertel() {
+		return vendusertel;
+	}
+
+	public void setVendusertel(String vendusertel) {
+		this.vendusertel = vendusertel;
+	}
+
+	public String getVenduseremail() {
+		return venduseremail;
+	}
+
+	public void setVenduseremail(String venduseremail) {
+		this.venduseremail = venduseremail;
+	}
+
+	public Integer getCount() {
+		return count;
+	}
+
+	public void setCount(Integer count) {
+		this.count = count;
+	}
+
+	public String getVendusername() {
+		return vendusername;
+	}
+
+	public void setVendusername(String vendusername) {
+		this.vendusername = vendusername;
+	}
+
+	public Short getActive() {
+		return active;
+	}
+
+	public void setActive(Short active) {
+		this.active = active;
+	}
+
+	public Integer getSamecount() {
+		return samecount;
+	}
+
+	public void setSamecount(Integer samecount) {
+		this.samecount = samecount;
+	}
+
+	public Long getVenduu() {
+		return venduu;
+	}
+
+	public void setVenduu(Long venduu) {
+		this.venduu = venduu;
+	}
+
+	public String getSource() {
+		return source;
+	}
+
+	public void setSource(String source) {
+		this.source = source;
+	}
+
+}

+ 38 - 0
sso-server/src/main/java/com/uas/sso/entity/PageInfo.java

@@ -0,0 +1,38 @@
+package com.uas.sso.entity;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+
+/**
+ * @author wangmh
+ * @create 2018-02-05 14:19
+ * @desc 分页
+ **/
+public class PageInfo<T> extends PageImpl<T> implements Page<T> {
+
+    public PageInfo(List<T> content, Pageable pageable, long total) {
+        super(content, pageable, total);
+    }
+
+    public PageInfo(List<T> content) {
+        super(content);
+    }
+
+    @Override
+    public int getNumber() {
+        return super.getNumber() + 1;
+    }
+
+    /**
+     * 前台传参1为起始页修改为spring data jpa的0为起始页
+     * @param pageable
+     * @return
+     */
+    public static Pageable pageRequest(Pageable pageable) {
+        return new PageRequest(pageable.getPageNumber() - 1, pageable.getPageSize(), pageable.getSort());
+    }
+}

+ 73 - 0
sso-server/src/main/java/com/uas/sso/entity/PartnershipLog.java

@@ -0,0 +1,73 @@
+package com.uas.sso.entity;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+/**
+ * @author wangmh
+ * @create 2018-01-22 9:36
+ * @desc 同步日志
+ **/
+@Entity
+@Table(name = "sso$log$partnership")
+public class PartnershipLog extends BaseLog implements Serializable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @Id
+    @Column(name = "_id")
+    @SequenceGenerator(name="sso$log$partnership_gen", sequenceName="sso$log$partnership_seq", allocationSize=1)
+    @GeneratedValue(strategy=GenerationType.IDENTITY, generator="sso$log$partnership_gen")
+    private Long id;
+
+    /**
+     * 同步信息描述
+     */
+    @Column(name = "msg", length = 1000)
+    private String msg;
+
+    /**
+     * 操作时间
+     */
+    @Column(name = "time")
+    private Timestamp time;
+
+    public PartnershipLog() {
+    }
+
+    public PartnershipLog(String msg) {
+        this.msg = msg;
+        this.time = new Timestamp(System.currentTimeMillis());
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public Timestamp getTime() {
+        return time;
+    }
+
+    public void setTime(Timestamp time) {
+        this.time = time;
+    }
+}

+ 420 - 0
sso-server/src/main/java/com/uas/sso/entity/PartnershipRecord.java

@@ -0,0 +1,420 @@
+package com.uas.sso.entity;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.util.Date;
+
+/**
+ * 合作关系申请的记录
+ * 
+ * @author wangmh
+ * @time 创建时间:2017年1月10日
+ */
+@Entity
+@Table(name = "sso$partnership$record")
+public class PartnershipRecord implements Serializable {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@Id
+	@Column(name = "_id")
+	@SequenceGenerator(name="sso$partnership$record_gen", sequenceName="sso$partnership$record_seq", allocationSize=1)
+	@GeneratedValue(strategy=GenerationType.IDENTITY, generator="sso$partnership$record_gen")
+	private Long id;
+
+	/**
+	 * 应用
+	 */
+	@Column(name = "app_uid")
+	private String appId;
+
+	/**
+	 * 申请时间
+	 */
+	@Column(name = "request_date")
+	private Timestamp requestDate;
+
+	/**
+	 * 申请企业uu号
+	 */
+	@Column(name = "cust_space_uu", insertable = false, updatable = false)
+	private Long custSpaceUU;
+
+	/**
+	 * 申请企业
+	 */
+	@ManyToOne
+	@JoinColumn(name = "cust_space_uu")
+	private Userspace custSpace;
+
+	/**
+	 * 申请企业的名称
+	 */
+	@Column(name = "cust_space_name")
+	private String custSpaceName;
+
+	/**
+	 * 申请企业的营业执照号
+	 */
+	@Column(name = "cust_business_code")
+	private String custBusinessCode;
+
+	/**
+	 * 申请人的uu号
+	 */
+	@Column(name = "cust_user_uu")
+	private Long custUserUU;
+
+	/**
+	 * 申请人
+	 */
+	@ManyToOne
+	@JoinColumn(name = "cust_user_uu", insertable = false, updatable = false)
+	private User custUser;
+
+	/**
+	 * 申请人的姓名
+	 */
+	@Column(name = "cust_user_name")
+	private String custUserName;
+
+	/**
+	 * 申请人的联系方式
+	 */
+	@Column(name = "cust_user_tel")
+	private String custUserTel;
+
+	/**
+	 * 申请人的联系方式
+	 */
+	@Column(name = "cust_user_email")
+	private String custUserEmail;
+
+	/**
+	 * 客户的标识(如UU号等)
+	 */
+	@Column(name = "vend_space_uu", insertable = false, updatable = false)
+	private Long vendSpaceUU;
+
+	/**
+	 * 客户的标识(如UU号等)
+	 */
+	@ManyToOne
+	@JoinColumn(name = "vend_space_uu")
+	private Userspace vendSpace;
+
+	/**
+	 * 客户的企业名称
+	 */
+	@Column(name = "vend_space_name")
+	private String vendSpaceName;
+
+	/**
+	 * 客户的营业执照号
+	 */
+	@Column(name = "vend_business_code")
+	private String vendBusinessCode;
+
+	/**
+	 * 审核人标志(uu号等)
+	 */
+	@JoinColumn(name = "vend_user_uu")
+	private Long vendUserUU;
+
+	/**
+	 * 审核人标志(uu号等)
+	 */
+	@JoinColumn(name = "vend_user_uu")
+	private User vendUser;
+
+	/**
+	 * 审核人姓名
+	 */
+	@JoinColumn(name = "vend_user_name")
+	private String vendUserName;
+
+	/**
+	 * 审核人联系方式
+	 */
+	@JoinColumn(name = "vend_user_Tel")
+	private String vendUserTel;
+
+	/**
+	 * 审核人邮箱
+	 */
+	@JoinColumn(name = "vend_user_email")
+	private String vendUserEmail;
+
+	/**
+	 * 审核时间
+	 */
+	@Column(name = "operate_date")
+	private Timestamp operateDate;
+
+	/**
+	 * 申请状态码
+	 */
+    @Column(name = "status_code", nullable = false)
+	private Integer statusCode;
+
+	/**
+	 * 申请状态
+	 */
+	@Column(name = "status")
+	private String status;
+
+	/**
+	 * 原因
+	 */
+	@Column(name = "reason")
+	private String reason;
+
+	/**
+	 * 添加合作伙伴关系后方式
+	 */
+	@Column(name = "method")
+	private String method;
+
+	public PartnershipRecord() {
+	}
+
+	public PartnershipRecord(String appId, Userspace vendUserSpace, Userspace custUserSpace) {
+		this.appId = appId;
+		this.vendSpace = vendUserSpace;
+		this.vendSpaceName = vendUserSpace.getSpaceName();
+		this.vendSpaceUU = vendUserSpace.getSpaceUU();
+		this.vendUser = vendUserSpace.getAdmin();
+		this.vendUserEmail = vendUserSpace.getAdmin().getEmail();
+		this.vendUserName = vendUserSpace.getAdmin().getVipName();
+		this.custSpace = custUserSpace;
+		this.custSpaceName = custUserSpace.getSpaceName();
+		this.custSpaceUU = custUserSpace.getSpaceUU();
+		this.custUser = custUserSpace.getAdmin();
+		this.custUserName = custUserSpace.getAdmin().getVipName();
+		this.custUserTel = custUserSpace.getAdmin().getMobile();
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getAppId() {
+		return appId;
+	}
+
+	public void setAppId(String appId) {
+		this.appId = appId;
+	}
+
+	public Timestamp getRequestDate() {
+		return requestDate;
+	}
+
+	public void setRequestDate(Timestamp requestDate) {
+		this.requestDate = requestDate;
+	}
+
+	public Long getCustSpaceUU() {
+		return custSpaceUU;
+	}
+
+	public void setCustSpaceUU(Long custSpaceUU) {
+		this.custSpaceUU = custSpaceUU;
+	}
+
+	public Userspace getCustSpace() {
+		return custSpace;
+	}
+
+	public void setCustSpace(Userspace custSpace) {
+		this.custSpace = custSpace;
+	}
+
+	public String getCustSpaceName() {
+		return custSpaceName;
+	}
+
+	public void setCustSpaceName(String custSpaceName) {
+		this.custSpaceName = custSpaceName;
+	}
+
+	public String getCustUserName() {
+		return custUserName;
+	}
+
+	public void setCustUserName(String custUserName) {
+		this.custUserName = custUserName;
+	}
+
+	public User getCustUser() {
+		return custUser;
+	}
+
+	public void setCustUser(User custUser) {
+		this.custUser = custUser;
+	}
+
+	public String getCustUserTel() {
+		return custUserTel;
+	}
+
+	public void setCustUserTel(String custUserTel) {
+		this.custUserTel = custUserTel;
+	}
+
+	public String getVendSpaceName() {
+		return vendSpaceName;
+	}
+
+	public void setVendSpaceName(String vendSpaceName) {
+		this.vendSpaceName = vendSpaceName;
+	}
+
+	public Long getVendSpaceUU() {
+		return vendSpaceUU;
+	}
+
+	public void setVendSpaceUU(Long vendSpaceUU) {
+		this.vendSpaceUU = vendSpaceUU;
+	}
+
+	public Userspace getVendSpace() {
+		return vendSpace;
+	}
+
+	public void setVendSpace(Userspace vendSpace) {
+		this.vendSpace = vendSpace;
+	}
+
+	public String getVendUserName() {
+		return vendUserName;
+	}
+
+	public void setVendUserName(String vendUserName) {
+		this.vendUserName = vendUserName;
+	}
+
+	public String getVendUserTel() {
+		return vendUserTel;
+	}
+
+	public void setVendUserTel(String vendUserTel) {
+		this.vendUserTel = vendUserTel;
+	}
+
+	public String getVendUserEmail() {
+		return vendUserEmail;
+	}
+
+	public void setVendUserEmail(String vendUserEmail) {
+		this.vendUserEmail = vendUserEmail;
+	}
+
+	public Long getVendUserUU() {
+		return vendUserUU;
+	}
+
+	public void setVendUserUU(Long vendUserUU) {
+		this.vendUserUU = vendUserUU;
+	}
+
+	public User getVendUser() {
+		return vendUser;
+	}
+
+	public void setVendUser(User vendUser) {
+		this.vendUser = vendUser;
+	}
+
+	public Timestamp getOperateDate() {
+		return operateDate;
+	}
+
+	public void setOperateDate(Timestamp operateDate) {
+		this.operateDate = operateDate;
+	}
+
+	public Integer getStatusCode() {
+		return statusCode;
+	}
+
+	public void setStatusCode(Integer statusCode) {
+		this.statusCode = statusCode;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String getReason() {
+		return reason;
+	}
+
+	public void setReason(String reason) {
+		this.reason = reason;
+	}
+
+	public String getMethod() {
+		return method;
+	}
+
+	public void setMethod(String method) {
+		this.method = method;
+	}
+
+	public String getCustBusinessCode() {
+		return custBusinessCode;
+	}
+
+	public void setCustBusinessCode(String custBusinessCode) {
+		this.custBusinessCode = custBusinessCode;
+	}
+
+	public Long getCustUserUU() {
+		return custUserUU;
+	}
+
+	public void setCustUserUU(Long custUserUU) {
+		this.custUserUU = custUserUU;
+	}
+
+	public String getCustUserEmail() {
+		return custUserEmail;
+	}
+
+	public void setCustUserEmail(String custUserEmail) {
+		this.custUserEmail = custUserEmail;
+	}
+
+	public String getVendBusinessCode() {
+		return vendBusinessCode;
+	}
+
+	public void setVendBusinessCode(String vendBusinessCode) {
+		this.vendBusinessCode = vendBusinessCode;
+	}
+
+	public RequestStatus toRequestStatus() {
+		RequestStatus request = new RequestStatus();
+		request.setCustBusinessCode(this.getCustSpace().getBusinessCode());
+		request.setCustUU(this.getCustSpace().getSpaceUU());
+		request.setVendBusinessCode(this.getVendSpace().getBusinessCode());
+		request.setStatusCode(this.getStatusCode());
+		return request;
+	}
+}

+ 24 - 0
sso-server/src/main/java/com/uas/sso/logging/PartnershipBufferedLogger.java

@@ -0,0 +1,24 @@
+package com.uas.sso.logging;
+
+import com.uas.sso.entity.PartnershipLog;
+import com.uas.sso.entity.RegisterLog;
+import com.uas.sso.service.PartnershipLogService;
+import com.uas.sso.service.RegisterLogService;
+import com.uas.sso.util.ContextUtils;
+
+/**
+ * 注册日志
+ *
+ * @author wangmh
+ * @date 2018/1/2
+ */
+public class PartnershipBufferedLogger extends Logger<PartnershipLog> {
+
+    PartnershipBufferedLogger() {
+        super(ContextUtils.getBean(PartnershipLogService.class));
+    }
+
+    public void info(String msg) {
+        log(new PartnershipLog(msg));
+    }
+}

+ 12 - 0
sso-server/src/main/java/com/uas/sso/service/PartnershipLogService.java

@@ -0,0 +1,12 @@
+package com.uas.sso.service;
+
+import com.uas.sso.entity.PartnershipLog;
+
+/**
+ * 注册日志
+ *
+ * @author wangmh
+ * @date 2018/1/3
+ */
+public interface PartnershipLogService extends BaseLogService<PartnershipLog> {
+}

+ 237 - 0
sso-server/src/main/java/com/uas/sso/service/PartnershipService.java

@@ -0,0 +1,237 @@
+package com.uas.sso.service;
+
+import com.uas.sso.entity.InvitationRecord;
+import com.uas.sso.entity.PartnershipRecord;
+import com.uas.sso.entity.RequestStatus;
+import org.springframework.data.domain.Page;
+import org.springframework.ui.ModelMap;
+
+public interface PartnershipService {
+
+	/**
+	 * 通过id发送请求
+	 *
+	 * @param id
+	 *            (id 是ac$us$detail中的id)
+	 */
+	void sendRequestBySpaceUU(Long id);
+
+	/**
+	 * 查询发出的申请<br>
+	 * 待审核
+	 *
+	 * @param name
+	 * @param businessCode
+	 * @param pageNumber
+	 * @param pageSize
+	 * @return
+	 */
+	Page<PartnershipRecord> findAllSendUnAudit(String name, String businessCode, String custUserName, int pageNumber,
+											   int pageSize);
+
+	/**
+	 * 查询发出的申请<br>
+	 * 已通过
+	 *
+	 * @param name
+	 * @param businessCode
+	 * @param pageNumber
+	 * @param pageSize
+	 * @return
+	 */
+	Page<PartnershipRecord> findAllSendEnable(String name, String businessCode, String custUserName, int pageNumber,
+                                              int pageSize);
+
+	/**
+	 * 查询发出的申请<br>
+	 * 未通过
+	 *
+	 * @param name
+	 * @param businessCode
+	 * @param pageNumber
+	 * @param pageSize
+	 * @return
+	 */
+	Page<PartnershipRecord> findAllSendUnApply(String name, String businessCode, String custUserName, int pageNumber,
+											   int pageSize);
+
+	/**
+	 * 查询收到的申请<br>
+	 * 待审核
+	 *
+	 * @param name
+	 * @param businessCode
+	 * @param pageNumber
+	 * @param pageSize
+	 * @return
+	 */
+	Page<PartnershipRecord> findAllReceivedUnAudit(String name, String businessCode, String custUserName,
+                                                   int pageNumber, int pageSize);
+
+//	/**
+//	 * 查询收到的申请<br>
+//	 * 已通过
+//	 *
+//	 * @param name
+//	 * @param businessCode
+//	 * @param pageNumber
+//	 * @param pageSize
+//	 * @return
+//	 */
+//	Page<PartnershipRecord> findAllReceivedEnable(String name, String businessCode, String custUserName, int pageNumber,
+//                                                  int pageSize);
+//
+//	/**
+//	 * 查询收到的申请<br>
+//	 * 未通过
+//	 *
+//	 * @param name
+//	 * @param businessCode
+//	 * @param pageNumber
+//	 * @param pageSize
+//	 * @return
+//	 */
+//	Page<PartnershipRecord> findAllReceivedUnApply(String name, String businessCode, String custUserName,
+//                                                   int pageNumber, int pageSize);
+//
+//	/**
+//	 * 发出的请求详情
+//	 *
+//	 * @param id
+//	 * @return
+//	 */
+//	PartnershipRecord findSendRequestById(Long id);
+//
+//	/**
+//	 * 收到的请求的详情
+//	 *
+//	 * @param id
+//	 * @return
+//	 */
+//	PartnershipRecord findReceivedRequestById(Long id);
+//
+//	/**
+//	 * 审核通过
+//	 *
+//	 * @param id
+//	 * @return
+//	 */
+//	void enable(Long id);
+//
+//	/**
+//	 * 审核不通过
+//	 *
+//	 * @param id
+//	 * @param reason
+//	 */
+//	void disable(Long id, String reason);
+//
+//	/**
+//	 * 再次申请
+//	 *
+//	 * @param id
+//	 */
+//	void resendRequestById(Long id);
+//
+//	/**
+//	 * 通过申请企业和客户的执照查询信息
+//	 *
+//	 * @param custuid
+//	 * @param venduid
+//	 * @return
+//	 */
+//	PartnershipRecord findBycustUIDAndVendUID(String custuid, String venduid);
+//
+//	/**
+//	 * 发出的请求统计
+//	 *
+//	 * @return
+//	 */
+//	ModelMap getsendRequestCount();
+//
+//	/**
+//	 * 收到的请求统计
+//	 *
+//	 * @return
+//	 */
+//	ModelMap getreceivedRequestCount();
+
+	/**
+	 * 通过营业执照查询收到的申请
+	 *
+	 * @param businessCode
+	 * @param status
+	 * @param keyword
+	 * @param pageNumber
+	 * @param pageSize
+	 * @return
+	 */
+	Page<PartnershipRecord> findByBusinessCodeAndStatusCode(String businessCode, Integer status, String keyword,
+                                                               int pageNumber, int pageSize);
+
+//	/**
+//	 * 通过营业执照查询收到的申请,过滤掉已存在合作关系的企业
+//	 *
+//	 * @param businessCode
+//	 * @param status
+//	 * @param keyword
+//	 * @param pageNumber
+//	 * @param pageSize
+//	 * @return
+//	 */
+//	Page<PartnershipRecord> findBySpaceUidAndStatusCodeFilterByPartnerUUs(String businessCode, Integer statusCode, String keyword, List<Long> partnerUUs, int pageNumber, int pageSize);
+
+	/**
+	 * 增加一条合作关系记录
+	 *
+	 * @param record
+	 * @return
+	 */
+	public void addPartner(PartnershipRecord record);
+
+	ModelMap synchronizePartner(PartnershipRecord record);
+
+	/**
+	 * 同意请求
+	 *
+	 * @param id
+	 * @param vendUid
+	 * @return
+	 */
+	public ModelMap acceptRequest(Long id, String vendUserTel, String appId);
+
+	/**
+	 * 拒绝请求
+	 *
+	 * @param id
+	 * @param vendUid
+	 * @return
+	 */
+	public ModelMap rejectRequest(Long id, String vendUserTel, String reason, String appId);
+
+	/**
+	 * 通过当前企业号和企业列表中的企业号查询申请状态
+	 *
+	 * @param custBusinessCode 申请者营业执照号
+	 * @param vendBusinessCode 被申请者营业执照号
+	 * @return
+	 */
+	RequestStatus getRequestByBusinessCode(String custBusinessCode, String vendBusinessCode);
+
+
+	/**
+	 * 获取收到的待处理请求
+	 *
+	 * @param businessCode
+	 * @return
+	 */
+	public ModelMap getRequestTodo(String businessCode);
+
+	/**
+	 * 保存邀请记录
+	 *
+	 * @param record
+	 */
+	public void invite(InvitationRecord record);
+
+}

+ 1 - 0
sso-server/src/main/java/com/uas/sso/service/UserspaceService.java

@@ -1,6 +1,7 @@
 package com.uas.sso.service;
 
 import com.uas.sso.entity.User;
+import com.uas.sso.entity.UserSpaceView;
 import com.uas.sso.entity.Userspace;
 import org.springframework.data.domain.Page;
 

+ 31 - 0
sso-server/src/main/java/com/uas/sso/service/impl/PartnershipLogServiceImpl.java

@@ -0,0 +1,31 @@
+package com.uas.sso.service.impl;
+
+import com.uas.sso.dao.PartnershipLogDao;
+import com.uas.sso.entity.PartnershipLog;
+import com.uas.sso.service.PartnershipLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author wangmh
+ * @create 2018-02-07 9:35
+ * @desc
+ **/
+@Service
+public class PartnershipLogServiceImpl implements PartnershipLogService {
+
+    @Autowired
+    private PartnershipLogDao partnershipLogDao;
+
+    @Override
+    public PartnershipLog save(PartnershipLog logger) {
+        return partnershipLogDao.save(logger);
+    }
+
+    @Override
+    public List<PartnershipLog> save(Iterable<PartnershipLog> loggers) {
+        return partnershipLogDao.save(loggers);
+    }
+}

+ 579 - 0
sso-server/src/main/java/com/uas/sso/service/impl/PartnershipServiceImpl.java

@@ -0,0 +1,579 @@
+package com.uas.sso.service.impl;
+
+import com.uas.message.mail.service.MailService;
+import com.uas.message.sms.service.SmsService;
+import com.uas.sso.core.Const;
+import com.uas.sso.core.Status;
+import com.uas.sso.dao.PartnershipRecordDao;
+import com.uas.sso.dao.UserDao;
+import com.uas.sso.dao.UserspaceDao;
+import com.uas.sso.entity.*;
+import com.uas.sso.exception.VisibleError;
+import com.uas.sso.logging.LoggerManager;
+import com.uas.sso.logging.PartnershipBufferedLogger;
+import com.uas.sso.service.*;
+import com.uas.sso.support.SystemSession;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.StringUtils;
+
+import javax.persistence.criteria.*;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class PartnershipServiceImpl implements PartnershipService {
+
+	@Autowired
+	private UserspaceService userSpaceService;
+	@Autowired
+	private UserService userService;
+	@Autowired
+	private PartnershipRecordDao partnershipRecordDao;
+	@Autowired
+	private UserspaceDao userSpaceDao;
+	@Autowired
+	private SettingService settingService;
+	@Autowired
+	private MailService mailService;
+	@Autowired
+	private SmsService smsService;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private AppService appService;
+
+	PartnershipBufferedLogger partnershipLog = LoggerManager.getLogger(PartnershipBufferedLogger.class);
+
+	@Override
+	public void sendRequestBySpaceUU(Long spaceUU) {
+		// 获取申请者和被申请者企业uu号
+		Userspace vendUserSpace = userSpaceService.findOne(spaceUU);
+		UserAccount loginUser = SystemSession.getUserAccount();
+		if (loginUser == null) {
+			throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
+		}
+		User custUser = userService.findOne(loginUser.getUserUU());
+		Userspace custUserSpace = userSpaceService.findOne(loginUser.getSpaceUU());
+		if (spaceUU.equals(loginUser.getSpaceUU())) {
+			throw new VisibleError("不能添加自己企业为合作伙伴");
+		}
+
+		// 判断两个企业是否已经申请合作伙伴关系
+		PartnershipRecord oldSendRecord = partnershipRecordDao.findByCustSpaceUUAndVendSpaceUU(custUserSpace.getSpaceUU(),
+				vendUserSpace.getSpaceUU());
+		if (oldSendRecord != null) {
+			if (oldSendRecord.getStatusCode().equals(Status.UNAUDIT.getCode())) {
+				throw new VisibleError("对该企业的申请已经存在,请不要重复申请");
+			}
+
+			if (oldSendRecord.getStatusCode().equals(Status.ENABLED.getCode())) {
+				throw new VisibleError("该企业已经同意您的申请,请不要重复申请");
+			}
+		}
+
+		// 判断被申请者有没有发出申请
+		PartnershipRecord oldReceiveRecord = partnershipRecordDao.findByCustSpaceUUAndVendSpaceUU(vendUserSpace.getSpaceUU(),
+				custUserSpace.getSpaceUU());
+		if (oldReceiveRecord != null) {
+			if (!oldReceiveRecord.getStatusCode().equals(Status.UNAPPLY.getCode())) {
+				throw new VisibleError("该企业已经向您发出了申请,请注意查看您收到的申请记录");
+			}
+		}
+
+		// 未申请或拒绝状态,添加一条记录
+		PartnershipRecord record = new PartnershipRecord(loginUser.getAppId(), vendUserSpace, custUserSpace);
+		record.setStatusCode(Status.UNAUDIT.getCode());
+		record.setStatus(Status.UNAUDIT.getPhrase());
+		record.setCustSpaceUU(custUserSpace.getSpaceUU());
+		record.setVendSpaceUU(vendUserSpace == null ? null : vendUserSpace.getSpaceUU());
+		record.setRequestDate(new Timestamp(System.currentTimeMillis()));
+		// 可能发送过申请,添加id
+		record.setId(oldSendRecord == null ? oldReceiveRecord == null ? null : oldReceiveRecord.getId() : oldSendRecord.getId());
+		partnershipRecordDao.save(record);
+		partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")向" +
+				record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")发出了建立合作关系的申请");
+	}
+
+	@Override
+	public Page<PartnershipRecord> findAllSendUnAudit(String name, String businessCode, String custUserName,
+													  int pageNumber, int pageSize) {
+		UserAccount loginUser = SystemSession.getUserAccount();
+		if (loginUser == null) {
+			throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
+		}
+		Pageable pageable = new PageRequest(pageNumber, pageSize);
+		return partnershipRecordDao.findAll(new Specification<PartnershipRecord>() {
+			@Override
+			public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+				List<Predicate> list = new ArrayList<>();
+				list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), name));
+				list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode));
+				list.add(cb.equal(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), custUserName));
+				list.add(cb.equal(root.get("status").as(Short.class), Status.UNAUDIT.getCode()));
+				Predicate[] predicates = new Predicate[list.size()];
+				predicates = list.toArray(predicates);
+				return cb.and(predicates);
+			}
+		}, pageable);
+	}
+
+	@Override
+	public Page<PartnershipRecord> findAllSendEnable(String name, String businessCode, String custUserName,
+			int pageNumber, int pageSize) {
+		UserAccount loginUser = SystemSession.getUserAccount();
+		if (loginUser == null) {
+			throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
+		}
+		Pageable pageable = new PageRequest(pageNumber, pageSize);
+		return partnershipRecordDao.findAll(new Specification<PartnershipRecord>() {
+			@Override
+			public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+				List<Predicate> list = new ArrayList<>();
+				list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), name));
+				list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode));
+				list.add(cb.equal(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), custUserName));
+				list.add(cb.equal(root.get("status").as(Short.class), Status.ENABLED.getCode()));
+				Predicate[] predicates = new Predicate[list.size()];
+				predicates = list.toArray(predicates);
+				return cb.and(predicates);
+			}
+		}, pageable);
+	}
+
+	@Override
+	public Page<PartnershipRecord> findAllSendUnApply(String name, String businessCode, String custUserName,
+			int pageNumber, int pageSize) {
+		UserAccount loginUser = SystemSession.getUserAccount();
+		if (loginUser == null) {
+			throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
+		}
+		Pageable pageable = new PageRequest(pageNumber, pageSize);
+		return partnershipRecordDao.findAll(new Specification<PartnershipRecord>() {
+			@Override
+			public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+				List<Predicate> list = new ArrayList<>();
+				list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), name));
+				list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode));
+				list.add(cb.equal(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), custUserName));
+				list.add(cb.equal(root.get("status").as(Short.class), Status.UNAPPLY.getCode()));
+				Predicate[] predicates = new Predicate[list.size()];
+				predicates = list.toArray(predicates);
+				return cb.and(predicates);
+			}
+		}, pageable);
+	}
+
+	@Override
+	public Page<PartnershipRecord> findAllReceivedUnAudit(String name, String businessCode, String custUserName,
+			int pageNumber, int pageSize) {
+		UserAccount loginUser = SystemSession.getUserAccount();
+		if (loginUser == null) {
+			throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
+		}
+		Pageable pageable = new PageRequest(pageNumber, pageSize);
+		return partnershipRecordDao.findAll(new Specification<PartnershipRecord>() {
+			@Override
+			public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+				List<Predicate> list = new ArrayList<>();
+				list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), name));
+				list.add(cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode));
+				list.add(cb.equal(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), custUserName));
+				list.add(cb.equal(root.get("status").as(Short.class), Status.UNAUDIT.getCode()));
+				Predicate[] predicates = new Predicate[list.size()];
+				predicates = list.toArray(predicates);
+				return cb.and(predicates);
+			}
+		}, pageable);
+	}
+
+	//
+//	@Override
+//	public Page<PartnershipRecord> findAllReceivedEnable(String name, String businessCode, String custUserName,
+//			int pageNumber, int pageSize) {
+//		User user = SystemSession.getUser();
+//		if (user == null) {
+//			throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
+//		}
+//		return partnershipRecordDao.findAllReceivedView(pageNumber, businessCode, custUserName, pageSize, name,
+//				user.getSpaceUID(), Status.ENABLED.value());
+//	}
+//
+//	@Override
+//	public Page<PartnershipRecord> findAllReceivedUnApply(String name, String businessCode, String custUserName,
+//			int pageNumber, int pageSize) {
+//		User user = SystemSession.getUser();
+//		if (user == null) {
+//			throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
+//		}
+//		return partnershipRecordDao.findAllReceivedView(pageNumber, businessCode, custUserName, pageSize, name,
+//				user.getSpaceUID(), Status.UNAPPLY.value());
+//	}
+//
+//	@Override
+//	public PartnershipRecord findSendRequestById(Long id) {
+//		return partnershipRecordDao.findById(id);
+//	}
+//
+//	@Override
+//	public PartnershipRecord findReceivedRequestById(Long id) {
+//		return partnershipRecordDao.findById(id);
+//	}
+//
+//	@Override
+//	public void enable(Long id) {
+//		User user = SystemSession.getUser();
+//		PartnershipRecord partner = partnershipRecordDao.findById(id);
+//		if (user == null) {
+//			throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
+//		}
+//		if (partner == null) {
+//			throw new VisibleError("未找到该企业信息");
+//		}
+//		if (partner != null && user != null) {
+//			logger.info(user.getName() + "同意了" + partner.getCustName() + "的请求");
+//			partner.setStatus(Status.ENABLED.getPhrase());
+//			partner.setStatusCode(Status.ENABLED.value());
+//			partner.setOperateDate(new Date());
+//			partner.setVendUserCode(user.getDialectUID());
+//			partner.setVendUserTel(user.getUid());
+//			partner.setVendUserEmail(user.getSecondUID());
+//			partner.setVendUserName(user.getName());
+//			partner.setId(id);
+//			partnershipRecordDao.save(partner);
+//		}
+//
+//	}
+//
+//	@Override
+//	public void disable(Long id, String reason) {
+//		User user = SystemSession.getUser();
+//		if (user == null) {
+//			throw new VisibleError("未检测到当期用户信息,请先通过UAS系统或商务平台登录");
+//		} else {
+//			PartnershipRecord partner = partnershipRecordDao.findById(id);
+//			logger.info(user.getName() + "拒绝了" + partner.getCustName() + "的请求");
+//			partner.setStatus(Status.UNAPPLY.getPhrase());
+//			partner.setStatusCode(Status.UNAPPLY.value());
+//			partner.setReason(reason);
+//			partner.setOperateDate(new Date());
+//			partner.setVendUserCode(user.getDialectUID());
+//			partner.setVendUserName(user.getName());
+//			partner.setVendUserEmail(user.getSecondUID());
+//			partner.setVendUserName(user.getName());
+//			partner.setId(id);
+//			partnershipRecordDao.save(partner);
+//		}
+//	}
+//
+//	@Override
+//	public void resendRequestById(Long id) {
+//		User user = SystemSession.getUser();
+//		if (user == null) {
+//			throw new VisibleError("未检测到当期用户信息,请先通过UAS系统或商务平台登录");
+//		} else {
+//			PartnershipRecord partner = partnershipRecordDao.findById(id);
+//			logger.info(user.getDialectUID() + "向" + partner.getVendName() + "发出了建立合作关系的申请");
+//			partner.setStatus(Status.UNAUDIT.getPhrase());
+//			partner.setStatusCode(Status.UNAUDIT.value());
+//			partner.setRequestDate(new Date());
+//			partner.setCustUserCode(user.getDialectUID());
+//			partner.setCustUserEmail(user.getSecondUID());
+//			partner.setCustUserName(user.getName());
+//			partner.setCustUserTel(user.getUid());
+//			partnershipRecordDao.save(partner);
+//		}
+//	}
+//
+//	@Override
+//	public PartnershipRecord findBycustUIDAndVendUID(String custuid, String venduid) {
+//		User user = SystemSession.getUser();
+//		if (user == null) {
+//			throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
+//		}
+//		return partnershipRecordDao.findByCustUIDAndVendUID(custuid, venduid);
+//	}
+//
+//	@Override
+//	public ModelMap getsendRequestCount() {
+//		User user = SystemSession.getUser();
+//		if(user==null){
+//			throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
+//		}
+//		ModelMap map = new ModelMap("全部", partnershipRecordDao.getAllSendCount(user.getSpaceUID()));
+//		map.addAllAttributes(partnershipRecordDao.getSendRequestCount(user.getSpaceUID()));
+//		return map;
+//	}
+//
+//	@Override
+//	public ModelMap getreceivedRequestCount() {
+//		User user = SystemSession.getUser();
+//		if (user == null) {
+//			throw new VisibleError("未检测到当前用户信息,请先通过UAS系统或商务平台登录");
+//		}
+//		ModelMap map = new ModelMap("全部", partnershipRecordDao.getAllReceivedCount(user.getSpaceUID()));
+//		map.addAllAttributes(partnershipRecordDao.getReceivedRequestCount(user.getSpaceUID()));
+//		return map;
+//	}
+//
+	@Override
+	public Page<PartnershipRecord> findByBusinessCodeAndStatusCode(String businessCode, Integer statusCode, String keyword,
+															   int pageNumber, int pageSize) {
+		Pageable pageable = new PageRequest(pageNumber, pageSize);
+		return partnershipRecordDao.findAll(new Specification<PartnershipRecord>() {
+			@Override
+			public Predicate toPredicate(Root<PartnershipRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+				// 添加排序
+				Predicate preStatusCode = cb.equal(root.get("statusCode").as(Short.class), statusCode);
+				query.orderBy(cb.desc(root.get("statusCode")));
+
+				// 营业执照号为空,则查询所有的
+				if (StringUtils.isEmpty(businessCode)) {
+					if (!StringUtils.isEmpty(statusCode)) {
+						query.where(cb.and(preStatusCode));
+					}
+					return query.getRestriction();
+				}
+
+				// 精确查询条件
+				Predicate preVendBusinessCode = cb.equal(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode);
+				Predicate preCustBusinessCode = cb.equal(root.join("custSpace", JoinType.INNER).get("businessCode").as(String.class), businessCode);
+
+				// 关键词为空,只根据营业执照号查询
+				if (StringUtils.isEmpty(keyword)) {
+					if (!StringUtils.isEmpty(statusCode)) {
+						query.where(cb.and(preStatusCode, cb.or(preVendBusinessCode, preCustBusinessCode)));
+						return query.getRestriction();
+					}
+					query.where(cb.or(preVendBusinessCode, preCustBusinessCode));
+					return query.getRestriction();
+				}
+
+				// 申请人模糊查询条件
+				List<Predicate> keyCustPredicates = new ArrayList<Predicate>();
+				keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("spaceName").as(String.class), "%" + keyword + "%"));
+				keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("businessCode").as(String.class), "%" + keyword + "%"));
+				keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("profession").as(String.class), "%" + keyword + "%"));
+				keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("tags").as(String.class), "%" + keyword + "%"));
+				keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("spaceUU").as(String.class), "%" + keyword + "%"));
+				keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("regAddress").as(String.class), "%" + keyword + "%"));
+				keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("admin").get("vipName").as(String.class), "%" + keyword + "%"));
+				keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("admin").get("mobile").as(String.class), "%" + keyword + "%"));
+				keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("admin").get("email").as(String.class), "%" + keyword + "%"));
+				
+				// 接收人模糊查询条件
+				List<Predicate> keyVendPredicates = new ArrayList<Predicate>();
+				keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), "%" + keyword + "%"));
+				keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("businessCode").as(String.class), "%" + keyword + "%"));
+				keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("profession").as(String.class), "%" + keyword + "%"));
+				keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("tags").as(String.class), "%" + keyword + "%"));
+				keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("spaceUU").as(String.class), "%" + keyword + "%"));
+				keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("regAddress").as(String.class), "%" + keyword + "%"));
+				keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("admin").get("vipName").as(String.class), "%" + keyword + "%"));
+				keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("admin").get("mobile").as(String.class), "%" + keyword + "%"));
+				keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("admin").get("email").as(String.class), "%" + keyword + "%"));
+				Predicate[] custPredicates = new Predicate[keyCustPredicates.size()];
+				Predicate[] vendPredicates = new Predicate[keyVendPredicates.size()];
+				if (!StringUtils.isEmpty(statusCode)) {
+					query.where(cb.and(preStatusCode, cb.or(cb.and(preVendBusinessCode, cb.or(keyCustPredicates.toArray(custPredicates))), cb.and(preCustBusinessCode, cb.or(keyVendPredicates.toArray(vendPredicates))))));
+					return query.getRestriction();
+				}
+				query.where(cb.and(cb.or(cb.and(preVendBusinessCode, cb.or(keyCustPredicates.toArray(custPredicates))), cb.and(preCustBusinessCode, cb.or(keyVendPredicates.toArray(vendPredicates))))));
+				return query.getRestriction();
+			}
+		}, pageable);
+	}
+//
+//	@Override
+//	public Page<PartnershipRecord> findBySpaceUidAndStatusCodeFilterByPartnerUUs(String businessCode, Integer statusCode, String keyword, List<Long> partnerUUs,
+//															   int pageNumber, int pageSize) {
+//		return partnershipRecordDao.findBySpaceUidAndStatusCodeFilterByPartnerUUs(businessCode, statusCode, keyword, partnerUUs, pageNumber,
+//				pageSize);
+//	}
+
+	@Override
+	public void addPartner(PartnershipRecord record) {
+		// 根据营业执照号获取申请记录
+		String custBusinessCode = StringUtils.isEmpty(record.getCustBusinessCode()) ? record.getCustSpace() == null ? null : record.getCustSpace().getBusinessCode() : record.getCustBusinessCode();
+		String vendBusinessCode = StringUtils.isEmpty(record.getVendBusinessCode()) ? record.getVendSpace() == null ? null : record.getVendSpace().getBusinessCode() : record.getVendBusinessCode();
+		if (custBusinessCode == null || vendBusinessCode == null) {
+			throw new VisibleError("参数错误");
+		}
+		PartnershipRecord oldSendRecord = partnershipRecordDao.findByBusinessCode(custBusinessCode, vendBusinessCode);
+		PartnershipRecord oldReceiveRecord = partnershipRecordDao.findByBusinessCode(vendBusinessCode, custBusinessCode);
+
+		// 判断是否为已申请或已同意状态
+		if (oldSendRecord != null && !oldSendRecord.getStatusCode().equals(Status.UNAPPLY.getCode())) {
+			if (oldSendRecord.getStatusCode().equals(Status.UNAUDIT.getCode())) {
+				throw new VisibleError("对该企业的申请已发出,请耐心等待对方审核");
+			}
+			if (oldSendRecord.getStatusCode().equals(Status.ENABLED.getCode())) {
+				throw new VisibleError("您们已是合作伙伴,请不要重复申请");
+			}
+		}
+		if (oldReceiveRecord != null && !oldReceiveRecord.getStatusCode().equals(Status.UNAPPLY.getCode())) {
+			if (oldReceiveRecord.getStatusCode().equals(Status.UNAUDIT.getCode())) {
+				throw new VisibleError("该企业已经向您发出了申请,请注意查看您收到的申请记录");
+			}
+			if (oldReceiveRecord.getStatusCode().equals(Status.ENABLED.getCode())) {
+				throw new VisibleError("您们已是合作伙伴,请不要重复申请");
+			}
+		}
+
+		// 未开通商务平台,提醒开通
+		Userspace castSpace = userSpaceService.findByBusinessCode(custBusinessCode);
+		Userspace vendSpace = userSpaceService.findByBusinessCode(vendBusinessCode);
+		if (vendSpace == null) {
+			ModelMap data = new ModelMap();
+			data.put("vendorusername", record.getVendUserName());
+			data.put("vendorname", record.getVendSpaceName());
+			data.put("custname", castSpace.getSpaceName());
+			Setting mailTplId = settingService.findOne("templateForSendEmailWhenAddPartner");
+			if (!StringUtils.isEmpty(mailTplId) && !StringUtils.isEmpty(vendSpace.getAdmin().getEmail())) {
+				mailService.send(mailTplId.getValue(), record.getVendUserEmail(), data);
+			}
+			Setting smsTplId = settingService.findOne("templateForSendSmsWhenAddPartner");
+			if (!StringUtils.isEmpty(smsTplId) && !StringUtils.isEmpty(vendSpace.getAdmin().getMobile())) {
+				smsService.send(smsTplId.getValue(), vendSpace.getAdmin().getMobile(),
+						new Object[] { record.getVendUserName(), record.getVendSpaceName(), castSpace.getSpaceName() });
+			}
+		}
+
+		// 未申请或拒绝状态,添加一条记录
+		PartnershipRecord newRecord = new PartnershipRecord(record.getAppId(), vendSpace, castSpace);
+		record.setStatusCode(Status.UNAUDIT.getCode());
+		record.setStatus(Status.UNAUDIT.getPhrase());
+		record.setRequestDate(new Timestamp(System.currentTimeMillis()));
+		record.setId(oldSendRecord == null ? oldReceiveRecord == null ? null : oldReceiveRecord.getId() : oldSendRecord.getId());
+		partnershipRecordDao.save(record);
+		partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")向" +
+				record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")发出了建立合作关系的申请");	}
+
+	@Override
+	public ModelMap synchronizePartner(PartnershipRecord record) {
+		ModelMap map = new ModelMap();
+		PartnershipRecord oldSendRecord = partnershipRecordDao.findByBusinessCode(record.getCustBusinessCode(),
+				record.getVendBusinessCode());
+		PartnershipRecord oldReceiveRecord = partnershipRecordDao.findByBusinessCode(record.getVendBusinessCode(),
+				record.getCustBusinessCode());
+		if (oldSendRecord != null && !oldSendRecord.getStatusCode().equals(Status.ENABLED.getCode())) {
+			oldSendRecord.setStatusCode(Status.ENABLED.getCode());
+			oldSendRecord.setStatus(Status.ENABLED.getPhrase());
+			oldSendRecord.setRequestDate(new Timestamp(System.currentTimeMillis()));
+			oldSendRecord.setOperateDate(new Timestamp(System.currentTimeMillis()));
+			partnershipRecordDao.save(oldSendRecord);
+			partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")与" +
+					record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")通过单据交易建立了合作关系");
+		}
+		if (oldReceiveRecord != null && !oldReceiveRecord.getStatusCode().equals(Status.ENABLED.getCode())) {
+			oldReceiveRecord.setStatusCode(Status.ENABLED.getCode());
+			oldReceiveRecord.setStatus(Status.ENABLED.getPhrase());
+			oldReceiveRecord.setRequestDate(new Timestamp(System.currentTimeMillis()));
+			oldReceiveRecord.setOperateDate(new Timestamp(System.currentTimeMillis()));
+			partnershipRecordDao.save(oldReceiveRecord);
+			partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")与" +
+					record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")通过单据交易建立了合作关系");
+		}
+		if (oldSendRecord == null && oldReceiveRecord == null) {
+			Userspace custSpace = userSpaceService.findByBusinessCode(record.getCustBusinessCode());
+			Userspace vendSpace = userSpaceService.findByBusinessCode(record.getVendBusinessCode());
+			record.setStatusCode(Status.ENABLED.getCode());
+			record.setStatus(Status.ENABLED.getPhrase());
+			record.setRequestDate(new Timestamp(System.currentTimeMillis()));
+			record.setOperateDate(new Timestamp(System.currentTimeMillis()));
+			record.setCustSpaceUU(custSpace == null ? null : custSpace.getSpaceUU());
+			record.setVendSpaceUU(vendSpace == null ? null : vendSpace.getSpaceUU());
+			partnershipRecordDao.save(record);
+			partnershipLog.info(record.getCustSpaceName() + "(" + record.getCustSpaceUU() + ")与" +
+					record.getVendSpaceName() + "(" + record.getVendSpaceUU() + ")通过单据交易建立了合作关系");
+			map.put("success", "建立合作关系成功");
+		}
+		return map;
+	}
+
+	@Override
+	public ModelMap acceptRequest(Long id, String vendUserTel, String appId) {
+		PartnershipRecord record = partnershipRecordDao.findOne(id);
+		ModelMap map = new ModelMap();
+		User user = userService.findByMobile(vendUserTel);
+		record.setAppId(appId);
+		record.setOperateDate(new Timestamp(System.currentTimeMillis()));
+		record.setVendUserName(user.getVipName());
+		record.setStatus(Status.ENABLED.getPhrase());
+		record.setStatusCode(Status.ENABLED.getCode());
+		partnershipRecordDao.save(record);
+		map.put("success", "审核成功");
+		return map;
+	}
+
+	@Override
+	public ModelMap rejectRequest(Long id, String reason, String vendUserTel, String appId) {
+		PartnershipRecord record = partnershipRecordDao.findOne(id);
+		ModelMap map = new ModelMap();
+		User user = userDao.findByMobile(vendUserTel);
+		record.setAppId(appId);
+		record.setOperateDate(new Timestamp(System.currentTimeMillis()));
+		record.setVendUserName(user.getVipName());
+		record.setStatus(Status.UNAPPLY.getPhrase());
+		record.setStatusCode(Status.UNAPPLY.getCode());
+		record.setReason(reason);
+		partnershipRecordDao.save(record);
+		map.put("success", "审核成功");
+		return map;
+	}
+
+	@Override
+	public RequestStatus getRequestByBusinessCode(String custBusinessCode, String vendBusinessCode) {
+		RequestStatus request = new RequestStatus();
+
+		// 发出申请
+		PartnershipRecord receivedRequest = partnershipRecordDao.findByBusinessCode(custBusinessCode, vendBusinessCode);
+		if (receivedRequest != null) {
+			request.setCustBusinessCode(receivedRequest.getCustSpace().getBusinessCode());
+			request.setCustUU(receivedRequest.getCustSpace().getSpaceUU());
+			request.setVendBusinessCode(receivedRequest.getVendSpace().getBusinessCode());
+			request.setVendUU(receivedRequest.getVendSpace().getSpaceUU());
+			request.setStatusCode(receivedRequest.getStatusCode());
+			request.setMethod(Const.NO);
+			if (receivedRequest.getStatusCode() == Status.UNAUDIT.getCode()) {
+				request.setNeedAgreed(Const.YES);
+			} else {
+				request.setNeedAgreed(Const.NO);
+			}
+		}
+
+		// 收到申请
+		PartnershipRecord sendRequest = partnershipRecordDao.findByBusinessCode(vendBusinessCode, custBusinessCode);
+		if (sendRequest != null) {
+			request.setCustBusinessCode(receivedRequest.getCustSpace().getBusinessCode());
+			request.setCustUU(receivedRequest.getCustSpace().getSpaceUU());
+			request.setVendBusinessCode(receivedRequest.getVendSpace().getBusinessCode());
+			request.setVendUU(receivedRequest.getVendSpace().getSpaceUU());
+			request.setStatusCode(sendRequest.getStatusCode());
+			request.setMethod(Const.YES);
+			request.setNeedAgreed(Const.NO);
+		}
+		return request;
+	}
+
+	@Override
+	public ModelMap getRequestTodo(String businessCode) {
+		ModelMap map = new ModelMap();
+		map.put("todo", partnershipRecordDao.getRequestTodo(businessCode));
+		return map;
+	}
+
+	@Override
+	public void invite(InvitationRecord record) {
+		PartnershipRecord partnershipRecord = new PartnershipRecord();
+//		partnershipRecordDao.saveInvitation(record);
+	}
+
+}

+ 1 - 1
sso-server/src/main/java/com/uas/sso/service/impl/UserServiceImpl.java

@@ -217,7 +217,7 @@ public class UserServiceImpl implements UserService {
             }
         } else if (AccountTypeUtils.UU_NUMBER.equals(type)) {
             // uu号
-            user = userDao.findByUserUU(Long.valueOf(type));
+            user = userDao.findByUserUU(Long.valueOf(username));
         }
         return user;
     }