team.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. package restcontroller.sale.team;
  2. import beans.datacontrllog.DataContrlLog;
  3. import beans.user.User;
  4. import com.alibaba.fastjson2.JSONArray;
  5. import com.alibaba.fastjson2.JSONObject;
  6. import common.Controller;
  7. import common.YosException;
  8. import common.annotation.*;
  9. import common.data.*;
  10. import common.data.db.SQLList;
  11. import common.password.UserPassword;
  12. import org.apache.commons.lang.ArrayUtils;
  13. import restcontroller.R;
  14. import java.util.ArrayList;
  15. import java.util.Objects;
  16. @API(title = "团队管理")
  17. public class team extends Controller {
  18. public team(JSONObject content) throws YosException {
  19. super(content);
  20. }
  21. @API(title = "团队账号列表查询", apiversion = R.ID20221107094704.v1.class)
  22. @CACHEING
  23. public String query_teamList() throws YosException {
  24. /*
  25. 过滤条件设置
  26. */
  27. StringBuffer where = new StringBuffer(" 1=1 ");
  28. if (content.containsKey("where")) {
  29. JSONObject whereObject = content.getJSONObject("where");
  30. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  31. where.append(" and(");
  32. where.append("t1.name like'%").append(whereObject.getString("condition")).append("%' ");
  33. where.append("or t1.phonenumber like'%").append(whereObject.getString("condition")).append("%' ");
  34. where.append("or t1.position like'%").append(whereObject.getString("condition")).append("%' ");
  35. where.append("or t2.accountno like'%").append(whereObject.getString("condition")).append("%' ");
  36. where.append(")");
  37. }
  38. }
  39. // SQLFactory sqlFactory = new SQLFactory(this, "团队列表查询", pageSize, pageNumber, pageSorting);
  40. // sqlFactory.addParameter("siteid", siteid);
  41. // sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  42. // sqlFactory.addParameter_SQL("where", where);
  43. // Rows hrrows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  44. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_enterprise_hr", "sys_enterprise_hrid", "name", "position", "isleader", "phonenumber", "remarks", "email", "userid", "authmodel", "isagent");
  45. querySQL.setTableAlias("t1");
  46. querySQL.addJoinTable(JOINTYPE.inner, "sys_users", "t2", "t1.userid = t2.userid and t2.status!='DELETED'", "accountno");
  47. querySQL.addJoinTable(JOINTYPE.left, "sys_usertrialperiod", "t4", "t4.userid=t1.userid and t4.siteid=t1.siteid");
  48. querySQL.addQueryFields("begdate", "ifnull(t4.begdate, '')");
  49. querySQL.addQueryFields("enddate", "ifnull(t4.enddate, '')");
  50. querySQL.setSiteid(siteid);
  51. querySQL.setWhere("t1.sys_enterpriseid", sys_enterpriseid);
  52. querySQL.setWhere(where.toString());
  53. querySQL.setPage(pageSize, pageNumber);
  54. Rows hrrows = querySQL.query();
  55. SQLFactory roleFactory = new SQLFactory(this, "团队成员已授权角色查询");
  56. roleFactory.addParameter("siteid", siteid);
  57. roleFactory.addParameter_in("userid", hrrows.toArray("userid"));
  58. RowsMap roleRolesMap = dbConnect.runSqlQuery(roleFactory.getSQL()).toRowsMap("userid");
  59. SQLFactory factory = new SQLFactory(this, "查询付费版本");
  60. factory.addParameter("siteid", siteid);
  61. factory.addParameter_in("userid", hrrows.toArray("userid"));
  62. RowsMap factoryMap = dbConnect.runSqlQuery(factory.getSQL()).toRowsMap("userid");
  63. QuerySQL orderclue_authQuery = SQLFactory.createQuerySQL(this, "sat_orderclue_auth", "hrid").setTableAlias("t1");
  64. orderclue_authQuery.addJoinTable(JOINTYPE.inner, "sat_orderclue", "t2", "t1.sat_orderclueid=t2.sat_orderclueid and t2.status in('待跟进','跟进中')");
  65. orderclue_authQuery.addQueryFields("count", "count(0)");
  66. orderclue_authQuery.setSiteid(siteid);
  67. orderclue_authQuery.setWhere("t1.sys_enterpriseid", sys_enterpriseid);
  68. orderclue_authQuery.setWhere("t1.isused", true);
  69. orderclue_authQuery.setWhere("t1.hrid", hrrows.toArrayList("sys_enterprise_hrid"));
  70. orderclue_authQuery.addGroupBy("hrid");
  71. RowsMap orderclue_authRowsMap = orderclue_authQuery.query().toRowsMap("hrid");
  72. RowsMap attinfosmap = getAttachmentUrl("sys_users", hrrows.toArrayList("userid", new ArrayList<>()));
  73. for (Row row : hrrows) {
  74. String sys_enterprise_hrid = row.getString("sys_enterprise_hrid");
  75. if (orderclue_authRowsMap.containsKey(sys_enterprise_hrid)) {
  76. row.put("ordercluecount", orderclue_authRowsMap.get(sys_enterprise_hrid).get(0).getLong("count"));//在手线索数量
  77. } else {
  78. row.put("ordercluecount", 0);
  79. }
  80. String userid = row.getString("userid");
  81. if (roleRolesMap.get(userid).isNotEmpty()) {
  82. row.put("roleid", roleRolesMap.get(userid).get(0).getLong("roleid"));
  83. row.put("rolename", roleRolesMap.get(userid).get(0).getString("rolename"));
  84. } else {
  85. row.put("roleid", "");
  86. row.put("rolename", "");
  87. }
  88. row.put("attinfos", attinfosmap.get(userid));
  89. Rows partitionnameRows = factoryMap.get(row.getString("userid"));
  90. row.put("partitionname", partitionnameRows);
  91. if (partitionnameRows.isNotEmpty()) {
  92. row.put("status", "已付费");
  93. } else {
  94. row.put("status", "未付费");
  95. }
  96. }
  97. return getSucReturnObject().setData(hrrows).toString();
  98. }
  99. @API(title = "团队新增或修改")
  100. @CACHEING_CLEAN(cms = {@cm(clazz = team.class, method = {"query_teamList"})})
  101. public String insertormodify_team() throws YosException {
  102. long sys_enterprise_hrid = content.getLongValue("sys_enterprise_hrid");//新增时传0
  103. String name = content.getString("name");
  104. String phonenumber = content.getString("phonenumber");
  105. String email = content.getString("email");
  106. String position = content.getString("position");
  107. String remarks = content.getString("remarks");
  108. JSONArray roleidArray = content.getJSONArray("roleid");
  109. if (roleidArray == null) {
  110. roleidArray = new JSONArray();
  111. }
  112. String password = content.getString("password");//md5加密
  113. boolean userdatalimit = content.getBoolean("userdatalimit");//仅可查询本人客户、客户订单
  114. boolean storedatalimit = content.getBoolean("storedatalimit");//仅可处理门店数据
  115. ArrayList<Long> newroleidList = new ArrayList<>();
  116. for (Object o : roleidArray) {
  117. newroleidList.add(Long.parseLong(String.valueOf(o)));
  118. }
  119. int usertype = 22;//经销商子账号用户类型
  120. Rows sys_enterprise_hrRows = dbConnect.runSqlQuery("select userid from sys_enterprise_hr where siteid='" + siteid + "'and sys_enterpriseid='" + sys_enterpriseid + "' and sys_enterprise_hrid=" + sys_enterprise_hrid);
  121. Row returnRow;
  122. if (sys_enterprise_hrid <= 0 || sys_enterprise_hrRows.isEmpty()) {
  123. Rows agentRows = dbConnect.runSqlQuery("select * from sa_agents where siteid='" + siteid + "' and sys_enterpriseid=" + sys_enterpriseid);
  124. String accountno = agentRows.get(0).getString("agentnum");
  125. int count = dbConnect.runSqlQuery(0, "SELECT count(1) count from sys_enterprise_hr WHERE sys_enterpriseid=" + sys_enterpriseid + " and isleader=0").getInteger("count");
  126. String paddedNumber = String.format("%0" + 3 + "d", count + 1);
  127. accountno = accountno + "-" + paddedNumber;
  128. Long id = User.createUser(this, sys_enterpriseid, accountno, name, phonenumber, false, position, usertype, ArrayUtils.toPrimitive(newroleidList.toArray(new Long[]{})), remarks);
  129. UpdateSQL sysEnterpriseHr = SQLFactory.createUpdateSQL(this, "sys_enterprise_hr");
  130. sysEnterpriseHr.setValue("userdatalimit", userdatalimit);
  131. sysEnterpriseHr.setValue("storedatalimit", storedatalimit);
  132. sysEnterpriseHr.setValue("password", UserPassword.create(password));
  133. sysEnterpriseHr.setSiteid(siteid).setWhere("sys_enterpriseid", sys_enterpriseid).setWhere("userid", id);
  134. returnRow = dbConnect.runSqlQuery("select * from sys_enterprise_hr where siteid='" + siteid + "' and sys_enterpriseid=" + sys_enterpriseid + " and userid=" + id).get(0);
  135. } else {
  136. SQLList sqllist = new SQLList();
  137. SQLFactory modifyusersql = new SQLFactory(this, "团队成员修改");
  138. modifyusersql.addParameter("siteid", siteid);
  139. modifyusersql.addParameter("sys_enterprise_hrid", sys_enterprise_hrid);
  140. modifyusersql.addParameter("sys_enterpriseid", sys_enterpriseid);
  141. modifyusersql.addParameter("name", name);
  142. modifyusersql.addParameter("phonenumber", phonenumber);
  143. modifyusersql.addParameter("email", email);
  144. modifyusersql.addParameter("position", position);
  145. modifyusersql.addParameter("remarks", remarks);
  146. modifyusersql.addParameter("changeuserid", userid);
  147. modifyusersql.addParameter("userdatalimit", userdatalimit ? 1 : 0);
  148. modifyusersql.addParameter("storedatalimit", storedatalimit ? 1 : 0);
  149. sqllist.add(modifyusersql.getSQL());
  150. /*
  151. 获取账号id
  152. */
  153. Long userid = sys_enterprise_hrRows.get(0).getLong("userid");
  154. /*
  155. 获取账号当前角色信息
  156. */
  157. Rows userroleRows = dbConnect.runSqlQuery("select roleid from sys_userrole where siteid='" + siteid + "' and userid=" + userid);
  158. ArrayList<Long> oldroleidList = userroleRows.toArrayList("roleid", new ArrayList<Long>());
  159. /*
  160. 判断角色是否需要添加
  161. */
  162. for (Long newroleid : newroleidList) {
  163. boolean isneedinsert = true;
  164. for (Long oldroleid : oldroleidList) {
  165. if (Objects.equals(newroleid, oldroleid)) {
  166. isneedinsert = false;
  167. break;
  168. }
  169. }
  170. if (isneedinsert) {
  171. SQLFactory sqlFactory = new SQLFactory(this, "账号角色添加");
  172. sqlFactory.addParameter("userid", userid);
  173. sqlFactory.addParameter("userroleid", createTableID("sys_userrole"));
  174. sqlFactory.addParameter("roleid", newroleid);//新用户默认角色
  175. sqlFactory.addParameter("createby", username);
  176. sqllist.add(sqlFactory.getSQL());
  177. }
  178. }
  179. /*
  180. 判断角色是否需要删除
  181. */
  182. for (Long oldroleid : oldroleidList) {
  183. boolean isneeddelete = true;
  184. for (Long newroleid : newroleidList) {
  185. if (Objects.equals(newroleid, oldroleid)) {
  186. isneeddelete = false;
  187. break;
  188. }
  189. }
  190. if (isneeddelete) {
  191. sqllist.add("delete from sys_userrole where siteid='" + siteid + "' and userid='" + userid + "'and roleid='" + oldroleid + "'");
  192. }
  193. }
  194. dbConnect.runSqlUpdate(sqllist);
  195. returnRow = dbConnect.runSqlQuery("select * from sys_enterprise_hr where siteid='" + siteid + "' and sys_enterpriseid=" + sys_enterpriseid + " and sys_enterprise_hrid=" + sys_enterprise_hrid).get(0);
  196. }
  197. return getSucReturnObject().setData(returnRow).toString();
  198. }
  199. /**
  200. * 团队人员账号密码设置
  201. *
  202. * @return
  203. */
  204. @API(title = "团队人员账号密码设置", apiversion = R.ID2026052015501001.v1.class, params = {
  205. @Param(paramname = "password", remarks = "密码", isrequired = true, fieldtype = FieldType.Varchar),
  206. @Param(paramname = "sys_enterprise_hrid", remarks = "团队人员id", isrequired = true, fieldtype = FieldType.Varchar)}
  207. )
  208. public String setPassword() throws YosException {
  209. String password = content.getString("password");//md5加密
  210. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_enterprise_hr");
  211. querySQL.setSiteid(siteid);
  212. querySQL.setWhere("sys_enterpriseid", sys_enterpriseid);
  213. querySQL.setWhere("sys_enterprise_hrid", content.getLong("sys_enterprise_hrid"));
  214. Rows rows = querySQL.query();
  215. if (rows.isEmpty()) {
  216. return getErrReturnObject().setErrMsg("团队人员不存在").toString();
  217. }
  218. UserPassword.create(rows.get(0).getLong("userid"), password);
  219. DataContrlLog.createLog(this, "sys_users", userid, "密码重置", "密码重置成功").insert();
  220. loguserout(userid);
  221. return getSucReturnObject().toString();
  222. }
  223. @API(title = "删除团队成员", apiversion = R.ID20221107094804.v1.class)
  224. @CACHEING_CLEAN(cms = {@cm(clazz = team.class, method = {"query_teamList"})})
  225. public String deleteHr() throws YosException {
  226. JSONArray sys_enterprise_hrids = content.getJSONArray("sys_enterprise_hrids");
  227. StringBuffer str = new StringBuffer("(0");
  228. for (Object o : sys_enterprise_hrids) {
  229. str.append(",").append(o);
  230. }
  231. str.append(")");
  232. Rows rows = dbConnect.runSqlQuery("select userid from sys_enterprise_hr where siteid='" + siteid + "'and sys_enterpriseid='" + sys_enterpriseid + "' and sys_enterprise_hrid in" + str);
  233. ArrayList sqlList = new ArrayList();
  234. if (!rows.isEmpty()) {
  235. for (Row row : rows) {
  236. long userid = row.getLong("userid");
  237. Rows userroleRows = dbConnect.runSqlQuery("select t1.*,t2.rolename from sys_userrole t1 inner join sys_role t2 on t1.roleid=t2.roleid and t1.siteid=t2.siteid where t1.userid=" + userid);
  238. if (userroleRows.isNotEmpty()) {
  239. if (userroleRows.get(0).getString("rolename").equals("经销商")) {
  240. return getErrReturnObject().setErrMsg("团队负责人账号禁止删除").toString();
  241. }
  242. }
  243. String sql = "update sys_users set status='DELETED' where userid=" + userid;
  244. sqlList.add(sql);
  245. }
  246. }
  247. dbConnect.runSqlUpdate(sqlList);
  248. return getSucReturnObject().toString();
  249. }
  250. @API(title = "团队成员角色选择")
  251. public String queryRole() throws YosException {
  252. long sys_enterprise_hrid = content.getLongValue("sys_enterprise_hrid");
  253. long userid = 0;
  254. if (sys_enterprise_hrid > 0) {
  255. Rows sys_enterprise_hrRows = dbConnect.runSqlQuery("select userid from sys_enterprise_hr where siteid='" + siteid + "'and sys_enterpriseid='" + sys_enterpriseid + "' and sys_enterprise_hrid=" + sys_enterprise_hrid);
  256. userid = sys_enterprise_hrRows.get(0).getLong("userid");
  257. }
  258. SQLFactory sqlFactory = new SQLFactory(this, "账号角色选择查询");
  259. sqlFactory.addParameter("siteid", siteid);
  260. sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  261. sqlFactory.addParameter("userid", userid);
  262. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  263. return getSucReturnObject().setData(rows).toString();
  264. }
  265. @API(title = "查询账号付费记录")
  266. public String queryPaid() throws YosException {
  267. long userid = content.getLongValue("userid");
  268. /*
  269. 过滤条件设置
  270. */
  271. StringBuffer where = new StringBuffer(" 1=1 ");
  272. if (content.containsKey("where")) {
  273. JSONObject whereObject = content.getJSONObject("where");
  274. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  275. where.append(" and(");
  276. where.append("t3.partitionname like'%").append(whereObject.getString("condition")).append("%' ");
  277. where.append(")");
  278. }
  279. }
  280. // SQLFactory sqlFactory = new SQLFactory(this, "查询账号付费记录", pageSize, pageNumber, pageSorting);
  281. // sqlFactory.addParameter("siteid", siteid);
  282. // sqlFactory.addParameter("userid", userid);
  283. // sqlFactory.addParameter_SQL("where", where);
  284. // Rows rows = dbConnect.runSqlQuery(sqlFactory);
  285. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_payorderitems", "enddate");
  286. querySQL.setTableAlias("t1");
  287. querySQL.addJoinTable(JOINTYPE.inner, "sys_payorder", "t2", "t2.sys_payorderid = t1.sys_payorderid and t2.siteid = t1.siteid", "ispaid");
  288. querySQL.addJoinTable(JOINTYPE.left, "sys_site_systempartition", "t3", "t3.sys_site_systempartitionid = t2.sys_site_systempartitionid and t3.siteid = t2.siteid", "partitionname");
  289. querySQL.setSiteid(siteid);
  290. querySQL.setWhere("t2.ispaid = 1 and CURRENT_TIME <= t1.enddate");
  291. querySQL.setWhere("t1.userid", userid);
  292. querySQL.setWhere(where.toString());
  293. querySQL.setPage(pageSize, pageNumber);
  294. Rows rows = querySQL.query();
  295. return getSucReturnObject().setData(rows).toString();
  296. }
  297. @API(title = "修改销售线索分配模式")
  298. public String changeOrderClueGetModel() throws YosException {
  299. Long authmodel = content.getLong("authmodel");
  300. Long sys_enterprise_hrid = content.getLongValue("sys_enterprise_hrid");
  301. SQLList sqlList = new SQLList();
  302. sqlList.add("UPDATE sys_enterprise_hr SET authmodel=" + authmodel + " WHERE sys_enterpriseid = " + sys_enterpriseid + " and siteid = '" + siteid + "'");
  303. if (authmodel == 3) {
  304. sqlList.add("UPDATE sys_enterprise_hr SET isagent = 0 WHERE sys_enterpriseid = " + sys_enterpriseid + " and siteid = '" + siteid + "'");
  305. sqlList.add("UPDATE sys_enterprise_hr SET isagent = 1 WHERE sys_enterprise_hrid = " + sys_enterprise_hrid + " and siteid = '" + siteid + "'");
  306. }
  307. dbConnect.runSqlUpdate(sqlList);
  308. return getSucReturnObject().toString();
  309. }
  310. @API(title = "获取销售线索分配模式")
  311. public String getOrderClueGetModel() throws YosException {
  312. Long sys_enterpriseid = content.getLong("sys_enterpriseid");
  313. Row row = new Row();
  314. Rows rows = dbConnect.runSqlQuery("SELECT authmodel from sys_enterprise_hr WHERE sys_enterpriseid = " + sys_enterpriseid + " and siteid = '" + siteid + "'");
  315. if (rows.isNotEmpty()) {
  316. row.put("authmodel", rows.get(0).getLong("authmodel"));
  317. } else {
  318. row.put("authmodel", 1);
  319. }
  320. rows = dbConnect.runSqlQuery("SELECT * from sys_enterprise_hr WHERE sys_enterpriseid = " + sys_enterpriseid + " and isagent=1 and siteid = '" + siteid + "'");
  321. if (rows.isNotEmpty()) {
  322. rows.get(0).put("headpic", getHeadPic(rows.get(0).getLong("userid")));
  323. row.put("sys_enterprise_hrid", rows.get(0));
  324. }
  325. return getSucReturnObject().setData(row).toString();
  326. }
  327. }