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 javax.servlet.http.HttpServletRequest; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; 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.AdminListBo; import com.goafanti.admin.bo.AdminLocationBo; import com.goafanti.admin.service.AdminLocationService; import com.goafanti.admin.service.NewAdminService; 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.dao.AdminMapper; 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/superviser") public class AdminSuperviserApiController extends CertifyApiController { @Resource private NewAdminService newAdminService; @Resource(name = "passwordUtil") private PasswordUtil passwordUtil; @Resource private AdminLocationService adminLocationService; @Resource private UserService userService; @Autowired private AdminMapper adminMapper; /**管理员列表*/ @RequestMapping(value = "/adminList", method = RequestMethod.GET) public Result adminList(AdminListBo alb, String rid, 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(newAdminService.listAdmin(alb,rid, pNo, pSize)); return res; } /** * 新增管理员 */ @RequestMapping(value = "/insertAdmin", method = RequestMethod.POST) public Result insertAdmin(@RequestParam(value = "roles[]", required = false) String[] roleIds, String data) { Result res = new Result(); JSONObject jo = (JSONObject) JSON.parse(data); if (roleIds==null||roleIds.length<=0) { res.getError().add(buildError("","角色不能为空")); return res; } 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 = newAdminService.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)); List roles = new ArrayList(); if (roleIds != null && roleIds.length > 0) { for (String role : roleIds) { roles.add(role); } } res.setData(newAdminService.insertNewAdmin(ad,roles)); } 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 = newAdminService.selectByMobile(admin.getMobile().trim()); if (null != aa && !admin.getId().equals(aa.getId())) { res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "当前用户已注册!")); return res; } Admin a = newAdminService.selectByPrimaryKey(admin.getId()); if (null == a) { res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id")); return res; } //*********用户编号判断************** String sdepNo=adminMapper.selectUserNoBySuperiorId(admin.getSuperiorId()); int Count=adminMapper.selectCountBySuperiorId(admin.getSuperiorId()); if((Count+1)>99){ res.getError().add(buildError("","每层最多存在99个子类")); return res; } if(Count<10){ String dep=sdepNo+"0"+Count; String sid=adminMapper.selectIdByUserNo(dep); while(sid!=null){ Count=(Count+1)%100; if(Count>=10){ dep=sdepNo+Count; }else{ dep=sdepNo+"0"+Count; } sid=adminMapper.selectIdByUserNo(dep); } admin.setUserNo(dep); } if(Count>=10){ String dep=sdepNo+Count; String sid=adminMapper.selectIdByUserNo(dep); while(sid!=null){ Count=(Count+1)%100; dep=sdepNo+Count; sid=adminMapper.selectIdByUserNo(dep); } admin.setUserNo(dep); } 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(newAdminService.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 = newAdminService.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(newAdminService.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; } /** 图片上传 **/ @RequestMapping(value = "/uploadAdminImg", method = RequestMethod.POST) public Result uploadCustomerImg(HttpServletRequest req,String sign){ Result res = new Result(); res.setData(handleFile(res, "/customer_sys_file/", false, req, sign)); return res; } /**新增获取ID**/ @RequestMapping(value = "/newId", method = RequestMethod.POST) public Result newId(){ Result res = new Result(); res.setData(UUID.randomUUID().toString()); return res; } /**编辑页面信息获取**/ @RequestMapping(value = "/selectAllByid", method = RequestMethod.POST) public Result selectAllByid(String id){ Result res = new Result(); res.setData(newAdminService.selectAllByid(id)); return res; } /**删除用户**/ @RequestMapping(value = "/deleteById", method = RequestMethod.POST) public Result deleteById(String id){ Result res = new Result(); newAdminService.deleteById(id); return res; } }