package com.cnd3b.restcontroller.customer.usercenter.teammsg; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.cnd3b.common.Controller; import com.cnd3b.common.D3bException; import com.cnd3b.common.data.Row; import com.cnd3b.common.data.Rows; import com.cnd3b.common.data.RowsMap; import com.cnd3b.common.data.SQLFactory; import com.cnd3b.common.parameter.parameter; import com.cnd3b.utility.Encryption; import com.cnd3b.utility.Sms; import p2.pao.PaoRemote; import p2.pao.PaoSetRemote; import p2.util.P2Exception; import java.util.*; public class teammsg extends Controller { public teammsg(JSONObject content) { super(content); } /** * 经销商账号列表查询 * * @return */ public String query_userList() { SQLFactory sqlFactory = new SQLFactory(this, "经销商账号列表查询"); sqlFactory.addParameter("siteid", siteid); sqlFactory.addParameter("tagentsid", tagentsid); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); SQLFactory subusersql = new SQLFactory(this, "下级账号查询"); subusersql.addParameter("siteid", siteid); subusersql.addParameter_in("fparentid", rows.toArrayList("tenterprise_userid")); RowsMap map = dbConnect.runSqlQuery(subusersql.getSQL()).toRowsMap("fparentid"); RowsMap attinfosMap = getAttachmentUrl("tenterprise_users", rows.toArrayList("tenterprise_userid"), "headportrait"); for (Row row : rows) { String tenterprise_userid = row.getString("tenterprise_userid"); Rows subuserrows = map.get(tenterprise_userid); String[] subusers = subuserrows.toArray("tenterprise_userid"); row.put("subusers", subusers); for (Row subuserrow : subuserrows) { subuserrow.put("attinfos", attinfosMap.get(subuserrow.getString("tenterprise_userid"))); } row.put("subusermsgs", subuserrows); row.put("attinfos", attinfosMap.get(tenterprise_userid)); } return getSucReturnObject().setData(rows).saveToDataPool().toString(); } /** * 经销商账号信息修改 * * @return */ public String update_userMsg() throws D3bException, P2Exception { long tenterprise_userid = content.getLongValue("tenterprise_userid");//账号ID String fname = content.getString("fname", "tenterprise_users.fname", "账号名称");//姓名 String frole = content.getString("frole", "tenterprise_users.frole", "身份/职位");//职位 String fphonenumber = content.getString("fphonenumber", "tenterprise_users.fphonenumber", "手机号码");//手机号 boolean fisused = content.getBoolean("fisused"); JSONArray subusersArray = content.getJSONArray("subusers"); boolean toBeAdded = false; PaoSetRemote tenterprise_usersSet = getP2ServerSystemPaoSet("tenterprise_users", "siteid='" + siteid + "' and tagentsid='" + tagentsid + "' and tenterprise_userid='" + tenterprise_userid + "'"); PaoRemote pao = null; if (tenterprise_userid <= 0 || tenterprise_usersSet.isEmpty()) { pao = tenterprise_usersSet.addAtEnd(); pao.setValue("tagentsid", tagentsid, 11L); pao.setValue("siteid", siteid, 11L); pao.setValue("fusertype", "经销商", 11L); tenterprise_userid = pao.getUniqueIDValue(); toBeAdded = true; } else { pao = tenterprise_usersSet.getPao(0); } pao.setValue("fisused", fisused, 11L); pao.setValue("fname", fname, 11L); pao.setValue("frole", frole, 11L); pao.setValue("fphonenumber", fphonenumber, 11L); pao.setValue("changeby", username, 11L); pao.setValue("changedate", getDateTime(), 11L); /** * 查询下级账号,如不存在,则新增下级账号 */ PaoSetRemote tenterprise_userdetailSet = pao.getPaoSet("$tenterprise_userdetail", "tenterprise_userdetail", "siteid=:siteid and fparentid=:tenterprise_userid"); HashMap paoMap = getPaoMap(tenterprise_userdetailSet, "fsubid"); /** * 用以判断是否需要将表体行删除 */ ArrayList donotdeleteid = new ArrayList<>(); Iterator subuserlistit = subusersArray.iterator(); ArrayList distinctid = new ArrayList<>(); while (subuserlistit.hasNext()) { String fsubid = String.valueOf(subuserlistit.next()); if (distinctid.contains(fsubid)) { continue; } else { distinctid.add(fsubid); } PaoRemote subuserpao = null; if (!paoMap.containsKey(fsubid)) { subuserpao = tenterprise_userdetailSet.addAtEnd(); subuserpao.setValue("siteid", siteid, 11L);//企业ID subuserpao.setValue("fparentid", tenterprise_userid, 11L);//账号ID subuserpao.setValue("fsubid", fsubid, 11L);//下级账号ID subuserpao.setValue("createby", username, 11L);//录入人 subuserpao.setValue("createdate", getDateTime(), 11L);//录入时间 } else { donotdeleteid.add(fsubid); subuserpao = paoMap.get(fsubid); } subuserpao.setValue("changeby", username, 11L);//修改人 subuserpao.setValue("changedate", getDateTime(), 11L);//修改时间 } /** * 删除多余的行 */ for (String fsubid : paoMap.keySet()) { if (!donotdeleteid.contains(fsubid)) { if (!paoMap.get(fsubid).isModified()) { paoMap.get(fsubid).delete(); } } } tenterprise_usersSet.save(); //修改账号姓名等缓存信息 Row row = parameter.userIdList.get(tenterprise_userid); row.put("fname", fname); parameter.userIdList.put(userid, row); dbConnect.runSqlUpdate("update timdialogusers set fname='" + fname + "'where siteid='" + siteid + "' and tenterprise_userid='" + tenterprise_userid + "'"); if (toBeAdded) { createSystemMessage("团队", "团队加入通知", "恭喜加入" + getAgent(tagentsid).getString("fbrand") + "团队", tenterprise_userid); } return getSucReturnObject().toString(); } /** * 转让主账号功能 * * @return */ public String changeAdministrator() throws D3bException, P2Exception { String fpassword = content.getString("fpassword");//验证码 long tenterprise_userid = content.getLong("tenterprise_userid");//转让账号ID int resultcode; if (!parameter.changeAdministrator_passwordmap.containsKey(tenterprise_userid)) { resultcode = 1;//没有获取验证码 } else if (parameter.changeAdministratorpassword_date.get(tenterprise_userid).before(Calendar.getInstance().getTime())) { resultcode = 2;//验证码已失效 } else { //系统验证码 String syspassword = parameter.changeAdministrator_passwordmap.get(tenterprise_userid); if (fpassword.equals(new Encryption().Encode_MD5(syspassword))) { resultcode = 0;//验证码正确 } else { resultcode = 3;//验证码错误 } } if (resultcode == 0) { parameter.changeAdministrator_passwordmap.remove(tenterprise_userid); parameter.changeAdministratorpassword_date.remove(tenterprise_userid); String sql1 = "update tenterprise_users set fisadministrator=0 where siteid='" + siteid + "' and tenterprise_userid=" + userid; String sql2 = "update tenterprise_users set fisadministrator=1 where siteid='" + siteid + "' and tenterprise_userid=" + tenterprise_userid; ArrayList sqllist = new ArrayList<>(); sqllist.add(sql1); sqllist.add(sql2); String status = dbConnect.runSqlUpdate(sqllist); if ("true".equals(status)) { /** * 发送成功转让消息 */ createSystemMessage("团队", "管理员变更", "您的管理者权限已转出", userid); createSystemMessage("团队", "管理员变更", "您已成为当前团队管理者", tenterprise_userid); /** * 更新管理员缓存 */ if (parameter.userIdList.containsKey(userid)) { Row oldadministrator = parameter.userIdList.get(userid); oldadministrator.put("fisadministrator", 0); parameter.userIdList.put(userid, oldadministrator); } if (parameter.userIdList.containsKey(tenterprise_userid)) { Row newadministrator = parameter.userIdList.get(tenterprise_userid); newadministrator.put("fisadministrator", 1); parameter.userIdList.put(tenterprise_userid, newadministrator); } return getSucReturnObject().toString(); } else { return getErrReturnObject().setErrMsg(status).toString(); } } else { String msg = ""; if (resultcode == 1) { msg = "请先获取验证码!"; } else if (resultcode == 2) { msg = "验证码已失效,请重新获取!"; } else if (resultcode == 3) { msg = "无效的验证码!"; } return getErrReturnObject().setErrMsg(msg).toString(); } } /** * 转让验证码获取 * * @return */ public String getPassword() throws D3bException, P2Exception { long tenterprise_userid = content.getLong("tenterprise_userid");//转让账号ID String fphonenumber = getUser(tenterprise_userid).getString("fphonenumber"); String password = createPassWord(); parameter.changeAdministrator_passwordmap.put(tenterprise_userid, password); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, 5); parameter.changeAdministratorpassword_date.put(tenterprise_userid, calendar.getTime()); if (parameter.isdebug()) { return getSucReturnObject().setData("验证码:" + password).toString(); } else { Sms sms = new Sms(); sms.sendOutMsg(fphonenumber, password); return getSucReturnObject().setData("验证码已发送,请注意查收!").toString(); } } private String createPassWord() { String allChar = "1234567890"; StringBuffer sb = new StringBuffer(); Random random = new Random(); for (int i = 0; i < 6; i++) { sb.append(allChar.charAt(random.nextInt(allChar.length()))); } if (parameter.changeAdministrator_passwordmap.containsValue(sb.toString())) { return createPassWord(); } else { return sb.toString(); } } /** * 团队成员启用停用 * * @return */ public String updateusedstate() throws D3bException, P2Exception { long tenterprise_userid = content.getLongValue("tenterprise_userid");//账号ID boolean fisused = content.getBooleanValue("fisused");//是否启用 String status = dbConnect.runSqlUpdate("update tenterprise_users set fisused='" + (fisused ? 1 : 0) + "' where siteid='" + siteid + "' and tagentsid='" + tagentsid + "' and tenterprise_userid='" + tenterprise_userid + "'"); if ("true".equals(status)) { return getSucReturnObject().toString(); } else { return getErrReturnObject().setErrMsg(status).toString(); } } /** * 团队加入申请审核 * * @return */ public String checkEntryTeamApply() throws P2Exception { boolean isPass = content.getBooleanValue("isPass"); //加入商户团队申请表id long tagentteamapplyid = content.getLong("tagentteamapplyid"); //企业账号表id long tenterprise_userid = content.getLong("tenterprise_userid"); PaoSetRemote paoSetRemote = getP2ServerSystemPaoSet("tagentteamapply", "tagentteamapplyid = '" + tagentteamapplyid + "'"); if (!paoSetRemote.isEmpty()) { PaoRemote paoRemote = paoSetRemote.getPao(0); PaoSetRemote paoSetRemote_tenterprise = paoRemote.getPaoSet("tenterprise_users", "tenterprise_users", "tenterprise_userid = '" + tenterprise_userid + "'"); if (paoSetRemote_tenterprise.isEmpty()) { return getErrReturnObject().setErrMsg("未找到申请人信息").toString(); } PaoRemote paoRemote_tenterprise = paoSetRemote_tenterprise.getPao(0); //拒绝,只更新商户团队申请表 if (!isPass) { paoRemote.setValue("fstatus", "拒绝", 11L); paoSetRemote.save(); createSystemMessage("团队", "团队加入通知", "申请不通过!", tenterprise_userid); return getSucReturnObject().setData("拒绝成功").toString(); } else { paoRemote.setValue("fstatus", "审核", 11L); String sql = "SELECT ftype FROM tagents WHERE tagentsid = '" + paoRemote_tenterprise.getString("tagentsid") + "'"; Rows rows = dbConnect.runSqlQuery(sql); String ftype = ""; if (!rows.isEmpty()) { ftype = rows.get(0).getString("ftype"); } //如果是个人 if (ftype.equals("个人")) { paoRemote_tenterprise.getPaoSet("tagents", "tagents", "tagentsid=:tagentsid").getPao(0).delete(); paoRemote_tenterprise.setValue("tagentsid", tagentsid, 11L); paoRemote_tenterprise.setValue("fisadministrator", false, 11L); } else { PaoRemote pao = paoSetRemote_tenterprise.addAtEnd(); pao.setValue("SITEID", paoRemote_tenterprise.getString("SITEID"), 11L); pao.setValue("FNAME", paoRemote_tenterprise.getString("FNAME"), 11L); pao.setValue("FPHONENUMBER", paoRemote_tenterprise.getString("FPHONENUMBER"), 11L); pao.setValue("fusertype", "经销商"); pao.setValue("fisadministrator", false, 11L); pao.setValue("tagentsid", tagentsid, 11L); paoRemote.setValue("fuserid", pao.getUniqueIDValue(), 11L); tenterprise_userid = pao.getUniqueIDValue(); } paoSetRemote.save(); createSystemMessage("团队", "团队加入通知", "恭喜加入" + getAgent(tagentsid).getString("fbrand"), tenterprise_userid); return getSucReturnObject().setData("审核成功").toString(); } } else { return getErrReturnObject().setErrMsg("未找到申请记录").toString(); } } /** * 获取团队加入申请列表 * * @return */ public String getEntryTeamApplyList() { SQLFactory sqlFactory = new SQLFactory(this, "团队加入申请列表", pageSize, pageNumber, "createdate"); sqlFactory.addParameter("tagentsid", tagentsid); sqlFactory.addParameter("siteid", siteid); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); for (Row row : rows) { row.put("attinfos", getAttachmentUrl("tenterprise_users", row.getString("tenterprise_userid"))); } return getSucReturnObject().setDataByPaging(rows).preloading(1).toString(); } }