Просмотр исходного кода

Merge branch 'feature' of https://gitlab.com/Arisono/SkWeiChat-Baidu into feature_bitliker

# Conflicts:
#	WeiChat/version.properties
#	app_core/common/src/main/java/com/core/app/MyApplication.java
Bitliker 8 лет назад
Родитель
Сommit
8653cc1e90

+ 4 - 4
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Tue Mar 13 16:18:57 CST 2018
-debugName=308
+#Tue Mar 13 17:23:11 CST 2018
+debugName=282
 versionName=622
-debugCode=308
-versionCode=162
+debugCode=282
+versionCode=161

+ 3 - 0
app_core/common/src/main/java/com/core/app/Constants.java

@@ -29,6 +29,7 @@ public class Constants {
     }
 
     public static final String WXPAY_APPID = "wxd1deafafe3fd9a21";
+    public static final String WEIXIN_SECRET = "7475f0b85c140c68e7568c904fb68421";
 
     public static String charitBaseUrl() {
         return "http://lj.ubtob.com/app/";
@@ -513,6 +514,8 @@ public class Constants {
         String STATE_PUBLIC_INQUIRY_DONE = "public_done";
         String STATE_PUBLIC_INQUIRY_TODO = "public_todo";
 
+        String GET_LOCAL_ENUU = "get_local_enuu";
+
         int RESULT_PURCHASE_ORDER = 111;
         int RESULT_CUSTOMER_INQUIRY = 112;
         int RESULT_PUBLIC_INQUIRY = 113;

+ 2 - 2
app_core/common/src/main/java/com/core/app/MyApplication.java

@@ -252,8 +252,8 @@ public class MyApplication extends BaseApplication {
     }
 
     public void initShareAPI() {
-        //wxd1deafafe3fd9a21
-        PlatformConfig.setWeixin("wx2539cc96bf158e00", "b057aa3e807ba7c505a2f03cc541bbf6");
+//        PlatformConfig.setWeixin("wx2539cc96bf158e00", "b057aa3e807ba7c505a2f03cc541bbf6");
+        PlatformConfig.setWeixin(Constants.WXPAY_APPID, Constants.WEIXIN_SECRET);
         PlatformConfig.setSinaWeibo("493318722", "7def652c3683603b08bab87d34b1f944");
         PlatformConfig.setQQZone("1104894295", "Nk8zMIz5YSqwRQ1F");
         Config.IsToastTip = false;

+ 17 - 3
app_core/common/src/main/java/com/core/net/http/ViewUtil.java

@@ -34,6 +34,7 @@ import com.core.net.utils.NetUtils;
 import com.core.utils.CommonUtil;
 import com.core.utils.DialogUtils;
 import com.core.utils.FlexJsonUtil;
+import com.core.utils.ToastUtil;
 import com.core.widget.crouton.Crouton;
 import com.core.widget.crouton.Style;
 
@@ -360,6 +361,7 @@ public class ViewUtil {
                     break;
                 case Constants.SUCCESS_ERP:
                     String result = msg.getData().getString("result");
+                    Log.d("erp_success", result);
                     //B2B商务以及邀请注册等功能需要用到B2B的个人uu号
                     CommonUtil.setSharedPreferences(ct, "b2b_uu", b2b_uu);
                     CommonUtil.setSharedPreferences(ct, Constants.CACHE.EN_BUSINESS_CODE, mBusinessCode);
@@ -432,13 +434,17 @@ public class ViewUtil {
         } catch (Exception e) {
             e.printStackTrace();
         }
-        //必须补位空,才能不覆盖原有的根路径
+        //必须不为空,才能不覆盖原有的根路径
         if (!StringUtil.isEmpty(erp_baseurl)) {
 
             CommonUtil.setSharedPreferences(ct, "erp_master", erp_master);
             CommonUtil.setSharedPreferences(ct, "erp_commpany", erp_company);
-            CommonUtil.setSharedPreferences(ct, "erp_uu", String.valueOf(dataMap.get("uu")));
-            LogUtil.d("ERPLOGIN", "erp_uu1:" + String.valueOf(dataMap.get("uu")));
+            String enuu = String.valueOf(dataMap.get("uu"));
+            if ("null".equals(enuu) || "(null)".equals(enuu)) {
+                enuu = "";
+            }
+            CommonUtil.setSharedPreferences(ct, "erp_uu", enuu);
+            LogUtil.d("ERPLOGIN", "erp_uu1:" + enuu);
             LogUtil.d("ERPLOGIN", "erp_uu2:" + CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_uu"));
             CommonUtil.setSharedPreferences(ct, "erp_masterId", erp_masterId);
             CommonUtil.setSharedPreferences(ct, "erp_login", true);
@@ -643,6 +649,8 @@ public class ViewUtil {
 //                            model.setPlatform("个人");
 //                            model.setName(model.getUserName() + "(个人用户)");
 //                            loginEntities.add(model);
+                            CommonUtil.setSharedPreferences(ct, "b2b_uu", b2b_uu);
+                            CommonUtil.clearSharedPreferences(ct, Constants.CACHE.EN_BUSINESS_CODE);
                             CommonUtil.setSharedPreferences(MyApplication.getInstance(), "userRole", "1");
                             ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
                         } else {
@@ -676,6 +684,10 @@ public class ViewUtil {
                                     @Override
                                     public boolean onSelection(MaterialDialog dialog,
                                                                View view, int which, CharSequence text) {
+                                        if (!CommonUtil.isNetWorkConnected(ct)) {
+                                            ToastUtil.showToast(ct, R.string.networks_out);
+                                            return true;
+                                        }
                                         if (!StringUtil.isEmpty(text.toString())) {
                                             LoginEntity entity = erpEntities.get(which);
                                             erp_phone = phone;
@@ -1078,5 +1090,7 @@ public class ViewUtil {
         CommonUtil.clearSharedPreferences(ct, "userRole");
         CommonUtil.clearSharedPreferences(ct, Constants.B2B_SESSION_CACHE);
         CommonUtil.clearSharedPreferences(ct, Constants.B2B_UID_CACHE);
+        CommonUtil.clearSharedPreferences(ct, Constants.CACHE.EN_BUSINESS_CODE);
+        CommonUtil.clearSharedPreferences(ct, Constants.CACHE.B2B_BUSINESS_ENUU);
     }
 }

+ 1 - 1
app_core/common/src/main/java/com/core/service/InitializeService.java

@@ -109,7 +109,7 @@ public class InitializeService extends IntentService {
     }
 
     public void initShareAPI() {
-        PlatformConfig.setWeixin("wx2539cc96bf158e00", "b057aa3e807ba7c505a2f03cc541bbf6");
+        PlatformConfig.setWeixin(Constants.WXPAY_APPID, Constants.WEIXIN_SECRET);
         PlatformConfig.setSinaWeibo("493318722", "7def652c3683603b08bab87d34b1f944");
         PlatformConfig.setQQZone("1104894295", "Nk8zMIz5YSqwRQ1F");
         Config.IsToastTip = false;

+ 431 - 433
app_core/common/src/main/java/com/core/xmpp/XMucChatManager.java

@@ -46,441 +46,439 @@ import java.util.Map;
 import java.util.UUID;
 
 public class XMucChatManager {
-	private CoreService mService;
-	private XMPPConnection mConnection;
-	private String mLoginUserId;// 当前登录用户的昵称
-	private String mLoginNickName;// 当前登录用户的昵称
-	private Map<String, MultiUserChat> mMucChatMap;// 存储所有已经加入的聊天室
-	private long mJoinTimeOut;
+    private CoreService mService;
+    private XMPPConnection mConnection;
+    private String mLoginUserId;// 当前登录用户的昵称
+    private String mLoginNickName;// 当前登录用户的昵称
+    private Map<String, MultiUserChat> mMucChatMap;// 存储所有已经加入的聊天室
+    private long mJoinTimeOut;
     private Context context;
-	public XMucChatManager(CoreService service, XMPPConnection connection) {
-		Log.d("roamer","XMucChatManager");
-		mService = service;
-		mConnection = connection;
-		mJoinTimeOut = mConnection.getPacketReplyTimeout();
-		mLoginUserId = StringUtils.parseName(mConnection.getUser());
-		mLoginNickName = MyApplication.getInstance().mLoginUser.getNickName();
-		mMucChatMap = new HashMap<String, MultiUserChat>();
-
-		mConnection.addPacketListener(packetListener, packetFilter);
-		joinExistRoom();
-		MultiUserChat.addInvitationListener(mConnection, new InvitationListener() {
-			@Override
-			public void invitationReceived(XMPPConnection arg0, String arg1, String arg2, String arg3, String arg4, Message arg5) {
-				// 受到聊天室的邀请,就将聊天室加入为好友
-				Log.d("roamer", "受到聊天室的邀请,就将聊天室加入为好友");
-				String roomJIDPrefix = XmppStringUtil.getRoomJIDPrefix(arg1);
-				Friend friend = FriendDao.getInstance().getFriend(mLoginUserId, roomJIDPrefix);
-				MucRoomSimple mucRoomSimple = JSON.parseObject(arg3, MucRoomSimple.class);
-				if (mucRoomSimple == null) {
-					return;
-				}
-				/* 将房间作为一个好友存到好友表 */
-				if (friend == null) {// 将该房间存到好友表中
-					friend = new Friend();// 将房间也存为好友
-					friend.setOwnerId(mLoginUserId);
-					friend.setUserId(roomJIDPrefix);
-					friend.setNickName(mucRoomSimple.getName());
-					friend.setDescription(mucRoomSimple.getDesc());
-					friend.setRoomFlag(1);
-					friend.setStatus(Friend.STATUS_FRIEND);
-					friend.setRoomId(mucRoomSimple.getId());
-					friend.setRoomCreateUserId(mucRoomSimple.getUserId());
-					// timeSend作为取群聊离线消息的标志,所以要在这里设置一个初始值
-					friend.setTimeSend(mucRoomSimple.getTimeSend());
-					FriendDao.getInstance().createOrUpdateFriend(friend);
-					// 更新名片盒(可能需要更新)
-					CardcastUiUpdateUtil.broadcastUpdateUi(mService);
-				}
-				long lastTime = MyApplication.getInstance().mLoginUser.getOfflineTime();
-				Log.d("wang", "lastTime:" + lastTime);
-				if (friend.getTimeSend() > lastTime) {
-					lastTime = friend.getTimeSend();
-				}
-				int lastSeconds = (int) (CalendarUtil.getSecondMillion() - lastTime);
-				joinMucChat(roomJIDPrefix, mLoginNickName, lastSeconds);
-			}
-		});
-	}
-
-	public void reset() {
-		String userId = StringUtils.parseName(mConnection.getUser());
-		mMucChatMap.clear();
-		if (!mLoginUserId.equals(userId)) {
-			mLoginUserId = userId;
-			mLoginNickName = MyApplication.getInstance().mLoginUser.getNickName();
-		}
-		joinExistRoom();
-	}
-
-	public static String getMucChatServiceName(XMPPConnection connection) {
-		return "@muc." + connection.getServiceName();
-	}
-
-	/**
-	 * 
-	 * @param myNickName
-	 * @param roomName
-	 * @param roomSubject
-	 *            (no use)
-	 * @param roomDesc
-	 *            (no use)
-	 * @return 返回房间的Id
-	 */
-	public String createMucRoom(String myNickName, String roomName, String roomSubject, String roomDesc) {
-		try {
-			String roomId = UUID.randomUUID().toString().replaceAll("-", "");
-
-			String roomJid = roomId + getMucChatServiceName(mConnection);
-			// 创建聊天室
-			MultiUserChat muc = new MultiUserChat(mConnection, roomJid);
-			muc.create(myNickName);
-
-			// 获得聊天室的配置表单
-			Form form = muc.getConfigurationForm();
-			// 根据原始表单创建一个要提交的新表单。
-			Form submitForm = form.createAnswerForm();
-			// 向要提交的表单添加默认答复
-
-			List<FormField> fields = form.getFields();
-			for (int i = 0; i < fields.size(); i++) {
-				FormField field = (FormField) fields.get(i);
-				if (!FormField.TYPE_HIDDEN.equals(field.getType()) && field.getVariable() != null) {
-					// 设置默认值作为答复
+
+    public XMucChatManager(CoreService service, XMPPConnection connection) {
+        Log.d("roamer", "XMucChatManager");
+        mService = service;
+        mConnection = connection;
+        mJoinTimeOut = mConnection.getPacketReplyTimeout();
+        mLoginUserId = StringUtils.parseName(mConnection.getUser());
+        mLoginNickName = MyApplication.getInstance().mLoginUser.getNickName();
+        mMucChatMap = new HashMap<String, MultiUserChat>();
+
+        mConnection.addPacketListener(packetListener, packetFilter);
+        joinExistRoom();
+        MultiUserChat.addInvitationListener(mConnection, new InvitationListener() {
+            @Override
+            public void invitationReceived(XMPPConnection arg0, String arg1, String arg2, String arg3, String arg4, Message arg5) {
+                // 受到聊天室的邀请,就将聊天室加入为好友
+                Log.d("roamer", "受到聊天室的邀请,就将聊天室加入为好友");
+                String roomJIDPrefix = XmppStringUtil.getRoomJIDPrefix(arg1);
+                Friend friend = FriendDao.getInstance().getFriend(mLoginUserId, roomJIDPrefix);
+                MucRoomSimple mucRoomSimple = JSON.parseObject(arg3, MucRoomSimple.class);
+                if (mucRoomSimple == null) {
+                    return;
+                }
+                /* 将房间作为一个好友存到好友表 */
+                if (friend == null) {// 将该房间存到好友表中
+                    friend = new Friend();// 将房间也存为好友
+                    friend.setOwnerId(mLoginUserId);
+                    friend.setUserId(roomJIDPrefix);
+                    friend.setNickName(mucRoomSimple.getName());
+                    friend.setDescription(mucRoomSimple.getDesc());
+                    friend.setRoomFlag(1);
+                    friend.setStatus(Friend.STATUS_FRIEND);
+                    friend.setRoomId(mucRoomSimple.getId());
+                    friend.setRoomCreateUserId(mucRoomSimple.getUserId());
+                    // timeSend作为取群聊离线消息的标志,所以要在这里设置一个初始值
+                    friend.setTimeSend(mucRoomSimple.getTimeSend());
+                    FriendDao.getInstance().createOrUpdateFriend(friend);
+                    // 更新名片盒(可能需要更新)
+                    CardcastUiUpdateUtil.broadcastUpdateUi(mService);
+                }
+                long lastTime = MyApplication.getInstance().mLoginUser.getOfflineTime();
+                Log.d("wang", "lastTime:" + lastTime);
+                if (friend.getTimeSend() > lastTime) {
+                    lastTime = friend.getTimeSend();
+                }
+                int lastSeconds = (int) (CalendarUtil.getSecondMillion() - lastTime);
+                joinMucChat(roomJIDPrefix, mLoginNickName, lastSeconds);
+            }
+        });
+    }
+
+    public void reset() {
+        String userId = StringUtils.parseName(mConnection.getUser());
+        mMucChatMap.clear();
+        if (!mLoginUserId.equals(userId)) {
+            mLoginUserId = userId;
+            mLoginNickName = MyApplication.getInstance().mLoginUser.getNickName();
+        }
+        joinExistRoom();
+    }
+
+    public static String getMucChatServiceName(XMPPConnection connection) {
+        return "@muc." + connection.getServiceName();
+    }
+
+    /**
+     * @param myNickName
+     * @param roomName
+     * @param roomSubject (no use)
+     * @param roomDesc    (no use)
+     * @return 返回房间的Id
+     */
+    public String createMucRoom(String myNickName, String roomName, String roomSubject, String roomDesc) {
+        try {
+            String roomId = UUID.randomUUID().toString().replaceAll("-", "");
+
+            String roomJid = roomId + getMucChatServiceName(mConnection);
+            // 创建聊天室
+            MultiUserChat muc = new MultiUserChat(mConnection, roomJid);
+            muc.create(myNickName);
+
+            // 获得聊天室的配置表单
+            Form form = muc.getConfigurationForm();
+            // 根据原始表单创建一个要提交的新表单。
+            Form submitForm = form.createAnswerForm();
+            // 向要提交的表单添加默认答复
+
+            List<FormField> fields = form.getFields();
+            for (int i = 0; i < fields.size(); i++) {
+                FormField field = (FormField) fields.get(i);
+                if (!FormField.TYPE_HIDDEN.equals(field.getType()) && field.getVariable() != null) {
+                    // 设置默认值作为答复
 //					Log.d("Arison", "defaultAnswer:" + field.getVariable());
-					submitForm.setDefaultAnswer(field.getVariable());
-				}
-			}
-
-			// 设置聊天室的新拥有者
-			// List owners = new ArrayList();
-			// owners.add("liaonaibo2\\40slook.cc");
-			// owners.add("liaonaibo1\\40slook.cc");
-			// submitForm.setAnswer("muc#roomconfig_roomowners", owners);
-
-			// 设置聊天室的名字
-			submitForm.setAnswer("muc#roomconfig_roomname", roomName);
-			// 设置聊天室描述
-			// if (!TextUtils.isEmpty(roomDesc)) {
-			// submitForm.setAnswer("muc#roomconfig_roomdesc", roomDesc);
-			// }
-			// 登录房间对话
-			submitForm.setAnswer("muc#roomconfig_enablelogging", true);
-			// 允许修改主题
-			// submitForm.setAnswer("muc#roomconfig_changesubject", true);
-			// 允许占有者邀请其他人
-			// submitForm.setAnswer("muc#roomconfig_allowinvites", true);
-			// 最大人数
-			// List<String> maxusers = new ArrayList<String>();
-			// maxusers.add("50");
-			// submitForm.setAnswer("muc#roomconfig_maxusers", maxusers);
-			// 公开的,允许被搜索到
-			// submitForm.setAnswer("muc#roomconfig_publicroom", true);
-			// 设置聊天室是持久聊天室,即将要被保存下来
-			submitForm.setAnswer("muc#roomconfig_persistentroom", true);
-
-			// 是否主持腾出空间(加了这个默认游客进去不能发言)
-			// submitForm.setAnswer("muc#roomconfig_moderatedroom", true);
-			// 房间仅对成员开放
-			// submitForm.setAnswer("muc#roomconfig_membersonly", true);
-			// 不需要密码
-			// submitForm.setAnswer("muc#roomconfig_passwordprotectedroom",
-			// false);
-			// 房间密码
-			// submitForm.setAnswer("muc#roomconfig_roomsecret", "111");
-			// 允许主持 能够发现真实 JID
-			// List<String> whois = new ArrayList<String>();
-			// whois.add("anyone");
-			// submitForm.setAnswer("muc#roomconfig_whois", whois);
-
-			// 管理员
-			// <field var='muc#roomconfig_roomadmins'>
-			// <value>wiccarocks@shakespeare.lit</value>
-			// <value>hecate@shakespeare.lit</value>
-			// </field>
-
-			// 仅允许注册的昵称登录
-			// submitForm.setAnswer("x-muc#roomconfig_reservednick", true);
-			// 允许使用者修改昵称
-			// submitForm.setAnswer("x-muc#roomconfig_canchangenick", false);
-			// 允许用户注册房间
-			// submitForm.setAnswer("x-muc#roomconfig_registration", false);
-			// 发送已完成的表单(有默认值)到服务器来配置聊天室
-			muc.sendConfigurationForm(submitForm);
-
-			// muc.changeSubject(roomSubject);
-			// mMucChatMap.put(roomJid, muc);
-			mMucChatMap.put(roomJid, muc);
-			return roomId;
-		} catch (XMPPException e) {
-			e.printStackTrace();
-		} catch (NoResponseException e) {
-			e.printStackTrace();
-		} catch (SmackException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	/**
-	 * 邀请好友进入房间
-	 * 
-	 * @param roomId
-	 * @param userId
-	 * @param reason
-	 */
-	public void invite(String roomId, String userId, String reason) {
-		String roomJid = roomId + getMucChatServiceName(mConnection);
-		if (mMucChatMap.get(roomJid) != null) {
-			try {
-				mMucChatMap.get(roomJid).invite(userId + "@" + mConnection.getServiceName(), reason);
-			} catch (NotConnectedException e) {
-				e.printStackTrace();
-			}
-		}
-	}
-
-	public MultiUserChat getRoom(String roomJid) {
-		return mMucChatMap.get(roomJid);
-	}
-
-	/**
-	 * @param toUserId
-	 *            要发送消息的房间Id
-	 * @param chatMessage
-	 *            已经存到本地数据库的一条即将发送的消息
-	 */
-	public void sendMessage(final String toUserId, final ChatMessage chatMessage) {
-		ThreadManager.getPool().execute(new Runnable() {
-			public void run() {
-				String roomJid = toUserId + getMucChatServiceName(mConnection);
-				MultiUserChat chat = getRoom(roomJid);
-				if (chat == null || !chat.isJoined()) {
-					ListenerManager.getInstance().notifyMessageSendStateChange(mLoginUserId, toUserId, chatMessage.get_id(),
-							ChatMessageListener.MESSAGE_SEND_FAILED);
-					return;
-				}
-				Message msg = new Message();
-				msg.setType(Message.Type.groupchat);
-				msg.setBody(chatMessage.toJsonString(true));
-				msg.setPacketID(chatMessage.getPacketId());
-				msg.setTo(roomJid);
-				DeliveryReceiptManager.addDeliveryReceiptRequest(msg);
-
-				int sendStatus = ChatMessageListener.MESSAGE_SEND_FAILED;
-				// 发送消息
-				try {
-					chat.sendMessage(msg);
-					sendStatus = ChatMessageListener.MESSAGE_SEND_ING;
-				} catch (NotConnectedException e) {
-					e.printStackTrace();
-				} catch (XMPPException e) {
-					e.printStackTrace();
-				}
-				ListenerManager.getInstance().notifyMessageSendStateChange(mLoginUserId, toUserId, chatMessage.get_id(), sendStatus);
-			}
-		});
-	}
-
-	public void joinMucChat(final String toUserId, String nickName, int lastSeconds) {
-		String roomJid = toUserId + getMucChatServiceName(mConnection);
-		if (mMucChatMap.containsKey(roomJid)) {
-			MultiUserChat mucChat = mMucChatMap.get(roomJid);
-			if (mucChat != null && mucChat.isJoined()) {
-				return;
-			}
-		}
-		final MultiUserChat mucChat = new MultiUserChat(mConnection, roomJid);
-		try {
-			mMucChatMap.put(roomJid, mucChat);
-			DiscussionHistory history = new DiscussionHistory();
-			if (lastSeconds > 0) {
-				history.setSeconds(lastSeconds - 1);// 减去1秒,防止最后一条消息重复(当然有可能导致在这个时间点的其他消息丢失,不会概率极小)
-				// history.setSince(new Date(new Date().getTime() - 300 * 1000));
-			} else {
-				history.setSeconds(0);// request no history
-			}
-			if (StringUtil.isEmpty(nickName)){
-				return;
-			}
-			mucChat.join(nickName, null, history, mJoinTimeOut);// 必须放在后面,要不然取mMucNickNameMap得时候肯呢过为空,因为这是个异步的
-		} catch (XMPPException e) {
-			e.printStackTrace();
-		} catch (NoResponseException e) {
-			e.printStackTrace();
-		} catch (NotConnectedException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void exitMucChat(String toUserId) {
-		String roomJid = toUserId + getMucChatServiceName(mConnection);
-		if (mMucChatMap.containsKey(roomJid)) {
-			MultiUserChat mucChat = mMucChatMap.get(roomJid);
-			if (mucChat != null && mucChat.isJoined()) {
-				try {
-					mucChat.leave();
-				} catch (NotConnectedException e) {
-					e.printStackTrace();
-				}
-				mMucChatMap.remove(roomJid);
-			}
-		}
-	}
-
-	PacketListener packetListener = new PacketListener() {
-		@Override
-		public void processPacket(Packet arg0) throws NotConnectedException {
-			Message message = (Message) arg0;
-			String from = message.getFrom();
-			String to = message.getTo();
-           Log.d("wang","messageId::"+message.getBody());
-			if (TextUtils.isEmpty(from) || TextUtils.isEmpty(to)) {
-				return;
-			}
-			if (!XmppStringUtil.isJID(from) || !XmppStringUtil.isJID(to)) {
-				return;
-			}
-			if (!StringUtils.parseName(to).equals(mLoginUserId)) {// 不是发给我的,基本上是不可能的情况,还是麻痹的判断下
-				return;
-			}
-			String content = message.getBody();
-			int changeTimeSend = 0;// 如果是历史记录,那么要篡改Json数据中的TimeSend字段,防止多次加入放假获取重复的历史记录
-			//下面这样写会在某些机型上重复收到消息
-			DelayInformation delayInformation = (DelayInformation) message.getExtension("x", "jabber:x:delay");
-			if (delayInformation != null) {// 这是历史记录
-				Log.d("roamer1","这是历史记录........"+message.getBody()+"delay:"+delayInformation.getStamp().getTime());
-				Date date = delayInformation.getStamp();
-				if (date != null) {
-					changeTimeSend = (int) (date.getTime() / 1000);
-					saveGroupMessage(content, false, from, message.getPacketID(),changeTimeSend);
-					return;
-				}
-
-			}
-			Log.d("roamer1","........messageBody:"+message.getBody());
-			saveGroupMessage(content, false, from, message.getPacketID(),changeTimeSend);
-		}
-	};
-
-	PacketFilter packetFilter = new PacketFilter() {
-		@Override
-		public boolean accept(Packet arg0) {
-			if (arg0 instanceof Message) {
-				Message message = (Message) arg0;
-				if (message.getType() == Type.groupchat) {
-					return true;
-				}
-				return false;
-			} else {
-				return false;
-			}
-		}
-	};
-
-	// 自动加入到以前所有已经加入的房间
-	private void joinExistRoom() {
-		new Thread(new Runnable() {
-			@Override
-			public void run() {
+                    submitForm.setDefaultAnswer(field.getVariable());
+                }
+            }
+
+            // 设置聊天室的新拥有者
+            // List owners = new ArrayList();
+            // owners.add("liaonaibo2\\40slook.cc");
+            // owners.add("liaonaibo1\\40slook.cc");
+            // submitForm.setAnswer("muc#roomconfig_roomowners", owners);
+
+            // 设置聊天室的名字
+            submitForm.setAnswer("muc#roomconfig_roomname", roomName);
+            // 设置聊天室描述
+            // if (!TextUtils.isEmpty(roomDesc)) {
+            // submitForm.setAnswer("muc#roomconfig_roomdesc", roomDesc);
+            // }
+            // 登录房间对话
+            submitForm.setAnswer("muc#roomconfig_enablelogging", true);
+            // 允许修改主题
+            // submitForm.setAnswer("muc#roomconfig_changesubject", true);
+            // 允许占有者邀请其他人
+            // submitForm.setAnswer("muc#roomconfig_allowinvites", true);
+            // 最大人数
+            // List<String> maxusers = new ArrayList<String>();
+            // maxusers.add("50");
+            // submitForm.setAnswer("muc#roomconfig_maxusers", maxusers);
+            // 公开的,允许被搜索到
+            // submitForm.setAnswer("muc#roomconfig_publicroom", true);
+            // 设置聊天室是持久聊天室,即将要被保存下来
+            submitForm.setAnswer("muc#roomconfig_persistentroom", true);
+
+            // 是否主持腾出空间(加了这个默认游客进去不能发言)
+            // submitForm.setAnswer("muc#roomconfig_moderatedroom", true);
+            // 房间仅对成员开放
+            // submitForm.setAnswer("muc#roomconfig_membersonly", true);
+            // 不需要密码
+            // submitForm.setAnswer("muc#roomconfig_passwordprotectedroom",
+            // false);
+            // 房间密码
+            // submitForm.setAnswer("muc#roomconfig_roomsecret", "111");
+            // 允许主持 能够发现真实 JID
+            // List<String> whois = new ArrayList<String>();
+            // whois.add("anyone");
+            // submitForm.setAnswer("muc#roomconfig_whois", whois);
+
+            // 管理员
+            // <field var='muc#roomconfig_roomadmins'>
+            // <value>wiccarocks@shakespeare.lit</value>
+            // <value>hecate@shakespeare.lit</value>
+            // </field>
+
+            // 仅允许注册的昵称登录
+            // submitForm.setAnswer("x-muc#roomconfig_reservednick", true);
+            // 允许使用者修改昵称
+            // submitForm.setAnswer("x-muc#roomconfig_canchangenick", false);
+            // 允许用户注册房间
+            // submitForm.setAnswer("x-muc#roomconfig_registration", false);
+            // 发送已完成的表单(有默认值)到服务器来配置聊天室
+            muc.sendConfigurationForm(submitForm);
+
+            // muc.changeSubject(roomSubject);
+            // mMucChatMap.put(roomJid, muc);
+            mMucChatMap.put(roomJid, muc);
+            return roomId;
+        } catch (XMPPException e) {
+            e.printStackTrace();
+        } catch (NoResponseException e) {
+            e.printStackTrace();
+        } catch (SmackException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 邀请好友进入房间
+     *
+     * @param roomId
+     * @param userId
+     * @param reason
+     */
+    public void invite(String roomId, String userId, String reason) {
+        String roomJid = roomId + getMucChatServiceName(mConnection);
+        if (mMucChatMap.get(roomJid) != null) {
+            try {
+                mMucChatMap.get(roomJid).invite(userId + "@" + mConnection.getServiceName(), reason);
+            } catch (NotConnectedException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public MultiUserChat getRoom(String roomJid) {
+        return mMucChatMap.get(roomJid);
+    }
+
+    /**
+     * @param toUserId    要发送消息的房间Id
+     * @param chatMessage 已经存到本地数据库的一条即将发送的消息
+     */
+    public void sendMessage(final String toUserId, final ChatMessage chatMessage) {
+        ThreadManager.getPool().execute(new Runnable() {
+            public void run() {
+                String roomJid = toUserId + getMucChatServiceName(mConnection);
+                MultiUserChat chat = getRoom(roomJid);
+                if (chat == null || !chat.isJoined()) {
+                    ListenerManager.getInstance().notifyMessageSendStateChange(mLoginUserId, toUserId, chatMessage.get_id(),
+                            ChatMessageListener.MESSAGE_SEND_FAILED);
+                    return;
+                }
+                Message msg = new Message();
+                msg.setType(Message.Type.groupchat);
+                msg.setBody(chatMessage.toJsonString(true));
+                msg.setPacketID(chatMessage.getPacketId());
+                msg.setTo(roomJid);
+                DeliveryReceiptManager.addDeliveryReceiptRequest(msg);
+
+                int sendStatus = ChatMessageListener.MESSAGE_SEND_FAILED;
+                // 发送消息
+                try {
+                    chat.sendMessage(msg);
+                    sendStatus = ChatMessageListener.MESSAGE_SEND_ING;
+                } catch (NotConnectedException e) {
+                    e.printStackTrace();
+                } catch (XMPPException e) {
+                    e.printStackTrace();
+                }
+                ListenerManager.getInstance().notifyMessageSendStateChange(mLoginUserId, toUserId, chatMessage.get_id(), sendStatus);
+            }
+        });
+    }
+
+    public void joinMucChat(final String toUserId, String nickName, int lastSeconds) {
+        String roomJid = toUserId + getMucChatServiceName(mConnection);
+        if (mMucChatMap.containsKey(roomJid)) {
+            MultiUserChat mucChat = mMucChatMap.get(roomJid);
+            if (mucChat != null && mucChat.isJoined()) {
+                return;
+            }
+        }
+        final MultiUserChat mucChat = new MultiUserChat(mConnection, roomJid);
+        try {
+            mMucChatMap.put(roomJid, mucChat);
+            DiscussionHistory history = new DiscussionHistory();
+            if (lastSeconds > 0) {
+                history.setSeconds(lastSeconds - 1);// 减去1秒,防止最后一条消息重复(当然有可能导致在这个时间点的其他消息丢失,不会概率极小)
+                // history.setSince(new Date(new Date().getTime() - 300 * 1000));
+            } else {
+                history.setSeconds(0);// request no history
+            }
+            if (StringUtil.isEmpty(nickName)) {
+                return;
+            }
+            mucChat.join(nickName, null, history, mJoinTimeOut);// 必须放在后面,要不然取mMucNickNameMap得时候肯呢过为空,因为这是个异步的
+        } catch (XMPPException e) {
+            e.printStackTrace();
+        } catch (NoResponseException e) {
+            e.printStackTrace();
+        } catch (NotConnectedException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void exitMucChat(String toUserId) {
+        String roomJid = toUserId + getMucChatServiceName(mConnection);
+        if (mMucChatMap.containsKey(roomJid)) {
+            MultiUserChat mucChat = mMucChatMap.get(roomJid);
+            if (mucChat != null && mucChat.isJoined()) {
+                try {
+                    mucChat.leave();
+                } catch (NotConnectedException e) {
+                    e.printStackTrace();
+                }
+                mMucChatMap.remove(roomJid);
+            }
+        }
+    }
+
+    PacketListener packetListener = new PacketListener() {
+        @Override
+        public void processPacket(Packet arg0) throws NotConnectedException {
+            Message message = (Message) arg0;
+            String from = message.getFrom();
+            String to = message.getTo();
+            Log.d("wang", "messageId::" + message.getBody());
+            if (TextUtils.isEmpty(from) || TextUtils.isEmpty(to)) {
+                return;
+            }
+            if (!XmppStringUtil.isJID(from) || !XmppStringUtil.isJID(to)) {
+                return;
+            }
+            if (!StringUtils.parseName(to).equals(mLoginUserId)) {// 不是发给我的,基本上是不可能的情况,还是麻痹的判断下
+                return;
+            }
+            String content = message.getBody();
+            int changeTimeSend = 0;// 如果是历史记录,那么要篡改Json数据中的TimeSend字段,防止多次加入放假获取重复的历史记录
+            //下面这样写会在某些机型上重复收到消息
+            DelayInformation delayInformation = (DelayInformation) message.getExtension("x", "jabber:x:delay");
+            if (delayInformation != null) {// 这是历史记录
+                Log.d("roamer1", "这是历史记录........" + message.getBody() + "delay:" + delayInformation.getStamp().getTime());
+                Date date = delayInformation.getStamp();
+                if (date != null) {
+                    changeTimeSend = (int) (date.getTime() / 1000);
+                    saveGroupMessage(content, false, from, message.getPacketID(), changeTimeSend);
+                    return;
+                }
+
+            }
+            Log.d("roamer1", "........messageBody:" + message.getBody());
+            saveGroupMessage(content, false, from, message.getPacketID(), changeTimeSend);
+        }
+    };
+
+    PacketFilter packetFilter = new PacketFilter() {
+        @Override
+        public boolean accept(Packet arg0) {
+            if (arg0 instanceof Message) {
+                Message message = (Message) arg0;
+                if (message.getType() == Type.groupchat) {
+                    return true;
+                }
+                return false;
+            } else {
+                return false;
+            }
+        }
+    };
+
+    // 自动加入到以前所有已经加入的房间
+    private void joinExistRoom() {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
 //				long lastTime = MyApplication.getInstance().mLoginUser.getOfflineTime();
-				long lastTime= PreferenceUtils.getLong(mService, Constants.OFFLINE_TIME);
-				if(lastTime==1){
-					lastTime = MyApplication.getInstance().mLoginUser.getOfflineTime();
-				}
-				Log.d("wang","joinExistRoom:lasttime::"+lastTime);
-				List<Friend> friends = FriendDao.getInstance().getAllRooms(mLoginUserId);
-				if (friends == null) {
-					return;
-				}
-				for (int i = 0; i < friends.size(); i++) {
-					String roomJid = friends.get(i).getUserId();
-					if (friends.get(i).getTimeSend() > lastTime) {
-						lastTime = friends.get(i).getTimeSend();
-					}
-					int lastSeconds = (int) (CalendarUtil.getSecondMillion() - lastTime);
-					Log.e("roamer", "RoomJid:" + roomJid + "     RoomName:" + friends.get(i).getNickName() + "   lastSeconds:" + lastSeconds);
-					String nickName = friends.get(i).getRoomMyNickName();
-					if (TextUtils.isEmpty(nickName)) {
-						nickName = mLoginNickName;
-					}
-					joinMucChat(roomJid, mLoginNickName, lastSeconds);
-				}
-			}
-		}).start();
-	}
-
-	/**
-	 * 保存接收到的聊天信息(群聊)
-	 * 
-	 * @param messageBody
-	 * @param isRead
-	 * @return
-	 */
-	private void saveGroupMessage(String messageBody, boolean isRead, String from, String packetId, int changeTimeSend) {
-		String roomJid = XmppStringUtil.getRoomJID(from);
-		String myNickName = mMucChatMap.get(roomJid).getNickname();
-		String fromUserNick = XmppStringUtil.getRoomUserNick(from);
-		if (TextUtils.isEmpty(fromUserNick)) {// 来自于系统的消息
-			//
-		} else if (fromUserNick.equals(myNickName)) {// 我自己发的消息,不处理
-			//
-		} else {
-			ChatMessage message = new ChatMessage(messageBody);
-			if (!message.validate()) {
-				return;
-			}
-			if (TextUtils.isEmpty(packetId)) {
-				packetId = UUID.randomUUID().toString().replaceAll("-", "");
-			}
-			message.setPacketId(packetId);
-			if (changeTimeSend > 0) {// 始终以延迟消息的时间戳为准
-				Log.e("roamer", "TimeSend:" + message.getTimeSend());
-				Log.e("roamer", "TimeStamp:" + changeTimeSend);
-				message.setTimeSend(changeTimeSend);
-			}
-			mService.notificationMesage(message);
-			if (ChatMessageDao.getInstance().saveNewSingleChatMessage(mLoginUserId, XmppStringUtil.getRoomJIDPrefix(from), message)) {
-				ListenerManager.getInstance().notifyNewMesssage(mLoginUserId, XmppStringUtil.getRoomJIDPrefix(roomJid), message, true);
-			}
-		}
-	}
-
-	// 踢人
-	public boolean kickParticipant(String roomJid, String nickName) {
-		roomJid = roomJid + getMucChatServiceName(mConnection);
-		MultiUserChat mucChat = mMucChatMap.get(roomJid);
-		if (mucChat == null) {
-			return false;
-		}
-		try {
-			mucChat.kickParticipant(nickName, "你被踢出该房间");
-		} catch (XMPPException e) {
-			e.printStackTrace();
-			return false;
-		} catch (NoResponseException e) {
-			e.printStackTrace();
-			return false;
-		} catch (NotConnectedException e) {
-			e.printStackTrace();
-			return false;
-		}
-		return true;
-	}
-
-	// 被踢出
-	public boolean kicked(String roomJid) {
-		MultiUserChat mucChat = mMucChatMap.get(roomJid);
-		if (mucChat == null) {
-			return false;
-		}
-		try {
-			mucChat.leave();
-		} catch (NotConnectedException e) {
-			e.printStackTrace();
-		}
-		mMucChatMap.remove(roomJid);
-		return true;
-	}
+                long lastTime = PreferenceUtils.getLong(mService, Constants.OFFLINE_TIME);
+                if (lastTime == 1) {
+                    lastTime = MyApplication.getInstance().mLoginUser.getOfflineTime();
+                }
+                Log.d("wang", "joinExistRoom:lasttime::" + lastTime);
+                List<Friend> friends = FriendDao.getInstance().getAllRooms(mLoginUserId);
+                if (friends == null) {
+                    return;
+                }
+                for (int i = 0; i < friends.size(); i++) {
+                    String roomJid = friends.get(i).getUserId();
+                    if (friends.get(i).getTimeSend() > lastTime) {
+                        lastTime = friends.get(i).getTimeSend();
+                    }
+                    int lastSeconds = (int) (CalendarUtil.getSecondMillion() - lastTime);
+                    Log.e("roamer", "RoomJid:" + roomJid + "     RoomName:" + friends.get(i).getNickName() + "   lastSeconds:" + lastSeconds);
+                    String nickName = friends.get(i).getRoomMyNickName();
+                    if (TextUtils.isEmpty(nickName)) {
+                        nickName = mLoginNickName;
+                    }
+                    joinMucChat(roomJid, mLoginNickName, lastSeconds);
+                }
+            }
+        }).start();
+    }
+
+    /**
+     * 保存接收到的聊天信息(群聊)
+     *
+     * @param messageBody
+     * @param isRead
+     * @return
+     */
+    private void saveGroupMessage(String messageBody, boolean isRead, String from, String packetId, int changeTimeSend) {
+        String roomJid = XmppStringUtil.getRoomJID(from);
+        String myNickName = mMucChatMap.get(roomJid).getNickname();
+        String fromUserNick = XmppStringUtil.getRoomUserNick(from);
+        if (TextUtils.isEmpty(fromUserNick)) {// 来自于系统的消息
+            //
+        } else if (fromUserNick.equals(myNickName)) {// 我自己发的消息,不处理
+            //
+        } else {
+            ChatMessage message = new ChatMessage(messageBody);
+            if (!message.validate()) {
+                return;
+            }
+            if (TextUtils.isEmpty(packetId)) {
+                packetId = UUID.randomUUID().toString().replaceAll("-", "");
+            }
+            message.setPacketId(packetId);
+            if (changeTimeSend > 0) {// 始终以延迟消息的时间戳为准
+                Log.e("roamer", "TimeSend:" + message.getTimeSend());
+                Log.e("roamer", "TimeStamp:" + changeTimeSend);
+                message.setTimeSend(changeTimeSend);
+            }
+            mService.notificationMesage(message);
+            if (ChatMessageDao.getInstance().saveNewSingleChatMessage(mLoginUserId, XmppStringUtil.getRoomJIDPrefix(from), message)) {
+                ListenerManager.getInstance().notifyNewMesssage(mLoginUserId, XmppStringUtil.getRoomJIDPrefix(roomJid), message, true);
+            }
+        }
+    }
+
+    // 踢人
+    public boolean kickParticipant(String roomJid, String nickName) {
+        roomJid = roomJid + getMucChatServiceName(mConnection);
+        MultiUserChat mucChat = mMucChatMap.get(roomJid);
+        if (mucChat == null) {
+            return false;
+        }
+        try {
+            mucChat.kickParticipant(nickName, "你被踢出该房间");
+        } catch (XMPPException e) {
+            e.printStackTrace();
+            return false;
+        } catch (NoResponseException e) {
+            e.printStackTrace();
+            return false;
+        } catch (NotConnectedException e) {
+            e.printStackTrace();
+            return false;
+        }
+        return true;
+    }
+
+    // 被踢出
+    public boolean kicked(String roomJid) {
+        MultiUserChat mucChat = mMucChatMap.get(roomJid);
+        if (mucChat == null) {
+            return false;
+        }
+        try {
+            mucChat.leave();
+        } catch (NotConnectedException e) {
+            e.printStackTrace();
+        }
+        mMucChatMap.remove(roomJid);
+        return true;
+    }
 
 }

+ 0 - 1
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/RealTimeFormActivity.java

@@ -25,7 +25,6 @@ import com.me.network.app.http.rx.ResultSubscriber;
 import com.modular.appmessages.R;
 import com.modular.appmessages.adapter.RealTimeFormMenuAdapter;
 import com.modular.appmessages.model.RealTimeFormMenuBean;
-import com.modular.apputils.activity.SimpleWebActivity;
 
 import java.util.ArrayList;
 import java.util.List;

+ 2 - 4
app_modular/apputils/src/main/java/com/modular/apputils/IntentUrlActivity.java

@@ -46,7 +46,8 @@ public class IntentUrlActivity extends Activity {
                 if (uri != null) {
                     String pagekind = uri.getQueryParameter("pagekind");
                     String id = uri.getQueryParameter("id");
-                    String enuu = uri.getQueryParameter("uu");
+//                    String enuu = uri.getQueryParameter("uu");
+                    String enuu = Constants.FLAG.GET_LOCAL_ENUU;
                     String phone = uri.getQueryParameter("telephone");
 
                     LogUtil.d(TAG, "pagekind:" + pagekind + " id:" + id + " enuu:" + enuu);
@@ -55,7 +56,6 @@ public class IntentUrlActivity extends Activity {
                         intent.putExtra(Constants.FLAG.EXTRA_B2B_LIST_ID, id);
                         intent.putExtra(Constants.FLAG.EXTRA_B2B_LIST_STATE, Constants.FLAG.STATE_CUSTOMER_INQUIRY_TODO);
                         intent.putExtra(Constants.FLAG.EXTRA_B2B_LIST_ENUU, enuu);
-                        intent.putExtra(Constants.FLAG.EXTRA_B2B_LIST_TEL, phone);
                         startActivity(intent);
                     }
                     if ("B".equals(pagekind)) {//公共询价单
@@ -63,7 +63,6 @@ public class IntentUrlActivity extends Activity {
                         intent.putExtra(Constants.FLAG.EXTRA_B2B_LIST_ID, id);
                         intent.putExtra(Constants.FLAG.EXTRA_B2B_LIST_STATE, Constants.FLAG.STATE_PUBLIC_INQUIRY_TODO);
                         intent.putExtra(Constants.FLAG.EXTRA_B2B_LIST_ENUU, enuu);
-                        intent.putExtra(Constants.FLAG.EXTRA_B2B_LIST_TEL, phone);
                         startActivity(intent);
                     }
                     if ("C".equals(pagekind)) {
@@ -71,7 +70,6 @@ public class IntentUrlActivity extends Activity {
                         intent.putExtra(Constants.FLAG.EXTRA_B2B_LIST_ID, id);
                         intent.putExtra(Constants.FLAG.EXTRA_B2B_LIST_STATE, Constants.FLAG.STATE_PURCHASE_ORDER_TODO);
                         intent.putExtra(Constants.FLAG.EXTRA_B2B_LIST_ENUU, enuu);
-                        intent.putExtra(Constants.FLAG.EXTRA_B2B_LIST_TEL, phone);
                         startActivity(intent);
                     }
                     if (TextUtils.isEmpty(pagekind) || "null".equals(pagekind)) {

+ 20 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/activity/PurchaseDetailsActivity.java

@@ -1,6 +1,7 @@
 package com.uas.appworks.OA.platform.activity;
 
 import android.content.Intent;
+import android.support.annotation.NonNull;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
@@ -8,6 +9,8 @@ import android.view.KeyEvent;
 import android.view.MenuItem;
 import android.widget.Toast;
 
+import com.afollestad.materialdialogs.DialogAction;
+import com.afollestad.materialdialogs.MaterialDialog;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -89,7 +92,10 @@ public class PurchaseDetailsActivity extends BaseNetActivity implements OnSmartH
             mJson = intent.getStringExtra(Constants.FLAG.EXTRA_B2B_LIST_JSON);
             enUU = intent.getStringExtra(Constants.FLAG.EXTRA_B2B_LIST_ENUU);
             mPhone = intent.getStringExtra(Constants.FLAG.EXTRA_B2B_LIST_TEL);
-            if (TextUtils.isEmpty(enUU)) {
+
+            if (Constants.FLAG.GET_LOCAL_ENUU.equals(enUU)) {
+                enUU = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_uu");
+            } else {
                 enUU = CommonUtil.getSharedPreferences(mContext, Constants.CACHE.B2B_BUSINESS_ENUU);
             }
             if (TextUtils.isEmpty(mPhone)) {
@@ -161,6 +167,19 @@ public class PurchaseDetailsActivity extends BaseNetActivity implements OnSmartH
     private boolean replyed;
 
     private void verifiReply(List<Purchase> purchases) {
+        if (TextUtils.isEmpty(enUU)) {
+            new MaterialDialog.Builder(this)
+                    .title(R.string.prompt_title)
+                    .content(R.string.notice_cannot_quote)
+                    .positiveText(R.string.have_knew)
+                    .onPositive(new MaterialDialog.SingleButtonCallback() {
+                        @Override
+                        public void onClick(@NonNull MaterialDialog materialDialog, @NonNull DialogAction dialogAction) {
+                            materialDialog.dismiss();
+                        }
+                    }).build().show();
+            return;
+        }
         List<Map<String, Object>> mapList = new ArrayList<>();
         for (int i = 1; i < purchases.size(); i++) {
             Purchase purchase = purchases.get(i);

+ 22 - 3
app_modular/appworks/src/main/java/com/uas/appworks/activity/CustomerInquiryDetailActivity.java

@@ -2,6 +2,7 @@ package com.uas.appworks.activity;
 
 import android.content.Intent;
 import android.os.Handler;
+import android.support.annotation.NonNull;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
@@ -9,6 +10,8 @@ import android.view.View;
 import android.widget.Button;
 import android.widget.ImageView;
 
+import com.afollestad.materialdialogs.DialogAction;
+import com.afollestad.materialdialogs.MaterialDialog;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -105,7 +108,9 @@ public class CustomerInquiryDetailActivity extends BaseMVPActivity<WorkPlatPrese
             mEnuu = intent.getStringExtra(Constants.FLAG.EXTRA_B2B_LIST_ENUU);
             mPhone = intent.getStringExtra(Constants.FLAG.EXTRA_B2B_LIST_TEL);
 
-            if (TextUtils.isEmpty(mEnuu)) {
+            if (Constants.FLAG.GET_LOCAL_ENUU.equals(mEnuu)) {
+                mEnuu = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_uu");
+            } else {
                 mEnuu = CommonUtil.getSharedPreferences(mContext, Constants.CACHE.B2B_BUSINESS_ENUU);
             }
 
@@ -254,8 +259,8 @@ public class CustomerInquiryDetailActivity extends BaseMVPActivity<WorkPlatPrese
                 String title = JSONUtil.getText(productObject, "title");
                 String spec = JSONUtil.getText(productObject, "spec");
                 String code = JSONUtil.getText(productObject, "code");
-                material = code + (TextUtils.isEmpty(title) ? "" : (",\n" + title)
-                        + (TextUtils.isEmpty(spec) ? "" : (",\n" + spec)));//物料
+                material = code + (TextUtils.isEmpty(title) ? "" : ((TextUtils.isEmpty(code) ? "" : ",\n") + title)
+                        + (TextUtils.isEmpty(spec) ? "" : ((TextUtils.isEmpty(code) ? "" : ",\n") + spec)));//物料
             }
 
             String currency = JSONUtil.getText(detailObject, "currency");//币别
@@ -373,6 +378,19 @@ public class CustomerInquiryDetailActivity extends BaseMVPActivity<WorkPlatPrese
             mB2BQuotePriceBeans.add(createB2BQuotePriceBean(0, "", ""));
             mB2BQuotePriceAdapter.notifyDataSetChanged();
         } else if (i == R.id.customer_inquiry_detail_quote_btn) {
+            if (TextUtils.isEmpty(mEnuu)) {
+                new MaterialDialog.Builder(this)
+                        .title(R.string.prompt_title)
+                        .content(R.string.notice_cannot_quote)
+                        .positiveText(R.string.have_knew)
+                        .onPositive(new MaterialDialog.SingleButtonCallback() {
+                            @Override
+                            public void onClick(@NonNull MaterialDialog materialDialog, @NonNull DialogAction dialogAction) {
+                                materialDialog.dismiss();
+                            }
+                        }).build().show();
+                return;
+            }
             List<B2BQuotePriceBean> b2BQuotePriceBeans = mB2BQuotePriceAdapter.getB2BQuotePriceBeans();
             List<B2BDetailListBean> b2BDetailListBeans = mB2BDetailListAdapter.getB2BDetailListBeans();
 
@@ -450,6 +468,7 @@ public class CustomerInquiryDetailActivity extends BaseMVPActivity<WorkPlatPrese
 
             params.put("useruu", CommonUtil.getSharedPreferences(mContext, "b2b_uu"));
 
+            LogUtil.d("inquiryparam", params.toString());
             showLoading(null);
             String url = "mobile/sale/inquiry/items/" + mId + "/reply";
             String host = new ApiPlatform().getBaseUrl();

+ 2 - 0
app_modular/appworks/src/main/res/values-en/strings.xml

@@ -133,4 +133,6 @@
     <string name="register_unsuccessed_sure_to_exit">注册未完成,确定退出?</string>
     <string name="please_select_currency">请选择币别</string>
     <string name="public_inquiry_taxrate">税率(%)</string>
+    <string name="have_knew">我知道了</string>
+    <string name="notice_cannot_quote">您当前登录的账套未开通B2B服务,无法报价,请切换账套后重试</string>
 </resources>

+ 2 - 0
app_modular/appworks/src/main/res/values-zh-rCN/strings.xml

@@ -132,4 +132,6 @@
     <string name="register_unsuccessed_sure_to_exit">注册未完成,确定退出?</string>
     <string name="please_select_currency">请选择币别</string>
     <string name="public_inquiry_taxrate">税率(%)</string>
+    <string name="have_knew">我知道了</string>
+    <string name="notice_cannot_quote">您当前登录的账套未开通B2B服务,无法报价,请切换账套后重试</string>
 </resources>

+ 2 - 0
app_modular/appworks/src/main/res/values-zh-rTW/strings.xml

@@ -132,4 +132,6 @@
     <string name="register_unsuccessed_sure_to_exit">注册未完成,确定退出?</string>
     <string name="please_select_currency">请选择币别</string>
     <string name="public_inquiry_taxrate">税率(%)</string>
+    <string name="have_knew">我知道了</string>
+    <string name="notice_cannot_quote">您当前登录的账套未开通B2B服务,无法报价,请切换账套后重试</string>
 </resources>

+ 2 - 0
app_modular/appworks/src/main/res/values/strings.xml

@@ -165,6 +165,8 @@
     <string name="register_unsuccessed_sure_to_exit">注册未完成,确定退出?</string>
     <string name="please_select_currency">请选择币别</string>
     <string name="public_inquiry_taxrate">税率(%)</string>
+    <string name="have_knew">我知道了</string>
+    <string name="notice_cannot_quote">您当前登录的账套未开通B2B服务,无法报价,请切换账套后重试</string>
 
 
 </resources>