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
版权声明:本文标题:基于javaweb和mysql的springbootcrm客户关系管理系统(java+springboot+maven+mysql+freemarker) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1763597614a2946893.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论