Merge remote-tracking branch 'origin/cc_20230520_partner' into cc_20230520_partner
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package com.cool.store.context;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.cool.store.vo.PartnerUserInfoVO;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* C端登录用户信息
|
||||
*/
|
||||
public class PartnerUserHolder {
|
||||
|
||||
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
|
||||
|
||||
public static PartnerUserInfoVO getUser() {
|
||||
String userStr = contextHolder.get();
|
||||
if (StringUtils.isNotBlank(userStr)) {
|
||||
return JSON.parseObject(userStr, PartnerUserInfoVO.class);
|
||||
}
|
||||
return new PartnerUserInfoVO();
|
||||
}
|
||||
|
||||
public static void setUser(String user) {
|
||||
contextHolder.set(user);
|
||||
}
|
||||
|
||||
public static void removeUser(){
|
||||
contextHolder.remove();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
package com.cool.store.http;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.dto.response.ResultDTO;
|
||||
import com.cool.store.dto.wx.CodeSessionDTO;
|
||||
import com.cool.store.dto.wx.PhoneInfoDTO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.utils.RestTemplateUtil;
|
||||
import com.cool.store.mq.util.HttpRestTemplateService;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
@@ -23,24 +27,81 @@ import java.util.Objects;
|
||||
@Service
|
||||
public class WechatRest {
|
||||
|
||||
@Resource
|
||||
private RedisUtilPool redisUtilPool;
|
||||
|
||||
@Resource
|
||||
private HttpRestTemplateService httpRestTemplateService;
|
||||
|
||||
/**
|
||||
* 小程序Token 地址
|
||||
*/
|
||||
String ACCESS_TOKEN = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";
|
||||
/**
|
||||
* 获取手机号码 地址
|
||||
*/
|
||||
String GET_USERPHONENUMBER = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=%s";
|
||||
|
||||
|
||||
public CodeSessionDTO miniProgramJsCodeSession(String appId, String secret, String jsCode){
|
||||
String url = "https://api.weixin.qq.com/sns/jscode2session";
|
||||
Map requestMap = new HashMap<String, String>();
|
||||
requestMap.put("appId", appId);
|
||||
HashMap requestMap = new HashMap();
|
||||
requestMap.put("appid", appId);
|
||||
requestMap.put("secret", secret);
|
||||
requestMap.put("jsCode", jsCode);
|
||||
ResponseEntity<CodeSessionDTO> responseEntity = null;
|
||||
requestMap.put("js_code", jsCode);
|
||||
requestMap.put("grant_type","authorization_code");
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = RestTemplateUtil.get(url, CodeSessionDTO.class);
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getBody()) && responseEntity.getBody().isSuccess()){
|
||||
return responseEntity.getBody();
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
log.info("WechatRest#miniProgramJsCodeSession, url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), CodeSessionDTO.class);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.info("调用微信服务异常{}", e);
|
||||
throw new ServiceException(ErrorCodeEnum.WX_SERVICE_ERROR);
|
||||
log.error("调用微信服务异常", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getAccessToken(String appId, String secret) {
|
||||
String cacheAccessToken = "mini_" + appId;
|
||||
String accessToken = redisUtilPool.getString(cacheAccessToken);
|
||||
if (StringUtils.isNotBlank(accessToken)) {
|
||||
return accessToken;
|
||||
}
|
||||
String reqUrl = String.format(ACCESS_TOKEN, appId, secret);
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(reqUrl, ResultDTO.class, null);
|
||||
log.info("WechatRest#getAccessToken, reqUrl:{}, response:{}", reqUrl, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
JSONObject jsonObject = JSON.parseObject(JSONObject.toJSONString(responseEntity.getData()));
|
||||
String token = jsonObject.getString("access_token");
|
||||
if (StringUtils.isBlank(token)) {
|
||||
throw new ServiceException(ErrorCodeEnum.GET_ACCESSTOKEN_ERROR);
|
||||
}
|
||||
redisUtilPool.setString(cacheAccessToken, token, 7000);
|
||||
accessToken = token;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("获取微信小程序token异常", e);
|
||||
}
|
||||
return accessToken;
|
||||
}
|
||||
|
||||
|
||||
public PhoneInfoDTO getUserPhoneNumber(String code, String accessToken){
|
||||
String reqUrl = String.format(GET_USERPHONENUMBER, accessToken);
|
||||
HashMap requestMap = new HashMap();
|
||||
requestMap.put("code", code);
|
||||
PhoneInfoDTO phoneInfoDTO = null;
|
||||
try {
|
||||
phoneInfoDTO = httpRestTemplateService.postForObject(reqUrl, requestMap, PhoneInfoDTO.class);
|
||||
log.info("WechatRest#getUserPhoneNumber, reqUrl:{}, response:{}", reqUrl, JSONObject.toJSONString(phoneInfoDTO));
|
||||
} catch (Exception e) {
|
||||
log.error("获取手机号异常", e);
|
||||
}
|
||||
return phoneInfoDTO;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.request.AdvancedSettingRequest;
|
||||
import com.cool.store.vo.AdvancedSettingVO;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/14 20:31
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface AdvanceSettingService {
|
||||
|
||||
|
||||
/**
|
||||
* addAdvanceSetting
|
||||
* @param userId
|
||||
* @param advancedSettingRequest
|
||||
* @return
|
||||
*/
|
||||
Boolean addOrUpdateAdvanceSetting(String userId, AdvancedSettingRequest advancedSettingRequest);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询高级设置详情
|
||||
* @return
|
||||
*/
|
||||
AdvancedSettingVO getAdvancedSettingDetail();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.vo.InterviewPlanVO;
|
||||
import com.cool.store.vo.InterviewScheduleInfoVO;
|
||||
import com.cool.store.vo.StageCountVO;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/8 14:45
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface DeskService {
|
||||
|
||||
|
||||
/**
|
||||
* 是否有临期线索与面试
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
InterviewPlanVO getInterviewPlan(String userId);
|
||||
|
||||
|
||||
/**
|
||||
* 面试日程
|
||||
* @param userId
|
||||
* @param selectedData
|
||||
* @return
|
||||
*/
|
||||
InterviewScheduleInfoVO interviewSchedule(String userId,Date selectedData);
|
||||
|
||||
/**
|
||||
* 招商经理 各阶段 待处理 待跟进数量
|
||||
* @param userId
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
StageCountVO getStageCountByType(String userId,String type);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.request.AddTagsRequest;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/13 21:37
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface HyPartnerBaseInfoService {
|
||||
|
||||
|
||||
/**
|
||||
* 添加标签
|
||||
* @param addTagsRequest
|
||||
* @return
|
||||
*/
|
||||
Boolean addTags(AddTagsRequest addTagsRequest);
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.vo.PartnerClerkVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/15 11:05
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface HyPartnerClerkService {
|
||||
|
||||
|
||||
/**
|
||||
* 通过线索ID查询店员信息
|
||||
* @param lineId
|
||||
* @return
|
||||
*/
|
||||
List<PartnerClerkVO> getPartnerClerkList(Long lineId);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.request.BaseUserInfoRequest;
|
||||
import com.cool.store.vo.PartnerIntentApplyInfoVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/9 14:54
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface HyPartnerIntentInfoService {
|
||||
|
||||
|
||||
/**
|
||||
* 招商经理 意向申请阶段 待处理 待跟进列表
|
||||
* @param userId
|
||||
* @param type
|
||||
* @param pageSize
|
||||
* @param pageNumber
|
||||
* @return
|
||||
*/
|
||||
PageInfo<PartnerIntentApplyInfoVO> getPartnerIntentApplyList(String userId, String type, Integer pageSize, Integer pageNumber);
|
||||
|
||||
/**
|
||||
* 根据线索查询加盟商意向申请信息
|
||||
* @param lineId
|
||||
* @return
|
||||
*/
|
||||
PartnerIntentApplyInfoVO getPartnerIntentApplyInfo(Long lineId);
|
||||
|
||||
/**
|
||||
* 员工端 修改加盟商意向信息
|
||||
* @param baseUserInfoRequest
|
||||
* @return
|
||||
*/
|
||||
Boolean updatePartnerIntentInfo(BaseUserInfoRequest baseUserInfoRequest);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.vo.InterviewDetailInfoVO;
|
||||
import com.cool.store.vo.PartnerInterviewInfoVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/8 19:32
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface HyPartnerInterviewPlanService {
|
||||
|
||||
/**
|
||||
* 招商经理今日面试列表
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<InterviewDetailInfoVO> getInterviewPlanList(String userId);
|
||||
|
||||
/**
|
||||
* getPartnerInterviewInfoList
|
||||
* @param userId
|
||||
* @param pageSize
|
||||
* @param pageNumber
|
||||
* @return
|
||||
*/
|
||||
PageInfo<PartnerInterviewInfoVO> getPartnerInterviewInfoList(String userId,Integer pageSize,Integer pageNumber);
|
||||
|
||||
|
||||
/**
|
||||
* getQualifiedInterviewList
|
||||
* @param userId
|
||||
* @param type
|
||||
* @param pageSize
|
||||
* @param pageNumber
|
||||
* @return
|
||||
*/
|
||||
PageInfo<PartnerInterviewInfoVO> getQualifiedInterviewList(String userId,String type,Integer pageSize,Integer pageNumber);
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.request.CloseFollowRequest;
|
||||
import com.cool.store.request.LineRequest;
|
||||
import com.cool.store.vo.BlackListVO;
|
||||
import com.cool.store.vo.PartnerLineInfoAndBaseInfoVO;
|
||||
import com.cool.store.vo.PartnerLineInfoVO;
|
||||
import com.cool.store.vo.StageCountVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/9 10:30
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface HyPartnerLineInfoService {
|
||||
|
||||
|
||||
/**
|
||||
* 查询招商经理 待处理
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
StageCountVO selectStagePendingCount(String userId);
|
||||
|
||||
/**
|
||||
* 查询招商经理 待跟进
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
StageCountVO selectStageFollowCount(String userId);
|
||||
|
||||
|
||||
/**
|
||||
* 查询加盟商线索详情之一 线索信息与基本信息
|
||||
* @param lineId
|
||||
* @return
|
||||
*/
|
||||
PartnerLineInfoAndBaseInfoVO selectPartnerLineInfoAndBaseInfo(Long lineId);
|
||||
|
||||
/**
|
||||
* 最近30天结束的线索
|
||||
* @param userId
|
||||
* @param pageSize
|
||||
* @param pageNumber
|
||||
* @return
|
||||
*/
|
||||
PageInfo<PartnerLineInfoVO> lastMonthCloseLine(String userId,Integer pageSize,Integer pageNumber);
|
||||
|
||||
/**
|
||||
* 转让招商经理
|
||||
* @param userId
|
||||
* @param lineId
|
||||
* @return
|
||||
*/
|
||||
Boolean transferInvestmentManager(String userId,Long lineId);
|
||||
|
||||
/**
|
||||
* 分配招商经理
|
||||
* @param userId
|
||||
* @param lineIdList
|
||||
* @return
|
||||
*/
|
||||
Boolean allocationInvestmentManager(String userId, List<Long> lineIdList);
|
||||
|
||||
|
||||
/**
|
||||
* 黑名单列表
|
||||
* @param LineRequest LineRequest
|
||||
* @return
|
||||
*/
|
||||
PageInfo<BlackListVO> getBlackList(LineRequest LineRequest);
|
||||
|
||||
/**
|
||||
* 加入或者移除 黑名单
|
||||
* @param lineId
|
||||
* @param status
|
||||
* @param joinReason
|
||||
* @return
|
||||
*/
|
||||
Boolean joinBlackList( Long lineId, Integer status, String joinReason);
|
||||
|
||||
/**
|
||||
* 移除黑名单
|
||||
* @param lineId
|
||||
* @param status
|
||||
* @param removeReason
|
||||
* @return
|
||||
*/
|
||||
Boolean removeBlackList( Long lineId, Integer status, String removeReason);
|
||||
|
||||
/**
|
||||
* 结束或者通过线索
|
||||
* @param userId
|
||||
* @param closeFollowRequest
|
||||
* @return
|
||||
*/
|
||||
Boolean closeOrPassFollow(String userId,CloseFollowRequest closeFollowRequest);
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.request.OpenAreaRequest;
|
||||
import com.cool.store.vo.OpenAreaTreeVO;
|
||||
import com.cool.store.vo.OpenAreaVO;
|
||||
import com.cool.store.vo.OpenProvinceVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/13 22:11
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface OpenAreaService {
|
||||
|
||||
|
||||
/**
|
||||
* 根据关键字搜索
|
||||
* @param keyword
|
||||
* @return
|
||||
*/
|
||||
List<OpenAreaTreeVO> queryByKeyword(String keyword,Boolean flag);
|
||||
|
||||
|
||||
/**
|
||||
* 查询所有的开放区域 城市树
|
||||
* @param keyword
|
||||
* @param flag
|
||||
* @return
|
||||
*/
|
||||
List<OpenAreaTreeVO> queryAllOpenAreaByKeyword(String keyword,Boolean flag);
|
||||
|
||||
|
||||
/**
|
||||
* 查询字列表
|
||||
* @param type
|
||||
* @param parentId
|
||||
* @return
|
||||
*/
|
||||
List<OpenAreaVO> getChildrenList(String type, Long parentId);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param userId
|
||||
* @param openAreaRequest
|
||||
* @return
|
||||
*/
|
||||
Boolean batchUpdate(String userId, OpenAreaRequest openAreaRequest);
|
||||
|
||||
|
||||
PageInfo<OpenAreaVO> queryKeyOpenAreaList(Integer pageSize, Integer pageNumber);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询可申请区域 可预约区域
|
||||
* @return
|
||||
*/
|
||||
OpenProvinceVO getOpenProvince();
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
public interface PartnerUserInfoService {
|
||||
|
||||
}
|
||||
@@ -1,10 +1,8 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.dto.wx.MiniProgramLoginDTO;
|
||||
import com.cool.store.dto.wx.MiniProgramMsgDTO;
|
||||
import com.cool.store.vo.wx.CodeSessionVO;
|
||||
import com.cool.store.vo.wx.MiniProgramUserVO;
|
||||
|
||||
import com.cool.store.request.MobileUpdateRequest;
|
||||
import com.cool.store.vo.PartnerUserInfoVO;
|
||||
/**
|
||||
* @author zhangchenbiao
|
||||
* @FileName: WechatMiniAppService
|
||||
@@ -14,9 +12,9 @@ import com.cool.store.vo.wx.MiniProgramUserVO;
|
||||
public interface WechatMiniAppService {
|
||||
|
||||
|
||||
CodeSessionVO miniProgramLogin(MiniProgramLoginDTO param);
|
||||
PartnerUserInfoVO miniProgramLogin(MiniProgramLoginDTO param);
|
||||
|
||||
CodeSessionVO getUserPhoneNumber(MiniProgramLoginDTO param);
|
||||
Boolean updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO);
|
||||
|
||||
CodeSessionVO queryMiniProgramUser(MiniProgramMsgDTO param);
|
||||
PartnerUserInfoVO getUserInfo(String mobile, String openId);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.request.IntentAreaSettingRequest;
|
||||
import com.cool.store.vo.ZoneCheckVO;
|
||||
import com.cool.store.vo.ZoneVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/14 14:26
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface ZoneService {
|
||||
|
||||
|
||||
/**
|
||||
* 新增战区
|
||||
* @param userId
|
||||
* @param intentAreaSettingRequest
|
||||
* @return
|
||||
*/
|
||||
Boolean addZone(String userId,IntentAreaSettingRequest intentAreaSettingRequest);
|
||||
|
||||
/**
|
||||
* 编辑战区
|
||||
* @param userId
|
||||
* @param intentAreaSettingRequest
|
||||
* @return
|
||||
*/
|
||||
Boolean updateZone(String userId,IntentAreaSettingRequest intentAreaSettingRequest);
|
||||
|
||||
/**
|
||||
* 战区列表
|
||||
* @param type
|
||||
* @param pageSize
|
||||
* @param pageNum
|
||||
* @return
|
||||
*/
|
||||
PageInfo<ZoneVO> getZoneList(String type, Integer pageSize ,Integer pageNum);
|
||||
|
||||
/**
|
||||
* 战区详情
|
||||
* @param zoneId
|
||||
* @return
|
||||
*/
|
||||
ZoneVO zoneDetail(Long zoneId);
|
||||
|
||||
/**
|
||||
* 删除战区
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
Boolean deletedZone(Long id);
|
||||
|
||||
/**
|
||||
* 校验是否绑定其他战区
|
||||
* @param intentAreaSettingRequest
|
||||
* @return
|
||||
*/
|
||||
List<ZoneCheckVO> checkZone(IntentAreaSettingRequest intentAreaSettingRequest);
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.cool.store.dao.HyAdvancedSettingDAO;
|
||||
import com.cool.store.entity.HyAdvancedSettingDO;
|
||||
import com.cool.store.request.AdvancedSettingRequest;
|
||||
import com.cool.store.service.AdvanceSettingService;
|
||||
import com.cool.store.vo.AdvancedSettingVO;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/14 20:31
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Service
|
||||
public class AdvanceSettingServiceImpl implements AdvanceSettingService {
|
||||
|
||||
@Resource
|
||||
HyAdvancedSettingDAO hyAdvancedSettingDAO;
|
||||
|
||||
|
||||
@Override
|
||||
public Boolean addOrUpdateAdvanceSetting(String userId, AdvancedSettingRequest advancedSettingRequest) {
|
||||
if (advancedSettingRequest.getId()!=null){
|
||||
//修改
|
||||
updateAdvanceSetting(userId,advancedSettingRequest);
|
||||
}
|
||||
HyAdvancedSettingDO hyAdvancedSettingDO = new HyAdvancedSettingDO();
|
||||
hyAdvancedSettingDO.setCreateUserId(userId);
|
||||
hyAdvancedSettingDO.setPartnerUrl(advancedSettingRequest.getPartnerUrl());
|
||||
hyAdvancedSettingDO.setTencentVideoAccount(advancedSettingRequest.getTencentVideoAccount());
|
||||
hyAdvancedSettingDO.setTencentVideoKey(advancedSettingRequest.getTencentVideoKey());
|
||||
hyAdvancedSettingDAO.insertSelective(hyAdvancedSettingDO);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
private Boolean updateAdvanceSetting(String userId, AdvancedSettingRequest advancedSettingRequest) {
|
||||
HyAdvancedSettingDO hyAdvancedSettingDO = new HyAdvancedSettingDO();
|
||||
hyAdvancedSettingDO.setCreateUserId(userId);
|
||||
hyAdvancedSettingDO.setId(advancedSettingRequest.getId());
|
||||
hyAdvancedSettingDO.setPartnerUrl(advancedSettingRequest.getPartnerUrl());
|
||||
hyAdvancedSettingDO.setTencentVideoAccount(advancedSettingRequest.getTencentVideoAccount());
|
||||
hyAdvancedSettingDO.setTencentVideoKey(advancedSettingRequest.getTencentVideoKey());
|
||||
hyAdvancedSettingDAO.updateByPrimaryKeySelective(hyAdvancedSettingDO);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AdvancedSettingVO getAdvancedSettingDetail() {
|
||||
HyAdvancedSettingDO hyAdvancedSettingDO = hyAdvancedSettingDAO.selectAdvanceSetting();
|
||||
if (hyAdvancedSettingDO==null){
|
||||
return null;
|
||||
}
|
||||
AdvancedSettingVO advancedSettingVO = new AdvancedSettingVO();
|
||||
advancedSettingVO.setId(hyAdvancedSettingDO.getId());
|
||||
advancedSettingVO.setPartnerUrl(hyAdvancedSettingDO.getPartnerUrl());
|
||||
advancedSettingVO.setTencentVideoAccount(hyAdvancedSettingDO.getTencentVideoAccount());
|
||||
advancedSettingVO.setTencentVideoKey(hyAdvancedSettingDO.getTencentVideoKey());
|
||||
return advancedSettingVO;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.dao.HyPartnerInterviewPlanDAO;
|
||||
import com.cool.store.dao.HyPartnerLineInfoDAO;
|
||||
import com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.service.DeskService;
|
||||
import com.cool.store.service.HyPartnerInterviewPlanService;
|
||||
import com.cool.store.service.HyPartnerLineInfoService;
|
||||
import com.cool.store.utils.CoolDateUtils;
|
||||
import com.cool.store.vo.InterviewDetailInfoVO;
|
||||
import com.cool.store.vo.InterviewPlanVO;
|
||||
import com.cool.store.vo.InterviewScheduleInfoVO;
|
||||
import com.cool.store.vo.StageCountVO;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/8 14:45
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Service
|
||||
public class DeskServiceImpl implements DeskService {
|
||||
|
||||
@Resource
|
||||
HyPartnerInterviewPlanDAO hyPartnerInterviewPlanDAO;
|
||||
@Resource
|
||||
HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
|
||||
@Resource
|
||||
HyPartnerInterviewPlanService hyPartnerInterviewPlanService;
|
||||
@Resource
|
||||
HyPartnerLineInfoService hyPartnerLineInfoService;
|
||||
|
||||
@Override
|
||||
public InterviewPlanVO getInterviewPlan(String userId) {
|
||||
InterviewPlanVO interviewPlanVO = new InterviewPlanVO();
|
||||
|
||||
String currentDate = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_DAY);
|
||||
Integer currentDateInterviewCount = hyPartnerInterviewPlanDAO.getCurrentDateInterviewCount(userId, currentDate);
|
||||
interviewPlanVO.setHasInterview(currentDateInterviewCount>0);
|
||||
//临期数量
|
||||
Integer adventLineCount = hyPartnerLineInfoDAO.getAdventLineCount(userId, currentDate);
|
||||
interviewPlanVO.setHasAdventLine(adventLineCount>0);
|
||||
return interviewPlanVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InterviewScheduleInfoVO interviewSchedule(String userId,Date selectedData) {
|
||||
if (StringUtils.isEmpty(userId)||selectedData==null){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
InterviewScheduleInfoVO interviewScheduleInfoVO = new InterviewScheduleInfoVO();
|
||||
//查询面试数量
|
||||
String currentDate = DateUtil.format(selectedData, CoolDateUtils.DATE_FORMAT_DAY);
|
||||
String startTime = DateUtil.format(selectedData, CoolDateUtils.DATE_FORMAT_SEC);
|
||||
String endTime = DateUtil.format(CoolDateUtils.getDateBefore(selectedData, 7), CoolDateUtils.DATE_FORMAT_SEC);
|
||||
SpecialDateRangeInterviewCountDTO interviewCount = hyPartnerInterviewPlanDAO.getInterviewCount(userId, currentDate, startTime, endTime);
|
||||
|
||||
interviewScheduleInfoVO.setCurrentDayInterviewCount(interviewCount.getCurrentDayInterviewCount());
|
||||
interviewScheduleInfoVO.setLastSevenDayInterviewCount(interviewCount.getLastSevenDayInterviewCount());
|
||||
|
||||
//查询面试列表
|
||||
//当天时间 与入参无关
|
||||
List<InterviewDetailInfoVO> interviewPlanList = hyPartnerInterviewPlanService.getInterviewPlanList(userId);
|
||||
interviewScheduleInfoVO.setInterviewDetailInfoVOS(interviewPlanList);
|
||||
|
||||
return interviewScheduleInfoVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StageCountVO getStageCountByType(String userId, String type) {
|
||||
if (CommonConstants.PENDING.equals(type)){
|
||||
return hyPartnerLineInfoService.selectStagePendingCount(userId);
|
||||
}
|
||||
if (CommonConstants.FOLLOW.equals(type)){
|
||||
return hyPartnerLineInfoService.selectStageFollowCount(userId);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.dao.HyPartnerBaseInfoDAO;
|
||||
import com.cool.store.entity.HyPartnerBaseInfoDO;
|
||||
import com.cool.store.request.AddTagsRequest;
|
||||
import com.cool.store.service.HyPartnerBaseInfoService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/13 21:37
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Service
|
||||
public class HyPartnerBaseInfoServiceImpl implements HyPartnerBaseInfoService {
|
||||
|
||||
@Resource
|
||||
HyPartnerBaseInfoDAO hyPartnerBaseInfoDAO;
|
||||
|
||||
@Override
|
||||
public Boolean addTags(AddTagsRequest addTagsRequest) {
|
||||
HyPartnerBaseInfoDO hyPartnerBaseInfoDO = new HyPartnerBaseInfoDO();
|
||||
hyPartnerBaseInfoDO.setId(addTagsRequest.getPartnerBaseInfoId());
|
||||
hyPartnerBaseInfoDO.setUserPortrait(CollectionUtils.isNotEmpty(addTagsRequest.getTags())? JSONObject.toJSONString(addTagsRequest.getTags()):"");
|
||||
hyPartnerBaseInfoDAO.updateByPrimaryKeySelective(hyPartnerBaseInfoDO);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.cool.store.dao.HyPartnerClerkDAO;
|
||||
import com.cool.store.entity.HyPartnerClerkDO;
|
||||
import com.cool.store.service.HyPartnerClerkService;
|
||||
import com.cool.store.vo.PartnerClerkVO;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/15 11:05
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Service
|
||||
public class HyPartnerClerkImpl implements HyPartnerClerkService {
|
||||
|
||||
@Resource
|
||||
HyPartnerClerkDAO hyPartnerClerkDAO;
|
||||
|
||||
|
||||
@Override
|
||||
public List<PartnerClerkVO> getPartnerClerkList(Long lineId) {
|
||||
List<HyPartnerClerkDO> hyPartnerClerkList = hyPartnerClerkDAO.getHyPartnerClerkList(lineId);
|
||||
List<PartnerClerkVO> result= new ArrayList<>();
|
||||
hyPartnerClerkList.forEach(x->{
|
||||
PartnerClerkVO partnerClerkVO = new PartnerClerkVO();
|
||||
partnerClerkVO.setPartnerId(x.getPartnerId());
|
||||
partnerClerkVO.setPartnerLineId(x.getPartnerLineId());
|
||||
partnerClerkVO.setAge(x.getAge());
|
||||
partnerClerkVO.setChooseReason(x.getChooseReason());
|
||||
partnerClerkVO.setUsername(x.getUsername());
|
||||
partnerClerkVO.setRelationship(x.getRelationship());
|
||||
result.add(partnerClerkVO);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.dao.HyPartnerBaseInfoDAO;
|
||||
import com.cool.store.dao.HyPartnerIntentInfoDAO;
|
||||
import com.cool.store.dao.HyPartnerLineInfoDAO;
|
||||
import com.cool.store.dao.HyPartnerUserInfoDAO;
|
||||
import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO;
|
||||
import com.cool.store.entity.HyPartnerUserInfoDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.WorkflowStageEnum;
|
||||
import com.cool.store.enums.WorkflowStatusEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.request.BaseUserInfoRequest;
|
||||
import com.cool.store.service.HyPartnerIntentInfoService;
|
||||
import com.cool.store.vo.PartnerIntentApplyInfoVO;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/9 15:00
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Service
|
||||
public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoService {
|
||||
|
||||
|
||||
@Resource
|
||||
HyPartnerIntentInfoDAO hyPartnerIntentInfoDAO;
|
||||
@Resource
|
||||
HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
|
||||
@Resource
|
||||
HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
|
||||
@Resource
|
||||
HyPartnerBaseInfoDAO hyPartnerBaseInfoDAO;
|
||||
|
||||
@Override
|
||||
public PageInfo<PartnerIntentApplyInfoVO> getPartnerIntentApplyList(String userId, String type, Integer pageSize, Integer pageNumber) {
|
||||
PartnerIntentApplyInfoVO partnerIntentApplyInfoVO = new PartnerIntentApplyInfoVO();
|
||||
String workflowStatus = "";
|
||||
if (CommonConstants.PENDING.equals(type)) {
|
||||
workflowStatus = WorkflowStatusEnum.RESERVATION_0.getCode();
|
||||
}
|
||||
if (CommonConstants.FOLLOW.equals(type)) {
|
||||
workflowStatus = WorkflowStatusEnum.INTERVIEW_5.getCode();
|
||||
}
|
||||
PageHelper.startPage(pageNumber,pageSize);
|
||||
PageInfo partnerIntentApplyInfo = hyPartnerIntentInfoDAO.selectPartnerIntentApplyInfoList(userId, WorkflowStageEnum.INTENT.getCode(), workflowStatus);
|
||||
if (partnerIntentApplyInfo==null){
|
||||
return new PageInfo<>();
|
||||
}
|
||||
List<PartnerIntentApplyInfoDTO> list = partnerIntentApplyInfo.getList();
|
||||
List<String> partnerIds = list.stream().map(PartnerIntentApplyInfoDTO::getPartnerId).collect(Collectors.toList());
|
||||
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIds);
|
||||
Map<String, HyPartnerUserInfoDO> infoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data -> data));
|
||||
List<PartnerIntentApplyInfoVO> result = new ArrayList<>();
|
||||
list.stream().forEach(x->{
|
||||
PartnerIntentApplyInfoVO pat = partnerIntentApplyInfoDTOToVo(x);
|
||||
HyPartnerUserInfoDO infoDOMapOrDefault = infoDOMap.getOrDefault(x.getPartnerId(), new HyPartnerUserInfoDO());
|
||||
pat.setPartnerUserName(infoDOMapOrDefault.getUsername());
|
||||
pat.setPartnerUserPhone(infoDOMapOrDefault.getMobile());
|
||||
result.add(pat);
|
||||
});
|
||||
partnerIntentApplyInfo.setList(result);
|
||||
return partnerIntentApplyInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PartnerIntentApplyInfoVO getPartnerIntentApplyInfo(Long lineId) {
|
||||
PartnerIntentApplyInfoDTO partnerIntentApplyInfoDTO= hyPartnerIntentInfoDAO.selectByLineId(lineId);
|
||||
PartnerIntentApplyInfoVO partnerIntentApplyInfoVO = partnerIntentApplyInfoDTOToVo(partnerIntentApplyInfoDTO);
|
||||
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerIntentApplyInfoDTO.getPartnerId());
|
||||
partnerIntentApplyInfoVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername());
|
||||
partnerIntentApplyInfoVO.setPartnerUserPhone(hyPartnerUserInfoDO.getMobile());
|
||||
//todo su 手机号归属地 意向申请区域名称
|
||||
return partnerIntentApplyInfoVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updatePartnerIntentInfo(BaseUserInfoRequest baseUserInfoRequest) {
|
||||
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(String.valueOf(baseUserInfoRequest.getPartnerId()));
|
||||
if (hyPartnerUserInfoDO==null){
|
||||
throw new ServiceException(ErrorCodeEnum.PARTNER_USER_NOT_EXIST);
|
||||
}
|
||||
hyPartnerUserInfoDO.setUsername(baseUserInfoRequest.getUsername());
|
||||
hyPartnerUserInfoDO.setMobile(baseUserInfoRequest.getMobile());
|
||||
hyPartnerUserInfoDO.setLiveArea(baseUserInfoRequest.getLiveArea());
|
||||
hyPartnerUserInfoDO.setWantShopArea(baseUserInfoRequest.getWantShopArea());
|
||||
hyPartnerUserInfoDO.setAcceptAdjustType(baseUserInfoRequest.getAcceptAdjustType());
|
||||
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(hyPartnerUserInfoDO);
|
||||
|
||||
//修改意向申请信息中的加盟商名称与手机号
|
||||
hyPartnerBaseInfoDAO.updateByPartnerId(baseUserInfoRequest.getUsername(),baseUserInfoRequest.getMobile(),baseUserInfoRequest.getPartnerId());
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* partnerIntentApplyInfoDTOToVo
|
||||
* @param partnerIntentApplyInfoDTO
|
||||
* @return
|
||||
*/
|
||||
private PartnerIntentApplyInfoVO partnerIntentApplyInfoDTOToVo(PartnerIntentApplyInfoDTO partnerIntentApplyInfoDTO){
|
||||
PartnerIntentApplyInfoVO partnerIntentApplyInfoVO = new PartnerIntentApplyInfoVO();
|
||||
partnerIntentApplyInfoVO.setId(partnerIntentApplyInfoDTO.getId());
|
||||
partnerIntentApplyInfoVO.setPartnerId(partnerIntentApplyInfoDTO.getPartnerId());
|
||||
partnerIntentApplyInfoVO.setPartnerLineId(partnerIntentApplyInfoDTO.getPartnerLineId());
|
||||
partnerIntentApplyInfoVO.setPartnerSubmitTime(partnerIntentApplyInfoDTO.getPartnerSubmitTime());
|
||||
partnerIntentApplyInfoVO.setAcceptAdjustType(partnerIntentApplyInfoDTO.getAcceptAdjustType());
|
||||
partnerIntentApplyInfoVO.setLiveArea(partnerIntentApplyInfoDTO.getLiveArea());
|
||||
partnerIntentApplyInfoVO.setWantShopArea(partnerIntentApplyInfoDTO.getWantShopArea());
|
||||
partnerIntentApplyInfoVO.setDeadline(partnerIntentApplyInfoDTO.getDeadline());
|
||||
return partnerIntentApplyInfoVO;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.dao.HyPartnerInterviewPlanDAO;
|
||||
import com.cool.store.dao.HyPartnerUserInfoDAO;
|
||||
import com.cool.store.dto.partner.PartnerInterviewInfoDTO;
|
||||
import com.cool.store.entity.HyPartnerInterviewPlanDO;
|
||||
import com.cool.store.entity.HyPartnerUserInfoDO;
|
||||
import com.cool.store.enums.WorkflowStageEnum;
|
||||
import com.cool.store.enums.WorkflowStatusEnum;
|
||||
import com.cool.store.service.HyPartnerInterviewPlanService;
|
||||
import com.cool.store.utils.CoolDateUtils;
|
||||
import com.cool.store.vo.InterviewDetailInfoVO;
|
||||
import com.cool.store.vo.PartnerInterviewInfoVO;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/8 19:32
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Service
|
||||
public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlanService {
|
||||
|
||||
@Resource
|
||||
HyPartnerInterviewPlanDAO hyPartnerInterviewPlanDAO;
|
||||
@Resource
|
||||
HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
|
||||
|
||||
|
||||
@Override
|
||||
public List<InterviewDetailInfoVO> getInterviewPlanList(String userId) {
|
||||
String currentTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_DAY);
|
||||
List<HyPartnerInterviewPlanDO> interviewPlanList = hyPartnerInterviewPlanDAO.getInterviewPlanList(userId, currentTime);
|
||||
if (CollectionUtils.isEmpty(interviewPlanList)){
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
List<String> partnerIdList = interviewPlanList.stream().map(HyPartnerInterviewPlanDO::getPartnerId).collect(Collectors.toList());
|
||||
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIdList);
|
||||
Map<String, HyPartnerUserInfoDO> hyPartnerUserInfoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data -> data));
|
||||
List<InterviewDetailInfoVO> result = new ArrayList<>();
|
||||
interviewPlanList.stream().forEach(x->{
|
||||
InterviewDetailInfoVO interviewDetailInfoVO = convertDoToInterviewDetailInfoVO(x);
|
||||
HyPartnerUserInfoDO userInfoDO = hyPartnerUserInfoDOMap.getOrDefault(x.getPartnerId(), new HyPartnerUserInfoDO());
|
||||
interviewDetailInfoVO.setUserId(userInfoDO.getPartnerId());
|
||||
interviewDetailInfoVO.setUserName(userInfoDO.getUsername());
|
||||
interviewDetailInfoVO.setUserPhone(userInfoDO.getMobile());
|
||||
result.add(interviewDetailInfoVO);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<PartnerInterviewInfoVO> getPartnerInterviewInfoList(String userId ,Integer pageSize,Integer pageNumber) {
|
||||
PageHelper.startPage(pageNumber,pageSize);
|
||||
//查询预约面试列表
|
||||
PageInfo partnerInterviewInfoList = hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.RESERVATION.getCode(), WorkflowStatusEnum.RESERVATION_0.getCode());
|
||||
List<PartnerInterviewInfoDTO> list = partnerInterviewInfoList.getList();
|
||||
if (CollectionUtils.isEmpty(list)){
|
||||
return partnerInterviewInfoList;
|
||||
}
|
||||
List<PartnerInterviewInfoVO> result = new ArrayList<>();
|
||||
list.stream().forEach(x->{
|
||||
PartnerInterviewInfoVO partnerInterviewInfoVO = convertPartnerInterviewInfoDTOToVo(x);
|
||||
result.add(partnerInterviewInfoVO);
|
||||
});
|
||||
partnerInterviewInfoList.setList(result);
|
||||
return partnerInterviewInfoList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<PartnerInterviewInfoVO> getQualifiedInterviewList(String userId, String type, Integer pageSize, Integer pageNumber) {
|
||||
String workflowStatus = "";
|
||||
if (CommonConstants.PENDING.equals(type)) {
|
||||
workflowStatus = WorkflowStatusEnum.INTERVIEW_4.getCode();
|
||||
}
|
||||
if (CommonConstants.FOLLOW.equals(type)) {
|
||||
workflowStatus = WorkflowStatusEnum.INTERVIEW_5.getCode();
|
||||
}
|
||||
|
||||
PageHelper.startPage(pageNumber,pageSize);
|
||||
//查询预约面试列表
|
||||
PageInfo partnerInterviewInfoList = hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.INTERVIEW.getCode(),workflowStatus);
|
||||
List<PartnerInterviewInfoDTO> list = partnerInterviewInfoList.getList();
|
||||
if (CollectionUtils.isEmpty(list)){
|
||||
return partnerInterviewInfoList;
|
||||
}
|
||||
List<PartnerInterviewInfoVO> result = new ArrayList<>();
|
||||
list.stream().forEach(x->{
|
||||
PartnerInterviewInfoVO partnerInterviewInfoVO = convertPartnerInterviewInfoDTOToVo(x);
|
||||
result.add(partnerInterviewInfoVO);
|
||||
});
|
||||
partnerInterviewInfoList.setList(result);
|
||||
return partnerInterviewInfoList;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* convertDoToInterviewDetailInfoVO
|
||||
* @param hyPartnerInterviewPlanDO
|
||||
* @return
|
||||
*/
|
||||
private InterviewDetailInfoVO convertDoToInterviewDetailInfoVO(HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO){
|
||||
InterviewDetailInfoVO interviewDetailInfoVO = new InterviewDetailInfoVO();
|
||||
if (hyPartnerInterviewPlanDO==null){
|
||||
return interviewDetailInfoVO;
|
||||
}
|
||||
interviewDetailInfoVO.setLineId(hyPartnerInterviewPlanDO.getPartnerLineId());
|
||||
interviewDetailInfoVO.setStartTime(hyPartnerInterviewPlanDO.getStartTime());
|
||||
return interviewDetailInfoVO;
|
||||
}
|
||||
|
||||
/**
|
||||
* PartnerInterviewInfoDTOToVo
|
||||
* @param partnerInterviewInfoDTO
|
||||
* @return
|
||||
*/
|
||||
private PartnerInterviewInfoVO convertPartnerInterviewInfoDTOToVo(PartnerInterviewInfoDTO partnerInterviewInfoDTO){
|
||||
PartnerInterviewInfoVO partnerInterviewInfoVO = new PartnerInterviewInfoVO();
|
||||
partnerInterviewInfoVO.setInterviewId(partnerInterviewInfoDTO.getInterviewId());
|
||||
partnerInterviewInfoVO.setPartnerId(partnerInterviewInfoDTO.getPartnerId());
|
||||
partnerInterviewInfoVO.setInterviewerId(partnerInterviewInfoDTO.getInterviewer());
|
||||
partnerInterviewInfoVO.setProcessInfo(partnerInterviewInfoDTO.getProcessInfo());
|
||||
partnerInterviewInfoVO.setCreateTime(DateUtil.format(partnerInterviewInfoDTO.getCreateTime(),CoolDateUtils.DATE_FORMAT_SEC));
|
||||
partnerInterviewInfoVO.setRoomId(partnerInterviewInfoDTO.getRoomId());
|
||||
partnerInterviewInfoVO.setStartTime(DateUtil.format(partnerInterviewInfoDTO.getStartTime(),CoolDateUtils.DATE_FORMAT_SEC));
|
||||
partnerInterviewInfoVO.setStatus(partnerInterviewInfoDTO.getStatus());
|
||||
partnerInterviewInfoVO.setEndTime(DateUtil.format(partnerInterviewInfoDTO.getEndTime(),CoolDateUtils.DATE_FORMAT_SEC));
|
||||
return partnerInterviewInfoVO;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,283 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.dao.HyPartnerLineInfoDAO;
|
||||
import com.cool.store.dao.HyPartnerUserInfoDAO;
|
||||
import com.cool.store.dto.partner.PartnerBlackListDTO;
|
||||
import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO;
|
||||
import com.cool.store.dto.partner.StageCountDTO;
|
||||
import com.cool.store.entity.HyPartnerLineInfoDO;
|
||||
import com.cool.store.entity.HyPartnerUserInfoDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.LineStatusEnum;
|
||||
import com.cool.store.enums.WorkflowStageEnum;
|
||||
import com.cool.store.enums.WorkflowStatusEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.request.CloseFollowRequest;
|
||||
import com.cool.store.request.LineRequest;
|
||||
import com.cool.store.service.HyPartnerLineInfoService;
|
||||
import com.cool.store.utils.CoolDateUtils;
|
||||
import com.cool.store.utils.StringUtil;
|
||||
import com.cool.store.vo.BlackListVO;
|
||||
import com.cool.store.vo.PartnerLineInfoAndBaseInfoVO;
|
||||
import com.cool.store.vo.PartnerLineInfoVO;
|
||||
import com.cool.store.vo.StageCountVO;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/9 10:30
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Service
|
||||
public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
|
||||
@Resource
|
||||
HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
|
||||
@Resource
|
||||
HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
|
||||
|
||||
@Override
|
||||
public StageCountVO selectStagePendingCount(String userId) {
|
||||
StageCountDTO stageCountDTO = hyPartnerLineInfoDAO.selectStagePendingCount(userId);
|
||||
return stageCountDTOToVo(stageCountDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StageCountVO selectStageFollowCount(String userId) {
|
||||
StageCountDTO stageCountDTO = hyPartnerLineInfoDAO.selectStageFollowCount(userId);
|
||||
return stageCountDTOToVo(stageCountDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PartnerLineInfoAndBaseInfoVO selectPartnerLineInfoAndBaseInfo(Long lineId) {
|
||||
PartnerLineInfoAndBaseInfoDTO partnerLineInfoAndBaseInfoDTO = hyPartnerLineInfoDAO.selectPartnerLineInfoAndBaseInfo(lineId);
|
||||
if (partnerLineInfoAndBaseInfoDTO==null){
|
||||
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
|
||||
}
|
||||
PartnerLineInfoAndBaseInfoVO partnerLineInfoAndBaseInfoVO = convertPartnerLineInfoAndBaseInfoDTOToVo(partnerLineInfoAndBaseInfoDTO);
|
||||
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerLineInfoAndBaseInfoVO.getPartnerUserId());
|
||||
if (hyPartnerUserInfoDO!=null){
|
||||
partnerLineInfoAndBaseInfoVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername());
|
||||
partnerLineInfoAndBaseInfoVO.setPartnerUserPhone(hyPartnerUserInfoDO.getMobile());
|
||||
}
|
||||
//todo su 1、招商经理名称 手机号归属地 2、加盟商手机号归属地
|
||||
return partnerLineInfoAndBaseInfoVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<PartnerLineInfoVO> lastMonthCloseLine(String userId, Integer pageSize, Integer pageNumber) {
|
||||
PageHelper.startPage(pageNumber,pageSize);
|
||||
String lastMonthTodayDate = DateUtil.format(CoolDateUtils.getDateBefore(new Date(),-30), CoolDateUtils.DATE_FORMAT_SEC);
|
||||
PageInfo hyPartnerLineInfoDOPageInfo = hyPartnerLineInfoDAO.lastMonthCloseLine(userId, lastMonthTodayDate);
|
||||
|
||||
List<HyPartnerLineInfoDO> list = hyPartnerLineInfoDOPageInfo.getList();
|
||||
List<PartnerLineInfoVO> result = new ArrayList<>();
|
||||
list.stream().forEach(x->{
|
||||
PartnerLineInfoVO partnerLineInfoVO = new PartnerLineInfoVO();
|
||||
BeanUtils.copyProperties(x,partnerLineInfoVO);
|
||||
result.add(partnerLineInfoVO);
|
||||
});
|
||||
hyPartnerLineInfoDOPageInfo.setList(result);
|
||||
return hyPartnerLineInfoDOPageInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean transferInvestmentManager(String userId, Long lineId) {
|
||||
if (StringUtil.isBlank(userId)||lineId==null){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
hyPartnerLineInfoDAO.updateInvestmentManager(userId, Arrays.asList(lineId));
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean allocationInvestmentManager(String userId, List<Long> lineIdList) {
|
||||
if (StringUtil.isBlank(userId)|| CollectionUtils.isEmpty(lineIdList)){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
//加盟上线索集合
|
||||
List<HyPartnerLineInfoDO> partnerLineInfoList= hyPartnerLineInfoDAO.getLineListByLineIds(lineIdList);
|
||||
//过滤出已结束的线索 这块线索需要重新生成新的线索
|
||||
List<HyPartnerLineInfoDO> closeLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() != null).collect(Collectors.toList());
|
||||
List<Long> closeLineIdList = closeLineList.stream().map(HyPartnerLineInfoDO::getId).collect(Collectors.toList());
|
||||
//已结束的线索 需要重新生成一条新的线索
|
||||
List<HyPartnerLineInfoDO> list = new ArrayList<>();
|
||||
closeLineList.stream().forEach(x->{
|
||||
HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
|
||||
hyPartnerLineInfoDO.setPartnerId(x.getPartnerId());
|
||||
hyPartnerLineInfoDO.setInvestmentManager(userId);
|
||||
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
|
||||
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode());
|
||||
hyPartnerLineInfoDO.setLineStatus(1);
|
||||
list.add(hyPartnerLineInfoDO);
|
||||
});
|
||||
hyPartnerLineInfoDAO.batchInsert(list);
|
||||
//将老的线索置为删除状态
|
||||
hyPartnerLineInfoDAO.batchDeleted(closeLineIdList);
|
||||
//没有结束的线索直接分配招商经理
|
||||
List<HyPartnerLineInfoDO> otherLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() == null).collect(Collectors.toList());
|
||||
List<Long> otherLineIdList = otherLineList.stream().map(HyPartnerLineInfoDO::getId).collect(Collectors.toList());
|
||||
hyPartnerLineInfoDAO.updateInvestmentManager(userId, otherLineIdList);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<BlackListVO> getBlackList(LineRequest LineRequest) {
|
||||
PageHelper.startPage(LineRequest.getPageNum(),LineRequest.getPageSize());
|
||||
PageInfo blackListDTOPageInfo = hyPartnerLineInfoDAO.getBlackList(LineRequest.getKeyWord(), LineRequest.getIntentArea(), LineRequest.getAcceptAdjustType());
|
||||
List<PartnerBlackListDTO> list = blackListDTOPageInfo.getList();
|
||||
List<BlackListVO> result = new ArrayList<>();
|
||||
list.stream().forEach(x->{
|
||||
BlackListVO blackListVO = convertPartnerBlackListDTOToVo(x);
|
||||
//todo su 员工名称手机号 手机号归属地
|
||||
result.add(blackListVO);
|
||||
});
|
||||
blackListDTOPageInfo.setList(result);
|
||||
return blackListDTOPageInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean joinBlackList(Long lineId, Integer status, String joinReason) {
|
||||
if (lineId==null){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
//加入黑名单 阶段回到第一步待提交状态
|
||||
HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
|
||||
hyPartnerLineInfoDO.setId(lineId);
|
||||
hyPartnerLineInfoDO.setLineStatus(status);
|
||||
hyPartnerLineInfoDO.setJoinBlackReason(joinReason);
|
||||
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
|
||||
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode());
|
||||
|
||||
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean removeBlackList(Long lineId, Integer status, String removeReason) {
|
||||
//移除黑名单 黑名单线索置为删除状态 新增一条线索
|
||||
if (lineId==null){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
|
||||
hyPartnerLineInfoDO.setId(lineId);
|
||||
hyPartnerLineInfoDO.setLineStatus(status);
|
||||
hyPartnerLineInfoDO.setRemoveBlackReason(removeReason);
|
||||
hyPartnerLineInfoDO.setDeleted(Boolean.TRUE);
|
||||
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
|
||||
|
||||
|
||||
HyPartnerLineInfoDO newHyPartnerLineInfoDO = new HyPartnerLineInfoDO();
|
||||
hyPartnerLineInfoDO.setPartnerId(hyPartnerLineInfoDO.getPartnerId());
|
||||
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode());
|
||||
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode());
|
||||
hyPartnerLineInfoDO.setLineStatus(0);
|
||||
hyPartnerLineInfoDAO.batchInsert(Arrays.asList(newHyPartnerLineInfoDO));
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean closeOrPassFollow(String userId,CloseFollowRequest closeFollowRequest) {
|
||||
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(closeFollowRequest.getLineId());
|
||||
if (hyPartnerLineInfoDO==null){
|
||||
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
|
||||
}
|
||||
if (WorkflowStageEnum.INTENT.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())){
|
||||
throw new ServiceException(ErrorCodeEnum.WORK_FLOW_STAGE_PASS_ERROR);
|
||||
}
|
||||
//通过
|
||||
if ("pass".equals(closeFollowRequest.getType())){
|
||||
hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.RESERVATION.getCode());
|
||||
hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_0.getCode());
|
||||
hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateFormatDay(2));
|
||||
hyPartnerLineInfoDO.setPassReason(closeFollowRequest.getPassReason());
|
||||
if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())){
|
||||
hyPartnerLineInfoDO.setCertifyFile(JSONObject.toJSONString(closeFollowRequest.getCertifyFile()));
|
||||
}
|
||||
}
|
||||
|
||||
//拒绝
|
||||
if ("reject".equals(closeFollowRequest.getType())){
|
||||
//当前节点 拒绝的子状态
|
||||
String workflowStatus = WorkflowStageEnum.getWorkflowStageMap().get(hyPartnerLineInfoDO.getWorkflowStage());
|
||||
hyPartnerLineInfoDO.setWorkflowStatus(workflowStatus);
|
||||
//15天 冷静期
|
||||
// TODO: 2023/6/13 冷静期
|
||||
hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(),15));
|
||||
hyPartnerLineInfoDO.setRejectPublicReason(closeFollowRequest.getRejectPublicReason());
|
||||
hyPartnerLineInfoDO.setRejectRealReason(closeFollowRequest.getRejectRealReason());
|
||||
if (CollectionUtils.isNotEmpty(closeFollowRequest.getCertifyFile())){
|
||||
hyPartnerLineInfoDO.setCertifyFile(JSONObject.toJSONString(closeFollowRequest.getCertifyFile()));
|
||||
}
|
||||
hyPartnerLineInfoDO.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode());
|
||||
}
|
||||
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
/**
|
||||
* convertPartnerBlackListDTOToVo
|
||||
* @param partnerBlackListDTO
|
||||
* @return
|
||||
*/
|
||||
public BlackListVO convertPartnerBlackListDTOToVo(PartnerBlackListDTO partnerBlackListDTO){
|
||||
BlackListVO blackListVO = new BlackListVO();
|
||||
blackListVO.setId(partnerBlackListDTO.getLineId());
|
||||
blackListVO.setPartnerUserId(partnerBlackListDTO.getPartnerId());
|
||||
blackListVO.setPartnerUserName(partnerBlackListDTO.getPartnerUserName());
|
||||
blackListVO.setPartnerUserPhone(partnerBlackListDTO.getMobile());
|
||||
blackListVO.setCreateTime(partnerBlackListDTO.getCreateTime());
|
||||
blackListVO.setCloseTime(partnerBlackListDTO.getCloseTime());
|
||||
blackListVO.setJoinBlackReason(partnerBlackListDTO.getJoinBlackReason());
|
||||
blackListVO.setCloseUserId(partnerBlackListDTO.getCloseUserId());
|
||||
return blackListVO;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* convertPartnerLineInfoAndBaseInfoDTOToVo
|
||||
* @param partnerLineInfoAndBaseInfoDTO
|
||||
* @return
|
||||
*/
|
||||
private PartnerLineInfoAndBaseInfoVO convertPartnerLineInfoAndBaseInfoDTOToVo(PartnerLineInfoAndBaseInfoDTO partnerLineInfoAndBaseInfoDTO){
|
||||
PartnerLineInfoAndBaseInfoVO partnerLineInfoAndBaseInfoVO = new PartnerLineInfoAndBaseInfoVO();
|
||||
partnerLineInfoAndBaseInfoVO.setId(partnerLineInfoAndBaseInfoDTO.getId());
|
||||
partnerLineInfoAndBaseInfoVO.setPartnerUserId(partnerLineInfoAndBaseInfoDTO.getPartnerId());
|
||||
partnerLineInfoAndBaseInfoVO.setInvestmentManager(partnerLineInfoAndBaseInfoDTO.getInvestmentManager());
|
||||
partnerLineInfoAndBaseInfoVO.setUserPortrait(partnerLineInfoAndBaseInfoDTO.getUserPortrait());
|
||||
partnerLineInfoAndBaseInfoVO.setPartnerBaseInfoId(partnerLineInfoAndBaseInfoDTO.getPartnerBaseInfoId());
|
||||
partnerLineInfoAndBaseInfoVO.setWorkflowStage(partnerLineInfoAndBaseInfoDTO.getWorkflowStage());
|
||||
partnerLineInfoAndBaseInfoVO.setWorkflowStatus(partnerLineInfoAndBaseInfoDTO.getWorkflowStatus());
|
||||
return partnerLineInfoAndBaseInfoVO;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* stageCountDTOToVo
|
||||
* @param stageCountDTO
|
||||
* @return
|
||||
*/
|
||||
private StageCountVO stageCountDTOToVo(StageCountDTO stageCountDTO){
|
||||
StageCountVO stageCountVO = new StageCountVO();
|
||||
stageCountVO.setQualifiedInterviewCount(stageCountDTO.getQualifiedInterviewCount());
|
||||
stageCountVO.setIntentApplyApproveCount(stageCountDTO.getIntentApplyApproveCount());
|
||||
stageCountVO.setReservationInterviewCount(stageCountDTO.getReservationInterviewCount());
|
||||
return stageCountVO;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,240 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.dao.HyOpenAreaInfoDAO;
|
||||
import com.cool.store.dto.partner.ApplyReservationProvinceDTO;
|
||||
import com.cool.store.entity.HyOpenAreaInfoDO;
|
||||
import com.cool.store.request.OpenAreaRequest;
|
||||
import com.cool.store.service.OpenAreaService;
|
||||
import com.cool.store.vo.OpenAreaTreeVO;
|
||||
import com.cool.store.vo.OpenAreaVO;
|
||||
import com.cool.store.vo.OpenProvinceVO;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/13 22:11
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Service
|
||||
public class OpenAreaServiceImpl implements OpenAreaService {
|
||||
|
||||
@Resource
|
||||
HyOpenAreaInfoDAO hyOpenAreaInfoDAO;
|
||||
|
||||
|
||||
@Override
|
||||
public List<OpenAreaTreeVO> queryByKeyword(String keyword,Boolean flag) {
|
||||
//先查出所有的一级菜单
|
||||
List<HyOpenAreaInfoDO> openArea = hyOpenAreaInfoDAO.queryFirstLevel();
|
||||
Map<Long, HyOpenAreaInfoDO> longHyOpenAreaInfoDOMap = openArea.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x));
|
||||
|
||||
//查询关键字下所有的数据 原始的数据
|
||||
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword,flag);
|
||||
Set<Long> longSet = hyOpenAreaInfoDOS.stream().map(HyOpenAreaInfoDO::getId).collect(Collectors.toSet());
|
||||
|
||||
hyOpenAreaInfoDOS.stream().forEach(x->{
|
||||
Long parentId = x.getParentId();
|
||||
|
||||
if (parentId!=null&&!longSet.contains(parentId)){
|
||||
//添加到集合中
|
||||
longSet.add(x.getParentId());
|
||||
HyOpenAreaInfoDO hyOpenAreaInfoDO = longHyOpenAreaInfoDOMap.get(parentId);
|
||||
hyOpenAreaInfoDOS.add(hyOpenAreaInfoDO);
|
||||
}
|
||||
});
|
||||
|
||||
JSONArray objects = buildTree(JSONArray.parseArray(JSONObject.toJSONString(hyOpenAreaInfoDOS)), "id", "parentId","childNode" );
|
||||
List<OpenAreaTreeVO> openAreaTreeVOS = JSONObject.parseArray(objects.toJSONString(), OpenAreaTreeVO.class);
|
||||
return openAreaTreeVOS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OpenAreaTreeVO> queryAllOpenAreaByKeyword(String keyword, Boolean flag) {
|
||||
//先查出所有的一级菜单
|
||||
List<HyOpenAreaInfoDO> openArea = hyOpenAreaInfoDAO.queryFirstLevel();
|
||||
Map<Long, HyOpenAreaInfoDO> longHyOpenAreaInfoDOMap = openArea.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x));
|
||||
|
||||
//查询关键字下所有的数据 原始的数据
|
||||
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword,flag);
|
||||
|
||||
Map<Long, HyOpenAreaInfoDO> hyMap = hyOpenAreaInfoDOS.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x));
|
||||
|
||||
Set list = new HashSet();
|
||||
hyOpenAreaInfoDOS.stream().forEach(x->{
|
||||
Long parentId = x.getParentId();
|
||||
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyMap.get(parentId);
|
||||
if (hyOpenAreaInfoDO==null&&parentId!=null){
|
||||
//添加到集合中
|
||||
list.add(x.getParentId());
|
||||
}
|
||||
});
|
||||
if (CollectionUtils.isNotEmpty(list)){
|
||||
//二级采单
|
||||
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOList = hyOpenAreaInfoDAO.queryByIdsExcludeFirstLevel(new ArrayList<>(list));
|
||||
hyOpenAreaInfoDOS.addAll(hyOpenAreaInfoDOList);
|
||||
//如果二级采单是空 说明list全部是一级采单
|
||||
if (CollectionUtils.isEmpty(hyOpenAreaInfoDOList)){
|
||||
list.stream().forEach(x->{
|
||||
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyMap.get(x);
|
||||
if (hyOpenAreaInfoDO==null){
|
||||
hyOpenAreaInfoDOS.add(longHyOpenAreaInfoDOMap.get(x));
|
||||
}
|
||||
});
|
||||
}
|
||||
hyOpenAreaInfoDOList.stream().forEach(x->{
|
||||
Long parentId = x.getParentId();
|
||||
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyMap.get(parentId);
|
||||
if (hyOpenAreaInfoDO==null){
|
||||
HyOpenAreaInfoDO infoDO = longHyOpenAreaInfoDOMap.get(parentId);
|
||||
hyOpenAreaInfoDOS.add(infoDO);
|
||||
}
|
||||
});
|
||||
}
|
||||
JSONArray objects = buildTree(JSONArray.parseArray(JSONObject.toJSONString(hyOpenAreaInfoDOS)), "id", "parentId","childNode" );
|
||||
List<OpenAreaTreeVO> openAreaTreeVOS = JSONObject.parseArray(objects.toJSONString(), OpenAreaTreeVO.class);
|
||||
return openAreaTreeVOS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OpenAreaVO> getChildrenList(String type, Long parentId) {
|
||||
List<HyOpenAreaInfoDO> childrenList = hyOpenAreaInfoDAO.getChildrenList(type, parentId);
|
||||
List<OpenAreaVO> result = new ArrayList<>();
|
||||
childrenList.stream().forEach(x->{
|
||||
OpenAreaVO openAreaVO = convertDoToVo(x);
|
||||
result.add(openAreaVO);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean batchUpdate(String userId, OpenAreaRequest request) {
|
||||
//修改选择的区域
|
||||
hyOpenAreaInfoDAO.batchUpdateById(request.getBackgroundBanner(),request.getDetailBanner(),request.getStatus(),userId,request.getIdList());
|
||||
//修改选择区域的子区域
|
||||
hyOpenAreaInfoDAO.batchUpdateByParentId(request.getBackgroundBanner(),request.getDetailBanner(),request.getStatus(),userId,request.getIdList());
|
||||
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<OpenAreaVO> queryKeyOpenAreaList(Integer pageSize, Integer pageNumber) {
|
||||
PageHelper.startPage(pageNumber,pageSize);
|
||||
PageInfo hyOpenAreaInfoDOPageInfo = hyOpenAreaInfoDAO.queryKeyOpenArea();
|
||||
if (hyOpenAreaInfoDOPageInfo==null){
|
||||
return new PageInfo<>();
|
||||
}
|
||||
List<OpenAreaVO> list = new ArrayList<>();
|
||||
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOList = hyOpenAreaInfoDOPageInfo.getList();
|
||||
hyOpenAreaInfoDOList.stream().forEach(x->{
|
||||
list.add(convertDoToVo(x));
|
||||
});
|
||||
hyOpenAreaInfoDOPageInfo.setList(list);
|
||||
return hyOpenAreaInfoDOPageInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OpenProvinceVO getOpenProvince() {
|
||||
//先查出所有的一级菜单
|
||||
List<HyOpenAreaInfoDO> openArea = hyOpenAreaInfoDAO.queryFirstLevel();
|
||||
List<ApplyReservationProvinceDTO> applyReservationProvinceCount = hyOpenAreaInfoDAO.getApplyReservationProvinceCount();
|
||||
Map<String, Integer> applyMap = applyReservationProvinceCount.stream().collect(Collectors.toMap(ApplyReservationProvinceDTO::getAreaName, ApplyReservationProvinceDTO::getApplyCount));
|
||||
Map<String, Integer> reservationMap = applyReservationProvinceCount.stream().collect(Collectors.toMap(ApplyReservationProvinceDTO::getAreaName, ApplyReservationProvinceDTO::getReservationCount));
|
||||
List<OpenAreaVO> applyProvinceList = new ArrayList<>();
|
||||
List<OpenAreaVO> reservationProvinceList = new ArrayList<>();
|
||||
|
||||
openArea.stream().forEach(x->{
|
||||
String areaName = x.getAreaName();
|
||||
if (applyMap.getOrDefault(areaName,0)>0){
|
||||
applyProvinceList.add(convertDoToVo(x));
|
||||
}
|
||||
if (reservationMap.getOrDefault(areaName,0)>0){
|
||||
reservationProvinceList.add(convertDoToVo(x));
|
||||
}
|
||||
});
|
||||
OpenProvinceVO openProvinceVO = new OpenProvinceVO();
|
||||
openProvinceVO.setApplyProvinceList(applyProvinceList);
|
||||
openProvinceVO.setReservationProvinceList(reservationProvinceList);
|
||||
return openProvinceVO;
|
||||
}
|
||||
|
||||
private OpenAreaVO convertDoToVo(HyOpenAreaInfoDO hyOpenAreaInfoDO){
|
||||
OpenAreaVO openAreaVO = new OpenAreaVO();
|
||||
openAreaVO.setId(hyOpenAreaInfoDO.getId());
|
||||
openAreaVO.setAreaName(hyOpenAreaInfoDO.getAreaName());
|
||||
openAreaVO.setParentId(hyOpenAreaInfoDO.getParentId());
|
||||
openAreaVO.setAreaPath(hyOpenAreaInfoDO.getAreaPath());
|
||||
openAreaVO.setAreaStatus(hyOpenAreaInfoDO.getAreaStatus());
|
||||
openAreaVO.setBackgroundBanner(hyOpenAreaInfoDO.getBackgroundBanner());
|
||||
openAreaVO.setDetailBanner(hyOpenAreaInfoDO.getDetailBanner());
|
||||
return openAreaVO;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 构建树
|
||||
* @param arr
|
||||
* @param id
|
||||
* @param pid
|
||||
* @param child
|
||||
* @return
|
||||
*/
|
||||
public static JSONArray buildTree(JSONArray arr, String id, String pid, String child) {
|
||||
//新建一个JSONArray来接收组装成树形结构的返回值
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
//新建一个JSONObject对象
|
||||
JSONObject hash = new JSONObject();
|
||||
//将数组转换为object格式
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
//获取当前的JSON对象
|
||||
JSONObject json = (JSONObject) arr.get(i);
|
||||
//把当前id作为键,当前JSON对象作为值 put回hash这个Object对象中
|
||||
//这里的put方法类似于map的put方法
|
||||
hash.put(json.getString(id), json);
|
||||
}
|
||||
//遍历结果集
|
||||
for (int j = 0; j < arr.size(); j++) {
|
||||
//单条记录
|
||||
JSONObject aVal = (JSONObject) arr.get(j);
|
||||
//在hash中取出key为单条记录中pid的值
|
||||
String pidStr = "";
|
||||
//如果父级id不等于null
|
||||
if (aVal.get(pid) != null) {
|
||||
pidStr = aVal.get(pid).toString();
|
||||
}
|
||||
//从hash这个对象中获取父级对象 parent
|
||||
JSONObject hashParent = (JSONObject) hash.get(pidStr);
|
||||
//如果记录的pid存在,则说明它有父节点,将她添加到孩子节点的集合中
|
||||
if (hashParent != null) {
|
||||
//检查是否有child属性
|
||||
if (hashParent.get(child) != null) {
|
||||
//有子节点 则先将子节点取出
|
||||
JSONArray children = (JSONArray) hashParent.get(child);
|
||||
//然后把当前这个对象放进子节点之中
|
||||
children.add(aVal);
|
||||
//最后把子节点在放回父节点之中
|
||||
hashParent.put(child, children);
|
||||
} else {
|
||||
//无子节点 则新建一个子节点
|
||||
JSONArray children = new JSONArray();
|
||||
//然后再把当前对象放进去
|
||||
children.add(aVal);
|
||||
//最后在放回父节点之中
|
||||
hashParent.put(child, children);
|
||||
}
|
||||
} else {
|
||||
jsonArray.add(aVal);
|
||||
}
|
||||
}
|
||||
return jsonArray;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.cool.store.dao.HyPartnerUserInfoDAO;
|
||||
import com.cool.store.service.PartnerUserInfoService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class PartnerUserInfoServiceImpl implements PartnerUserInfoService {
|
||||
|
||||
@Autowired
|
||||
private HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
|
||||
|
||||
}
|
||||
@@ -1,24 +1,36 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.dao.HyPartnerLineInfoDAO;
|
||||
import com.cool.store.dao.HyPartnerUserInfoDAO;
|
||||
import com.cool.store.dao.HyPartnerUserPlatformBindDAO;
|
||||
import com.cool.store.dto.wx.CodeSessionDTO;
|
||||
import com.cool.store.dto.wx.MiniProgramLoginDTO;
|
||||
import com.cool.store.dto.wx.MiniProgramMsgDTO;
|
||||
import com.cool.store.dto.wx.PhoneInfoDTO;
|
||||
import com.cool.store.entity.HyPartnerLineInfoDO;
|
||||
import com.cool.store.entity.HyPartnerUserInfoDO;
|
||||
import com.cool.store.entity.HyPartnerUserPlatformBindDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.UserPlatformTypeEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.http.WechatRest;
|
||||
import com.cool.store.request.MobileUpdateRequest;
|
||||
import com.cool.store.service.WechatMiniAppService;
|
||||
import com.cool.store.utils.AesUtil;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.cool.store.vo.wx.CodeSessionVO;
|
||||
import com.cool.store.utils.UUIDUtils;
|
||||
import com.cool.store.vo.PartnerUserInfoVO;
|
||||
import com.cool.store.vo.wx.MiniProgramUserVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
@@ -35,49 +47,105 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService {
|
||||
private RedisUtilPool redisUtilPool;
|
||||
@Resource
|
||||
private WechatRest wechatRest;
|
||||
@Resource
|
||||
private HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
|
||||
@Resource
|
||||
private HyPartnerUserPlatformBindDAO hyPartnerUserPlatformBindDAO;
|
||||
@Resource
|
||||
private HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
|
||||
|
||||
@Value("${weixin.appId}")
|
||||
private String wxAppId;
|
||||
@Value("${weixin.appSecret}")
|
||||
private String wxAppSecret;
|
||||
|
||||
|
||||
@Override
|
||||
public CodeSessionVO miniProgramLogin(MiniProgramLoginDTO param) {
|
||||
public PartnerUserInfoVO miniProgramLogin(MiniProgramLoginDTO param) {
|
||||
PartnerUserInfoVO userInfoVO = new PartnerUserInfoVO();
|
||||
String jsCode = param.getJsCode();
|
||||
String lockKey = "codeSession:" + param.getAppid() + CommonConstants.MOSAICS + jsCode;
|
||||
String lockKey = "codeSession:" + wxAppId + CommonConstants.MOSAICS + jsCode;
|
||||
boolean lock = redisUtilPool.lock(lockKey);
|
||||
if (!lock) {
|
||||
throw new ServiceException(ErrorCodeEnum.OPERATION_OVER_TIME);
|
||||
}
|
||||
String appid = param.getAppid();
|
||||
String secret = redisUtilPool.getString(MessageFormat.format(CommonConstants.WX_APP_SECRET_KEY, appid));
|
||||
if(StringUtils.isBlank(secret)){
|
||||
throw new ServiceException(ErrorCodeEnum.GET_APP_SECRET_ERROR);
|
||||
}
|
||||
CodeSessionDTO codeSession = wechatRest.miniProgramJsCodeSession(appid, secret, jsCode);
|
||||
CodeSessionDTO codeSession = wechatRest.miniProgramJsCodeSession(wxAppId, wxAppSecret, jsCode);
|
||||
String openid = codeSession.getOpenid();
|
||||
String sessionCacheKey = MessageFormat.format(CommonConstants.MINI_PROGRAM_SESSION_KEY, appid, openid);
|
||||
String sessionCacheKey = MessageFormat.format(CommonConstants.MINI_PROGRAM_SESSION_KEY, wxAppId, openid);
|
||||
redisUtilPool.setString(sessionCacheKey, codeSession.getSessionKey(), CommonConstants.THREE_DAY_SECONDS);
|
||||
String unionId = codeSession.getUnionId();
|
||||
log.info("小程序登录:{}", unionId);
|
||||
//todo 保存授权信息 判断是否第一次授权
|
||||
return CodeSessionVO.builder().openid(openid).unionId(unionId).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CodeSessionVO getUserPhoneNumber(MiniProgramLoginDTO param) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CodeSessionVO queryMiniProgramUser(MiniProgramMsgDTO param) {
|
||||
String sessionCacheKey = MessageFormat.format(CommonConstants.MINI_PROGRAM_SESSION_KEY, param.getAppid(), param.getOpenid());
|
||||
String sessionKey = redisUtilPool.getString(sessionCacheKey);
|
||||
if (StringUtils.isBlank(sessionKey)) {
|
||||
throw new ServiceException(ErrorCodeEnum.SESSION_KEY_ERROR);
|
||||
}
|
||||
log.info("sessionKey {}", sessionKey);
|
||||
String decryptUser = AesUtil.decryptWechat(sessionKey, param.getEncryptedData(), param.getIvStr());
|
||||
log.info("sessionKey {}", codeSession.getSessionKey());
|
||||
String decryptUser = AesUtil.decryptWechat(codeSession.getSessionKey(), param.getEncryptedData(), param.getIvStr());
|
||||
log.info("解密用户信息:{}", decryptUser);
|
||||
MiniProgramUserVO miniProgramUser = JSON.parseObject(decryptUser, MiniProgramUserVO.class);
|
||||
if (Objects.isNull(miniProgramUser)) {
|
||||
throw new ServiceException(ErrorCodeEnum.GET_WECHAT_USER_INFO_FAIL);
|
||||
}
|
||||
return new CodeSessionVO();
|
||||
// 获取小程序token
|
||||
String accessToken = wechatRest.getAccessToken(wxAppId, wxAppSecret);
|
||||
// 获取手机号码
|
||||
PhoneInfoDTO phoneInfoDTO = wechatRest.getUserPhoneNumber(param.getMobileCode(), accessToken);
|
||||
if(phoneInfoDTO != null && phoneInfoDTO.getPhoneInfo() != null && StringUtils.isNotBlank(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){
|
||||
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
|
||||
if(hyPartnerUserInfoDO == null){
|
||||
hyPartnerUserInfoDO = new HyPartnerUserInfoDO();
|
||||
hyPartnerUserInfoDO.setMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
|
||||
hyPartnerUserInfoDO.setUsername(miniProgramUser.getNickName());
|
||||
hyPartnerUserInfoDO.setPartnerId(UUIDUtils.get32UUID());
|
||||
hyPartnerUserInfoDAO.insertSelective(hyPartnerUserInfoDO);
|
||||
// 生成一条线索
|
||||
HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
|
||||
hyPartnerLineInfoDO.setPartnerId(hyPartnerUserInfoDO.getPartnerId());
|
||||
hyPartnerLineInfoDAO.insertSelective(hyPartnerLineInfoDO);
|
||||
}
|
||||
HyPartnerUserPlatformBindDO hyPartnerUserPlatformBindDO = hyPartnerUserPlatformBindDAO.getByPlatformTypeAndUserId(UserPlatformTypeEnum.WECHAT.getCode(), openid);
|
||||
if(hyPartnerUserPlatformBindDO == null){
|
||||
hyPartnerUserPlatformBindDO = new HyPartnerUserPlatformBindDO();
|
||||
hyPartnerUserPlatformBindDO.setPlatformType(UserPlatformTypeEnum.WECHAT.getCode());
|
||||
hyPartnerUserPlatformBindDO.setPlatformUserId(openid);
|
||||
hyPartnerUserPlatformBindDO.setBindTime(new Date());
|
||||
hyPartnerUserPlatformBindDO.setPartnerId(hyPartnerUserInfoDO.getPartnerId());
|
||||
hyPartnerUserPlatformBindDAO.insertSelective(hyPartnerUserPlatformBindDO);
|
||||
}
|
||||
userInfoVO.setPartnerId(hyPartnerUserInfoDO.getPartnerId());
|
||||
userInfoVO.setMobile(hyPartnerUserInfoDO.getMobile());
|
||||
userInfoVO.setUsername(hyPartnerUserInfoDO.getUsername());
|
||||
}
|
||||
userInfoVO.setOpenid(openid);
|
||||
userInfoVO.setUnionId(unionId);
|
||||
return userInfoVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO) {
|
||||
HyPartnerUserInfoDO oldUserInfo = hyPartnerUserInfoDAO.selectByMobile(userInfoVO.getMobile());
|
||||
if (oldUserInfo == null) {
|
||||
throw new ServiceException(ErrorCodeEnum.PARTNER_USER_NOT_EXIST);
|
||||
}
|
||||
// 获取小程序token
|
||||
String accessToken = wechatRest.getAccessToken(wxAppId, wxAppSecret);
|
||||
// 获取手机号码
|
||||
PhoneInfoDTO phoneInfoDTO = wechatRest.getUserPhoneNumber(request.getMobileCode(), accessToken);
|
||||
if(phoneInfoDTO != null && phoneInfoDTO.getPhoneInfo() != null && StringUtils.isNotBlank(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){
|
||||
HyPartnerUserInfoDO newUserInfo = hyPartnerUserInfoDAO.selectByMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
|
||||
if (newUserInfo != null) {
|
||||
throw new ServiceException(ErrorCodeEnum.NEW_MOBILE_HAS_EXIST);
|
||||
}
|
||||
oldUserInfo.setMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
|
||||
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(oldUserInfo);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PartnerUserInfoVO getUserInfo(String mobile, String openId) {
|
||||
PartnerUserInfoVO userInfoVO = new PartnerUserInfoVO();
|
||||
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(mobile);
|
||||
BeanUtil.copyProperties(hyPartnerUserInfoDO, userInfoVO);
|
||||
HyPartnerUserPlatformBindDO hyPartnerUserPlatformBindDO = hyPartnerUserPlatformBindDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId());
|
||||
userInfoVO.setOpenid(hyPartnerUserPlatformBindDO.getPlatformUserId());
|
||||
return userInfoVO;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,213 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.dao.*;
|
||||
import com.cool.store.dto.partner.ZoneCheckDTO;
|
||||
import com.cool.store.entity.EnterpriseUserDO;
|
||||
import com.cool.store.entity.HyIntendDevZoneInfoDO;
|
||||
import com.cool.store.entity.HyIntendDevelopementMappingDO;
|
||||
import com.cool.store.entity.HyOpenAreaInfoDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.request.IntentAreaSettingRequest;
|
||||
import com.cool.store.service.ZoneService;
|
||||
import com.cool.store.utils.StringUtil;
|
||||
import com.cool.store.vo.OpenAreaSingleVO;
|
||||
import com.cool.store.vo.OrganizationVO;
|
||||
import com.cool.store.vo.ZoneCheckVO;
|
||||
import com.cool.store.vo.ZoneVO;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2023/6/14 14:26
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Service
|
||||
public class ZoneServiceImpl implements ZoneService {
|
||||
|
||||
|
||||
@Resource
|
||||
HyIntendDevZoneInfoDAO hyIntendDevZoneInfoDAO;
|
||||
|
||||
@Resource
|
||||
HyIntendDevMappingDAO hyIntendDevMappingDAO;
|
||||
|
||||
@Resource
|
||||
HyOpenAreaInfoDAO openAreaInfoDAO;
|
||||
@Resource
|
||||
EnterpriseUserDAO enterpriseUserDAO;
|
||||
@Resource
|
||||
RegionDAO regionDAO;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Boolean addZone(String userId, IntentAreaSettingRequest intentAreaSettingRequest) {
|
||||
if (CollectionUtils.isEmpty(intentAreaSettingRequest.getOpenAreaIdList())){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = new HyIntendDevZoneInfoDO();
|
||||
hyIntendDevZoneInfoDO.setZoneName(intentAreaSettingRequest.getZoneName());
|
||||
if (CollectionUtils.isNotEmpty(intentAreaSettingRequest.getOrgIdList())){
|
||||
hyIntendDevZoneInfoDO.setAssociatedRegionId(JSONObject.toJSONString(intentAreaSettingRequest.getOrgIdList()));
|
||||
}
|
||||
hyIntendDevZoneInfoDO.setCreateUserId(userId);
|
||||
hyIntendDevZoneInfoDO.setType(intentAreaSettingRequest.getType());
|
||||
hyIntendDevZoneInfoDAO.insertSelective(hyIntendDevZoneInfoDO);
|
||||
//添加战区映射的意向区域
|
||||
hyIntendDevMappingDAO.deleteByOpenAreaIds(intentAreaSettingRequest.getOpenAreaIdList(),hyIntendDevZoneInfoDO.getType());
|
||||
List<Long> openAreaIdList = intentAreaSettingRequest.getOpenAreaIdList();
|
||||
List<HyIntendDevelopementMappingDO> list = new ArrayList<>();
|
||||
openAreaIdList.stream().forEach(x->{
|
||||
HyIntendDevelopementMappingDO hyIntendDevelopementMappingDO = new HyIntendDevelopementMappingDO();
|
||||
hyIntendDevelopementMappingDO.setType(intentAreaSettingRequest.getType());
|
||||
hyIntendDevelopementMappingDO.setOpenAreaMappingId(String.valueOf(x));
|
||||
hyIntendDevelopementMappingDO.setMappingId(String.valueOf(hyIntendDevZoneInfoDO.getId()));
|
||||
list.add(hyIntendDevelopementMappingDO);
|
||||
});
|
||||
hyIntendDevMappingDAO.batchInsert(list);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateZone(String userId, IntentAreaSettingRequest intentAreaSettingRequest) {
|
||||
if (CollectionUtils.isEmpty(intentAreaSettingRequest.getOpenAreaIdList())){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = new HyIntendDevZoneInfoDO();
|
||||
hyIntendDevZoneInfoDO.setId(intentAreaSettingRequest.getId());
|
||||
hyIntendDevZoneInfoDO.setZoneName(intentAreaSettingRequest.getZoneName());
|
||||
hyIntendDevZoneInfoDO.setAssociatedRegionId(CollectionUtils.isNotEmpty(intentAreaSettingRequest.getOrgIdList())?JSONObject.toJSONString(intentAreaSettingRequest.getOrgIdList()):"");
|
||||
hyIntendDevZoneInfoDAO.updateByPrimaryKeySelective(hyIntendDevZoneInfoDO);
|
||||
//添加战区映射的意向区域
|
||||
hyIntendDevMappingDAO.deleteByOpenAreaIds(intentAreaSettingRequest.getOpenAreaIdList(),intentAreaSettingRequest.getType());
|
||||
List<Long> openAreaIdList = intentAreaSettingRequest.getOpenAreaIdList();
|
||||
List<HyIntendDevelopementMappingDO> list = new ArrayList<>();
|
||||
openAreaIdList.stream().forEach(x->{
|
||||
HyIntendDevelopementMappingDO hyIntendDevelopementMappingDO = new HyIntendDevelopementMappingDO();
|
||||
hyIntendDevelopementMappingDO.setType(intentAreaSettingRequest.getType());
|
||||
hyIntendDevelopementMappingDO.setOpenAreaMappingId(String.valueOf(x));
|
||||
hyIntendDevelopementMappingDO.setMappingId(String.valueOf(hyIntendDevZoneInfoDO.getId()));
|
||||
list.add(hyIntendDevelopementMappingDO);
|
||||
});
|
||||
hyIntendDevMappingDAO.batchInsert(list);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public PageInfo<ZoneVO> getZoneList(String type, Integer pageSize, Integer pageNum) {
|
||||
PageHelper.startPage(pageNum,pageSize);
|
||||
PageInfo hyIntendDevZoneInfoList = hyIntendDevZoneInfoDAO.getHyIntendDevZoneInfoList(type);
|
||||
List<ZoneVO> result = new ArrayList<>();
|
||||
List<HyIntendDevZoneInfoDO> list = hyIntendDevZoneInfoList.getList();
|
||||
if (CollectionUtils.isEmpty(list)){
|
||||
return hyIntendDevZoneInfoList;
|
||||
}
|
||||
List<String> updateUserIdList = list.stream().map(HyIntendDevZoneInfoDO::getUpdateUserId).collect(Collectors.toList());
|
||||
List<EnterpriseUserDO> updateUserList = enterpriseUserDAO.getUserInfoByUserIds(updateUserIdList);
|
||||
Map<String, String> updateUserNameMap = updateUserList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, EnterpriseUserDO::getName));
|
||||
|
||||
Set<String> regionSet = new HashSet<>();
|
||||
list.stream().forEach(x->{
|
||||
if (StringUtil.isNotEmpty(x.getAssociatedRegionId())){
|
||||
List<String> regionIds = JSONObject.parseArray(x.getAssociatedRegionId(), String.class);
|
||||
regionSet.addAll(regionIds);
|
||||
}
|
||||
});
|
||||
Map<String, String> regionMap = regionDAO.getRegionMap(new ArrayList<>(regionSet));
|
||||
list.forEach(x->{
|
||||
ZoneVO zoneVO = handleZoneVO(regionMap, x);
|
||||
zoneVO.setUpdateUserName(updateUserNameMap.get(x.getUpdateUserId()));
|
||||
result.add(zoneVO);
|
||||
});
|
||||
hyIntendDevZoneInfoList.setList(result);
|
||||
return hyIntendDevZoneInfoList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ZoneVO zoneDetail(Long zoneId) {
|
||||
HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = hyIntendDevZoneInfoDAO.selectById(zoneId);
|
||||
if (hyIntendDevZoneInfoDO==null){
|
||||
throw new ServiceException(ErrorCodeEnum.ZONE_NOT_EXIST);
|
||||
}
|
||||
ZoneVO zoneVO = null;
|
||||
EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.getUserInfoById(hyIntendDevZoneInfoDO.getUpdateUserId());
|
||||
if (StringUtil.isNotEmpty(hyIntendDevZoneInfoDO.getAssociatedRegionId())){
|
||||
List<String> regionIds = JSONObject.parseArray(hyIntendDevZoneInfoDO.getAssociatedRegionId(), String.class);
|
||||
Map<String, String> regionMap = regionDAO.getRegionMap(regionIds);
|
||||
zoneVO = handleZoneVO(regionMap, hyIntendDevZoneInfoDO);
|
||||
zoneVO.setUpdateUserName(enterpriseUserDO.getName());
|
||||
}
|
||||
List<ZoneCheckDTO> zoneCheckDTOS = hyIntendDevMappingDAO.selectByMappingIdList(Arrays.asList(zoneId));
|
||||
List<OpenAreaSingleVO> openAreaVOS = new ArrayList<>();
|
||||
zoneCheckDTOS.forEach(x->{
|
||||
OpenAreaSingleVO openAreaSingleVO = new OpenAreaSingleVO();
|
||||
openAreaSingleVO.setId(x.getOpenAreaMappingId());
|
||||
openAreaVOS.add(openAreaSingleVO);
|
||||
});
|
||||
zoneVO.setOpenAreaVOS(openAreaVOS);
|
||||
return zoneVO;
|
||||
}
|
||||
|
||||
|
||||
private ZoneVO handleZoneVO(Map<String, String> regionMap,HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO){
|
||||
ZoneVO zoneVO = new ZoneVO();
|
||||
zoneVO.setZoneName(hyIntendDevZoneInfoDO.getZoneName());
|
||||
zoneVO.setId(hyIntendDevZoneInfoDO.getId());
|
||||
zoneVO.setUpdateTime(hyIntendDevZoneInfoDO.getUpdateTime());
|
||||
List<OrganizationVO> organizationVOS = new ArrayList<>();
|
||||
if (StringUtil.isNotEmpty(hyIntendDevZoneInfoDO.getAssociatedRegionId())){
|
||||
List<String> regionIds = JSONObject.parseArray(hyIntendDevZoneInfoDO.getAssociatedRegionId(), String.class);
|
||||
regionIds.forEach(regionId->{
|
||||
OrganizationVO organizationVO = new OrganizationVO();
|
||||
organizationVO.setId(regionId);
|
||||
organizationVO.setName(regionMap.get(regionId));
|
||||
organizationVOS.add(organizationVO);
|
||||
});
|
||||
}
|
||||
zoneVO.setOrgVos(organizationVOS);
|
||||
zoneVO.setUpdateUserId(hyIntendDevZoneInfoDO.getUpdateUserId());
|
||||
return zoneVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean deletedZone(Long id) {
|
||||
HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = hyIntendDevZoneInfoDAO.selectById(id);
|
||||
if (hyIntendDevZoneInfoDO==null){
|
||||
throw new ServiceException(ErrorCodeEnum.ZONE_NOT_EXIST);
|
||||
}
|
||||
hyIntendDevZoneInfoDO.setDeleted(1);
|
||||
hyIntendDevZoneInfoDAO.updateByPrimaryKeySelective(hyIntendDevZoneInfoDO);
|
||||
hyIntendDevMappingDAO.deleteByMappingIds(Arrays.asList(id),hyIntendDevZoneInfoDO.getType());
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ZoneCheckVO> checkZone(IntentAreaSettingRequest intentAreaSettingRequest) {
|
||||
if (CollectionUtils.isEmpty(intentAreaSettingRequest.getOpenAreaIdList())){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
//查询已经绑定战区的 意向区域
|
||||
List<ZoneCheckDTO> list = hyIntendDevMappingDAO.selectByMappingIdList(intentAreaSettingRequest.getOpenAreaIdList());
|
||||
List<Long> openAreaIdList = list.stream().map(ZoneCheckDTO::getOpenAreaMappingId).collect(Collectors.toList());
|
||||
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOList = openAreaInfoDAO.selectByIds(openAreaIdList);
|
||||
Map<Long, String> areaNameMap = hyOpenAreaInfoDOList.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, HyOpenAreaInfoDO::getAreaName));
|
||||
List<ZoneCheckVO> reslut = new ArrayList<>();
|
||||
list.forEach(x->{
|
||||
ZoneCheckVO zoneCheckVO = new ZoneCheckVO();
|
||||
zoneCheckVO.setZoneName(x.getZoneName());
|
||||
String areaName = areaNameMap.get(x.getOpenAreaMappingId());
|
||||
zoneCheckVO.setAreaName(areaName);
|
||||
});
|
||||
return reslut;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user