package com.powerteam.service.crm;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.powerteam.mapper.crm.OpportunityMapper;
import com.powerteam.model.crm.*;
import com.powerteam.util.DateUtil;
import com.powerteam.vo.Result;
import com.powerteam.vo.crm.QueryOpportunityVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.*;
@Service
public class OpportunityService {
@Autowired
private OpportunityMapper opportunityMapper;
@Autowired
private ShareGroupService shareGroupService;
@Autowired
private ActivityService activityService;
@Transactional
public Result insert(Opportunity opportunity) {
Result result = new Result();
opportunity.setPossibility(0f);
opportunity.setCreateDate(new Date());
opportunity.setOwner(opportunity.getCreateBy());
opportunity.setPhase(OpportunityPhase.初步接触);
if (opportunityMapper.insert(opportunity) > 0) {
ShareGroup shareGroup = new ShareGroup();
shareGroup.setResourceType(ResourceType.业务机会);
shareGroup.setResourceId(opportunity.getOpportunityId());
shareGroup.setUserId(opportunity.getCreateBy());
if (shareGroupService.insert(shareGroup).isSuccess()) {
Activity activity = new Activity();
activity.setResourceType(ResourceType.业务机会);
activity.setResourceId(opportunity.getOpportunityId());
activity.setActivityType(ActivityType.系统跟踪);
activity.setContent("创建了业务机会");
activity.setCreateDate(new Date());
activity.setCreateBy(opportunity.getCreateBy());
if (activityService.insert(activity).isSuccess()) {
result.setSuccess(true);
} else {
result.setMessage("新增业务机会失败");
}
} else {
result.setMessage("新增业务机会失败");
}
} else {
result.setMessage("新增业务机会失败");
}
return result;
}
public PageInfo<Opportunity> find(QueryOpportunityVo vo) {
if (!vo.isDisablePaging()) {
PageHelper.startPage(vo.getPageNum(), vo.getPageSize());
}
if (!StringUtils.isEmpty(vo.getWord())) {
vo.setWord("%" + vo.getWord() + "%");
}
return new PageInfo<>(opportunityMapper.find(vo));
}
public Opportunity findById(Integer opportunityId) {
return opportunityMapper.findById(opportunityId);
}
@Transactional
public Result update(Opportunity opportunity) {
Result result = new Result();
if (opportunity.getPhase() == OpportunityPhase.关闭) {
if (opportunity.getWin().equals(true)) {
opportunity.setLossReason(null);
}
opportunity.setCloseDate(new Date());
} else {
opportunity.setWin(null);
opportunity.setLossReason(null);
opportunity.setCloseDate(null);
}
result.setSuccess(opportunityMapper.update(opportunity) > 0);
return result;
}
@Transactional
public Result insertContactsRole(ContactsRole contactsRole) {
Result result = new Result();
contactsRole.setRole(ContactsRoleType.联络人);
result.setSuccess(opportunityMapper.insertContactsRole(contactsRole) > 0);
return result;
}
@Transactional
public Result updateContactsRole(ContactsRole contactsRole) {
Result result = new Result();
result.setSuccess(opportunityMapper.updateContactsRole(contactsRole) > 0);
return result;
}
@Transactional
public Result deleteContactsRole(ContactsRole contactsRole) {
Result result = new Result();
result.setSuccess(opportunityMapper.deleteContactsRole(contactsRole) > 0);
return result;
}
@Transactional
public Result delete(Opportunity opportunity) {
Result result = new Result();
ShareGroup shareGroup = new ShareGroup();
shareGroup.setResourceType(ResourceType.业务机会);
shareGroup.setResourceId(opportunity.getOpportunityId());
if (!shareGroupService.deleteByResource(shareGroup).isSuccess()) {
return result;
}
Activity activity = new Activity();
activity.setResourceType(ResourceType.业务机会);
activity.setResourceId(opportunity.getOpportunityId());
if (!activityService.deleteByResource(activity).isSuccess()) {
return result;
}
if (opportunityMapper.delete(opportunity) > 0) {
result.setSuccess(true);
}
return result;
}
public List<Map> findMonthlyFunnel(QueryOpportunityVo vo) {
List<Byte> phaseList = new ArrayList<>();
phaseList.add(OpportunityPhase.初步接触);
phaseList.add(OpportunityPhase.需求分析);
phaseList.add(OpportunityPhase.协商方案);
phaseList.add(OpportunityPhase.商业谈判);
phaseList.add(OpportunityPhase.关闭);
vo.setPhaseList(phaseList);
vo.setStartCreateDate(DateUtil.firstDayInMonth());
vo.setEndCreateDate(DateUtil.lastDayInMonth());
return opportunityMapper.findMonthlyFunnel(vo);
}
public List<Map> findMonthlyConversion(QueryOpportunityVo vo) {
vo.setStartCreateDate(DateUtil.firstDayInMonth());
vo.setEndCreateDate(DateUtil.lastDayInMonth());
return opportunityMapper.findMonthlyConversion(vo);
}
public List<Opportunity> findRecentlyClosing(QueryOpportunityVo vo) {
List<Byte> phaseList = new ArrayList<>();
phaseList.add(OpportunityPhase.初步接触);
phaseList.add(OpportunityPhase.需求分析);
phaseList.add(OpportunityPhase.协商方案);
phaseList.add(OpportunityPhase.商业谈判);
vo.setPhaseList(phaseList);
vo.setEndDate(DateUtil.toEndDate(DateUtil.addDays(new Date(), 7)));
return opportunityMapper.findRecentlyClosing(vo);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
springboot+ MyBatis +ssm+ 百度地图+Mysql客户关系CRM管理系统源码,系统经多次测试,运行无误,大家放心下载。
资源推荐
资源详情
资源评论
收起资源包目录
springboot+ MyBatis +ssm+ 百度地图+Mysql客户关系CRM管理系统源码 (457个子文件)
Customer.class 12KB
Opportunity.class 11KB
Contacts.class 8KB
ExcelUtil.class 8KB
MenuService.class 7KB
OpportunityService.class 7KB
OrgUnitService.class 6KB
Activity.class 6KB
UserService.class 6KB
RoleService.class 6KB
OpportunityController.class 6KB
CustomerService.class 6KB
GlobalInterceptor.class 6KB
User.class 5KB
RoleController.class 5KB
QueryOpportunityVo.class 4KB
CustomerController.class 4KB
OrgUnitController.class 4KB
Menu.class 4KB
PowerTeamConfig.class 4KB
UserController.class 4KB
QueryActivityVo.class 4KB
MenuController.class 4KB
ContactsRole.class 3KB
ActivityController.class 3KB
QueryUserVo.class 3KB
ShareGroup.class 3KB
OrgUnit.class 3KB
QueryContactsVo.class 3KB
ContactsService.class 3KB
QueryPageVo.class 3KB
ActivityService.class 3KB
TreeNode.class 3KB
FunService.class 2KB
ContactsController.class 2KB
Role.class 2KB
HomeController.class 2KB
Fun.class 2KB
District.class 2KB
PowerTeamApplication.class 2KB
Result.class 2KB
MailUtil.class 2KB
OrgUnitUser.class 2KB
QueryOrgUnitUserVo.class 2KB
CustomerCategory.class 2KB
QueryRoleUserVo.class 2KB
Industry.class 2KB
Source.class 2KB
RoleUser.class 2KB
RoleMenu.class 2KB
FunController.class 2KB
RoleFun.class 2KB
ResultData.class 2KB
FastJsonConfiguration.class 2KB
DistrictController.class 2KB
UpdatePasswordVo.class 2KB
ShareGroupService.class 1KB
QueryCustomerVo.class 1KB
InterceptorConfig.class 1KB
DateUtil.class 1KB
OrgUnitMapper.class 1KB
DistrictService.class 1KB
RoleMapper.class 1KB
MenuMapper.class 972B
CustomerMapper.class 947B
OpportunityMapper.class 917B
DailyReportController.class 914B
ServletInitializer.class 873B
UserMapper.class 837B
AuthorizedController.class 827B
DashboardController.class 766B
FunMapper.class 680B
ExcelColumn.class 599B
ContactsMapper.class 555B
RequireMenu.class 554B
RequireSession.class 509B
ActivityMapper.class 505B
DistrictMapper.class 496B
OpportunityPhase.class 331B
ContactsRoleType.class 322B
ShareGroupMapper.class 315B
ActivityType.class 275B
ResourceType.class 215B
UserStatus.class 205B
.classpath 1KB
bootstrap.min.css 118KB
bootstrap.min.css 118KB
AdminLTE.min.css 88KB
AdminLTE.min.css 88KB
font-awesome.min.css 28KB
font-awesome.min.css 28KB
powerteam.css 5KB
powerteam.css 5KB
select.min.css 5KB
select.min.css 5KB
skin-blue-light.min.css 4KB
skin-blue-light.min.css 4KB
ng-notify.min.css 2KB
ng-notify.min.css 2KB
angular-switcher.min.css 1KB
共 457 条
- 1
- 2
- 3
- 4
- 5
资源评论
reg183
- 粉丝: 1811
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功