AdminSuperviseApiController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  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 roleName, 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, roleName, pNo, pSize));
  116. return res;
  117. }
  118. /**
  119. * 新增管理员
  120. */
  121. @RequestMapping(value = "/insertAdmin", method = RequestMethod.POST)
  122. public Result insertAdmin(String data) {
  123. Result res = new Result();
  124. JSONObject jo = (JSONObject) JSON.parse(data);
  125. if (null != jo) {
  126. Admin admin = jo.toJavaObject(Admin.class);
  127. if (StringUtils.isBlank(admin.getMobile())) {
  128. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "登录帐号为空", "登录帐号"));
  129. return res;
  130. }
  131. if (StringUtils.isBlank(admin.getName())) {
  132. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "用户名为空", "用户名"));
  133. return res;
  134. }
  135. Admin a = adminService.selectByMobile(admin.getMobile().trim());
  136. if (null != a) {
  137. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "当前用户已注册!"));
  138. return res;
  139. }
  140. Admin ad = new Admin();
  141. BeanUtils.copyProperties(admin, ad);
  142. ad.setId(UUID.randomUUID().toString());
  143. Calendar now = Calendar.getInstance();
  144. now.set(Calendar.MILLISECOND, 0);
  145. ad.setCreateTime(now.getTime());
  146. if (StringUtils.isBlank(ad.getPassword())) {
  147. ad.setPassword(AFTConstants.INITIALPASSWORD);
  148. }
  149. ad.setPassword(passwordUtil.getEncryptPwd(ad));
  150. res.setData(adminService.insertNewAdmin(ad));
  151. }
  152. return res;
  153. }
  154. /**
  155. * 修改管理员信息(不是管理员列表修改)
  156. */
  157. @RequestMapping(value = "/updateAdmin", method = RequestMethod.POST)
  158. public Result updateAdmin(@RequestParam(value = "roles[]", required = false) String[] roleIds, String data) {
  159. Result res = new Result();
  160. JSONObject jo = (JSONObject) JSON.parse(data);
  161. if (null != jo) {
  162. Admin admin = jo.toJavaObject(Admin.class);
  163. if (null == admin.getId()) {
  164. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id"));
  165. return res;
  166. }
  167. if (null == admin.getMobile()) {
  168. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "登录帐号为空", "登录帐号"));
  169. return res;
  170. }
  171. if (null == admin.getName()) {
  172. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "用户名为空", "用户名"));
  173. return res;
  174. }
  175. Admin aa = adminService.selectByMobile(admin.getMobile().trim());
  176. if (null != aa && !admin.getId().equals(aa.getId())) {
  177. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "当前用户已注册!"));
  178. return res;
  179. }
  180. Admin a = adminService.selectByPrimaryKey(admin.getId());
  181. if (null == a) {
  182. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id"));
  183. return res;
  184. }
  185. Admin ad = new Admin();
  186. BeanUtils.copyProperties(admin, ad);
  187. res = disposeAdminLocationList(res, jo, ad);
  188. if (!res.getError().isEmpty()) {
  189. return res;
  190. }
  191. List<String> roles = new ArrayList<String>();
  192. if (roleIds != null && roleIds.length > 0) {
  193. for (String role : roleIds) {
  194. roles.add(role);
  195. }
  196. }
  197. res.setData(adminService.updateByPrimaryKeySelective(ad, roles));
  198. }
  199. return res;
  200. }
  201. /**
  202. * 重置管理员密码
  203. */
  204. @RequestMapping(value = "/resetPwd", method = RequestMethod.POST)
  205. public Result resetPwd(String id) {
  206. Result res = new Result();
  207. if (StringUtils.isBlank(id)) {
  208. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id"));
  209. return res;
  210. }
  211. Admin admin = adminService.selectByPrimaryKey(id);
  212. if (null == admin) {
  213. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id"));
  214. return res;
  215. }
  216. Admin a = new Admin();
  217. a.setId(admin.getId());
  218. a.setCreateTime(admin.getCreateTime());
  219. a.setPassword(AFTConstants.INITIALPASSWORD);
  220. a.setPassword(passwordUtil.getEncryptPwd(a));
  221. res.setData(adminService.updateByPrimaryKey(a));
  222. return res;
  223. }
  224. private Result disposeAdminLocationList(Result res, JSONObject jo, Admin ad) {
  225. JSONArray locations = jo.getJSONArray("locations");
  226. if (null == locations || locations.size()<1){
  227. return res;
  228. }
  229. List<AdminLocation> adminLocationList = new ArrayList<>();
  230. AdminLocation al = null;
  231. Boolean areaAdminFlag = false;
  232. List<Integer> locationList = null;
  233. if (TokenManager.hasRole(AFTConstants.AREAADMIN)) {
  234. locationList = new ArrayList<>();
  235. areaAdminFlag = true;
  236. }
  237. for (int i = 0; i < locations.size(); i++) {
  238. AdminLocationBo alb = locations.getJSONObject(i).toJavaObject(AdminLocationBo.class);
  239. Integer province = alb.getProvince();
  240. String city = alb.getCity();
  241. if (null == province) {
  242. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "省份为空", "所在省份"));
  243. return res;
  244. }
  245. if (province.intValue() > AFTConstants.PROVINCEMAXNUM) {
  246. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "所在省份"));
  247. return res;
  248. }
  249. if (areaAdminFlag) {
  250. locationList.add(province);
  251. }
  252. if (!StringUtils.isBlank(city)) {
  253. String[] arr = city.trim().split(",|,");
  254. if (null != arr && arr.length > 0) {
  255. for (String s : arr) {
  256. Integer c = Integer.valueOf(s);
  257. if (c.intValue() > AFTConstants.CITYMAXNUM) {
  258. res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "所在市"));
  259. return res;
  260. }
  261. adminLocationList.add(disposeAdminLocation(al, ad, province, c));
  262. if (areaAdminFlag) {
  263. locationList.add(c);
  264. }
  265. }
  266. }
  267. } else {
  268. adminLocationList.add(disposeAdminLocation(al, ad, province, null));
  269. }
  270. }
  271. if (areaAdminFlag) {
  272. List<Integer> albList = disposeAdminLocationBo();
  273. if (!albList.containsAll(locationList)) {
  274. res.getError().add(buildError("", "所选所在地区域不在负责区域,无法添加或修改"));
  275. return res;
  276. }
  277. }
  278. res.setData(adminLocationList);
  279. return res;
  280. }
  281. private AdminLocation disposeAdminLocation(AdminLocation al, Admin ad, Integer province, Integer c) {
  282. al = new AdminLocation();
  283. al.setId(UUID.randomUUID().toString());
  284. al.setAdminId(ad.getId());
  285. al.setProvince(province);
  286. if (null != c) {
  287. al.setCity(c);
  288. }
  289. return al;
  290. }
  291. private List<Integer> disposeAdminLocationBo() {
  292. List<AdminLocationBo> alb = adminLocationService.findLocation(TokenManager.getAdminId());
  293. List<Integer> albList = null;
  294. if (!alb.isEmpty()) {
  295. Integer albProvince = null;
  296. albList = new ArrayList<>();
  297. for (AdminLocationBo bo : alb) {
  298. albProvince = bo.getProvince();
  299. albList.add(albProvince);
  300. if (!StringUtils.isBlank(bo.getCity())) {
  301. String[] albArr = bo.getCity().trim().split(",|,");
  302. if (null != albArr && albArr.length > 0) {
  303. for (String ss : albArr) {
  304. albList.add(Integer.valueOf(ss));
  305. }
  306. }
  307. }
  308. }
  309. }
  310. return albList;
  311. }
  312. }