package com.goafanti.admin.controller; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.UUID; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.goafanti.admin.bo.AdminLocationBo; import com.goafanti.admin.service.AdminLocationService; import com.goafanti.admin.service.AdminService; import com.goafanti.common.bo.Result; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.constant.ErrorConstants; import com.goafanti.common.controller.CertifyApiController; import com.goafanti.common.enums.UserType; import com.goafanti.common.model.Admin; import com.goafanti.common.model.AdminLocation; import com.goafanti.common.utils.PasswordUtil; import com.goafanti.common.utils.StringUtils; import com.goafanti.core.shiro.token.TokenManager; import com.goafanti.user.service.UserService; @Controller @RequestMapping(value = "/api/admin/supervise") public class AdminSuperviseApiController extends CertifyApiController { @Resource private AdminService adminService; @Resource(name = "passwordUtil") private PasswordUtil passwordUtil; @Resource private AdminLocationService adminLocationService; @Resource private UserService userService; /** * 审核人员、客户经理、营销经理检索全部客户名称 */ @RequestMapping(value = "/findUser", method = RequestMethod.GET) public Result findUser(String name, String mobile, Integer type){ Result res = new Result(); if (null == type){ res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "用户类型", "用户类型")); return res; } if (!UserType.PERSONAL.getCode().equals(type) && !UserType.ORGANIZATION.getCode().equals(type)){ res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "用户类型", "用户类型")); return res; } if (StringUtils.isBlank(name) && StringUtils.isBlank(mobile)){ res.getError().add(buildError("", "查询条件不能为空!")); return res; } if (UserType.PERSONAL.getCode().equals(type)){ res.setData(userService.findUserNameByNameAndMobile(name, mobile)); } else { res.setData(userService.findOrgNameByNameAndMobile(name, mobile)); } return res; } /** * 管理员获取自己所在地区(地区管理员) */ @RequestMapping(value = "/adminOwnLocation", method = RequestMethod.GET) public Result adminOwnLocation() { Result res = new Result(); if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) { res.setData(AFTConstants.SUPERADMIN); return res; } res.setData(adminLocationService.findLocation(TokenManager.getAdminId())); return res; } /** * 管理员详情获取地区 */ @RequestMapping(value = "/adminDetailLocation", method = RequestMethod.GET) public Result adminDetailLocation(String id) { Result res = new Result(); if (StringUtils.isBlank(id)) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "用户ID", "用户ID")); return res; } res.setData(adminLocationService.findLocation(id)); return res; } /** * 管理员下拉列表 */ @RequestMapping(value = "/adminSelectList", method = RequestMethod.GET) public Result adminSelectList() { Result res = new Result(); res.setData(adminService.listAdminSelect()); return res; } /** * 管理员列表 */ @RequestMapping(value = "/adminList", method = RequestMethod.GET) public Result adminList(Integer province, Integer number, String mobile, String name,String roleName, String pageNo, String pageSize) { Result res = new Result(); Integer pNo = 1; Integer pSize = 10; if (StringUtils.isNumeric(pageSize)) { pSize = Integer.parseInt(pageSize); } if (StringUtils.isNumeric(pageNo)) { pNo = Integer.parseInt(pageNo); } res.setData(adminService.listAdmin(province, number, mobile, name, roleName, pNo, pSize)); return res; } /** * 新增管理员 */ @RequestMapping(value = "/insertAdmin", method = RequestMethod.POST) public Result insertAdmin(String data) { Result res = new Result(); JSONObject jo = (JSONObject) JSON.parse(data); if (null != jo) { Admin admin = jo.toJavaObject(Admin.class); if (StringUtils.isBlank(admin.getMobile())) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "登录帐号为空", "登录帐号")); return res; } if (StringUtils.isBlank(admin.getName())) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "用户名为空", "用户名")); return res; } Admin a = adminService.selectByMobile(admin.getMobile().trim()); if (null != a) { res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "当前用户已注册!")); return res; } Admin ad = new Admin(); BeanUtils.copyProperties(admin, ad); ad.setId(UUID.randomUUID().toString()); Calendar now = Calendar.getInstance(); now.set(Calendar.MILLISECOND, 0); ad.setCreateTime(now.getTime()); if (StringUtils.isBlank(ad.getPassword())) { ad.setPassword(AFTConstants.INITIALPASSWORD); } ad.setPassword(passwordUtil.getEncryptPwd(ad)); res.setData(adminService.insertNewAdmin(ad)); } return res; } /** * 修改管理员信息(不是管理员列表修改) */ @RequestMapping(value = "/updateAdmin", method = RequestMethod.POST) public Result updateAdmin(@RequestParam(value = "roles[]", required = false) String[] roleIds, String data) { Result res = new Result(); JSONObject jo = (JSONObject) JSON.parse(data); if (null != jo) { Admin admin = jo.toJavaObject(Admin.class); if (null == admin.getId()) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id")); return res; } if (null == admin.getMobile()) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "登录帐号为空", "登录帐号")); return res; } if (null == admin.getName()) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "用户名为空", "用户名")); return res; } Admin aa = adminService.selectByMobile(admin.getMobile().trim()); if (null != aa && !admin.getId().equals(aa.getId())) { res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "当前用户已注册!")); return res; } Admin a = adminService.selectByPrimaryKey(admin.getId()); if (null == a) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id")); return res; } Admin ad = new Admin(); BeanUtils.copyProperties(admin, ad); res = disposeAdminLocationList(res, jo, ad); if (!res.getError().isEmpty()) { return res; } List roles = new ArrayList(); if (roleIds != null && roleIds.length > 0) { for (String role : roleIds) { roles.add(role); } } res.setData(adminService.updateByPrimaryKeySelective(ad, roles)); } return res; } /** * 重置管理员密码 */ @RequestMapping(value = "/resetPwd", method = RequestMethod.POST) public Result resetPwd(String id) { Result res = new Result(); if (StringUtils.isBlank(id)) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id")); return res; } Admin admin = adminService.selectByPrimaryKey(id); if (null == admin) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id")); return res; } Admin a = new Admin(); a.setId(admin.getId()); a.setCreateTime(admin.getCreateTime()); a.setPassword(AFTConstants.INITIALPASSWORD); a.setPassword(passwordUtil.getEncryptPwd(a)); res.setData(adminService.updateByPrimaryKey(a)); return res; } private Result disposeAdminLocationList(Result res, JSONObject jo, Admin ad) { JSONArray locations = jo.getJSONArray("locations"); if (null == locations || locations.size()<1){ return res; } List adminLocationList = new ArrayList<>(); AdminLocation al = null; Boolean areaAdminFlag = false; List locationList = null; if (TokenManager.hasRole(AFTConstants.AREAADMIN)) { locationList = new ArrayList<>(); areaAdminFlag = true; } for (int i = 0; i < locations.size(); i++) { AdminLocationBo alb = locations.getJSONObject(i).toJavaObject(AdminLocationBo.class); Integer province = alb.getProvince(); String city = alb.getCity(); if (null == province) { res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "省份为空", "所在省份")); return res; } if (province.intValue() > AFTConstants.PROVINCEMAXNUM) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "所在省份")); return res; } if (areaAdminFlag) { locationList.add(province); } if (!StringUtils.isBlank(city)) { String[] arr = city.trim().split(",|,"); if (null != arr && arr.length > 0) { for (String s : arr) { Integer c = Integer.valueOf(s); if (c.intValue() > AFTConstants.CITYMAXNUM) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "所在市")); return res; } adminLocationList.add(disposeAdminLocation(al, ad, province, c)); if (areaAdminFlag) { locationList.add(c); } } } } else { adminLocationList.add(disposeAdminLocation(al, ad, province, null)); } } if (areaAdminFlag) { List albList = disposeAdminLocationBo(); if (!albList.containsAll(locationList)) { res.getError().add(buildError("", "所选所在地区域不在负责区域,无法添加或修改")); return res; } } res.setData(adminLocationList); return res; } private AdminLocation disposeAdminLocation(AdminLocation al, Admin ad, Integer province, Integer c) { al = new AdminLocation(); al.setId(UUID.randomUUID().toString()); al.setAdminId(ad.getId()); al.setProvince(province); if (null != c) { al.setCity(c); } return al; } private List disposeAdminLocationBo() { List alb = adminLocationService.findLocation(TokenManager.getAdminId()); List albList = null; if (!alb.isEmpty()) { Integer albProvince = null; albList = new ArrayList<>(); for (AdminLocationBo bo : alb) { albProvince = bo.getProvince(); albList.add(albProvince); if (!StringUtils.isBlank(bo.getCity())) { String[] albArr = bo.getCity().trim().split(",|,"); if (null != albArr && albArr.length > 0) { for (String ss : albArr) { albList.add(Integer.valueOf(ss)); } } } } } return albList; } }