AdminSuperviseApiController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. package com.goafanti.admin.controller;
  2. import java.util.ArrayList;
  3. import java.util.Calendar;
  4. import java.util.List;
  5. import java.util.UUID;
  6. import javax.annotation.Resource;
  7. import org.springframework.beans.BeanUtils;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestMethod;
  11. import org.springframework.web.bind.annotation.RequestParam;
  12. import com.alibaba.fastjson.JSON;
  13. import com.alibaba.fastjson.JSONArray;
  14. import com.alibaba.fastjson.JSONObject;
  15. import com.goafanti.admin.bo.AdminLocationBo;
  16. import com.goafanti.admin.service.AdminLocationService;
  17. import com.goafanti.admin.service.AdminService;
  18. import com.goafanti.common.bo.Result;
  19. import com.goafanti.common.constant.AFTConstants;
  20. import com.goafanti.common.constant.ErrorConstants;
  21. import com.goafanti.common.controller.CertifyApiController;
  22. import com.goafanti.common.enums.UserType;
  23. import com.goafanti.common.model.Admin;
  24. import com.goafanti.common.model.AdminLocation;
  25. import com.goafanti.common.utils.PasswordUtil;
  26. import com.goafanti.common.utils.StringUtils;
  27. import com.goafanti.core.shiro.token.TokenManager;
  28. import com.goafanti.user.service.UserService;
  29. @Controller
  30. @RequestMapping(value = "/api/admin/supervise")
  31. public class AdminSuperviseApiController extends CertifyApiController {
  32. @Resource
  33. private AdminService adminService;
  34. @Resource(name = "passwordUtil")
  35. private PasswordUtil passwordUtil;
  36. @Resource
  37. private AdminLocationService adminLocationService;
  38. @Resource
  39. private UserService userService;
  40. /**
  41. * 审核人员、客户经理、营销经理检索全部客户名称
  42. */
  43. @RequestMapping(value = "/findUser", method = RequestMethod.GET)
  44. public Result findUser(String name, String mobile, Integer type){
  45. Result res = new Result();
  46. if (null == type){
  47. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "用户类型", "用户类型"));
  48. return res;
  49. }
  50. if (!UserType.PERSONAL.getCode().equals(type) && !UserType.ORGANIZATION.getCode().equals(type)){
  51. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "用户类型", "用户类型"));
  52. return res;
  53. }
  54. if (StringUtils.isBlank(name) && StringUtils.isBlank(mobile)){
  55. res.getError().add(buildError("", "查询条件不能为空!"));
  56. return res;
  57. }
  58. if (UserType.PERSONAL.getCode().equals(type)){
  59. res.setData(userService.findUserNameByNameAndMobile(name, mobile));
  60. } else {
  61. res.setData(userService.findOrgNameByNameAndMobile(name, mobile));
  62. }
  63. return res;
  64. }
  65. /**
  66. * 管理员获取自己所在地区(地区管理员)
  67. */
  68. @RequestMapping(value = "/adminOwnLocation", method = RequestMethod.GET)
  69. public Result adminOwnLocation() {
  70. Result res = new Result();
  71. if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
  72. res.setData(AFTConstants.SUPERADMIN);
  73. return res;
  74. }
  75. res.setData(adminLocationService.findLocation(TokenManager.getAdminId()));
  76. return res;
  77. }
  78. /**
  79. * 管理员详情获取地区
  80. */
  81. @RequestMapping(value = "/adminDetailLocation", method = RequestMethod.GET)
  82. public Result adminDetailLocation(String id) {
  83. Result res = new Result();
  84. if (StringUtils.isBlank(id)) {
  85. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "用户ID", "用户ID"));
  86. return res;
  87. }
  88. res.setData(adminLocationService.findLocation(id));
  89. return res;
  90. }
  91. /**
  92. * 管理员下拉列表
  93. */
  94. @RequestMapping(value = "/adminSelectList", method = RequestMethod.GET)
  95. public Result adminSelectList() {
  96. Result res = new Result();
  97. res.setData(adminService.listAdminSelect());
  98. return res;
  99. }
  100. /**
  101. * 管理员列表
  102. */
  103. @RequestMapping(value = "/adminList", method = RequestMethod.GET)
  104. public Result adminList(Integer province, Integer number, String mobile, String name, String pageNo,
  105. String pageSize) {
  106. Result res = new Result();
  107. Integer pNo = 1;
  108. Integer pSize = 10;
  109. if (StringUtils.isNumeric(pageSize)) {
  110. pSize = Integer.parseInt(pageSize);
  111. }
  112. if (StringUtils.isNumeric(pageNo)) {
  113. pNo = Integer.parseInt(pageNo);
  114. }
  115. res.setData(adminService.listAdmin(province, number, mobile, name, pNo, pSize));
  116. return res;
  117. }
  118. /**
  119. * 新增管理员
  120. */
  121. @SuppressWarnings("unchecked")
  122. @RequestMapping(value = "/insertAdmin", method = RequestMethod.POST)
  123. public Result insertAdmin(String data) {
  124. Result res = new Result();
  125. JSONObject jo = (JSONObject) JSON.parse(data);
  126. if (null != jo) {
  127. Admin admin = jo.toJavaObject(Admin.class);
  128. if (StringUtils.isBlank(admin.getMobile())) {
  129. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "登录帐号为空", "登录帐号"));
  130. return res;
  131. }
  132. if (StringUtils.isBlank(admin.getName())) {
  133. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "用户名为空", "用户名"));
  134. return res;
  135. }
  136. Admin a = adminService.selectByMobile(admin.getMobile().trim());
  137. if (null != a) {
  138. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "当前用户已注册!"));
  139. return res;
  140. }
  141. Admin ad = new Admin();
  142. BeanUtils.copyProperties(admin, ad);
  143. ad.setId(UUID.randomUUID().toString());
  144. res = disposeAdminLocationList(res, jo, ad);
  145. if (!res.getError().isEmpty()) {
  146. return res;
  147. }
  148. List<AdminLocation> adminLocationList = (List<AdminLocation>) res.getData();
  149. Calendar now = Calendar.getInstance();
  150. now.set(Calendar.MILLISECOND, 0);
  151. ad.setCreateTime(now.getTime());
  152. if (StringUtils.isBlank(ad.getPassword())) {
  153. ad.setPassword(AFTConstants.INITIALPASSWORD);
  154. }
  155. ad.setPassword(passwordUtil.getEncryptPwd(ad));
  156. res.setData(adminService.insertNewAdmin(ad, adminLocationList));
  157. }
  158. return res;
  159. }
  160. /**
  161. * 修改管理员信息
  162. */
  163. @SuppressWarnings("unchecked")
  164. @RequestMapping(value = "/updateAdmin", method = RequestMethod.POST)
  165. public Result updateAdmin(@RequestParam(value = "roles[]", required = false) String[] roleIds, String data) {
  166. Result res = new Result();
  167. JSONObject jo = (JSONObject) JSON.parse(data);
  168. if (null != jo) {
  169. Admin admin = jo.toJavaObject(Admin.class);
  170. if (null == admin.getId()) {
  171. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id"));
  172. return res;
  173. }
  174. if (null == admin.getMobile()) {
  175. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "登录帐号为空", "登录帐号"));
  176. return res;
  177. }
  178. if (null == admin.getName()) {
  179. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "用户名为空", "用户名"));
  180. return res;
  181. }
  182. Admin aa = adminService.selectByMobile(admin.getMobile().trim());
  183. if (null != aa && !admin.getId().equals(aa.getId())) {
  184. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "当前用户已注册!"));
  185. return res;
  186. }
  187. Admin a = adminService.selectByPrimaryKey(admin.getId());
  188. if (null == a) {
  189. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id"));
  190. return res;
  191. }
  192. Admin ad = new Admin();
  193. BeanUtils.copyProperties(admin, ad);
  194. res = disposeAdminLocationList(res, jo, ad);
  195. if (!res.getError().isEmpty()) {
  196. return res;
  197. }
  198. List<AdminLocation> adminLocationList = (List<AdminLocation>) res.getData();
  199. List<String> roles = new ArrayList<String>();
  200. if (roleIds != null && roleIds.length > 0) {
  201. for (String role : roleIds) {
  202. roles.add(role);
  203. }
  204. }
  205. res.setData(adminService.updateByPrimaryKeySelective(ad, roles, adminLocationList));
  206. }
  207. return res;
  208. }
  209. /**
  210. * 重置管理员密码
  211. */
  212. @RequestMapping(value = "/resetPwd", method = RequestMethod.POST)
  213. public Result resetPwd(String id) {
  214. Result res = new Result();
  215. if (StringUtils.isBlank(id)) {
  216. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id"));
  217. return res;
  218. }
  219. Admin admin = adminService.selectByPrimaryKey(id);
  220. if (null == admin) {
  221. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id"));
  222. return res;
  223. }
  224. Admin a = new Admin();
  225. a.setId(admin.getId());
  226. a.setCreateTime(admin.getCreateTime());
  227. a.setPassword(AFTConstants.INITIALPASSWORD);
  228. a.setPassword(passwordUtil.getEncryptPwd(a));
  229. res.setData(adminService.updateByPrimaryKey(a));
  230. return res;
  231. }
  232. private Result disposeAdminLocationList(Result res, JSONObject jo, Admin ad) {
  233. JSONArray locations = jo.getJSONArray("locations");
  234. if (null == locations || locations.size()<1){
  235. return res;
  236. }
  237. List<AdminLocation> adminLocationList = new ArrayList<>();
  238. AdminLocation al = null;
  239. Boolean areaAdminFlag = false;
  240. List<Integer> locationList = null;
  241. if (TokenManager.hasRole(AFTConstants.AREAADMIN)) {
  242. locationList = new ArrayList<>();
  243. areaAdminFlag = true;
  244. }
  245. for (int i = 0; i < locations.size(); i++) {
  246. AdminLocationBo alb = locations.getJSONObject(i).toJavaObject(AdminLocationBo.class);
  247. Integer province = alb.getProvince();
  248. String city = alb.getCity();
  249. if (null == province) {
  250. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "省份为空", "所在省份"));
  251. return res;
  252. }
  253. if (province.intValue() > AFTConstants.PROVINCEMAXNUM) {
  254. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "所在省份"));
  255. return res;
  256. }
  257. if (areaAdminFlag) {
  258. locationList.add(province);
  259. }
  260. if (!StringUtils.isBlank(city)) {
  261. String[] arr = city.trim().split(",|,");
  262. if (null != arr && arr.length > 0) {
  263. for (String s : arr) {
  264. Integer c = Integer.valueOf(s);
  265. if (c.intValue() > AFTConstants.CITYMAXNUM) {
  266. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "所在市"));
  267. return res;
  268. }
  269. adminLocationList.add(disposeAdminLocation(al, ad, province, c));
  270. if (areaAdminFlag) {
  271. locationList.add(c);
  272. }
  273. }
  274. }
  275. } else {
  276. adminLocationList.add(disposeAdminLocation(al, ad, province, null));
  277. }
  278. }
  279. if (areaAdminFlag) {
  280. List<Integer> albList = disposeAdminLocationBo();
  281. if (!albList.containsAll(locationList)) {
  282. res.getError().add(buildError("", "所选所在地区域不在负责区域,无法添加或修改"));
  283. return res;
  284. }
  285. }
  286. res.setData(adminLocationList);
  287. return res;
  288. }
  289. private AdminLocation disposeAdminLocation(AdminLocation al, Admin ad, Integer province, Integer c) {
  290. al = new AdminLocation();
  291. al.setId(UUID.randomUUID().toString());
  292. al.setAdminId(ad.getId());
  293. al.setProvince(province);
  294. if (null != c) {
  295. al.setCity(c);
  296. }
  297. return al;
  298. }
  299. private List<Integer> disposeAdminLocationBo() {
  300. List<AdminLocationBo> alb = adminLocationService.findLocation(TokenManager.getAdminId());
  301. List<Integer> albList = null;
  302. if (!alb.isEmpty()) {
  303. Integer albProvince = null;
  304. albList = new ArrayList<>();
  305. for (AdminLocationBo bo : alb) {
  306. albProvince = bo.getProvince();
  307. albList.add(albProvince);
  308. if (!StringUtils.isBlank(bo.getCity())) {
  309. String[] albArr = bo.getCity().trim().split(",|,");
  310. if (null != albArr && albArr.length > 0) {
  311. for (String ss : albArr) {
  312. albList.add(Integer.valueOf(ss));
  313. }
  314. }
  315. }
  316. }
  317. }
  318. return albList;
  319. }
  320. }