teammsg.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  1. package com.cnd3b.restcontroller.customer.usercenter.teammsg;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.cnd3b.common.Controller;
  5. import com.cnd3b.common.D3bException;
  6. import com.cnd3b.common.data.Row;
  7. import com.cnd3b.common.data.Rows;
  8. import com.cnd3b.common.data.RowsMap;
  9. import com.cnd3b.common.data.SQLFactory;
  10. import com.cnd3b.common.parameter.parameter;
  11. import com.cnd3b.utility.Encryption;
  12. import com.cnd3b.utility.Sms;
  13. import p2.pao.PaoRemote;
  14. import p2.pao.PaoSetRemote;
  15. import p2.util.P2Exception;
  16. import java.util.*;
  17. public class teammsg extends Controller {
  18. public teammsg(JSONObject content) {
  19. super(content);
  20. }
  21. /**
  22. * 经销商账号列表查询
  23. *
  24. * @return
  25. */
  26. public String query_userList() {
  27. SQLFactory sqlFactory = new SQLFactory(this, "经销商账号列表查询");
  28. sqlFactory.addParameter("siteid", siteid);
  29. sqlFactory.addParameter("tagentsid", tagentsid);
  30. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  31. SQLFactory subusersql = new SQLFactory(this, "下级账号查询");
  32. subusersql.addParameter("siteid", siteid);
  33. subusersql.addParameter_in("fparentid", rows.toArrayList("tenterprise_userid"));
  34. RowsMap map = dbConnect.runSqlQuery(subusersql.getSQL()).toRowsMap("fparentid");
  35. RowsMap attinfosMap = getAttachmentUrl("tenterprise_users", rows.toArrayList("tenterprise_userid"), "headportrait");
  36. for (Row row : rows) {
  37. String tenterprise_userid = row.getString("tenterprise_userid");
  38. Rows subuserrows = map.get(tenterprise_userid);
  39. String[] subusers = subuserrows.toArray("tenterprise_userid");
  40. row.put("subusers", subusers);
  41. for (Row subuserrow : subuserrows) {
  42. subuserrow.put("attinfos", attinfosMap.get(subuserrow.getString("tenterprise_userid")));
  43. }
  44. row.put("subusermsgs", subuserrows);
  45. row.put("attinfos", attinfosMap.get(tenterprise_userid));
  46. }
  47. return getSucReturnObject().setData(rows).saveToDataPool().toString();
  48. }
  49. /**
  50. * 经销商账号信息修改
  51. *
  52. * @return
  53. */
  54. public String update_userMsg() throws D3bException, P2Exception {
  55. long tenterprise_userid = content.getLongValue("tenterprise_userid");//账号ID
  56. String fname = content.getString("fname", "tenterprise_users.fname", "账号名称");//姓名
  57. String frole = content.getString("frole", "tenterprise_users.frole", "身份/职位");//职位
  58. String fphonenumber = content.getString("fphonenumber", "tenterprise_users.fphonenumber", "手机号码");//手机号
  59. boolean fisused = content.getBoolean("fisused");
  60. JSONArray subusersArray = content.getJSONArray("subusers");
  61. boolean toBeAdded = false;
  62. PaoSetRemote tenterprise_usersSet = getP2ServerSystemPaoSet("tenterprise_users", "siteid='" + siteid + "' and tagentsid='" + tagentsid + "' and tenterprise_userid='" + tenterprise_userid + "'");
  63. PaoRemote pao = null;
  64. if (tenterprise_userid <= 0 || tenterprise_usersSet.isEmpty()) {
  65. pao = tenterprise_usersSet.addAtEnd();
  66. pao.setValue("tagentsid", tagentsid, 11L);
  67. pao.setValue("siteid", siteid, 11L);
  68. pao.setValue("fusertype", "经销商", 11L);
  69. tenterprise_userid = pao.getUniqueIDValue();
  70. toBeAdded = true;
  71. } else {
  72. pao = tenterprise_usersSet.getPao(0);
  73. }
  74. pao.setValue("fisused", fisused, 11L);
  75. pao.setValue("fname", fname, 11L);
  76. pao.setValue("frole", frole, 11L);
  77. pao.setValue("fphonenumber", fphonenumber, 11L);
  78. pao.setValue("changeby", username, 11L);
  79. pao.setValue("changedate", getDateTime(), 11L);
  80. /**
  81. * 查询下级账号,如不存在,则新增下级账号
  82. */
  83. PaoSetRemote tenterprise_userdetailSet = pao.getPaoSet("$tenterprise_userdetail", "tenterprise_userdetail", "siteid=:siteid and fparentid=:tenterprise_userid");
  84. HashMap<String, PaoRemote> paoMap = getPaoMap(tenterprise_userdetailSet, "fsubid");
  85. /**
  86. * 用以判断是否需要将表体行删除
  87. */
  88. ArrayList<String> donotdeleteid = new ArrayList<>();
  89. Iterator subuserlistit = subusersArray.iterator();
  90. ArrayList<String> distinctid = new ArrayList<>();
  91. while (subuserlistit.hasNext()) {
  92. String fsubid = String.valueOf(subuserlistit.next());
  93. if (distinctid.contains(fsubid)) {
  94. continue;
  95. } else {
  96. distinctid.add(fsubid);
  97. }
  98. PaoRemote subuserpao = null;
  99. if (!paoMap.containsKey(fsubid)) {
  100. subuserpao = tenterprise_userdetailSet.addAtEnd();
  101. subuserpao.setValue("siteid", siteid, 11L);//企业ID
  102. subuserpao.setValue("fparentid", tenterprise_userid, 11L);//账号ID
  103. subuserpao.setValue("fsubid", fsubid, 11L);//下级账号ID
  104. subuserpao.setValue("createby", username, 11L);//录入人
  105. subuserpao.setValue("createdate", getDateTime(), 11L);//录入时间
  106. } else {
  107. donotdeleteid.add(fsubid);
  108. subuserpao = paoMap.get(fsubid);
  109. }
  110. subuserpao.setValue("changeby", username, 11L);//修改人
  111. subuserpao.setValue("changedate", getDateTime(), 11L);//修改时间
  112. }
  113. /**
  114. * 删除多余的行
  115. */
  116. for (String fsubid : paoMap.keySet()) {
  117. if (!donotdeleteid.contains(fsubid)) {
  118. if (!paoMap.get(fsubid).isModified()) {
  119. paoMap.get(fsubid).delete();
  120. }
  121. }
  122. }
  123. tenterprise_usersSet.save();
  124. //修改账号姓名等缓存信息
  125. Row row = parameter.userIdList.get(tenterprise_userid);
  126. row.put("fname", fname);
  127. parameter.userIdList.put(userid, row);
  128. dbConnect.runSqlUpdate("update timdialogusers set fname='" + fname + "'where siteid='" + siteid + "' and tenterprise_userid='" + tenterprise_userid + "'");
  129. if (toBeAdded) {
  130. createSystemMessage("团队", "团队加入通知", "恭喜加入" + getAgent(tagentsid).getString("fbrand") + "团队", tenterprise_userid);
  131. }
  132. return getSucReturnObject().toString();
  133. }
  134. /**
  135. * 转让主账号功能
  136. *
  137. * @return
  138. */
  139. public String changeAdministrator() throws D3bException, P2Exception {
  140. String fpassword = content.getString("fpassword");//验证码
  141. long tenterprise_userid = content.getLong("tenterprise_userid");//转让账号ID
  142. int resultcode;
  143. if (!parameter.changeAdministrator_passwordmap.containsKey(tenterprise_userid)) {
  144. resultcode = 1;//没有获取验证码
  145. } else if (parameter.changeAdministratorpassword_date.get(tenterprise_userid).before(Calendar.getInstance().getTime())) {
  146. resultcode = 2;//验证码已失效
  147. } else {
  148. //系统验证码
  149. String syspassword = parameter.changeAdministrator_passwordmap.get(tenterprise_userid);
  150. if (fpassword.equals(new Encryption().Encode_MD5(syspassword))) {
  151. resultcode = 0;//验证码正确
  152. } else {
  153. resultcode = 3;//验证码错误
  154. }
  155. }
  156. if (resultcode == 0) {
  157. parameter.changeAdministrator_passwordmap.remove(tenterprise_userid);
  158. parameter.changeAdministratorpassword_date.remove(tenterprise_userid);
  159. String sql1 = "update tenterprise_users set fisadministrator=0 where siteid='" + siteid + "' and tenterprise_userid=" + userid;
  160. String sql2 = "update tenterprise_users set fisadministrator=1 where siteid='" + siteid + "' and tenterprise_userid=" + tenterprise_userid;
  161. ArrayList<String> sqllist = new ArrayList<>();
  162. sqllist.add(sql1);
  163. sqllist.add(sql2);
  164. String status = dbConnect.runSqlUpdate(sqllist);
  165. if ("true".equals(status)) {
  166. /**
  167. * 发送成功转让消息
  168. */
  169. createSystemMessage("团队", "管理员变更", "您的管理者权限已转出", userid);
  170. createSystemMessage("团队", "管理员变更", "您已成为当前团队管理者", tenterprise_userid);
  171. /**
  172. * 更新管理员缓存
  173. */
  174. if (parameter.userIdList.containsKey(userid)) {
  175. Row oldadministrator = parameter.userIdList.get(userid);
  176. oldadministrator.put("fisadministrator", 0);
  177. parameter.userIdList.put(userid, oldadministrator);
  178. }
  179. if (parameter.userIdList.containsKey(tenterprise_userid)) {
  180. Row newadministrator = parameter.userIdList.get(tenterprise_userid);
  181. newadministrator.put("fisadministrator", 1);
  182. parameter.userIdList.put(tenterprise_userid, newadministrator);
  183. }
  184. return getSucReturnObject().toString();
  185. } else {
  186. return getErrReturnObject().setErrMsg(status).toString();
  187. }
  188. } else {
  189. String msg = "";
  190. if (resultcode == 1) {
  191. msg = "请先获取验证码!";
  192. } else if (resultcode == 2) {
  193. msg = "验证码已失效,请重新获取!";
  194. } else if (resultcode == 3) {
  195. msg = "无效的验证码!";
  196. }
  197. return getErrReturnObject().setErrMsg(msg).toString();
  198. }
  199. }
  200. /**
  201. * 转让验证码获取
  202. *
  203. * @return
  204. */
  205. public String getPassword() throws D3bException, P2Exception {
  206. long tenterprise_userid = content.getLong("tenterprise_userid");//转让账号ID
  207. String fphonenumber = getUser(tenterprise_userid).getString("fphonenumber");
  208. String password = createPassWord();
  209. parameter.changeAdministrator_passwordmap.put(tenterprise_userid, password);
  210. Calendar calendar = Calendar.getInstance();
  211. calendar.add(Calendar.MINUTE, 5);
  212. parameter.changeAdministratorpassword_date.put(tenterprise_userid, calendar.getTime());
  213. if (parameter.isdebug()) {
  214. return getSucReturnObject().setData("验证码:" + password).toString();
  215. } else {
  216. Sms sms = new Sms();
  217. sms.sendOutMsg(fphonenumber, password);
  218. return getSucReturnObject().setData("验证码已发送,请注意查收!").toString();
  219. }
  220. }
  221. private String createPassWord() {
  222. String allChar = "1234567890";
  223. StringBuffer sb = new StringBuffer();
  224. Random random = new Random();
  225. for (int i = 0; i < 6; i++) {
  226. sb.append(allChar.charAt(random.nextInt(allChar.length())));
  227. }
  228. if (parameter.changeAdministrator_passwordmap.containsValue(sb.toString())) {
  229. return createPassWord();
  230. } else {
  231. return sb.toString();
  232. }
  233. }
  234. /**
  235. * 团队成员启用停用
  236. *
  237. * @return
  238. */
  239. public String updateusedstate() throws D3bException, P2Exception {
  240. long tenterprise_userid = content.getLongValue("tenterprise_userid");//账号ID
  241. boolean fisused = content.getBooleanValue("fisused");//是否启用
  242. String status = dbConnect.runSqlUpdate("update tenterprise_users set fisused='" + (fisused ? 1 : 0) + "' where siteid='" + siteid + "' and tagentsid='" + tagentsid + "' and tenterprise_userid='" + tenterprise_userid + "'");
  243. if ("true".equals(status)) {
  244. return getSucReturnObject().toString();
  245. } else {
  246. return getErrReturnObject().setErrMsg(status).toString();
  247. }
  248. }
  249. /**
  250. * 团队加入申请审核
  251. *
  252. * @return
  253. */
  254. public String checkEntryTeamApply() throws P2Exception {
  255. boolean isPass = content.getBooleanValue("isPass");
  256. //加入商户团队申请表id
  257. long tagentteamapplyid = content.getLong("tagentteamapplyid");
  258. //企业账号表id
  259. long tenterprise_userid = content.getLong("tenterprise_userid");
  260. PaoSetRemote paoSetRemote = getP2ServerSystemPaoSet("tagentteamapply", "tagentteamapplyid = '" + tagentteamapplyid + "'");
  261. if (!paoSetRemote.isEmpty()) {
  262. PaoRemote paoRemote = paoSetRemote.getPao(0);
  263. PaoSetRemote paoSetRemote_tenterprise = paoRemote.getPaoSet("tenterprise_users", "tenterprise_users", "tenterprise_userid = '" + tenterprise_userid + "'");
  264. if (paoSetRemote_tenterprise.isEmpty()) {
  265. return getErrReturnObject().setErrMsg("未找到申请人信息").toString();
  266. }
  267. PaoRemote paoRemote_tenterprise = paoSetRemote_tenterprise.getPao(0);
  268. //拒绝,只更新商户团队申请表
  269. if (!isPass) {
  270. paoRemote.setValue("fstatus", "拒绝", 11L);
  271. paoSetRemote.save();
  272. createSystemMessage("团队", "团队加入通知", "申请不通过!", tenterprise_userid);
  273. return getSucReturnObject().setData("拒绝成功").toString();
  274. } else {
  275. paoRemote.setValue("fstatus", "审核", 11L);
  276. String sql = "SELECT ftype FROM tagents WHERE tagentsid = '" + paoRemote_tenterprise.getString("tagentsid") + "'";
  277. Rows rows = dbConnect.runSqlQuery(sql);
  278. String ftype = "";
  279. if (!rows.isEmpty()) {
  280. ftype = rows.get(0).getString("ftype");
  281. }
  282. //如果是个人
  283. if (ftype.equals("个人")) {
  284. paoRemote_tenterprise.getPaoSet("tagents", "tagents", "tagentsid=:tagentsid").getPao(0).delete();
  285. paoRemote_tenterprise.setValue("tagentsid", tagentsid, 11L);
  286. paoRemote_tenterprise.setValue("fisadministrator", false, 11L);
  287. } else {
  288. PaoRemote pao = paoSetRemote_tenterprise.addAtEnd();
  289. pao.setValue("SITEID", paoRemote_tenterprise.getString("SITEID"), 11L);
  290. pao.setValue("FNAME", paoRemote_tenterprise.getString("FNAME"), 11L);
  291. pao.setValue("FPHONENUMBER", paoRemote_tenterprise.getString("FPHONENUMBER"), 11L);
  292. pao.setValue("fusertype", "经销商");
  293. pao.setValue("fisadministrator", false, 11L);
  294. pao.setValue("tagentsid", tagentsid, 11L);
  295. paoRemote.setValue("fuserid", pao.getUniqueIDValue(), 11L);
  296. tenterprise_userid = pao.getUniqueIDValue();
  297. }
  298. paoSetRemote.save();
  299. createSystemMessage("团队", "团队加入通知", "恭喜加入" + getAgent(tagentsid).getString("fbrand"), tenterprise_userid);
  300. return getSucReturnObject().setData("审核成功").toString();
  301. }
  302. } else {
  303. return getErrReturnObject().setErrMsg("未找到申请记录").toString();
  304. }
  305. }
  306. /**
  307. * 获取团队加入申请列表
  308. *
  309. * @return
  310. */
  311. public String getEntryTeamApplyList() {
  312. SQLFactory sqlFactory = new SQLFactory(this, "团队加入申请列表", pageSize, pageNumber, "createdate");
  313. sqlFactory.addParameter("tagentsid", tagentsid);
  314. sqlFactory.addParameter("siteid", siteid);
  315. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  316. for (Row row : rows) {
  317. row.put("attinfos", getAttachmentUrl("tenterprise_users", row.getString("tenterprise_userid")));
  318. }
  319. return getSucReturnObject().setDataByPaging(rows).preloading(1).toString();
  320. }
  321. }