Browse Source

修改推送方法

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@3892 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
yingp 10 years ago
parent
commit
87f7d8b7d0

+ 12 - 14
src/main/java/com/uas/platform/b2b/erp/controller/RelationshipController.java

@@ -20,7 +20,6 @@ import com.uas.platform.b2b.model.Enterprise;
 import com.uas.platform.b2b.model.Vendor;
 import com.uas.platform.b2b.support.SystemSession;
 
-
 @Controller
 @RequestMapping("/erp/relationship")
 public class RelationshipController {
@@ -29,7 +28,7 @@ public class RelationshipController {
 	private VendorDao vendorDao;
 	@Autowired
 	private EnterpriseDao enterpriseDao;
-	
+
 	@RequestMapping(method = RequestMethod.POST)
 	@ResponseBody
 	@ResponseStatus(value = HttpStatus.OK)
@@ -38,25 +37,24 @@ public class RelationshipController {
 		boolean ok = true;
 		String error = null;
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
-		if (!StringUtils.isEmpty(otheruu)) {			
-			Enterprise enterprise=enterpriseDao.findEnterpriseByUu(otheruu);
-			if(enterprise!=null){
+		if (!StringUtils.isEmpty(otheruu)) {
+			Enterprise enterprise = enterpriseDao.findEnterpriseByUu(otheruu);
+			if (enterprise != null) {
 				List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(otheruu, enUU);
-				Vendor vendor = null;
-				if (vendors.size() == 0) {//供应商资料在平台上不存在
-					vendor = addVendor(otheruu,enUU);//添加企业的供应商资料
+				if (vendors.size() == 0) {// 供应商资料在平台上不存在
+					addVendor(otheruu, enUU);// 添加企业的供应商资料
 				}
-			}else{
+			} else {
 				ok = false;
-				error="企业UU号错误,请联系管理员!";
-			}			 
+				error = "企业UU号错误,请联系管理员!";
+			}
 		}
 		infos.put("ok", ok);
 		infos.put("error", error);
 		return infos;
 	}
-	
-	private Vendor addVendor(Long enuu,Long venduu) {
+
+	private Vendor addVendor(Long enuu, Long venduu) {
 		Vendor vendor = new Vendor();
 		vendor.setMyEnUU(enuu);
 		Enterprise enEnterprise = enterpriseDao.findOne(enuu);
@@ -64,6 +62,6 @@ public class RelationshipController {
 		Enterprise vendEnterprise = enterpriseDao.findOne(enuu);
 		vendor.setVendEnUU(venduu);
 		vendor.setVendUserUU(vendEnterprise.getEnAdminuu());
-		return vendorDao.save(vendor);		
+		return vendorDao.save(vendor);
 	}
 }

+ 7 - 19
src/main/java/com/uas/platform/b2b/event/PurchaseOrderSaveEvent.java

@@ -3,16 +3,11 @@ package com.uas.platform.b2b.event;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.springframework.beans.factory.annotation.Autowired;
-
 import com.uas.platform.b2b.core.util.SearchKeyUtils;
-import com.uas.platform.b2b.dao.UserDao;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
 import com.uas.platform.b2b.model.PurchaseOrderAllItem;
 import com.uas.platform.b2b.model.PurchaseOrderIndex;
-import com.uas.platform.b2b.model.User;
-import com.uas.platform.b2b.support.BaiduPush;
-
+import com.uas.platform.b2b.support.mq.PushUtils;
 
 /**
  * 客户采购单保存事件
@@ -26,7 +21,7 @@ public class PurchaseOrderSaveEvent extends SaveEvent<PurchaseOrderIndex, Purcha
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
-	
+
 	public PurchaseOrderSaveEvent(List<PurchaseOrderAll> savedList) {
 		super(savedList);
 	}
@@ -39,17 +34,14 @@ public class PurchaseOrderSaveEvent extends SaveEvent<PurchaseOrderIndex, Purcha
 		// 采购单号(匹配完整的编号)
 		indexes.add(new PurchaseOrderIndex(enUU, key, saved.getCode()));
 		// 客户名称(匹配两个字以上的客户名称关键字)
-		indexes.addAll(PurchaseOrderIndex.format(enUU, key,
-				SearchKeyUtils.splitToKeys(saved.getEnterprise().getEnName(), false)));
+		indexes.addAll(PurchaseOrderIndex.format(enUU, key, SearchKeyUtils.splitToKeys(saved.getEnterprise().getEnName(), false)));
 		// 客户UU号(匹配完整的UU号)
 		indexes.add(new PurchaseOrderIndex(enUU, key, saved.getEnUU().toString()));
 		// 物料(匹配完整的物料编号、两个字以上的物料名称及规格关键字)
 		for (PurchaseOrderAllItem item : saved.getOrderItems()) {
 			indexes.add(new PurchaseOrderIndex(enUU, key, item.getProduct().getCode()));
-			indexes.addAll(PurchaseOrderIndex.format(enUU, key,
-					SearchKeyUtils.splitToKeys(item.getProduct().getTitle(), false)));
-			indexes.addAll(PurchaseOrderIndex.format(enUU, key,
-					SearchKeyUtils.splitToKeys(item.getProduct().getSpec(), false)));
+			indexes.addAll(PurchaseOrderIndex.format(enUU, key, SearchKeyUtils.splitToKeys(item.getProduct().getTitle(), false)));
+			indexes.addAll(PurchaseOrderIndex.format(enUU, key, SearchKeyUtils.splitToKeys(item.getProduct().getSpec(), false)));
 		}
 		return indexes;
 	}
@@ -62,12 +54,8 @@ public class PurchaseOrderSaveEvent extends SaveEvent<PurchaseOrderIndex, Purcha
 				// 如果采购单单据存在客户联系人UU且UU正确--->客户联系人UU
 				// 如果不存在,但是平台中企业供应商资料存在供应商联系人UU--->平台中供应商资料中的联系人UU
 				// 否则不推送
-				/*XingePusher.pushByUserUU(order.getVendUserUU(), "新增一条客户采购单", "单号:" + order.getCode() + ",客户:" + order.getEnterprise().getEnName(), 
-						"#/sale/order/" + order.getId(), 
-						"客户采购订单");*/
-				BaiduPush.pushSingleAccount(order.getVendUserUU(), order.getVendUU(), "新增一条客户采购单", "单号:" + order.getCode() + ",客户:" + order.getEnterprise().getEnName(), 
-						"#/sale/order/" + order.getId(), 
-						"客户采购订单");
+				PushUtils.push(order.getVendUU(), order.getVendUserUU(), "收到新的客户采购单", "单号:" + order.getCode() + ",客户:"
+						+ order.getEnterprise().getEnName(), "#/sale/order/" + order.getId(), "客户采购订单");
 			}
 		}
 	}

+ 11 - 0
src/main/java/com/uas/platform/b2b/manage/model/AccountInfo.java

@@ -5,6 +5,7 @@ import java.util.Set;
 
 import com.uas.platform.b2b.model.Enterprise;
 import com.uas.platform.b2b.model.User;
+import com.uas.platform.b2b.model.UserBaseInfo;
 
 public class AccountInfo {
 	/**
@@ -99,6 +100,16 @@ public class AccountInfo {
 		this.userUU = user.getUserUU();
 		this.userIMId = user.getUserIMId();
 	}
+	
+	public AccountInfo(UserBaseInfo user, long enUU) {
+		this.email = user.getUserEmail();
+		this.enUU = enUU;
+		this.name = user.getUserName();
+		this.password = user.getUserPwd();
+		this.tel = user.getUserTel();
+		this.userUU = user.getUserUU();
+		this.userIMId = user.getUserIMId();
+	}
 
 	public User convert() {
 		User user = new User();

+ 10 - 0
src/main/java/com/uas/platform/b2b/model/AccessToken.java

@@ -66,6 +66,16 @@ public class AccessToken implements Serializable {
 		this.expires_in = expires_in;
 	}
 
+	public AccessToken(UserBaseInfo user, long enUU, Object bindObject, int expires_in) {
+		this.id = StringUtil.uuid();
+		this.user = user.getUserName();
+		this.enUU = enUU;
+		this.userUU = user.getUserUU();
+		this.bind = String.valueOf(bindObject);
+		this.time = new Date();
+		this.expires_in = expires_in;
+	}
+
 	public String getId() {
 		return id;
 	}

+ 23 - 1
src/main/java/com/uas/platform/b2b/model/UserBaseInfo.java

@@ -19,7 +19,7 @@ import org.hibernate.annotations.CacheConcurrencyStrategy;
 @Entity
 @Table(name = "sec$users")
 @Cacheable
-@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "com.uas.platform.b2b.model.User")
+@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "com.uas.platform.b2b.model.UserBaseInfo")
 public class UserBaseInfo implements Serializable {
 
 	/**
@@ -33,6 +33,9 @@ public class UserBaseInfo implements Serializable {
 
 	@Column(name = "user_name")
 	private String userName;
+	
+	@Column(name = "user_pwd")
+	private String userPwd;
 
 	@Column(name = "user_email")
 	private String userEmail;
@@ -42,6 +45,9 @@ public class UserBaseInfo implements Serializable {
 
 	@Column(name = "user_sex")
 	private String userSex;
+	
+	@Column(name = "user_imid")
+	private Long userIMId;
 
 	public Long getUserUU() {
 		return userUU;
@@ -59,6 +65,14 @@ public class UserBaseInfo implements Serializable {
 		this.userName = userName;
 	}
 
+	public String getUserPwd() {
+		return userPwd;
+	}
+
+	public void setUserPwd(String userPwd) {
+		this.userPwd = userPwd;
+	}
+
 	public String getUserEmail() {
 		return userEmail;
 	}
@@ -83,4 +97,12 @@ public class UserBaseInfo implements Serializable {
 		this.userSex = userSex;
 	}
 
+	public Long getUserIMId() {
+		return userIMId;
+	}
+
+	public void setUserIMId(Long userIMId) {
+		this.userIMId = userIMId;
+	}
+
 }

+ 113 - 0
src/main/java/com/uas/platform/b2b/openapi/controller/AuthedWebPageController.java

@@ -0,0 +1,113 @@
+package com.uas.platform.b2b.openapi.controller;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.web.context.HttpSessionSecurityContextRepository;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.uas.platform.b2b.model.AccessToken;
+import com.uas.platform.b2b.model.Enterprise;
+import com.uas.platform.b2b.model.ResourceItem;
+import com.uas.platform.b2b.model.Role;
+import com.uas.platform.b2b.model.User;
+import com.uas.platform.b2b.openapi.support.ErrorUtils;
+import com.uas.platform.b2b.service.AccessTokenService;
+import com.uas.platform.b2b.service.EnterpriseService;
+import com.uas.platform.b2b.service.UserService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.TrustedAuthenticationToken;
+import com.uas.platform.core.exception.SystemError;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.util.AgentUtils;
+
+/**
+ * 认证信息跳转界面
+ * 
+ * @author yingp
+ *
+ */
+@RequestMapping("/openapi")
+@Controller
+public class AuthedWebPageController {
+
+	@Autowired
+	private EnterpriseService enterpriseService;
+
+	@Autowired
+	private UserService userService;
+
+	@Autowired
+	private AccessTokenService accessTokenService;
+
+	/**
+	 * 用token信息自动登录并打开web页面
+	 * 
+	 * @param request
+	 * @param response
+	 * @param access_token
+	 * @param redirect_page
+	 * @throws IOException
+	 */
+	@RequestMapping(value = "/webpage", method = RequestMethod.GET)
+	public void getWebPageAccessToken(HttpServletRequest request, HttpServletResponse response,
+			@RequestParam(value = "access_token", required = true) String access_token,
+			@RequestParam(value = "redirect_page", required = true) String redirect_page) throws IOException {
+		AccessToken token = accessTokenService.findOne(access_token);
+		if (token != null) {
+			Enterprise enterprise = enterpriseService.findByEnUU(token.getEnUU());
+			if (enterprise != null) {
+				// 将企业信息、用户信息写入SystemSession
+				User user = userService.findUserByUserUU(token.getUserUU());
+				if (user != null) {
+					user.setEnterprise(enterprise);
+					user.setIp(AgentUtils.getIp(request));
+					SystemSession.setUser(user);
+					Collection<GrantedAuthority> array = getGrantedAuthorities(user);
+					TrustedAuthenticationToken authenticate = new TrustedAuthenticationToken(user.getUserUU(), array);
+					SecurityContextHolder.getContext().setAuthentication(authenticate);
+					request.getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY,
+							SecurityContextHolder.getContext());
+					request.getSession().setAttribute("user", user);
+					response.sendRedirect(redirect_page);
+				}
+			}
+			throw new SystemError(ErrorUtils.EN_NOT_FOUND);
+		}
+		throw new SystemError(ErrorUtils.ACCESS_TOKEN_EXPIRES);
+	}
+
+	private Set<GrantedAuthority> getGrantedAuthorities(User user) {
+		Set<GrantedAuthority> authSet = new HashSet<GrantedAuthority>();
+		Set<Role> roles = user.getRoles();
+		if (!CollectionUtils.isEmpty(roles)) {
+			for (Role role : roles) {
+				if (role.isSys()) {// 超级账号
+					user.setIssys(Constant.YES);
+					break;
+				}
+				Set<ResourceItem> resourceItems = role.getResourceItems();
+				if (!CollectionUtils.isEmpty(resourceItems)) {
+					for (ResourceItem res : resourceItems) {
+						authSet.add(new SimpleGrantedAuthority(res.getName()));
+					}
+				}
+			}
+		}
+		return authSet;
+	}
+
+}

+ 34 - 2
src/main/java/com/uas/platform/b2b/service/AccessTokenService.java

@@ -1,27 +1,59 @@
 package com.uas.platform.b2b.service;
 
 import com.uas.platform.b2b.model.AccessToken;
+import com.uas.platform.b2b.model.User;
+import com.uas.platform.b2b.model.UserBaseInfo;
 
 public interface AccessTokenService {
 
 	/**
-	 * 绑定任意对象
+	 * 生成token
 	 * 
 	 * @param bindObject
+	 *            绑定任意对象
 	 * @return
 	 */
 	public AccessToken createNew(Object bindObject);
 
 	/**
-	 * 绑定任意对象
+	 * 生成token
 	 * 
 	 * @param bindObject
+	 *            绑定任意对象
 	 * @param expires_in
 	 *            有效时间(秒)
 	 * @return
 	 */
 	public AccessToken createNew(Object bindObject, int expires_in);
 
+	/**
+	 * 生成token
+	 * 
+	 * @param user
+	 *            指定用户
+	 * @param bindObject
+	 *            绑定任意对象
+	 * @param expires_in
+	 *            有效时间(秒)
+	 * @return
+	 */
+	public AccessToken createNew(User user, Object bindObject, int expires_in);
+
+	/**
+	 * 生成token
+	 * 
+	 * @param user
+	 *            指定用户
+	 * @param enUU
+	 *            企业
+	 * @param bindObject
+	 *            绑定任意对象
+	 * @param expires_in
+	 *            有效时间(秒)
+	 * @return
+	 */
+	public AccessToken createNew(UserBaseInfo user, long enUU, Object bindObject, int expires_in);
+
 	public AccessToken findOne(String id);
 
 	public void delete(String id);

+ 16 - 0
src/main/java/com/uas/platform/b2b/service/impl/AccessTokenServiceImpl.java

@@ -4,6 +4,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.uas.platform.b2b.model.AccessToken;
+import com.uas.platform.b2b.model.User;
+import com.uas.platform.b2b.model.UserBaseInfo;
 import com.uas.platform.b2b.redis.dao.AccessTokenDao;
 import com.uas.platform.b2b.service.AccessTokenService;
 import com.uas.platform.b2b.support.SystemSession;
@@ -38,4 +40,18 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 		accessTokenDao.delete(id);
 	}
 
+	@Override
+	public AccessToken createNew(User user, Object bindObject, int expires_in) {
+		AccessToken token = new AccessToken(user, bindObject, expires_in);
+		accessTokenDao.save(token);
+		return token;
+	}
+
+	@Override
+	public AccessToken createNew(UserBaseInfo user, long enUU, Object bindObject, int expires_in) {
+		AccessToken token = new AccessToken(user, enUU, bindObject, expires_in);
+		accessTokenDao.save(token);
+		return token;
+	}
+
 }

+ 51 - 27
src/main/java/com/uas/platform/b2b/service/impl/UserServiceImpl.java

@@ -80,13 +80,16 @@ public class UserServiceImpl implements UserService {
 		user.setUserPwd(Md5Utils.encode(user.getUserPwd(), user.getUserUU()));
 		user.setCurrentEnterprise();
 		try {
-			if (user.getEnterprise() == null || sendUserToManage(user)) {
-				return userDao.save(user);
+			if (user.getEnterprise() != null) {
+				Map<String, Object> res = sendUserToManage(user);
+				Object imid = res.get("userImid");
+				if (imid != null)
+					user.setUserIMId(Long.parseLong(imid.toString()));
 			}
+			return userDao.save(user);
 		} catch (Exception e) {
 			throw new RuntimeException(e.getMessage());
 		}
-		return null;
 	}
 
 	@Override
@@ -162,17 +165,21 @@ public class UserServiceImpl implements UserService {
 				newUser.setRoles(user.getRoles());
 			}
 			try {
-				if(isNotSaas(SystemSession.getUser().getEnterprise().getUu())) {
-					if(newUser.getEnterprise() != null) {
+				if (isNotSaas(SystemSession.getUser().getEnterprise().getUu())) {
+					if (newUser.getEnterprise() != null) {
 						newUser = userDao.save(newUser);
 					}
 				} else {
-					if (newUser.getEnterprise() == null || sendUserToManage(newUser)) {
-						newUser = userDao.save(newUser);
+					if (newUser.getEnterprise() != null) {
+						Map<String, Object> res = sendUserToManage(newUser);
+						Object imid = res.get("userImid");
+						if (imid != null)
+							newUser.setUserIMId(Long.parseLong(imid.toString()));
 					}
+					newUser = userDao.save(newUser);
 				}
 			} catch (Exception e) {
-				System.out.println("ERRO:"+e.getMessage());
+				System.out.println("ERRO:" + e.getMessage());
 				throw new RuntimeException(e.getMessage());
 			}
 			if (SystemSession.getUser().getUserUU().equals(newUser.getUserUU())) {
@@ -194,13 +201,18 @@ public class UserServiceImpl implements UserService {
 			if (user1.getEnterprise() == null)
 				user1.setCurrentEnterprise();// 随便绑定一个用户所属企业
 			try {
-				if(isNotSaas(SystemSession.getUser().getEnterprise().getUu())) {
-					if(user.getEnterprise() != null) {
+				if (isNotSaas(SystemSession.getUser().getEnterprise().getUu())) {
+					if (user.getEnterprise() != null) {
 						user = userDao.save(user1);
 					}
-				}else {
-					if (user.getEnterprise() == null || sendUserToManage(user1))
-						userDao.save(user1);
+				} else {
+					if (user1.getEnterprise() != null) {
+						Map<String, Object> res = sendUserToManage(user1);
+						Object imid = res.get("userImid");
+						if (imid != null)
+							user1.setUserIMId(Long.parseLong(imid.toString()));
+					}
+					user1 = userDao.save(user1);
 				}
 			} catch (Exception e) {
 				throw new RuntimeException(e.getMessage());
@@ -217,7 +229,7 @@ public class UserServiceImpl implements UserService {
 	 * @param newUserInfo
 	 * @throws Exception
 	 */
-	private static boolean sendUserToManage(User newUserInfo) throws Exception {
+	private static Map<String, Object> sendUserToManage(User newUserInfo) throws Exception {
 		Map<String, String> params = new HashMap<String, String>();
 		params.put("data", FlexJsonUtils.toJson(new AccountInfo(newUserInfo)));
 		Response response = HttpUtil.sendPostRequest(HostConstant.MANAGE_INNER_HOST + "/public/account", params, true);
@@ -225,7 +237,7 @@ public class UserServiceImpl implements UserService {
 			List<Map<String, Object>> resultMap = FlexJsonUtils.fromJsonArray(response.getResponseText(), HashMap.class);
 			if (resultMap.size() > 0) {
 				if ("true".equals(String.valueOf(resultMap.get(0).get("ok")))) {
-					return true;
+					return resultMap.get(0);
 				}
 				throw new Exception(String.valueOf(resultMap.get(0).get("error")));
 			}
@@ -249,14 +261,18 @@ public class UserServiceImpl implements UserService {
 		user = userDao.save(user);
 		user.setUserPwd(Md5Utils.encode("111111", user.getUserUU()));
 		try {
-			if(isNotSaas(SystemSession.getUser().getEnterprise().getUu())) {
-				if(user.getEnterprise() != null) {
+			if (isNotSaas(SystemSession.getUser().getEnterprise().getUu())) {
+				if (user.getEnterprise() != null) {
 					user = userDao.save(user);
 				}
 			} else {
-				if (user.getEnterprise() == null || sendUserToManage(user)) {
-					user = userDao.save(user);
+				if (user.getEnterprise() != null) {
+					Map<String, Object> res = sendUserToManage(user);
+					Object imid = res.get("userImid");
+					if (imid != null)
+						user.setUserIMId(Long.parseLong(imid.toString()));
 				}
+				user = userDao.save(user);
 			}
 		} catch (Exception e) {
 			userDao.delete(user);
@@ -330,9 +346,13 @@ public class UserServiceImpl implements UserService {
 		user = userDao.save(user);
 		user.setUserPwd(Md5Utils.encode("111111", user.getUserUU()));
 		try {
-			if (user.getEnterprise() == null || sendUserToManage(user)) {
-				user = userDao.save(user);
+			if (user.getEnterprise() != null) {
+				Map<String, Object> res = sendUserToManage(user);
+				Object imid = res.get("userImid");
+				if (imid != null)
+					user.setUserIMId(Long.parseLong(imid.toString()));
 			}
+			user = userDao.save(user);
 		} catch (Exception e) {
 			userDao.delete(user);
 			throw new RuntimeException(e.getMessage());
@@ -416,9 +436,13 @@ public class UserServiceImpl implements UserService {
 					if (user.getEnterprise() == null)
 						user.setCurrentEnterprise();
 					try {
-						if (user.getEnterprise() == null || sendUserToManage(user)) {
-							userDao.save(user);
+						if (user.getEnterprise() != null) {
+							Map<String, Object> res = sendUserToManage(user);
+							Object imid = res.get("userImid");
+							if (imid != null)
+								user.setUserIMId(Long.parseLong(imid.toString()));
 						}
+						user = userDao.save(user);
 					} catch (Exception e) {
 						e.printStackTrace();
 						throw new RuntimeException(e.getMessage());
@@ -630,15 +654,15 @@ public class UserServiceImpl implements UserService {
 		}
 		return false;
 	}
+
 	/**
-	 * TODO 为防止saas用户更改用户信息报错问题
-	 *  目前加一个判断,在平台中SAAS用户忽略同步数据
+	 * TODO 为防止saas用户更改用户信息报错问题 目前加一个判断,在平台中SAAS用户忽略同步数据
 	 */
 	@Override
 	public boolean isNotSaas(Long uu) {
-		//判断当前企业是否为saas企业
+		// 判断当前企业是否为saas企业
 		Enterprise myenter = enterpriseDao.findEnterpriseByUu(uu);
-		if (myenter.getEnSaasStatus() != null || myenter.getEnSaasSendStatus()!=null) {
+		if (myenter.getEnSaasStatus() != null || myenter.getEnSaasSendStatus() != null) {
 			return true;
 		}
 		return false;

+ 0 - 62
src/main/java/com/uas/platform/b2b/support/BaiduPush.java

@@ -1,62 +0,0 @@
-package com.uas.platform.b2b.support;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-
-import com.uas.platform.b2b.dao.UserDao;
-import com.uas.platform.b2b.service.UserService;
-import com.uas.platform.core.model.Constant;
-import com.uas.platform.core.util.HttpUtil;
-import com.uas.platform.core.util.HttpUtil.Response;
-import com.uas.platform.core.util.serializer.FlexJsonUtils;
-
-
-
-public class BaiduPush {
-	
-	/**
-	 * /**
-	 * @param account 接受者账号(手机号)
-	 * @param tittle 推送消息的标题
-	 * @param content 推送消息的内容
-	 * @param url 消息指定要打开的页面
-	 * @param pageTitle webView标题
-	 * @return
-	 */
-	public static  void pushSingleAccount(Long account, Long enuu, String title, String content, String url, String pageTitle){
-		HashMap<String, String> params = new HashMap<String, String>();
-		//params.put("master", master);//账套
-		params.put("userid","100254");//推送目标用户
-		params.put("title", title);//推送标题
-		params.put("content", content);//正文
-		params.put("enUU", enuu.toString());//UU号
-		params.put("masterId", "");//账套ID
-		params.put("url", url);//跳转链接地址
-		params.put("pageTitle", pageTitle);//页面标题
-		params.put("platform", "B2B");//系统名称,ERP或者B2B
-		System.out.println("push:");
-		//Constant.PUSH_WEBSITE;
-		try {
-			Response response = HttpUtil
-					.sendPostRequest(Constant.PUSH_WEBSITE+"/tigase/baiduPush",
-							params, false);
-			System.out.println(response.getResponseText());
-			if (response.getStatusCode() == HttpStatus.OK.value()) {
-				System.out.println(response.getResponseText());
-				Map<String, Object> backInfo = FlexJsonUtils.fromJson(
-						response.getResponseText(), HashMap.class);
-				if(backInfo.size()>0){
-					//System.out.println(backInfo.get("result"));
-				}					 
-			}						
-		} catch (Exception e) {
-			System.out.println(e);
-			e.printStackTrace();
-		}
-	
-	}
-	
-}

+ 98 - 0
src/main/java/com/uas/platform/b2b/support/mq/PushUtils.java

@@ -0,0 +1,98 @@
+package com.uas.platform.b2b.support.mq;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.http.HttpStatus;
+
+import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.dao.UserBaseInfoDao;
+import com.uas.platform.b2b.manage.model.AccountInfo;
+import com.uas.platform.b2b.model.AccessToken;
+import com.uas.platform.b2b.model.UserBaseInfo;
+import com.uas.platform.b2b.service.AccessTokenService;
+import com.uas.platform.b2b.support.HostConstant;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.util.HttpUtil;
+import com.uas.platform.core.util.HttpUtil.Response;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+
+public class PushUtils {
+
+	private static UserBaseInfoDao userRepository;
+	private static AccessTokenService accessTokenService;
+
+	private static UserBaseInfoDao getUserRepository() {
+		if (userRepository == null)
+			userRepository = ContextUtils.getBean(UserBaseInfoDao.class);
+		return userRepository;
+	}
+
+	private static AccessTokenService getAccessTokenService() {
+		if (accessTokenService == null)
+			accessTokenService = ContextUtils.getBean(AccessTokenService.class);
+		return accessTokenService;
+	}
+
+	/**
+	 * 调用接口注册IM
+	 * 
+	 * @param user
+	 * @param enUU
+	 * @return
+	 * @throws Exception
+	 */
+	private static Map<String, Object> sendUserToManage(UserBaseInfo user, long enUU) throws Exception {
+		Map<String, String> params = new HashMap<String, String>();
+		params.put("data", FlexJsonUtils.toJson(new AccountInfo(user, enUU)));
+		Response response = HttpUtil.sendPostRequest(HostConstant.MANAGE_INNER_HOST + "/public/account", params, true);
+		if (response.getStatusCode() == HttpStatus.OK.value()) {
+			List<Map<String, Object>> resultMap = FlexJsonUtils.fromJsonArray(response.getResponseText(), HashMap.class);
+			if (resultMap.size() > 0) {
+				if ("true".equals(String.valueOf(resultMap.get(0).get("ok")))) {
+					return resultMap.get(0);
+				}
+				throw new Exception(String.valueOf(resultMap.get(0).get("error")));
+			}
+		}
+		throw new Exception(response.getResponseText());
+	}
+
+	public static void push(long enUU, long userUU, String title, String content, String url, String pageTitle) {
+		UserBaseInfo user = getUserRepository().findOne(userUU);
+		if (user != null) {
+			// 没有IM账号的,需要先注册
+			if (user.getUserIMId() == null) {
+				try {
+					Map<String, Object> res = sendUserToManage(user, enUU);
+					Object imid = res.get("userImid");
+					if (imid != null)
+						user.setUserIMId(Long.parseLong(imid.toString()));
+					user = getUserRepository().save(user);
+				} catch (Exception e) {
+				}
+			}
+			if (user.getUserIMId() != null) {
+				Map<String, Object> params = new HashMap<String, Object>();
+				params.put("userid", user.getUserIMId());
+				params.put("enUU", enUU);
+				params.put("platform", "B2B");
+				params.put("title", title);
+				params.put("content", content);
+				AccessToken token = getAccessTokenService().createNew(user, enUU, null, 259200);// 有效期:三天
+				// ex: http://www.ubtob.com/openapi/webpage?access_token=282a8ba2fa1f4fdc9e025c1eea2ad7e8&redirect_page=http%3A%2F%2Fwww.ubtob.com%2F%23sale%2Forder%2F123
+				try {
+					params.put("url", String.format("%s/openapi/webpage?access_token=%s&redirect_page=%s", Constant.WEBSITE, token.getId(),
+							URLEncoder.encode(Constant.WEBSITE + "/" + url, "utf-8")));
+					// 调用推送接口
+					Pusher.push(params);
+				} catch (UnsupportedEncodingException e) {
+				}
+			}
+		}
+	}
+
+}

+ 19 - 0
src/main/java/com/uas/platform/b2b/support/mq/Pusher.java

@@ -0,0 +1,19 @@
+package com.uas.platform.b2b.support.mq;
+
+import java.util.Map;
+
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.util.HttpUtil;
+
+public class Pusher {
+
+	private final static String api = Constant.PUSH_WEBSITE + "/tigase/baiduPush";
+
+	public static void push(Map<String, Object> params) {
+		try {
+			HttpUtil.sendPostRequest(api, params);
+		} catch (Exception e) {
+		}
+	}
+
+}

+ 1 - 0
src/main/webapp/WEB-INF/spring/webmvc.xml

@@ -71,6 +71,7 @@
 		<mvc:interceptor>
 			<mvc:mapping path="/openapi/**"></mvc:mapping>
 			<mvc:exclude-mapping path="/openapi/access_token" />
+			<mvc:exclude-mapping path="/openapi/webpage" />
 			<bean class="com.uas.platform.b2b.filter.AccessTokenInterceptor"></bean>
 		</mvc:interceptor>
 	</mvc:interceptors>