coursewareauth.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. package restcontroller.webmanage.saletool.courseware;
  2. import beans.department.Department;
  3. import beans.salearea.SaleArea;
  4. import com.alibaba.fastjson.JSONArray;
  5. import com.alibaba.fastjson.JSONObject;
  6. import common.Controller;
  7. import common.YosException;
  8. import common.annotation.API;
  9. import common.data.*;
  10. import org.apache.commons.lang.StringUtils;
  11. import restcontroller.R;
  12. import java.util.ArrayList;
  13. @API(title = "商学院-范围授权")
  14. public class coursewareauth extends Controller {
  15. public coursewareauth(JSONObject content) throws YosException {
  16. super(content);
  17. }
  18. @API(title = "新增", intervaltime = 2000)
  19. public String insert() throws YosException {
  20. boolean isonlymanager_dept = content.getBoolean("isonlymanager_dept");
  21. boolean isonlymanager_agent = content.getBoolean("isonlymanager_agent");
  22. Long sat_coursewareid = content.getLong("sat_coursewareid");
  23. //存放执行sql
  24. ArrayList<String> sqlList = new ArrayList<>();
  25. String key;
  26. //部门
  27. key = "departmentid";
  28. if (content.containsKey(key)) {
  29. JSONArray departmentids = content.getJSONArray("departmentid");
  30. ArrayList<Long> tempDepartmentids = new ArrayList<>();
  31. for (Object value : departmentids) {
  32. tempDepartmentids.addAll(Department.getSubDepartmentIds(this, Long.parseLong(value.toString())));
  33. }
  34. content.put("departmentid", tempDepartmentids);
  35. sqlList.addAll(getSqlList(key, sat_coursewareid, isonlymanager_dept, "删除多余部门授权", "内部"));
  36. }
  37. //用户
  38. key = "hrid";
  39. if (content.containsKey(key)) {
  40. sqlList.addAll(getSqlList(key, sat_coursewareid, false, "删除多余成员授权", "内部"));
  41. }
  42. //营销区域
  43. key = "sa_saleareaid";
  44. if (content.containsKey(key)) {
  45. JSONArray ids = content.getJSONArray("sa_saleareaid");
  46. ArrayList<Long> temp = new ArrayList<>();
  47. for (Object value : ids) {
  48. temp.add(Long.valueOf(value.toString()));
  49. temp.addAll(SaleArea.getSubSaleAreaIds(this, Long.parseLong(value.toString())));
  50. }
  51. content.put("sa_saleareaid", temp);
  52. sqlList.addAll(getSqlList(key, sat_coursewareid, isonlymanager_agent, "删除多余经销商区域授权", "外部"));
  53. }
  54. //经销商
  55. key = "sa_agentsid";
  56. if (content.containsKey(key)) {
  57. sqlList.addAll(getSqlList(key, sat_coursewareid, false, "删除多余经销商授权", "外部"));
  58. }
  59. dbConnect.runSqlUpdate(sqlList);
  60. return getSucReturnObject().toString();
  61. }
  62. /**
  63. * 组装sql
  64. */
  65. public ArrayList<String> getSqlList(String key, Long sat_coursewareid, boolean isonlymanager, String SQLMODELNAME, String areaType) throws YosException {
  66. ArrayList<String> sqlList = new ArrayList<>();
  67. JSONArray array = content.getJSONArray(key);
  68. for (Object value : array) {
  69. sqlList.add(getInsertSql(isonlymanager, areaType, sat_coursewareid, key, value, getSelectAuthSqlStr(sat_coursewareid, key, value)));
  70. if (key.equals("departmentid") || key.equals("sa_saleareaid")) {
  71. sqlList.add(getUpdateSql(isonlymanager, sat_coursewareid, key, value));
  72. }
  73. }
  74. sqlList.add(getDeleteSqlStr(SQLMODELNAME, sat_coursewareid, key, array.toArray()));
  75. return sqlList;
  76. }
  77. /**
  78. * 简单封装-获取更新授权是否是负责人语句
  79. *
  80. * @param isonlymanager
  81. * @param sat_coursewareid
  82. * @param key
  83. * @param value
  84. * @return
  85. */
  86. public String getUpdateSql(boolean isonlymanager, Long sat_coursewareid, String key, Object value) {
  87. return "UPDATE sat_courseware_auth SET isonlymanager=" + isonlymanager + " WHERE siteid='" + siteid + "' and sat_coursewareid = " + sat_coursewareid + " AND " + key + " = " + value;
  88. }
  89. /**
  90. * 简单封装-组装sql语句,用来查询是否有授权:部门,成员,经销商,经销商区域
  91. *
  92. * @param sat_coursewareid
  93. * @param key
  94. * @return
  95. */
  96. public String getSelectAuthSqlStr(Long sat_coursewareid, String key, Object value) {
  97. Long id = sat_coursewareid;
  98. String defSqlStr = "SELECT 1 FROM sat_courseware_auth WHERE siteid = '"
  99. + siteid + "' AND sat_coursewareid = '"
  100. + id;
  101. return defSqlStr + "' AND " + key + " = '" + value + "' limit 1";
  102. }
  103. /**
  104. * 简单封装-授权删除
  105. *
  106. * @param SQLMODELNAME
  107. * @param sat_coursewareid
  108. * @param key
  109. * @param value
  110. * @return
  111. * @throws YosException
  112. */
  113. public String getDeleteSqlStr(String SQLMODELNAME, Long sat_coursewareid, String key, Object value) throws YosException {
  114. SQLFactory sqlFactory = new SQLFactory(this, SQLMODELNAME);
  115. sqlFactory.addParameter("sat_coursewareid", sat_coursewareid);
  116. sqlFactory.addParameter("siteid", siteid);
  117. sqlFactory.addParameter_in(key, value);
  118. return sqlFactory.getSQL();
  119. }
  120. /**
  121. * 简单封装,返回新增sql
  122. */
  123. public String getInsertSql(boolean isonlymanager, String areatype, Long sat_coursewareid, String key, Object vlaue, String whereSql) throws YosException {
  124. SQLFactory sqlFactory = new SQLFactory(this, "课程-新增范围授权");
  125. sqlFactory.addParameter("siteid", siteid);
  126. sqlFactory.addParameter("sat_courseware_authid", createTableID("sat_courseware_auth"));
  127. sqlFactory.addParameter("createby", username);
  128. sqlFactory.addParameter("changeby", username);
  129. //是否仅部门负责人
  130. sqlFactory.addParameter("isonlymanager", isonlymanager);
  131. //范围:内部,外部
  132. sqlFactory.addParameter("areatype", areatype);
  133. //课件id
  134. sqlFactory.addParameter("sat_coursewareid", sat_coursewareid);
  135. if (key.equals("departmentid")) {
  136. sqlFactory.addParameter("departmentid", vlaue);
  137. } else {
  138. sqlFactory.addParameter("departmentid", "null");
  139. }
  140. if (key.equals("hrid")) {
  141. sqlFactory.addParameter("hrid", vlaue);
  142. } else {
  143. sqlFactory.addParameter("hrid", "null");
  144. }
  145. if (key.equals("sa_saleareaid")) {
  146. sqlFactory.addParameter("sa_saleareaid", vlaue);
  147. } else {
  148. sqlFactory.addParameter("sa_saleareaid", "null");
  149. }
  150. if (key.equals("sa_agentsid")) {
  151. sqlFactory.addParameter("sa_agentsid", vlaue);
  152. } else {
  153. sqlFactory.addParameter("sa_agentsid", "null");
  154. }
  155. sqlFactory.addParameter_SQL("whereSql", whereSql);
  156. String sql = sqlFactory.getSQL();
  157. return sql;
  158. }
  159. @API(title = "查询列表")
  160. public String selectList() throws YosException {
  161. Long id = content.getLong("sat_coursewareid");
  162. String key;
  163. //部门
  164. key = "departmentid";
  165. ArrayList<Long> departmentid = dbConnect.runSqlQuery(getSelectSql(id, key)).toArrayList(key, new ArrayList<>());
  166. //成员
  167. key = "hrid";
  168. ArrayList<Long> hrid = dbConnect.runSqlQuery(getSelectSql(id, key)).toArrayList(key, new ArrayList<>());
  169. //区域
  170. key = "sa_saleareaid";
  171. ArrayList<Long> sa_saleareaid = dbConnect.runSqlQuery(getSelectSql(id, key)).toArrayList(key, new ArrayList<>());
  172. //经销商
  173. key = "sa_agentsid";
  174. ArrayList<Long> sa_agentsid = dbConnect.runSqlQuery(getSelectSql(id, key)).toArrayList(key, new ArrayList<>());
  175. //部门负责人
  176. Rows isonlymanagerDeptRows = dbConnect.runSqlQuery(getSelectIsonlymanagerSql(id, "departmentid"));
  177. Boolean isonlymanager_dept = false;
  178. if (isonlymanagerDeptRows.isNotEmpty()) {
  179. isonlymanager_dept = isonlymanagerDeptRows.get(0).getBoolean("isonlymanager");
  180. }
  181. //经销商主账号负责人
  182. Rows isonlymanagerAgentRows = dbConnect.runSqlQuery(getSelectIsonlymanagerSql(id, "sa_saleareaid"));
  183. Boolean isonlymanager_agent = false;
  184. if (isonlymanagerAgentRows.isNotEmpty()) {
  185. isonlymanager_agent = isonlymanagerAgentRows.get(0).getBoolean("isonlymanager");
  186. }
  187. JSONObject res = new JSONObject();
  188. res.put("sat_coursewareid", id);
  189. res.put("departmentid", departmentid);
  190. res.put("hrid", hrid);
  191. res.put("sa_saleareaid", sa_saleareaid);
  192. res.put("sa_agentsid", sa_agentsid);
  193. res.put("isonlymanager_dept", isonlymanager_dept);
  194. res.put("isonlymanager_agent", isonlymanager_agent);
  195. return getSucReturnObject().setData(res).toString();
  196. }
  197. /**
  198. * 简单封装,返回查询授权sql
  199. */
  200. public String getSelectSql(Long sat_coursewareid, String key) {
  201. return "SELECT distinct " + key + " FROM sat_courseware_auth where siteid='" + siteid + "' and sat_coursewareid = '" + sat_coursewareid + "' AND " + key + " is not null";
  202. }
  203. /**
  204. * 简单封装,返回查询是否负责人sql
  205. */
  206. public String getSelectIsonlymanagerSql(Long sat_coursewareid, String key) {
  207. return "SELECT isonlymanager FROM sat_courseware_auth where siteid='" + siteid + "' and sat_coursewareid = '" + sat_coursewareid + "' AND " + key + " is not null LIMIT 1";
  208. }
  209. @API(title = "课程权限新增", apiversion = R.ID20240314145102.v1.class)
  210. public String add() throws YosException {
  211. Long sat_coursewareid = content.getLongValue("sat_coursewareid");
  212. ArrayList<String> sqlList = new ArrayList<>();
  213. if (content.containsKey("sys_enterpriseids")) {
  214. JSONArray sys_enterpriseids = content.getJSONArray("sys_enterpriseids");
  215. for (Object obj : sys_enterpriseids) {
  216. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sat_courseware_auth");
  217. insertSQL.setUniqueid(createTableID("sat_courseware_auth"));
  218. insertSQL.setSiteid(siteid);
  219. insertSQL.setValue("sat_coursewareid", sat_coursewareid);
  220. insertSQL.setValue("sys_enterpriseid", obj);
  221. insertSQL.setWhere("not exists(select 1 from sat_courseware_auth where sys_enterpriseid=" + obj + " and sat_coursewareid=" + sat_coursewareid + " and siteid='" + siteid + "' )");
  222. sqlList.add(insertSQL.getSQL());
  223. }
  224. }
  225. if (content.containsKey("departmentids")) {
  226. JSONArray departmentids = content.getJSONArray("departmentids");
  227. for (Object obj : departmentids) {
  228. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sat_courseware_auth");
  229. insertSQL.setUniqueid(createTableID("sat_courseware_auth"));
  230. insertSQL.setSiteid(siteid);
  231. insertSQL.setValue("sat_coursewareid", sat_coursewareid);
  232. insertSQL.setValue("departmentid", obj);
  233. insertSQL.setWhere("not exists(select 1 from sat_courseware_auth where departmentid=" + obj + " and sat_coursewareid=" + sat_coursewareid + " and siteid='" + siteid + "' )");
  234. sqlList.add(insertSQL.getSQL());
  235. }
  236. }
  237. if (content.containsKey("hrids")) {
  238. JSONArray hrids = content.getJSONArray("hrids");
  239. for (Object obj : hrids) {
  240. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sat_courseware_auth");
  241. insertSQL.setUniqueid(createTableID("sat_courseware_auth"));
  242. insertSQL.setSiteid(siteid);
  243. insertSQL.setValue("sat_coursewareid", sat_coursewareid);
  244. insertSQL.setValue("hrid", obj);
  245. insertSQL.setWhere("not exists(select 1 from sat_courseware_auth where hrid=" + obj + " and sat_coursewareid=" + sat_coursewareid + " and siteid='" + siteid + "' )");
  246. sqlList.add(insertSQL.getSQL());
  247. }
  248. }
  249. if (content.containsKey("sa_saleareaids")) {
  250. JSONArray sa_saleareaids = content.getJSONArray("sa_saleareaids");
  251. for (Object obj : sa_saleareaids) {
  252. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sat_courseware_auth");
  253. insertSQL.setUniqueid(createTableID("sat_courseware_auth"));
  254. insertSQL.setSiteid(siteid);
  255. insertSQL.setValue("sat_coursewareid", sat_coursewareid);
  256. insertSQL.setValue("sa_saleareaid", obj);
  257. insertSQL.setWhere("not exists(select 1 from sat_courseware_auth where sa_saleareaid=" + obj + " and sat_coursewareid=" + sat_coursewareid + " and siteid='" + siteid + "' )");
  258. sqlList.add(insertSQL.getSQL());
  259. }
  260. }
  261. if (sqlList.size() > 0) {
  262. dbConnect.runSqlUpdate(sqlList);
  263. }
  264. return getSucReturnObject().toString();
  265. }
  266. @API(title = "课程角色权限新增", apiversion = R.ID20240314145202.v1.class)
  267. public String addrole() throws YosException {
  268. Long sat_coursewareid = content.getLongValue("sat_coursewareid");
  269. ArrayList<String> sqlList = new ArrayList<>();
  270. JSONArray roleids = content.getJSONArray("roleids");
  271. for (Object obj : roleids) {
  272. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sat_courseware_auth");
  273. insertSQL.setUniqueid(createTableID("sat_courseware_auth"));
  274. insertSQL.setSiteid(siteid);
  275. insertSQL.setValue("sat_coursewareid", sat_coursewareid);
  276. insertSQL.setValue("roleid", obj);
  277. insertSQL.setValue("roleid", obj);
  278. insertSQL.setWhere("not exists(select 1 from sat_courseware_auth where roleid=" + obj + " and sat_coursewareid=" + sat_coursewareid + " and siteid='" + siteid + "' )");
  279. sqlList.add(insertSQL.getSQL());
  280. }
  281. if (sqlList.size() > 0) {
  282. dbConnect.runSqlUpdate(sqlList);
  283. }
  284. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sat_courseware_auth");
  285. deleteSQL.setSiteid(siteid);
  286. deleteSQL.setWhere("sat_coursewareid", sat_coursewareid);
  287. deleteSQL.setWhere("roleid not in " + roleids.toString().replace("[", "(").replace("]", ")") + "");
  288. deleteSQL.delete();
  289. return getSucReturnObject().toString();
  290. }
  291. @API(title = "课程权限删除", apiversion = R.ID20240314145302.v1.class)
  292. public String deleteQuanXian() throws YosException {
  293. Long sat_coursewareid = content.getLongValue("sat_coursewareid");
  294. ArrayList<String> sqlList = new ArrayList<>();
  295. if (content.containsKey("sys_enterpriseids")) {
  296. JSONArray sys_enterpriseids = content.getJSONArray("sys_enterpriseids");
  297. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sat_courseware_auth");
  298. deleteSQL.setSiteid(siteid);
  299. deleteSQL.setWhere("sat_coursewareid", sat_coursewareid);
  300. deleteSQL.setWhere("sys_enterpriseid ", sys_enterpriseids.toArray());
  301. sqlList.add(deleteSQL.getSQL());
  302. }
  303. if (content.containsKey("departmentids")) {
  304. JSONArray departmentids = content.getJSONArray("departmentids");
  305. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sat_courseware_auth");
  306. deleteSQL.setSiteid(siteid);
  307. deleteSQL.setWhere("sat_coursewareid", sat_coursewareid);
  308. deleteSQL.setWhere("departmentid ", departmentids);
  309. sqlList.add(deleteSQL.getSQL());
  310. }
  311. if (content.containsKey("hrids")) {
  312. JSONArray hrids = content.getJSONArray("hrids");
  313. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sat_courseware_auth");
  314. deleteSQL.setSiteid(siteid);
  315. deleteSQL.setWhere("sat_coursewareid", sat_coursewareid);
  316. deleteSQL.setWhere("hrid ", hrids);
  317. sqlList.add(deleteSQL.getSQL());
  318. }
  319. if (content.containsKey("sa_saleareaids")) {
  320. JSONArray sa_saleareaids = content.getJSONArray("sa_saleareaids");
  321. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sat_courseware_auth");
  322. deleteSQL.setSiteid(siteid);
  323. deleteSQL.setWhere("sat_coursewareid", sat_coursewareid);
  324. deleteSQL.setWhere("sa_saleareaid ", sa_saleareaids);
  325. sqlList.add(deleteSQL.getSQL());
  326. }
  327. if (sqlList.size() > 0) {
  328. dbConnect.runSqlUpdate(sqlList);
  329. }
  330. return getSucReturnObject().toString();
  331. }
  332. @API(title = "课程部门列表",apiversion = R.ID20240314145402.v1.class)
  333. public String depList() throws YosException {
  334. Long sat_coursewareid = content.getLongValue("sat_coursewareid");
  335. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_department",
  336. "departmentid", "depname", "depno");
  337. querySQL.addJoinTable(JOINTYPE.left, "sys_department", "t2", "t2.departmentid=t1.parentid and t2.siteid=t1.siteid");
  338. querySQL.addJoinTable(JOINTYPE.left, "sat_courseware_auth", "t3", "t1.siteid=t3.siteid and t1.departmentid=t3.departmentid");
  339. querySQL.addQueryFields("parentdepname","t2.depname");
  340. querySQL.setWhere("t1.siteid", siteid);
  341. querySQL.setWhere("t3.sat_coursewareid",sat_coursewareid);
  342. querySQL.setTableAlias("t1").setPage(pageSize, pageNumber);
  343. Rows rows = querySQL.query();
  344. return getSucReturnObject().setData(rows).toString();
  345. }
  346. @API(title = "课程人员列表",apiversion = R.ID20240314145502.v1.class)
  347. public String hrList() throws YosException {
  348. Long sat_coursewareid = content.getLongValue("sat_coursewareid");
  349. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_hr",
  350. "hrid", "hrcode", "name", "position");
  351. querySQL.addJoinTable(JOINTYPE.left, "sys_department", "t2", "t1.siteid=t2.siteid and t1.departmentid=t2.departmentid",
  352. "depname");
  353. querySQL.addJoinTable(JOINTYPE.left, "sat_courseware_auth", "t3", "t1.siteid=t3.siteid and t1.hrid=t3.hrid");
  354. querySQL.setWhere("t1.siteid", siteid);
  355. querySQL.setWhere("t3.sat_coursewareid",sat_coursewareid);
  356. querySQL.setTableAlias("t1").setPage(pageSize, pageNumber);
  357. Rows rows = querySQL.query();
  358. return getSucReturnObject().setData(rows).toString();
  359. }
  360. @API(title = "课程区域列表",apiversion = R.ID20240314145602.v1.class)
  361. public String areaList() throws YosException {
  362. Long sat_coursewareid = content.getLongValue("sat_coursewareid");
  363. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_salearea",
  364. "areaname", "sa_saleareaid");
  365. querySQL.addJoinTable(JOINTYPE.left, "sa_salearea", "t2", "t2.sa_saleareaid=t1.parentid and t2.siteid=t1.siteid");
  366. querySQL.addJoinTable(JOINTYPE.left, "sat_courseware_auth", "t3", "t1.siteid=t3.siteid and t1.sa_saleareaid=t3.sa_saleareaid");
  367. querySQL.addQueryFields("parentareaname","t2.areaname");
  368. querySQL.setWhere("t1.siteid", siteid);
  369. querySQL.setWhere("t3.sat_coursewareid",sat_coursewareid);
  370. querySQL.setTableAlias("t1").setPage(pageSize, pageNumber);
  371. Rows rows = querySQL.query();
  372. return getSucReturnObject().setData(rows).toString();
  373. }
  374. @API(title = "课程合作伙伴列表",apiversion = R.ID20240314145702.v1.class)
  375. public String enterpriseList() throws YosException {
  376. Long sat_coursewareid = content.getLongValue("sat_coursewareid");
  377. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_agents",
  378. "agentnum", "sys_enterpriseid", "type");
  379. querySQL.addJoinTable(JOINTYPE.inner, "sys_enterprise", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid",
  380. "enterprisename");
  381. querySQL.addJoinTable(JOINTYPE.left, "sat_courseware_auth", "t3", "t1.siteid=t3.siteid and t1.sys_enterpriseid=t3.sys_enterpriseid");
  382. querySQL.setWhere("t1.siteid", siteid);
  383. querySQL.setWhere("t3.sat_coursewareid",sat_coursewareid);
  384. querySQL.setTableAlias("t1").setPage(pageSize, pageNumber);
  385. Rows rows = querySQL.query();
  386. SQLFactory sqlFactory = new SQLFactory(this, "查询经销商区域");
  387. sqlFactory.addParameter_in("sys_enterpriseid", rows.toArray("sys_enterpriseid"));
  388. sqlFactory.addParameter("siteid", siteid);
  389. RowsMap areaRows = dbConnect.runSqlQuery(sqlFactory).toRowsMap("sys_enterpriseid");
  390. for (Row row : rows) {
  391. Rows areas = areaRows.getOrDefault(row.getString("sys_enterpriseid"), new Rows());
  392. row.put("areaname", StringUtils.join(areas.toArray("areaname"),","));
  393. }
  394. return getSucReturnObject().setData(rows).toString();
  395. }
  396. }