admin管理员组

文章数量:1130349

基于javaweb和mysql的springbootcrm客户关系管理系统(java+springboot+maven+mysql+freemarker)

私信源码获取及调试交流

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb的SpringBootcrm客户关系管理系统(java+springboot+maven+mysql+freemarker)

登录:

admin 123456

manager1 123456

manager2 123456

sales1 123456

sales2 123456

sales3 123456

sales4 123456

sales5 123456

sales6 123456

Springboot项目CRM客户关系管理系统:

系统实现了CRM客户关系系统的基本功能,主要有看板(当月参与的业务机会、当月转化情况、将要结束的业务机会等)、业务机会(初步接触中、需求分析中、协商方案中、商业谈判中的业务机会)、客户管理、联系人管理、个人日报管理、查看团队日报、主数据管理(组织架构管理)、系统管理(用户管理、角色管理、菜单管理)。


@Controller
@RequestMapping("/activity")
public class ActivityController extends AuthorizedController {

    @Autowired
    private ActivityService activityService;

    @Autowired
    private OrgUnitService orgUnitService;

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @ResponseBody
    public Result add(@RequestBody Activity activity) {
        activity.setCreateBy(getUser().getUserId());
        return activityService.insert(activity);
    }

    @RequestMapping(value = "/find", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Activity> find(@RequestBody QueryActivityVo vo) {
        return activityService.find(vo);
    }

    @RequestMapping(value = "/findMyDailyReport", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Activity> findMyDailyReport(@RequestBody QueryActivityVo vo) {
        List<Integer> createBy = new ArrayList<>();
        createBy.add(getUser().getUserId());
        vo.setCreateBy(createBy);
        return activityService.find(vo);
    }

    @RequestMapping(value = "/findTeamDailyReport", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Activity> findTeamDailyReport(@RequestBody QueryActivityVo vo) {
        List<Integer> subordinate = orgUnitService.findSubordinate(getUser().getUserId());
        return customerService.updateStar(customer);
    }

    @RequestMapping(value = "/updateLocation", method = RequestMethod.POST)
    @ResponseBody
    public Result updateLocation(@RequestBody Customer customer) {
        return customerService.updateLocation(customer);
    }
}

@Controller()
@RequestMapping("/menu")
public class MenuController extends AuthorizedController {

    @Autowired
    private MenuService menuService;

    @RequestMapping(value = "", method = RequestMethod.GET)
    public String index() {
        return "sys/menu";
    }

    @RequestMapping(value = "/findAllMenu", method = RequestMethod.POST)
    @ResponseBody
    public List<Menu> findAllMenu() {
        return menuService.findAllMenu();

@Service
public class ExcelUtil {

    @Autowired
    private HttpServletResponse response;

    public <T> void export(String fileName, List<T> data) {
        try {

            if (data == null || data.isEmpty()) {
                return;
            }

            List<ExcelColumn> columnList = new ArrayList<>();

            Class<?> type = data.get(0).getClass();

            List<Field> fields = Arrays.asList(type.getDeclaredFields());

            for (Field field : fields) {
                field.setAccessible(true);
                ExcelColumn excelColumn = field.getAnnotation(ExcelColumn.class);
                columnList.add(excelColumn);
            }

            columnList.sort((e1, e2) -> e1.order() - e2.order());
            fields.sort((f1, f2) -> f1.getAnnotation(ExcelColumn.class).order() - f2.getAnnotation(ExcelColumn.class).order());

            HSSFWorkbook workbook = new HSSFWorkbook();
    public User findById(@RequestBody User user) {
        return userService.findById(user.getUserId());
    }

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    @ResponseBody
    public Result update(@RequestBody User user) {
        Result result = userService.update(user);
        if (result.isSuccess() && user.getUserId() == getUser().getUserId()) {
            session.setAttribute("User", userService.findById(getUser().getUserId()));
        }
        return result;
    }

    @RequestMapping(value = "/updateStatus", method = RequestMethod.POST)
    @ResponseBody
    public Result updateStatus(@RequestBody User user) {
        return userService.updateStatus(user);
    }

    @RequestMapping(value = "/checkUserName", method = RequestMethod.POST)
    @ResponseBody
    public Result checkUserName(@RequestBody User user) {
        return userService.checkUserName(user);
    }

    @RequestMapping(value = "/resetPassword", method = RequestMethod.POST)
    @ResponseBody
    public Result resetPassword(@RequestBody User user) {
        return userService.resetPassword(user);
    }

    @RequestMapping(value = "/profile", method = RequestMethod.GET)
    public String profile() {
        return "sys/profile";
    }

    @RequestMapping(value = "/updatePassword", method = RequestMethod.POST)
    @ResponseBody
    public Result updatePassword(@RequestBody UpdatePasswordVo vo) {
        return userService.updatePassword(vo);
    }
}
    @ResponseBody
    public PageInfo<OrgUnitUser> findUserInOrgUnit(@RequestBody QueryOrgUnitUserVo vo) {
        return orgUnitService.findUserInOrgUnit(vo);
    }

    @RequestMapping(value = "/orgUser/add", method = RequestMethod.POST)
    @ResponseBody
    public Result addOrgUser(@RequestBody OrgUnitUser orgUnitUser) {
        return orgUnitService.insertOrgUnitUser(orgUnitUser);
    }

    @RequestMapping(value = "/orgUser/remove", method = RequestMethod.POST)
    @ResponseBody
    public Result removeOrgUser(@RequestBody OrgUnitUser orgUnitUser) {
        return orgUnitService.deleteOrgUnitUser(orgUnitUser);
    }

    @RequestMapping(value = "/orgUser/setUnitHead", method = RequestMethod.POST)
    @ResponseBody
    public Result setUnitHead(@RequestBody OrgUnitUser orgUnitUser) {
        return orgUnitService.setUnitHead(orgUnitUser);
    }

    @RequestMapping(value = "/orgUser/removeUnitHead", method = RequestMethod.POST)
    @ResponseBody
    public Result removeUnitHead(@RequestBody OrgUnitUser orgUnitUser) {
        return orgUnitService.removeUnitHead(orgUnitUser);
    }
}

@Controller
@RequestMapping("/customer")
public class CustomerController extends AuthorizedController {

    @Autowired
    private CustomerService customerService;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String signIn() {
        return "sys/home";
    }

    @RequestMapping(value = "/signIn", method = RequestMethod.POST)
    @ResponseBody
    public ResultData<User> signIn(@RequestBody User user) {
        ResultData<User> result = userService.signIn(user);
        if (result.isSuccess()) {
            user = result.getData();
            session.setAttribute("User", user);
        }
        return result;
    }

    @RequestMapping(value = "/signOut", method = RequestMethod.GET)
    @RequireSession
    public String signOut() {
        session.invalidate();
        return "redirect:" + powerTeamConfig.getWebRoot();
    }

}

@Controller
@RequestMapping("/district")
public class DistrictController {

                            cell.setCellValue((Boolean) value);
                        }
                    } else if (fieldType == Byte.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Byte) value);
                        }
                    } else if (fieldType == Long.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Long) value);
                        }
                    } else if (fieldType == Short.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Short) value);
                        }
                    }
                }
            }

            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
            workbook.write(response.getOutputStream());
            response.flushBuffer();

        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

                            CellStyle dateStyle = workbook.createCellStyle();
                            CreationHelper createHelper = workbook.getCreationHelper();
                            dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd HH:mm:ss"));
                            cell.setCellStyle(dateStyle);
                            cell.setCellValue((Date) value);
                        }
                    } else if (fieldType == Integer.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Integer) value);
                        }
                    } else if (fieldType == Double.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Double) value);
                        }
                    } else if (fieldType == Float.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Float) value);
                        }
                    } else if (fieldType == Boolean.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Boolean) value);
                        }
                    } else if (fieldType == Byte.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Byte) value);
                        }
                    } else if (fieldType == Long.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Long) value);
                        }
                    } else if (fieldType == Short.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Short) value);
                        }
                    }
                }
            }

            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
            workbook.write(response.getOutputStream());

    @Autowired
    private OpportunityService opportunityService;

    @Autowired
    private OrgUnitService orgUnitService;

    @RequestMapping(value = "", method = RequestMethod.GET)
    public String customer() {
        return "crm/opportunity";
    }

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @ResponseBody
    public Result add(@RequestBody Opportunity opportunity) {
        opportunity.setCreateBy(getUser().getUserId());
        return opportunityService.insert(opportunity);
    }

    @RequestMapping(value = "/find", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Opportunity> find(@RequestBody QueryOpportunityVo vo) {
        List<Integer> subordinate = orgUnitService.findSubordinate(getUser().getUserId());
        vo.setUserIdList(subordinate);
        return opportunityService.find(vo);
    }

    @RequestMapping(value = "/detail/{opportunityId}", method = RequestMethod.GET)
    public ModelAndView detail(@PathVariable int opportunityId) {
        ModelAndView vm = new ModelAndView("crm/opportunityDetail");
        vm.addObject("opportunityId", opportunityId);
        return vm;
    }

    @RequestMapping(value = "/findById", method = RequestMethod.POST)
    @ResponseBody
    public Opportunity findById(@RequestBody Opportunity opportunity) {
        return opportunityService.findById(opportunity.getOpportunityId());
    }

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    @ResponseBody
    public Result update(@RequestBody Opportunity opportunity) {
        return opportunityService.update(opportunity);
    }

    @RequestMapping(value = "/addContactsRole", method = RequestMethod.POST)
    @ResponseBody
    public Result addContactsRole(@RequestBody ContactsRole contactsRole) {
        return opportunityService.insertContactsRole(contactsRole);
    }

            if (data == null || data.isEmpty()) {
                return;
            }

            List<ExcelColumn> columnList = new ArrayList<>();

            Class<?> type = data.get(0).getClass();

            List<Field> fields = Arrays.asList(type.getDeclaredFields());

            for (Field field : fields) {
                field.setAccessible(true);
                ExcelColumn excelColumn = field.getAnnotation(ExcelColumn.class);
                columnList.add(excelColumn);
            }

            columnList.sort((e1, e2) -> e1.order() - e2.order());
            fields.sort((f1, f2) -> f1.getAnnotation(ExcelColumn.class).order() - f2.getAnnotation(ExcelColumn.class).order());

            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet();

            HSSFRow headerRow = sheet.createRow(0);

            for (ExcelColumn column : columnList) {
                HSSFCell headerCell = headerRow.createCell(column.order());
                headerCell.setCellValue(column.headerName());
            }

            for (int i = 0; i < data.size(); i++) {
                T item = data.get(i);
                HSSFRow row = sheet.createRow(i + 1);

                for (int j = 0; j < fields.size(); j++) {
                    HSSFCell cell = row.createCell(j);

                    Field field = fields.get(j);

                    Class<?> fieldType = field.getType();

            if (user == null) {
                result = false;
            } else if (marks.stream().anyMatch(e -> e instanceof RequireMenu)) {
                List<Menu> menuList = (List<Menu>) session.getAttribute("MenuList");
                Optional<Annotation> annotation = marks.stream().filter(m -> m instanceof RequireMenu).findFirst();
                RequireMenu menuMark = (RequireMenu) annotation.get();
                if (menuList.stream().noneMatch(m -> m.getMenuCode().equals(menuMark.value()))) {
                    result = false;
                }
            }
        }

        if (!result) {
            if (!isAjax) {
                response.sendRedirect(StringUtils.isEmpty(powerTeamConfig.getWebRoot()) ? "/" : powerTeamConfig.getWebRoot());
            } else {
                response.setStatus(HttpStatus.FORBIDDEN.value());
                response.flushBuffer();
            }
        }
        return result;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        if (modelAndView != null) {
            modelAndView.addObject("PowerTeam", powerTeamConfig);
        }
    }
}

    public List<District> findCounty(@RequestBody int cityId) {
        return districtService.findCounty(cityId);
    }
}

@Controller
@RequestMapping("/fun")
public class FunController {

    @Autowired
    private FunService funService;

    @RequestMapping(value = "/findAll", method = RequestMethod.POST)
    @ResponseBody
    public List<Fun> findAll() {
        return funService.findAll();
    }

    @RequestMapping(value = "/findFunInRole", method = RequestMethod.POST)
    @ResponseBody
    public List<Fun> findFunInRole(@RequestBody Integer roleId) {
        return funService.findFunInRole(roleId);
    }

    @RequestMapping(value = "/saveRoleFun", method = RequestMethod.POST)
    @ResponseBody
    public Result saveMenu(@RequestBody Map map) {
        return funService.saveRoleFun((Integer) map.get("roleId"), (List<Integer>) map.get("funIdList"));
    }
}

    @RequestMapping(value = "/find", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Opportunity> find(@RequestBody QueryOpportunityVo vo) {
        List<Integer> subordinate = orgUnitService.findSubordinate(getUser().getUserId());
        vo.setUserIdList(subordinate);
        return opportunityService.find(vo);
    }

    @RequestMapping(value = "/detail/{opportunityId}", method = RequestMethod.GET)
    public ModelAndView detail(@PathVariable int opportunityId) {
        ModelAndView vm = new ModelAndView("crm/opportunityDetail");
        vm.addObject("opportunityId", opportunityId);
        return vm;
    }

    @RequestMapping(value = "/findById", method = RequestMethod.POST)
    @ResponseBody
    public Opportunity findById(@RequestBody Opportunity opportunity) {
        return opportunityService.findById(opportunity.getOpportunityId());
    }

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    @ResponseBody
    public Result update(@RequestBody Opportunity opportunity) {
        return opportunityService.update(opportunity);
    }

    @RequestMapping(value = "/addContactsRole", method = RequestMethod.POST)
    @ResponseBody
    public Result addContactsRole(@RequestBody ContactsRole contactsRole) {
        return opportunityService.insertContactsRole(contactsRole);
    }

    @RequestMapping(value = "/updateContactsRole", method = RequestMethod.POST)
    @ResponseBody
    public Result updateContactsRole(@RequestBody ContactsRole contactsRole) {
        return opportunityService.updateContactsRole(contactsRole);
    }

    @RequestMapping(value = "/removeContactsRole", method = RequestMethod.POST)
    @ResponseBody
    public Result removeContactsRole(@RequestBody ContactsRole contactsRole) {
        return opportunityService.deleteContactsRole(contactsRole);
    }

    @RequestMapping(value = "/remove", method = RequestMethod.POST)

@Controller
@RequestMapping("/district")
public class DistrictController {

    @Autowired
    private DistrictService districtService;

    @RequestMapping(value = "/findAllProvince", method = RequestMethod.POST)
    @ResponseBody
    public List<District> findAllProvince() {
        return districtService.findAllProvince();
    }

    @RequestMapping(value = "/findCity", method = RequestMethod.POST)
    @ResponseBody
    public List<District> findCity(@RequestBody int provinceId) {
        return districtService.findCity(provinceId);
    }

    @RequestMapping(value = "/findCounty", method = RequestMethod.POST)
    @ResponseBody
    public List<District> findCounty(@RequestBody int cityId) {
        return districtService.findCounty(cityId);
    }
}

@Controller

        boolean result = true;

        List<Annotation> marks = new ArrayList<>();
        marks.addAll(Arrays.asList(handlerMethod.getBeanType().getAnnotations()));
        marks.addAll(Arrays.asList(handlerMethod.getMethod().getAnnotations()));

        boolean isAjax = marks.stream().anyMatch(e -> e instanceof ResponseBody);

        if (marks.stream().anyMatch(e -> e instanceof RequireSession)) {
            User user = (User) session.getAttribute("User");
            if (user == null) {
                result = false;
            } else if (marks.stream().anyMatch(e -> e instanceof RequireMenu)) {
                List<Menu> menuList = (List<Menu>) session.getAttribute("MenuList");
                Optional<Annotation> annotation = marks.stream().filter(m -> m instanceof RequireMenu).findFirst();
                RequireMenu menuMark = (RequireMenu) annotation.get();
                if (menuList.stream().noneMatch(m -> m.getMenuCode().equals(menuMark.value()))) {
                    result = false;
                }
            }
        }

        if (!result) {
            if (!isAjax) {
                response.sendRedirect(StringUtils.isEmpty(powerTeamConfig.getWebRoot()) ? "/" : powerTeamConfig.getWebRoot());
            } else {
                response.setStatus(HttpStatus.FORBIDDEN.value());
                response.flushBuffer();
            }
        }
        return result;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        if (modelAndView != null) {
            modelAndView.addObject("PowerTeam", powerTeamConfig);
        }
    }
}

    private PowerTeamConfig powerTeamConfig;

    @Autowired
    private HttpSession session;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HandlerMethod handlerMethod = (HandlerMethod) handler;

        boolean result = true;

        List<Annotation> marks = new ArrayList<>();
        marks.addAll(Arrays.asList(handlerMethod.getBeanType().getAnnotations()));
        marks.addAll(Arrays.asList(handlerMethod.getMethod().getAnnotations()));

        boolean isAjax = marks.stream().anyMatch(e -> e instanceof ResponseBody);

        if (marks.stream().anyMatch(e -> e instanceof RequireSession)) {
            User user = (User) session.getAttribute("User");
            if (user == null) {
                result = false;
            } else if (marks.stream().anyMatch(e -> e instanceof RequireMenu)) {
                List<Menu> menuList = (List<Menu>) session.getAttribute("MenuList");
                Optional<Annotation> annotation = marks.stream().filter(m -> m instanceof RequireMenu).findFirst();
                RequireMenu menuMark = (RequireMenu) annotation.get();
                if (menuList.stream().noneMatch(m -> m.getMenuCode().equals(menuMark.value()))) {
                    result = false;
                }
            }
        }

        if (!result) {
            if (!isAjax) {
                response.sendRedirect(StringUtils.isEmpty(powerTeamConfig.getWebRoot()) ? "/" : powerTeamConfig.getWebRoot());
            } else {
                response.setStatus(HttpStatus.FORBIDDEN.value());
                response.flushBuffer();
            }
        }
        return result;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        if (modelAndView != null) {
            modelAndView.addObject("PowerTeam", powerTeamConfig);
    public ModelAndView roleFun(@PathVariable int roleId) {
        ModelAndView vm = new ModelAndView("sys/roleFun");
        vm.addObject("roleId", roleId);
        return vm;
    }
}

@Controller
@RequestMapping("/orgUnit")
public class OrgUnitController extends AuthorizedController {

    @Autowired
    private OrgUnitService orgUnitService;

    @RequestMapping(value = "", method = RequestMethod.GET)
    public String index() {
        return "masterData/orgUnit";
    }

    @RequestMapping(value = "/findAllOrgUnit", method = RequestMethod.POST)
    @ResponseBody
    public List<OrgUnit> findAllOrgUnit() {
        return orgUnitService.findAllOrgUnit();
    }

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @ResponseBody
    public Result add(@RequestBody OrgUnit orgUnit) {
        return orgUnitService.insert(orgUnit);
    }

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    @ResponseBody
    public Result update(@RequestBody OrgUnit orgUnit) {
        return orgUnitService.update(orgUnit);
    @ResponseBody
    public Result add(@RequestBody Activity activity) {
        activity.setCreateBy(getUser().getUserId());
        return activityService.insert(activity);
    }

    @RequestMapping(value = "/find", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Activity> find(@RequestBody QueryActivityVo vo) {
        return activityService.find(vo);
    }

    @RequestMapping(value = "/findMyDailyReport", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Activity> findMyDailyReport(@RequestBody QueryActivityVo vo) {
        List<Integer> createBy = new ArrayList<>();
        createBy.add(getUser().getUserId());
        vo.setCreateBy(createBy);
        return activityService.find(vo);
    }

    @RequestMapping(value = "/findTeamDailyReport", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Activity> findTeamDailyReport(@RequestBody QueryActivityVo vo) {
        List<Integer> subordinate = orgUnitService.findSubordinate(getUser().getUserId());
        vo.setCreateBy(subordinate);
        return activityService.find(vo);
    }

    @RequestMapping(value = "/delete", method = RequestMethod.POST)
    @ResponseBody
    public Result delete(@RequestBody Activity activity) {
        return activityService.delete(activity);
    }
}

@Controller
@RequestMapping("/contacts")







基于javaweb和mysql的springbootcrm客户关系管理系统(java+springboot+maven+mysql+freemarker)

私信源码获取及调试交流

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb的SpringBootcrm客户关系管理系统(java+springboot+maven+mysql+freemarker)

登录:

admin 123456

manager1 123456

manager2 123456

sales1 123456

sales2 123456

sales3 123456

sales4 123456

sales5 123456

sales6 123456

Springboot项目CRM客户关系管理系统:

系统实现了CRM客户关系系统的基本功能,主要有看板(当月参与的业务机会、当月转化情况、将要结束的业务机会等)、业务机会(初步接触中、需求分析中、协商方案中、商业谈判中的业务机会)、客户管理、联系人管理、个人日报管理、查看团队日报、主数据管理(组织架构管理)、系统管理(用户管理、角色管理、菜单管理)。


@Controller
@RequestMapping("/activity")
public class ActivityController extends AuthorizedController {

    @Autowired
    private ActivityService activityService;

    @Autowired
    private OrgUnitService orgUnitService;

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @ResponseBody
    public Result add(@RequestBody Activity activity) {
        activity.setCreateBy(getUser().getUserId());
        return activityService.insert(activity);
    }

    @RequestMapping(value = "/find", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Activity> find(@RequestBody QueryActivityVo vo) {
        return activityService.find(vo);
    }

    @RequestMapping(value = "/findMyDailyReport", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Activity> findMyDailyReport(@RequestBody QueryActivityVo vo) {
        List<Integer> createBy = new ArrayList<>();
        createBy.add(getUser().getUserId());
        vo.setCreateBy(createBy);
        return activityService.find(vo);
    }

    @RequestMapping(value = "/findTeamDailyReport", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Activity> findTeamDailyReport(@RequestBody QueryActivityVo vo) {
        List<Integer> subordinate = orgUnitService.findSubordinate(getUser().getUserId());
        return customerService.updateStar(customer);
    }

    @RequestMapping(value = "/updateLocation", method = RequestMethod.POST)
    @ResponseBody
    public Result updateLocation(@RequestBody Customer customer) {
        return customerService.updateLocation(customer);
    }
}

@Controller()
@RequestMapping("/menu")
public class MenuController extends AuthorizedController {

    @Autowired
    private MenuService menuService;

    @RequestMapping(value = "", method = RequestMethod.GET)
    public String index() {
        return "sys/menu";
    }

    @RequestMapping(value = "/findAllMenu", method = RequestMethod.POST)
    @ResponseBody
    public List<Menu> findAllMenu() {
        return menuService.findAllMenu();

@Service
public class ExcelUtil {

    @Autowired
    private HttpServletResponse response;

    public <T> void export(String fileName, List<T> data) {
        try {

            if (data == null || data.isEmpty()) {
                return;
            }

            List<ExcelColumn> columnList = new ArrayList<>();

            Class<?> type = data.get(0).getClass();

            List<Field> fields = Arrays.asList(type.getDeclaredFields());

            for (Field field : fields) {
                field.setAccessible(true);
                ExcelColumn excelColumn = field.getAnnotation(ExcelColumn.class);
                columnList.add(excelColumn);
            }

            columnList.sort((e1, e2) -> e1.order() - e2.order());
            fields.sort((f1, f2) -> f1.getAnnotation(ExcelColumn.class).order() - f2.getAnnotation(ExcelColumn.class).order());

            HSSFWorkbook workbook = new HSSFWorkbook();
    public User findById(@RequestBody User user) {
        return userService.findById(user.getUserId());
    }

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    @ResponseBody
    public Result update(@RequestBody User user) {
        Result result = userService.update(user);
        if (result.isSuccess() && user.getUserId() == getUser().getUserId()) {
            session.setAttribute("User", userService.findById(getUser().getUserId()));
        }
        return result;
    }

    @RequestMapping(value = "/updateStatus", method = RequestMethod.POST)
    @ResponseBody
    public Result updateStatus(@RequestBody User user) {
        return userService.updateStatus(user);
    }

    @RequestMapping(value = "/checkUserName", method = RequestMethod.POST)
    @ResponseBody
    public Result checkUserName(@RequestBody User user) {
        return userService.checkUserName(user);
    }

    @RequestMapping(value = "/resetPassword", method = RequestMethod.POST)
    @ResponseBody
    public Result resetPassword(@RequestBody User user) {
        return userService.resetPassword(user);
    }

    @RequestMapping(value = "/profile", method = RequestMethod.GET)
    public String profile() {
        return "sys/profile";
    }

    @RequestMapping(value = "/updatePassword", method = RequestMethod.POST)
    @ResponseBody
    public Result updatePassword(@RequestBody UpdatePasswordVo vo) {
        return userService.updatePassword(vo);
    }
}
    @ResponseBody
    public PageInfo<OrgUnitUser> findUserInOrgUnit(@RequestBody QueryOrgUnitUserVo vo) {
        return orgUnitService.findUserInOrgUnit(vo);
    }

    @RequestMapping(value = "/orgUser/add", method = RequestMethod.POST)
    @ResponseBody
    public Result addOrgUser(@RequestBody OrgUnitUser orgUnitUser) {
        return orgUnitService.insertOrgUnitUser(orgUnitUser);
    }

    @RequestMapping(value = "/orgUser/remove", method = RequestMethod.POST)
    @ResponseBody
    public Result removeOrgUser(@RequestBody OrgUnitUser orgUnitUser) {
        return orgUnitService.deleteOrgUnitUser(orgUnitUser);
    }

    @RequestMapping(value = "/orgUser/setUnitHead", method = RequestMethod.POST)
    @ResponseBody
    public Result setUnitHead(@RequestBody OrgUnitUser orgUnitUser) {
        return orgUnitService.setUnitHead(orgUnitUser);
    }

    @RequestMapping(value = "/orgUser/removeUnitHead", method = RequestMethod.POST)
    @ResponseBody
    public Result removeUnitHead(@RequestBody OrgUnitUser orgUnitUser) {
        return orgUnitService.removeUnitHead(orgUnitUser);
    }
}

@Controller
@RequestMapping("/customer")
public class CustomerController extends AuthorizedController {

    @Autowired
    private CustomerService customerService;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String signIn() {
        return "sys/home";
    }

    @RequestMapping(value = "/signIn", method = RequestMethod.POST)
    @ResponseBody
    public ResultData<User> signIn(@RequestBody User user) {
        ResultData<User> result = userService.signIn(user);
        if (result.isSuccess()) {
            user = result.getData();
            session.setAttribute("User", user);
        }
        return result;
    }

    @RequestMapping(value = "/signOut", method = RequestMethod.GET)
    @RequireSession
    public String signOut() {
        session.invalidate();
        return "redirect:" + powerTeamConfig.getWebRoot();
    }

}

@Controller
@RequestMapping("/district")
public class DistrictController {

                            cell.setCellValue((Boolean) value);
                        }
                    } else if (fieldType == Byte.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Byte) value);
                        }
                    } else if (fieldType == Long.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Long) value);
                        }
                    } else if (fieldType == Short.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Short) value);
                        }
                    }
                }
            }

            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
            workbook.write(response.getOutputStream());
            response.flushBuffer();

        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

                            CellStyle dateStyle = workbook.createCellStyle();
                            CreationHelper createHelper = workbook.getCreationHelper();
                            dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd HH:mm:ss"));
                            cell.setCellStyle(dateStyle);
                            cell.setCellValue((Date) value);
                        }
                    } else if (fieldType == Integer.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Integer) value);
                        }
                    } else if (fieldType == Double.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Double) value);
                        }
                    } else if (fieldType == Float.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Float) value);
                        }
                    } else if (fieldType == Boolean.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Boolean) value);
                        }
                    } else if (fieldType == Byte.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Byte) value);
                        }
                    } else if (fieldType == Long.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Long) value);
                        }
                    } else if (fieldType == Short.class) {
                        Object value = field.get(item);
                        if (value != null) {
                            cell.setCellValue((Short) value);
                        }
                    }
                }
            }

            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
            workbook.write(response.getOutputStream());

    @Autowired
    private OpportunityService opportunityService;

    @Autowired
    private OrgUnitService orgUnitService;

    @RequestMapping(value = "", method = RequestMethod.GET)
    public String customer() {
        return "crm/opportunity";
    }

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @ResponseBody
    public Result add(@RequestBody Opportunity opportunity) {
        opportunity.setCreateBy(getUser().getUserId());
        return opportunityService.insert(opportunity);
    }

    @RequestMapping(value = "/find", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Opportunity> find(@RequestBody QueryOpportunityVo vo) {
        List<Integer> subordinate = orgUnitService.findSubordinate(getUser().getUserId());
        vo.setUserIdList(subordinate);
        return opportunityService.find(vo);
    }

    @RequestMapping(value = "/detail/{opportunityId}", method = RequestMethod.GET)
    public ModelAndView detail(@PathVariable int opportunityId) {
        ModelAndView vm = new ModelAndView("crm/opportunityDetail");
        vm.addObject("opportunityId", opportunityId);
        return vm;
    }

    @RequestMapping(value = "/findById", method = RequestMethod.POST)
    @ResponseBody
    public Opportunity findById(@RequestBody Opportunity opportunity) {
        return opportunityService.findById(opportunity.getOpportunityId());
    }

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    @ResponseBody
    public Result update(@RequestBody Opportunity opportunity) {
        return opportunityService.update(opportunity);
    }

    @RequestMapping(value = "/addContactsRole", method = RequestMethod.POST)
    @ResponseBody
    public Result addContactsRole(@RequestBody ContactsRole contactsRole) {
        return opportunityService.insertContactsRole(contactsRole);
    }

            if (data == null || data.isEmpty()) {
                return;
            }

            List<ExcelColumn> columnList = new ArrayList<>();

            Class<?> type = data.get(0).getClass();

            List<Field> fields = Arrays.asList(type.getDeclaredFields());

            for (Field field : fields) {
                field.setAccessible(true);
                ExcelColumn excelColumn = field.getAnnotation(ExcelColumn.class);
                columnList.add(excelColumn);
            }

            columnList.sort((e1, e2) -> e1.order() - e2.order());
            fields.sort((f1, f2) -> f1.getAnnotation(ExcelColumn.class).order() - f2.getAnnotation(ExcelColumn.class).order());

            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet();

            HSSFRow headerRow = sheet.createRow(0);

            for (ExcelColumn column : columnList) {
                HSSFCell headerCell = headerRow.createCell(column.order());
                headerCell.setCellValue(column.headerName());
            }

            for (int i = 0; i < data.size(); i++) {
                T item = data.get(i);
                HSSFRow row = sheet.createRow(i + 1);

                for (int j = 0; j < fields.size(); j++) {
                    HSSFCell cell = row.createCell(j);

                    Field field = fields.get(j);

                    Class<?> fieldType = field.getType();

            if (user == null) {
                result = false;
            } else if (marks.stream().anyMatch(e -> e instanceof RequireMenu)) {
                List<Menu> menuList = (List<Menu>) session.getAttribute("MenuList");
                Optional<Annotation> annotation = marks.stream().filter(m -> m instanceof RequireMenu).findFirst();
                RequireMenu menuMark = (RequireMenu) annotation.get();
                if (menuList.stream().noneMatch(m -> m.getMenuCode().equals(menuMark.value()))) {
                    result = false;
                }
            }
        }

        if (!result) {
            if (!isAjax) {
                response.sendRedirect(StringUtils.isEmpty(powerTeamConfig.getWebRoot()) ? "/" : powerTeamConfig.getWebRoot());
            } else {
                response.setStatus(HttpStatus.FORBIDDEN.value());
                response.flushBuffer();
            }
        }
        return result;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        if (modelAndView != null) {
            modelAndView.addObject("PowerTeam", powerTeamConfig);
        }
    }
}

    public List<District> findCounty(@RequestBody int cityId) {
        return districtService.findCounty(cityId);
    }
}

@Controller
@RequestMapping("/fun")
public class FunController {

    @Autowired
    private FunService funService;

    @RequestMapping(value = "/findAll", method = RequestMethod.POST)
    @ResponseBody
    public List<Fun> findAll() {
        return funService.findAll();
    }

    @RequestMapping(value = "/findFunInRole", method = RequestMethod.POST)
    @ResponseBody
    public List<Fun> findFunInRole(@RequestBody Integer roleId) {
        return funService.findFunInRole(roleId);
    }

    @RequestMapping(value = "/saveRoleFun", method = RequestMethod.POST)
    @ResponseBody
    public Result saveMenu(@RequestBody Map map) {
        return funService.saveRoleFun((Integer) map.get("roleId"), (List<Integer>) map.get("funIdList"));
    }
}

    @RequestMapping(value = "/find", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Opportunity> find(@RequestBody QueryOpportunityVo vo) {
        List<Integer> subordinate = orgUnitService.findSubordinate(getUser().getUserId());
        vo.setUserIdList(subordinate);
        return opportunityService.find(vo);
    }

    @RequestMapping(value = "/detail/{opportunityId}", method = RequestMethod.GET)
    public ModelAndView detail(@PathVariable int opportunityId) {
        ModelAndView vm = new ModelAndView("crm/opportunityDetail");
        vm.addObject("opportunityId", opportunityId);
        return vm;
    }

    @RequestMapping(value = "/findById", method = RequestMethod.POST)
    @ResponseBody
    public Opportunity findById(@RequestBody Opportunity opportunity) {
        return opportunityService.findById(opportunity.getOpportunityId());
    }

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    @ResponseBody
    public Result update(@RequestBody Opportunity opportunity) {
        return opportunityService.update(opportunity);
    }

    @RequestMapping(value = "/addContactsRole", method = RequestMethod.POST)
    @ResponseBody
    public Result addContactsRole(@RequestBody ContactsRole contactsRole) {
        return opportunityService.insertContactsRole(contactsRole);
    }

    @RequestMapping(value = "/updateContactsRole", method = RequestMethod.POST)
    @ResponseBody
    public Result updateContactsRole(@RequestBody ContactsRole contactsRole) {
        return opportunityService.updateContactsRole(contactsRole);
    }

    @RequestMapping(value = "/removeContactsRole", method = RequestMethod.POST)
    @ResponseBody
    public Result removeContactsRole(@RequestBody ContactsRole contactsRole) {
        return opportunityService.deleteContactsRole(contactsRole);
    }

    @RequestMapping(value = "/remove", method = RequestMethod.POST)

@Controller
@RequestMapping("/district")
public class DistrictController {

    @Autowired
    private DistrictService districtService;

    @RequestMapping(value = "/findAllProvince", method = RequestMethod.POST)
    @ResponseBody
    public List<District> findAllProvince() {
        return districtService.findAllProvince();
    }

    @RequestMapping(value = "/findCity", method = RequestMethod.POST)
    @ResponseBody
    public List<District> findCity(@RequestBody int provinceId) {
        return districtService.findCity(provinceId);
    }

    @RequestMapping(value = "/findCounty", method = RequestMethod.POST)
    @ResponseBody
    public List<District> findCounty(@RequestBody int cityId) {
        return districtService.findCounty(cityId);
    }
}

@Controller

        boolean result = true;

        List<Annotation> marks = new ArrayList<>();
        marks.addAll(Arrays.asList(handlerMethod.getBeanType().getAnnotations()));
        marks.addAll(Arrays.asList(handlerMethod.getMethod().getAnnotations()));

        boolean isAjax = marks.stream().anyMatch(e -> e instanceof ResponseBody);

        if (marks.stream().anyMatch(e -> e instanceof RequireSession)) {
            User user = (User) session.getAttribute("User");
            if (user == null) {
                result = false;
            } else if (marks.stream().anyMatch(e -> e instanceof RequireMenu)) {
                List<Menu> menuList = (List<Menu>) session.getAttribute("MenuList");
                Optional<Annotation> annotation = marks.stream().filter(m -> m instanceof RequireMenu).findFirst();
                RequireMenu menuMark = (RequireMenu) annotation.get();
                if (menuList.stream().noneMatch(m -> m.getMenuCode().equals(menuMark.value()))) {
                    result = false;
                }
            }
        }

        if (!result) {
            if (!isAjax) {
                response.sendRedirect(StringUtils.isEmpty(powerTeamConfig.getWebRoot()) ? "/" : powerTeamConfig.getWebRoot());
            } else {
                response.setStatus(HttpStatus.FORBIDDEN.value());
                response.flushBuffer();
            }
        }
        return result;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        if (modelAndView != null) {
            modelAndView.addObject("PowerTeam", powerTeamConfig);
        }
    }
}

    private PowerTeamConfig powerTeamConfig;

    @Autowired
    private HttpSession session;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HandlerMethod handlerMethod = (HandlerMethod) handler;

        boolean result = true;

        List<Annotation> marks = new ArrayList<>();
        marks.addAll(Arrays.asList(handlerMethod.getBeanType().getAnnotations()));
        marks.addAll(Arrays.asList(handlerMethod.getMethod().getAnnotations()));

        boolean isAjax = marks.stream().anyMatch(e -> e instanceof ResponseBody);

        if (marks.stream().anyMatch(e -> e instanceof RequireSession)) {
            User user = (User) session.getAttribute("User");
            if (user == null) {
                result = false;
            } else if (marks.stream().anyMatch(e -> e instanceof RequireMenu)) {
                List<Menu> menuList = (List<Menu>) session.getAttribute("MenuList");
                Optional<Annotation> annotation = marks.stream().filter(m -> m instanceof RequireMenu).findFirst();
                RequireMenu menuMark = (RequireMenu) annotation.get();
                if (menuList.stream().noneMatch(m -> m.getMenuCode().equals(menuMark.value()))) {
                    result = false;
                }
            }
        }

        if (!result) {
            if (!isAjax) {
                response.sendRedirect(StringUtils.isEmpty(powerTeamConfig.getWebRoot()) ? "/" : powerTeamConfig.getWebRoot());
            } else {
                response.setStatus(HttpStatus.FORBIDDEN.value());
                response.flushBuffer();
            }
        }
        return result;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        if (modelAndView != null) {
            modelAndView.addObject("PowerTeam", powerTeamConfig);
    public ModelAndView roleFun(@PathVariable int roleId) {
        ModelAndView vm = new ModelAndView("sys/roleFun");
        vm.addObject("roleId", roleId);
        return vm;
    }
}

@Controller
@RequestMapping("/orgUnit")
public class OrgUnitController extends AuthorizedController {

    @Autowired
    private OrgUnitService orgUnitService;

    @RequestMapping(value = "", method = RequestMethod.GET)
    public String index() {
        return "masterData/orgUnit";
    }

    @RequestMapping(value = "/findAllOrgUnit", method = RequestMethod.POST)
    @ResponseBody
    public List<OrgUnit> findAllOrgUnit() {
        return orgUnitService.findAllOrgUnit();
    }

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @ResponseBody
    public Result add(@RequestBody OrgUnit orgUnit) {
        return orgUnitService.insert(orgUnit);
    }

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    @ResponseBody
    public Result update(@RequestBody OrgUnit orgUnit) {
        return orgUnitService.update(orgUnit);
    @ResponseBody
    public Result add(@RequestBody Activity activity) {
        activity.setCreateBy(getUser().getUserId());
        return activityService.insert(activity);
    }

    @RequestMapping(value = "/find", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Activity> find(@RequestBody QueryActivityVo vo) {
        return activityService.find(vo);
    }

    @RequestMapping(value = "/findMyDailyReport", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Activity> findMyDailyReport(@RequestBody QueryActivityVo vo) {
        List<Integer> createBy = new ArrayList<>();
        createBy.add(getUser().getUserId());
        vo.setCreateBy(createBy);
        return activityService.find(vo);
    }

    @RequestMapping(value = "/findTeamDailyReport", method = RequestMethod.POST)
    @ResponseBody
    public PageInfo<Activity> findTeamDailyReport(@RequestBody QueryActivityVo vo) {
        List<Integer> subordinate = orgUnitService.findSubordinate(getUser().getUserId());
        vo.setCreateBy(subordinate);
        return activityService.find(vo);
    }

    @RequestMapping(value = "/delete", method = RequestMethod.POST)
    @ResponseBody
    public Result delete(@RequestBody Activity activity) {
        return activityService.delete(activity);
    }
}

@Controller
@RequestMapping("/contacts")







本文标签: 客户关系管理系统springbootcrmMySQLJavaWebfreemarker