Browse Source

Merge branch 'dev' of ssh://10.10.101.21/source/platform-b2b into debug-power

wangmh 8 years ago
parent
commit
e3024e0191
25 changed files with 548 additions and 84 deletions
  1. 0 1
      src/main/java/com/uas/platform/b2b/controller/PublicQueryController.java
  2. 5 4
      src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java
  3. 11 1
      src/main/java/com/uas/platform/b2b/controller/SecurityController.java
  4. 7 4
      src/main/java/com/uas/platform/b2b/dao/PurchaseOrderItemDao.java
  5. 31 16
      src/main/java/com/uas/platform/b2b/erp/service/impl/InquiryServiceImpl.java
  6. 13 10
      src/main/java/com/uas/platform/b2b/erp/service/impl/PublicInquiryServiceImpl.java
  7. 13 4
      src/main/java/com/uas/platform/b2b/erp/service/impl/VendorServiceImpl.java
  8. 1 0
      src/main/java/com/uas/platform/b2b/service/PurchaseOrderService.java
  9. 18 14
      src/main/java/com/uas/platform/b2b/service/impl/AttachServiceImpl.java
  10. 0 1
      src/main/java/com/uas/platform/b2b/service/impl/BrandServiceImpl.java
  11. 12 4
      src/main/java/com/uas/platform/b2b/service/impl/DeputyOrderServiceImpl.java
  12. 3 0
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseAcceptServiceImpl.java
  13. 1 1
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseApBillServiceImpl.java
  14. 16 15
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java
  15. 5 0
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java
  16. 0 1
      src/main/java/com/uas/platform/b2b/service/impl/RoleServiceImpl.java
  17. 0 1
      src/main/java/com/uas/platform/b2b/service/impl/VendorsServiceImpl.java
  18. 360 0
      src/main/java/com/uas/platform/b2b/support/HttpUtils.java
  19. 35 0
      src/main/java/com/uas/platform/b2b/temporary/model/FileUrl.java
  20. 1 1
      src/main/resources/dev/message.properties
  21. 1 1
      src/main/resources/prod/message.properties
  22. 1 0
      src/main/resources/test/account.properties
  23. 1 1
      src/main/resources/test/message.properties
  24. 5 1
      src/main/webapp/WEB-INF/views/normal/proxyLogin.html
  25. 8 3
      src/main/webapp/WEB-INF/views/normal/proxyLogout.html

+ 0 - 1
src/main/java/com/uas/platform/b2b/controller/PublicQueryController.java

@@ -84,7 +84,6 @@ public class PublicQueryController {
 			if (enterprise != null)
 				returnMap.put("uu", new QueriableMember(enterprise));
 		}
-		System.out.println(JSON.toJSON(returnMap));
 		return returnMap;
 	}
 

+ 5 - 4
src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java

@@ -669,10 +669,11 @@ public class SaleOrderController {
 	 */
 	@RequestMapping(value = "/items/reply", method = RequestMethod.POST)
 	public ResponseEntity<String> replyOrderItems(@RequestBody String idString) {
-		List<PurchaseOrderReply> replies = purchaseOrderService.reply(idString.split(","));
-		for (PurchaseOrderReply reply : replies)
-			logger.log("客户采购单", "批量回复客户采购明细", reply.replyDescription(), reply.getOrderItem().getOrder().getCode(),
-					reply.getOrderItem().getId());
+//		List<PurchaseOrderReply> replies = purchaseOrderService.reply(idString.split(","));
+//		for (PurchaseOrderReply reply : replies)
+//			logger.log("客户采购单", "批量回复客户采购明细", reply.replyDescription(), reply.getOrderItem().getOrder().getCode(),
+//					reply.getOrderItem().getId());
+        purchaseOrderService.replyByBatch(idString, SystemSession.getUser().getUserName(), SystemSession.getUser().getIp(), SystemSession.getUser().getEnterprise().getUu(), SystemSession.getUser().getUserUU());
 		return new ResponseEntity<String>(HttpStatus.OK);
 	}
 

+ 11 - 1
src/main/java/com/uas/platform/b2b/controller/SecurityController.java

@@ -146,7 +146,8 @@ public class SecurityController {
 					SystemSession.setUser(user);
 					log(request, user);
 				}
-				return new ModelMap("returnUrl", returnUrl);
+				// returnUrl有时候为null,然后生成URL的时候会出现undefined
+				return new ModelMap("returnUrl", returnUrl==null?"":returnUrl);
 			}
 		}
 		return null;
@@ -167,6 +168,15 @@ public class SecurityController {
 		SSOConfig config = SSOHelper.getSSOService().getConfig();
 		model.addAttribute("askUrl", config.getCrossAskOutUrl());
 		model.addAttribute("returnUrl", String.valueOf(request.getSession().getAttribute(SSOConfig.SSOReferer)));
+		// 登录情况下,登出地址
+		Object logoutUrl = null;
+		boolean cross = SSOHelper.isCrossDomain(request);
+		if (cross) {
+			logoutUrl = SSOHelper.getRedirectRefererLogoutUrl(request);
+		} else {
+			logoutUrl = SSOHelper.getRedirectLogoutUrl(request, String.valueOf(request.getSession().getAttribute("SSOReferer")));
+		}
+		model.addAttribute("logoutUrl", logoutUrl);
 		return model;
 	}
 

+ 7 - 4
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderItemDao.java

@@ -1,17 +1,17 @@
 package com.uas.platform.b2b.dao;
 
-import java.util.Date;
-import java.util.List;
-
+import com.uas.platform.b2b.model.PurchaseOrderItem;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.jpa.repository.query.Procedure;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.uas.platform.b2b.model.PurchaseOrderItem;
+import java.util.Date;
+import java.util.List;
 
 @Repository
 @Transactional
@@ -77,4 +77,7 @@ public interface PurchaseOrderItemDao extends JpaSpecificationExecutor<PurchaseO
 	@Modifying(clearAutomatically = true)
 	@Query("update PurchaseOrderItem p set p.replyQty=(select sum(r.qty) from PurchaseOrderReply r where r.orderItem=p),p.replyDelivery= :delivery,p.replyRemark= :remark where p.id= :id")
 	public void updateByReply(@Param("delivery") Date delivery, @Param("remark") String remark, @Param("id") long id);
+
+    @Procedure(procedureName = "purc$reply_batch")
+    public void replyByBatch(String idString, String username, String userip, Long enuu, Long useruu);
 }

+ 31 - 16
src/main/java/com/uas/platform/b2b/erp/service/impl/InquiryServiceImpl.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.erp.service.impl;
 
 import com.uas.account.util.AccountUtils;
+import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.InquiryDecide;
@@ -8,6 +9,7 @@ import com.uas.platform.b2b.erp.model.InquiryDetail;
 import com.uas.platform.b2b.erp.model.InquiryDetailDet;
 import com.uas.platform.b2b.erp.service.InquiryService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
+import com.uas.platform.b2b.event.PurchaseInquiryItemSaveReleaseEvent;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.temporary.model.PartnershipRecord;
@@ -19,9 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 @Service
 public class InquiryServiceImpl implements InquiryService {
@@ -229,28 +229,43 @@ public class InquiryServiceImpl implements InquiryService {
     @Override
     public void save(List<InquiryDetail> details) {
         if(!CollectionUtils.isEmpty(details)) {
+        	Set<String> codes = new HashSet<>();
+        	List<PurchaseInquiryItem> items = new ArrayList<>();
             for(InquiryDetail detail : details) {
                 //先查询已经上传的询价单主表信息
                 Inquiry inquiry = getInquiry(detail.getIn_code(), detail.getId_id());
                 if(null != inquiry) {
-                    //查询对应平台的物料信息
-                    List<Product> products = productDao.findByEnUUAndCode(SystemSession.getUser().getEnterprise().getUu(), detail.getId_prodcode());
-                    if(products.size() > 0) {
-                        Long prodId = products.get(0).getId();
-                        Long id = commonDao.getJdbcTemplate().queryForLong("select purc$inquiryitems_seq.nextval from dual");
-                        String sql = "insert into purc$inquiryitems(id_id,id_sourceid,id_number,id_inid,id_useruu,id_prid,id_currency,id_taxrate,id_remark,id_venduu,id_venduseruu,id_fromdate,id_todate,id_status,id_sendstatus,id_erpdate,id_date,id_sourceapp) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
-                        commonDao.getJdbcTemplate().update(sql, id,detail.getId_id(), detail.getId_detno(), inquiry.getIn_id(), SystemSession.getUser().getUserUU(), prodId, detail.getId_currency(), detail.getId_rate(), detail.getId_remark(), detail.getVe_uu(), detail.getVe_contactuu(), detail.getId_fromdate(), detail.getId_todate(), Status.NOT_REPLY.value(), Status.NOT_UPLOAD.value(), new Date(), inquiry.getIn_date(), "erp");
-                        //插入分段信息
-                        if(detail.getDets().size() > 0) {
-                            for(InquiryDetailDet det : detail.getDets()) {
-                                sql = "insert into purc$inquiryreply (ir_id,ir_lapqty,ir_idid) VALUES (purc$inquiryreply_seq.nextval, ?, ?)";
-                                commonDao.getJdbcTemplate().update(sql, det.getIdd_lapqty() == null ? 0 :  det.getIdd_lapqty(), id);
+                    List<InquiryDetail> inquiryDetails = commonDao.query("select * from purc$inquiryitems where id_inid = " + inquiry.getIn_id() + " and id_sourceid = " + detail.getId_id(), InquiryDetail.class);
+                    if(inquiryDetails.size() == 0) {
+                        //查询对应平台的物料信息
+                        List<Product> products = productDao.findByEnUUAndCode(SystemSession.getUser().getEnterprise().getUu(), detail.getId_prodcode());
+                        if(products.size() > 0) {
+                            Long prodId = products.get(0).getId();
+                            Long id = commonDao.getJdbcTemplate().queryForLong("select purc$inquiryitems_seq.nextval from dual");
+                            String sql = "insert into purc$inquiryitems(id_id,id_sourceid,id_number,id_inid,id_useruu,id_prid,id_currency,id_taxrate,id_remark,id_venduu,id_venduseruu,id_fromdate,id_todate,id_status,id_sendstatus,id_erpdate,id_date,id_sourceapp) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
+                            commonDao.getJdbcTemplate().update(sql, id,detail.getId_id(), detail.getId_detno(), inquiry.getIn_id(), SystemSession.getUser().getUserUU(), prodId, detail.getId_currency(), detail.getId_rate(), detail.getId_remark(), detail.getVe_uu(), detail.getVe_contactuu(), detail.getId_fromdate(), detail.getId_todate(), Status.NOT_REPLY.value(), Status.NOT_UPLOAD.value(), new Date(), inquiry.getIn_date(), "erp");
+                            //插入分段信息
+                            if(detail.getDets().size() > 0) {
+                                for(InquiryDetailDet det : detail.getDets()) {
+                                    sql = "insert into purc$inquiryreply (ir_id,ir_lapqty,ir_idid) VALUES (purc$inquiryreply_seq.nextval, ?, ?)";
+                                    commonDao.getJdbcTemplate().update(sql, det.getIdd_lapqty() == null ? 0 :  det.getIdd_lapqty(), id);
+                                }
                             }
+                            logger.log("自动询价明细上传", "新增了自动询价的明细(" + id + ")", 1);
                         }
-                        logger.log("自动询价明细上传", "新增了自动询价的明细(" + id + ")", 1);
                     }
+                    // 产生消息
+					PurchaseInquiryItem inquiryItem = purchaseInquiryItemDao.findByVendUUAndSourceId(detail.getVe_uu(), detail.getId_id());
+                    if (null != inquiryItem && null != inquiryItem.getInquiry() && !codes.contains(inquiryItem.getInquiry().getCode() + inquiryItem.getVendUU())) {
+                    	// 可能存在一个单里两个企业都是注册了之后,同时传输明细的情况,所以需要enuu 和code 一起判断
+                    	codes.add(inquiryItem.getInquiry().getCode() + inquiryItem.getVendUU());
+                    	items.add(inquiryItem);
+					}
                 }
             }
+            if (!CollectionUtils.isEmpty(items)) {
+				ContextUtils.publishEvent(new PurchaseInquiryItemSaveReleaseEvent(items));
+			}
         }
     }
 

+ 13 - 10
src/main/java/com/uas/platform/b2b/erp/service/impl/PublicInquiryServiceImpl.java

@@ -61,6 +61,8 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
 
     private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
+    private static final String TEL_REGEXP = "^((\\(\\d{3}\\))|(\\d{3}\\-))?(13|15|18|17)\\d{9}$";
+
     @Override
     public List<PurcInquiry> convertInquiry(List<BatchInquiry> inquiries) {
         Long enuu = SystemSession.getUser().getEnterprise().getUu();
@@ -182,9 +184,9 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                                     " on ur.role_id = sr.role_id where sr.role_desc = '业务员' and us.user_email is not null " +
                                     " and sr.role_enuu = " + inquiryItem.getVendUU();
                             List<String> userEmails = commonDao.query(userEmailSql, String.class);
-                            String userTelSql = "select distinct us.user_email useremail from sec$users us " +
+                            String userTelSql = "select distinct us.user_tel usertel from sec$users us " +
                                     " left join sec$userrole ur on us.user_uu = ur.user_uu left join sec$roles sr " +
-                                    " on ur.role_id = sr.role_id where sr.role_desc = '业务员' and us.user_email is not null " +
+                                    " on ur.role_id = sr.role_id where sr.role_desc = '业务员' and us.user_tel is not null " +
                                     " and sr.role_enuu = " + inquiryItem.getVendUU();
                             List<String> userTels = commonDao.query(userTelSql, String.class);
                             // 发邮件
@@ -205,14 +207,15 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                             }
                             // 发短信
                             for (String userTel : userTels) {
-                                try {
-                                    sms.setReceiver(userTel);
-                                    sms.setTemplateId(messageConf.getMsgInquiryForB2B());
-                                    HttpUtil.sendPost(messageConf.getMessageUrl(), FlexJsonUtils.toJsonDeep(sms));
-
-                                } catch (Exception e) {
-                                    logger.log("公共询价发送短信出错", inquiry.getEnUU() + "," +inquiry.getCode() +" 发送失败", 0);
-                                    e.printStackTrace();
+                                if(userTel.matches(TEL_REGEXP)) {
+                                    try {
+                                        sms.setReceiver(userTel);
+                                        sms.setTemplateId(messageConf.getMsgInquiryForB2B());
+                                        HttpUtil.sendPost(messageConf.getMessageUrl(), FlexJsonUtils.toJsonDeep(sms));
+                                    } catch (Exception e) {
+                                        logger.log("公共询价发送短信出错", inquiry.getEnUU() + "," +inquiry.getCode() +" 发送失败", 0);
+                                        e.printStackTrace();
+                                    }
                                 }
                             }
                             enUUs.add(inquiryItem.getVendUU());

+ 13 - 4
src/main/java/com/uas/platform/b2b/erp/service/impl/VendorServiceImpl.java

@@ -9,12 +9,14 @@ import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.erp.model.ErpInviteRecord;
 import com.uas.platform.b2b.erp.model.InquiryVendorInfo;
 import com.uas.platform.b2b.erp.service.VendorService;
+import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
 import com.uas.platform.b2b.model.InvitationRecord;
 import com.uas.platform.b2b.model.Vendor;
 import com.uas.platform.b2b.support.MessageConf;
 import com.uas.platform.b2b.support.SysConf;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.temporary.model.SmsMessage;
+import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.util.HttpUtil;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
@@ -73,6 +75,8 @@ public class VendorServiceImpl implements VendorService{
      */
     private static final String ENGLISH_REGEXP = "^[A-Za-z]+$";
 
+    private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
+
     @Override
     public void saveInvitation(List<InquiryVendorInfo> infos) {
         if(!CollectionUtils.isEmpty(infos)) {
@@ -82,9 +86,9 @@ public class VendorServiceImpl implements VendorService{
                 InvitationRecord record = invitationRecordDao.findByEnuuAndVendname(SystemSession.getUser().getEnterprise().getUu(), info.getVe_name());
                 if(null == record || Status.NOT_UPLOAD.value() == record.getStatus()) {
                     record = info.covert();
-                    //发送邮件前先进行判断,每天每个供应商只发送一封邮件
-                    List<ErpInviteRecord> inviteRecords = getRecord(record.getVendname());
-                    if(inviteRecords.size() == 0) {
+                    //发送邮件前先进行判断,每天每个供应商只发送一封邮件(判断在erp已经做了,这边暂时不判断)
+                    List<ErpInviteRecord> inviteRecords = getRecord(record.getVendname().trim());
+                    if(CollectionUtils.isEmpty(inviteRecords)) {
                         // 发送邮件或短信成功才进行保存
                         if(record.getVenduseremail() != null && record.getVenduseremail().contains("@") && !record.getVenduseremail().matches(CHINESE_REGEXP)) {
                             Map<String, Object> model = new HashMap<String, Object>();
@@ -102,6 +106,7 @@ public class VendorServiceImpl implements VendorService{
                                 mailService.send(messageConf.getTplInvitationForERP(), record.getVenduseremail(), model);
                                 record.setStatus(Status.DOWNLOADED.value());
                                 tplstatus = true;
+                                logger.log("erp邀请供应商注册", "邮件邀请:" + record.getVenduseremail(), 1);
                             } catch (Exception e) {
                                 record.setStatus(Status.NOT_UPLOAD.value());
                                 e.printStackTrace();
@@ -120,6 +125,7 @@ public class VendorServiceImpl implements VendorService{
                                 HttpUtil.sendPost(messageUrl, FlexJsonUtils.toJsonDeep(sms));
                                 record.setStatus(Status.DOWNLOADED.value());
                                 msgstatus = true;
+                                logger.log("erp邀请供应商注册", "短信邀请:" + record.getVendusertel(), 1);
                             } catch (Exception e) {
                                 e.printStackTrace();
                             }
@@ -156,7 +162,10 @@ public class VendorServiceImpl implements VendorService{
      * @return
      */
     private List<ErpInviteRecord> getRecord(String name) {
-        String sql = "select * from invitation_tplrecord where ve_name = '" + name +"'";
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        // 判断是否是当天的单据
+        String sql = "select * from invitation_tplrecord where ve_name = '" + name + "' and substr(ve_date, 1, 10) = '"
+                + simpleDateFormat.format(new Date()) + "'";
         List<ErpInviteRecord> records = commonDao.query(sql, ErpInviteRecord.class);
         return records;
     }

+ 1 - 0
src/main/java/com/uas/platform/b2b/service/PurchaseOrderService.java

@@ -384,4 +384,5 @@ public interface PurchaseOrderService {
 	 */
 	List<Object[]> getOrderCount(String category);
 
+	public void replyByBatch(String idString, String username, String userip, Long enuu, Long useruu);
 }

+ 18 - 14
src/main/java/com/uas/platform/b2b/service/impl/AttachServiceImpl.java

@@ -1,26 +1,24 @@
 package com.uas.platform.b2b.service.impl;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.io.FilenameUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
+import com.alibaba.fastjson.JSONObject;
 import com.uas.dfs.service.FileClient;
 import com.uas.platform.b2b.core.util.PathUtils;
 import com.uas.platform.b2b.dao.AttachDao;
 import com.uas.platform.b2b.model.Attach;
 import com.uas.platform.b2b.model.FileUpload;
 import com.uas.platform.b2b.service.AttachService;
+import com.uas.platform.b2b.support.HttpUtils;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.temporary.model.FileUrl;
 import com.uas.platform.core.util.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
 
 @Service
 public class AttachServiceImpl implements AttachService {
@@ -57,7 +55,13 @@ public class AttachServiceImpl implements AttachService {
 		if(size >  100 * 1024 * 1024) {// 100Mb
 			// 是否限制文件上传大小
 		}
-		String path = fileClient.upload(uploadItem.getFile().getBytes(), size, FilenameUtils.getExtension(filename), null);
+		String path = null;
+        try {
+            path = HttpUtils.upload(FileUrl.FILE_UPLOAD, uploadItem.getFile(), null);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+//		String path = fileClient.upload(uploadItem.getFile().getBytes(), size, FilenameUtils.getExtension(filename), null);
 		Attach attach = new Attach(filename, path, description, size, new Date());
 		return attach;
 	}

+ 0 - 1
src/main/java/com/uas/platform/b2b/service/impl/BrandServiceImpl.java

@@ -109,7 +109,6 @@ public class BrandServiceImpl implements BrandService {
 	public List<Brand> findByNameEn(String brandNameEn) throws Exception {
 		String url = conf.getB2c() + "/api/product/brand/nameEn/" + URLEncoder.encode(brandNameEn, "UTF-8");
 		HttpUtil.Response res = HttpUtil.sendGetRequest(url, null);
-		System.out.println(JSON.toJSON(res));
 		return JSONObject.parseArray(res.getResponseText(), Brand.class);
 	}
 

+ 12 - 4
src/main/java/com/uas/platform/b2b/service/impl/DeputyOrderServiceImpl.java

@@ -207,7 +207,9 @@ public class DeputyOrderServiceImpl implements DeputyOrderService {
 			order.setDownloadstatus("未下载");
 			order.setSalecode(deorder.getSalecode());
 			order.setSalepocode(deorder.getSalepocode());
-			order.setOrderamount(Double.valueOf(df.format(deorder.getOrderamount())));
+			if(null != deorder.getOrderamount()) {//存在金额为空值的情况
+                order.setOrderamount(Double.valueOf(df.format(deorder.getOrderamount())));
+            }
 			order.setPaymethod(deorder.getPaymethod());
 			order.setDeputyname(deorder.getDeputyname());
 			if (deorder.getStatus().equals("在录入")) {
@@ -218,9 +220,15 @@ public class DeputyOrderServiceImpl implements DeputyOrderService {
 			order.setTervendaddress(deorder.getTervendaddress());
 			order.setTervendor(deorder.getTervendor());
 			order.setTervenduu(deorder.getTervenduu());
-			order.setTotalamount(Double.valueOf(df.format(deorder.getTotalamount())));
-			order.setTotalpayament(Double.valueOf(df.format(deorder.getTotalpayament())));
-			order.setUsdpayment(Double.valueOf(df.format(deorder.getUsdpayment())));
+			if(null != deorder.getTotalamount()) {
+                order.setTotalamount(Double.valueOf(df.format(deorder.getTotalamount())));
+            }
+            if(null != deorder.getTotalpayament()) {
+                order.setTotalpayament(Double.valueOf(df.format(deorder.getTotalpayament())));
+            }
+            if(null != deorder.getUsdpayment()) {
+                order.setUsdpayment(Double.valueOf(df.format(deorder.getUsdpayment())));
+            }
 			order.setUsertel(deorder.getUsertel());
 			order.setVendtel(deorder.getVendtel());
 			order.setVenduser(deorder.getVenduser());

+ 3 - 0
src/main/java/com/uas/platform/b2b/service/impl/PurchaseAcceptServiceImpl.java

@@ -63,6 +63,9 @@ public class PurchaseAcceptServiceImpl implements PurchaseAcceptService {
 					PurchaseOrderItem orderItem = orderItems.get(0);
 					orderItem.setAcceptQty((orderItem.getAcceptQty() == null ? 0 : orderItems.get(0).getAcceptQty())
 							+ acceptItem.getQty());
+					if(orderItem.getAcceptQty() == orderItem.getQty()) { //全部验收则将单据转成已回复
+					    orderItem.setStatus((short) Status.REPLIED.value());
+                    }
 					purchaseOrderItemDao.save(orderItem);
 				}
 			}

+ 1 - 1
src/main/java/com/uas/platform/b2b/service/impl/PurchaseApBillServiceImpl.java

@@ -171,7 +171,7 @@ public class PurchaseApBillServiceImpl implements PurchaseApBillService {
 	public void refreshPrice(List<ProdInOutRefreshPrice> prodInOuts) {
 		if(!CollectionUtils.isEmpty(prodInOuts)) {
 			for(ProdInOutRefreshPrice prod : prodInOuts) {
-				String sql = " merge into purc$apbillitem i using purc$apbill a on (i.papi_papid = a.pab_id and i.papi_pdinoutno = '" + prod.getPbu_inoutno() + "' and a.pad_venduu= " +SystemSession.getUser().getEnterprise().getUu() + ")" +
+				String sql = " merge into purc$apbillitem i using purc$apbill a on (i.papi_papid = a.pab_id and i.papi_pdinoutno = '" + prod.getPbu_inoutno() + "' and a.pad_enuu = " +SystemSession.getUser().getEnterprise().getUu() + ")" +
 						" when matched then update set i.papi_price = " + prod.getPbu_orderprice();
 				commonDao.getJdbcTemplate().update(sql);
 			}

+ 16 - 15
src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java

@@ -116,12 +116,13 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 
 	private final static UsageBufferedLogger usageLogger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
 
+    static final String TEL_REGEXP = "^((\\(\\d{3}\\))|(\\d{3}\\-))?(13|15|18|17)\\d{9}$";
+
 	@Override
 	public void save(List<PurchaseInquiryItem> inquiryItems) {
-		inquiryItems = purchaseInquiryItemDao.save(inquiryItems);
-		saveUserOrders(inquiryItems);
+        inquiryItems = purchaseInquiryItemDao.save(inquiryItems);
+        saveUserOrders(inquiryItems);
 		sendRemind(PurchaseInquiryItem.distinct(inquiryItems));
-//		ContextUtils.publishEvent(new PurchaseInquiryItemSaveEvent(inquiryItems));  // 之前的索引分词,已弃用
 		// 产生消息
 		List<PurchaseInquiry> inquiries = PurchaseInquiryItem.distinct(inquiryItems);
 		List<PurchaseInquiryItem> items = new ArrayList<>();
@@ -245,14 +246,13 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 									" on ur.role_id = sr.role_id where sr.role_desc = '业务员' and us.user_email is not null " +
 									" and sr.role_enuu = " + inquiryItem.getVendUU();
 							List<String> userEmails = commonDao.query(userEmailSql, String.class);
-							String userTelSql = "select distinct us.user_email useremail from sec$users us " +
+							String userTelSql = "select distinct us.user_tel usertel from sec$users us " +
 									" left join sec$userrole ur on us.user_uu = ur.user_uu left join sec$roles sr " +
-									" on ur.role_id = sr.role_id where sr.role_desc = '业务员' and us.user_email is not null " +
+									" on ur.role_id = sr.role_id where sr.role_desc = '业务员' and us.user_tel is not null " +
 									" and sr.role_enuu = " + inquiryItem.getVendUU();
 							List<String> userTels = commonDao.query(userTelSql, String.class);
 							// 发邮件
 							Map<String, Object> model = new HashMap<String, Object>();
-							System.out.println(JSON.toJSON(inquiryItem));
 							Enterprise vendor = enterpriseDao.findOne(inquiryItem.getVendUU());
 							if (null != vendor) {
 								model.put("vendorname", vendor.getEnName());
@@ -262,7 +262,7 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 							model.put("custname", inquiry.getEnterprise().getEnName());
 							model.put("date", DateFormatUtils.DATE_FORMAT.format(new Date()));
 							for (String userEmail : userEmails) {
-								String emailRegex = "[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?";
+								String emailRegex = "\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}";
 								if (Pattern.matches(emailRegex, userEmail)) {
 									try {
 										mailService.send(messageConf.getTplInquiryForB2B(), userEmail, model);
@@ -273,14 +273,15 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 							}
 							// 发短信
 							for (String userTel : userTels) {
-								try {
-									sms.setReceiver(userTel);
-									sms.setTemplateId(messageConf.getMsgInquiryForB2B());
-									HttpUtil.sendPost(messageConf.getMessageUrl(), FlexJsonUtils.toJsonDeep(sms));
-
-								} catch (Exception e) {
-									usageLogger.log("询价发送短信", "企业UU:" + inquiry.getEnUU() + ",单号:" +inquiry.getCode() +"短信发送失败", "询价发送短信出错");
-								}
+								if(userTel.matches(TEL_REGEXP)) {//手机号判断
+                                    try {
+                                        sms.setReceiver(userTel);
+                                        sms.setTemplateId(messageConf.getMsgInquiryForB2B());
+                                        HttpUtil.sendPost(messageConf.getMessageUrl(), FlexJsonUtils.toJsonDeep(sms));
+                                    } catch (Exception e) {
+                                        usageLogger.log("询价发送短信", "企业UU:" + inquiry.getEnUU() + ",单号:" +inquiry.getCode() +"短信发送失败", "询价发送短信出错");
+                                    }
+                                }
 							}
 							enUUs.add(inquiryItem.getVendUU());
 						}

+ 5 - 0
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -1224,4 +1224,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
         return purchaseOrderDao.getUnreadCountEveryStatus(ids);
 	}
 
+    @Override
+    public void replyByBatch(String idString, String username, String userip, Long enuu, Long useruu) {
+        purchaseOrderItemDao.replyByBatch(idString, username, userip, enuu, useruu);
+    }
+
 }

+ 0 - 1
src/main/java/com/uas/platform/b2b/service/impl/RoleServiceImpl.java

@@ -115,7 +115,6 @@ public class RoleServiceImpl implements RoleService {
     @Override
     public ModelMap updateDefault(String desc, Set<ResourceItem> resourceItems) {
 		List<Role> roles = roleDao.findByEnUUAndDesc(null, desc);
-		System.out.println(roles);
 		if (roles == null || roles.size() == 0) {
 			throw new RuntimeException("没有找到默认角色");
 		} else if (roles.size() > 1) {

+ 0 - 1
src/main/java/com/uas/platform/b2b/service/impl/VendorsServiceImpl.java

@@ -291,7 +291,6 @@ public class VendorsServiceImpl implements VendorService {
 		for (Vendor vendor : vendors) {
 			i++;
 			addPartnerShipRecord(vendor);
-			System.out.println("共有" + vendors.size() + "个供应商,当前同步到:" + i);
 		}
 	}
 

+ 360 - 0
src/main/java/com/uas/platform/b2b/support/HttpUtils.java

@@ -0,0 +1,360 @@
+package com.uas.platform.b2b.support;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.http.Consts;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.entity.mime.MultipartEntityBuilder;
+import org.apache.http.entity.mime.content.FileBody;
+import org.apache.http.entity.mime.content.InputStreamBody;
+import org.apache.http.entity.mime.content.StringBody;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.util.*;
+import java.util.Map.Entry;
+
+public class HttpUtils {
+
+	/**
+	 * 发起POST、PUT请求
+	 * 
+	 * @param params
+	 * @return
+	 * @throws Exception
+	 */
+	public static Response get(String url, Map<String, Object> params) throws Exception {
+		CloseableHttpClient httpClient = HttpClients.createDefault();
+		HttpEntityEnclosingRequestBase request = null;
+		CloseableHttpResponse response = null;
+		try {
+			StringBuilder buf = new StringBuilder(url);
+			if (params != null && !params.isEmpty()) {
+				if (url.indexOf("?") == -1)
+					buf.append("?");
+				else if (!url.endsWith("&"))
+					buf.append("&");
+				Set<Entry<String, Object>> entrys = params.entrySet();
+				for (Entry<String, Object> entry : entrys) {
+					buf.append(entry.getKey()).append("=").append(URLEncoder.encode(String.valueOf(entry.getValue()), "UTF-8")).append("&");
+				}
+			}
+			request = new HttpPost(buf.toString());
+			response = httpClient.execute(request);
+			return Response.getResponse(response);
+		} finally {
+			request.releaseConnection();
+			try {
+				httpClient.close();
+			} catch (IOException e) {
+			}
+			if (response != null) {
+				try {
+					response.close();
+				} catch (IOException e) {
+				}
+			}
+		}
+	}
+
+	/**
+	 * 发起POST、PUT请求
+	 *
+	 * @param datas
+	 * @return
+	 * @throws Exception
+	 */
+	public static Response post(String url, Collection<?> datas) throws Exception {
+		CloseableHttpClient httpClient = HttpClients.createDefault();
+		HttpEntityEnclosingRequestBase request = new HttpPost(url);
+		CloseableHttpResponse response = null;
+		try {
+			if (datas != null && !datas.isEmpty()) {
+				request.setEntity(new StringEntity(FlexJsonUtils.toJson(datas), ContentType.create("text/plain", Consts.UTF_8)));
+			}
+			response = httpClient.execute(request);
+			return Response.getResponse(response);
+		} finally {
+			request.releaseConnection();
+			try {
+				httpClient.close();
+			} catch (IOException e) {
+			}
+			if (response != null) {
+				try {
+					response.close();
+				} catch (IOException e) {
+				}
+			}
+		}
+	}
+
+	/**
+	 * 发起POST、PUT请求
+	 *
+	 * @param params
+	 * @return
+	 * @throws Exception
+	 */
+	public static Response post(String url, Map<String, String> params) throws Exception {
+		CloseableHttpClient httpClient = HttpClients.createDefault();
+		HttpEntityEnclosingRequestBase request = new HttpPost(url);
+		CloseableHttpResponse response = null;
+		try {
+			List<NameValuePair> nvps = new ArrayList<NameValuePair>();
+			if (params != null && !params.isEmpty()) {
+				Set<Entry<String, String>> entrys = params.entrySet();
+				for (Entry<String, String> entry : entrys) {
+					nvps.add(new BasicNameValuePair(entry.getKey(), URLEncoder.encode(entry.getValue(), "UTF-8")));
+				}
+			}
+			request.setEntity(new UrlEncodedFormEntity(nvps));
+			response = httpClient.execute(request);
+			return Response.getResponse(response);
+		} finally {
+			request.releaseConnection();
+			try {
+				httpClient.close();
+			} catch (IOException e) {
+			}
+			if (response != null) {
+				try {
+					response.close();
+				} catch (IOException e) {
+				}
+			}
+		}
+	}
+
+	/**
+	 * http上传文件
+	 * 
+	 * @param url
+	 *            请求地址
+	 * @param filePath
+	 *            附件路径
+	 * @param params
+	 *            参数
+	 * @return
+	 * @throws Exception
+	 * @throws IOException
+	 * @throws IllegalStateException
+	 */
+	public static Response upload(String url, String filePath, Map<String, String> params) throws IllegalStateException, IOException,
+			Exception {
+		CloseableHttpClient httpClient = null;
+		CloseableHttpResponse response = null;
+		try {
+			httpClient = HttpClients.createDefault();
+			HttpPost httpPost = new HttpPost(url);
+			FileBody fileBody = new FileBody(new File(filePath));
+			MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+			builder.addPart("file", fileBody);
+			if (params != null) {
+				for (String paramKey : params.keySet()) {
+					StringBody body = new StringBody(params.get(paramKey), ContentType.create("text/plain", Consts.UTF_8));
+					builder.addPart(paramKey, body);
+				}
+			}
+			HttpEntity reqEntity = builder.build();
+			httpPost.setEntity(reqEntity);
+			response = httpClient.execute(httpPost);
+			return Response.getResponse(response);
+		} finally {
+			try {
+				if (response != null) {
+					response.close();
+				}
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+			try {
+				if (httpClient != null) {
+					httpClient.close();
+				}
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+
+	/**
+	 * http上传文件
+	 *
+	 * @param url
+	 *            请求地址
+	 * @param multipartFile
+	 *            附件路径
+	 * @param params
+	 *            参数
+	 * @return
+	 * @throws Exception
+	 * @throws IOException
+	 * @throws IllegalStateException
+	 */
+	public static Response upload(String url, MultipartFile multipartFile, Map<String, String> params) throws IllegalStateException, IOException,
+			Exception {
+		CloseableHttpClient httpClient = null;
+		CloseableHttpResponse response = null;
+		try {
+			httpClient = HttpClients.createDefault();
+			HttpPost httpPost = new HttpPost(url);
+			InputStreamBody streamBody = new InputStreamBody(multipartFile.getInputStream(),
+				multipartFile.getOriginalFilename());
+			MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+			builder.addPart("file", streamBody);
+			if (params != null) {
+				for (String paramKey : params.keySet()) {
+					StringBody body = new StringBody(params.get(paramKey), ContentType.create("text/plain", Consts.UTF_8));
+					builder.addPart(paramKey, body);
+				}
+			}
+			HttpEntity reqEntity = builder.build();
+			httpPost.setEntity(reqEntity);
+			response = httpClient.execute(httpPost);
+			return Response.getResponse(response);
+		} finally {
+			try {
+				if (response != null) {
+					response.close();
+				}
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+			try {
+				if (httpClient != null) {
+					httpClient.close();
+				}
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+
+    /**
+     * http上传文件
+     *
+     * @param url
+     *            请求地址
+     * @param multipartFile
+     *            附件路径
+     * @param params
+     *            参数
+     * @return
+     * @throws Exception
+     * @throws IOException
+     * @throws IllegalStateException
+     */
+    public static String upload(String url, CommonsMultipartFile commonsMultipartFile, Map<String, String> params) throws IllegalStateException, IOException,
+            Exception {
+        String path = null;
+        CloseableHttpClient httpClient = null;
+        CloseableHttpResponse response = null;
+        try {
+            httpClient = HttpClients.createDefault();
+            HttpPost httpPost = new HttpPost(url);
+            InputStreamBody streamBody = new InputStreamBody(commonsMultipartFile.getInputStream(),
+                    commonsMultipartFile.getOriginalFilename());
+            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+            builder.addPart("file", streamBody);
+            if (params != null) {
+                for (String paramKey : params.keySet()) {
+                    StringBody body = new StringBody(params.get(paramKey), ContentType.create("text/plain", Consts.UTF_8));
+                    builder.addPart(paramKey, body);
+                }
+            }
+            HttpEntity reqEntity = builder.build();
+            httpPost.setEntity(reqEntity);
+            response = httpClient.execute(httpPost);
+            Response res = Response.getResponse(response);
+            if(res.getStatusCode() == 200) {
+                JSONObject obj = JSONObject.parseObject(res.getResponseText());
+                path = (String) obj.get("path");
+            }
+            return path;
+        } finally {
+            try {
+                if (response != null) {
+                    response.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            try {
+                if (httpClient != null) {
+                    httpClient.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+	/**
+	 * 下载
+	 * 
+	 * @param url
+	 * @return
+	 * @throws ClientProtocolException
+	 * @throws IOException
+	 */
+	public static InputStream download(String url) throws ClientProtocolException, IOException {
+		CloseableHttpClient httpClient = HttpClients.createDefault();
+		HttpGet httpGet = new HttpGet(url);
+		CloseableHttpResponse response = httpClient.execute(httpGet);
+		return response.getEntity().getContent();
+	}
+
+	public static class Response {
+		private int statusCode;
+		private String responseText;
+
+		public int getStatusCode() {
+			return statusCode;
+		}
+
+		public void setStatusCode(int statusCode) {
+			this.statusCode = statusCode;
+		}
+
+		public String getResponseText() {
+			return responseText;
+		}
+
+		public void setResponseText(String responseText) {
+			this.responseText = responseText;
+		}
+
+		public Response() {
+		}
+
+		public Response(HttpResponse response) throws IllegalStateException, IOException, Exception {
+			this.statusCode = response.getStatusLine().getStatusCode();
+			this.responseText = IOUtils.toString(response.getEntity().getContent());
+		}
+
+		public static Response getResponse(HttpResponse response) throws IllegalStateException, IOException, Exception {
+			if (response != null)
+				return new Response(response);
+			return null;
+		}
+	}
+}

+ 35 - 0
src/main/java/com/uas/platform/b2b/temporary/model/FileUrl.java

@@ -0,0 +1,35 @@
+package com.uas.platform.b2b.temporary.model;
+
+/**
+ * 文件服务器的基本链接
+ *
+ * @author yuj 2017-10-12 14:53
+ */
+public class FileUrl {
+
+    /**
+     * 文件上传
+     */
+    public final static String FILE_UPLOAD = "http://10.10.100.200:9999/file/upload";
+
+
+    /**
+     * 文件下载
+     */
+    public final static String FILE_DOWNLOAD = "http://10.10.100.200:9999/file/download";
+
+    /**
+     * 文件删除
+     */
+    public final static String FILE_DELETE = "http://10.10.100.200:9999/file/delete";
+
+    /**
+     * 文件信息
+     */
+    public final static String FILE_INFO = "http://10.10.100.200:9999/file/info";
+
+    /**
+     * 文件额外属性
+     */
+    public final static String FILE_METADATA = "http://10.10.100.200:9999/file/metadata";
+}

+ 1 - 1
src/main/resources/dev/message.properties

@@ -7,5 +7,5 @@ msgInvitationForERP=5081e29f-47af-4556-a560-9213af11753f
 
 ## messageConfig
 tplInquiryForB2B=bc60d592-9651-4ca1-9305-0852fc7c4101
-msgInquiryForB2B=72cc98e4-0c2b-4d16-944b-2e0515048b8d
+msgInquiryForB2B=629edeb3-a87e-4a40-a5e5-51d9ae734f1b
 messageUrl=http://message.ubtob.com/sms/send

+ 1 - 1
src/main/resources/prod/message.properties

@@ -7,5 +7,5 @@ msgInvitationForERP=5081e29f-47af-4556-a560-9213af11753f
 
 ## messageConfig
 tplInquiryForB2B=bc60d592-9651-4ca1-9305-0852fc7c4101
-msgInquiryForB2B=72cc98e4-0c2b-4d16-944b-2e0515048b8d
+msgInquiryForB2B=629edeb3-a87e-4a40-a5e5-51d9ae734f1b
 messageUrl=http://message.ubtob.com/sms/send

+ 1 - 0
src/main/resources/test/account.properties

@@ -10,6 +10,7 @@ sso.app=b2b
 sso.secretkey=0taQcW073Z7G628g5H
 sso.cookie.secure=false
 sso.login.url=http://113.105.74.135:8001/sso/login
+sso.logout.url=http://113.105.74.135:8001/sso/logout
 
 #cross domain
 sso.ask.url=http://113.105.74.135:8001/sso/login/ask

+ 1 - 1
src/main/resources/test/message.properties

@@ -7,5 +7,5 @@ msgInvitationForERP=5081e29f-47af-4556-a560-9213af11753f
 
 ## messageConfig
 tplInquiryForB2B=bc60d592-9651-4ca1-9305-0852fc7c4101
-msgInquiryForB2B=72cc98e4-0c2b-4d16-944b-2e0515048b8d
+msgInquiryForB2B=629edeb3-a87e-4a40-a5e5-51d9ae734f1b
 messageUrl=http://message.ubtob.com/sms/send

+ 5 - 1
src/main/webapp/WEB-INF/views/normal/proxyLogin.html

@@ -25,7 +25,11 @@
 						
 						console.log(e);
 						// 已登录
-						window.location.href = e.returnUrl;
+						if (e.returnUrl.indexOf('/index')) {
+							window.location.href = e.returnUrl.replace("/index", "/");
+						} else {
+							window.location.href = e.returnUrl;
+						}
 					}, "json");
 				}
 			});

+ 8 - 3
src/main/webapp/WEB-INF/views/normal/proxyLogout.html

@@ -11,13 +11,18 @@
 </head>
 <body>
 <script type="text/javascript">
-	function proxyLogout(askUrl, retUrl) {
+	function proxyLogout(askUrl, logoutUrl, retUrl) {
 	    $.getJSON(askUrl + "?callback=?", function(d){
-	    	window.location.href = retUrl;
+			if (d.error) {
+				// 跳转登出页面
+				window.location.href = logoutUrl;
+			} else {
+				window.location.href = retUrl;
+			}
 	    });
 	}
 	$.getJSON('logout/crossBefore', function(data){
-		proxyLogout(data.askUrl, data.returnUrl);
+		proxyLogout(data.askUrl, data.logoutUrl, data.returnUrl);
 	});
 </script>
 <div align="center" style="margin-top: 180px;">