Commit 95de77ca by qwmqiuwenmin

fix

parent 6faa09b4
......@@ -8,35 +8,127 @@ import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.clerk.api.service.PowerService;
import com.gic.haoban.manage.api.dto.ClerkMainStoreRelatedDTO;
import com.gic.haoban.manage.api.dto.DealParamMqDTO;
import com.gic.haoban.manage.api.dto.ExternalUserDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.api.enums.PreDealStatusEnum;
import com.gic.haoban.manage.api.enums.PreDealTypeEnum;
import com.gic.haoban.manage.api.enums.SyncTaskStatusEnum;
import com.gic.haoban.manage.api.service.ClerkMainStoreRelatedApiService;
import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService;
import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import com.gic.haoban.manage.service.entity.TabHaobanSyncTask;
import com.gic.haoban.manage.service.service.PreDealService;
import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.SyncTaskService;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.service.MemberOpenCardBusinessService;
import com.gic.redis.data.util.RedisUtil;
@Service
public class FriendMergeSyncOperation implements BaseSyncOperation{
private static final Logger logger = LoggerFactory.getLogger(FriendMergeSyncOperation.class);
@Autowired
private MemberUnionidRelatedApiService memberUnionidRelatedApiService;
@Autowired
private PreDealService preDealService;
@Autowired
private MemberUnionidRelatedApiService memberUnionidRelatedApiService;
@Autowired
private SyncTaskService syncTaskService;
@Autowired
private ClerkMainStoreRelatedApiService clerkMainStoreRelatedApiService;
@Autowired
private StaffApiService staffApiService;
@Autowired
private StaffClerkRelationService staffClerkRelationService;
@Autowired
private ClerkService clerkService;
@Autowired
private PowerService powerService;
@Autowired
private MemberOpenCardBusinessService memberOpenCardBusinessService;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
String reason = "";
boolean dealFlag = true;
String wxUserId = dataPre.getpDataId();
String wxEnterpriseId = dataPre.getWxEnterpriseId();
String taskId = dealParamMqDTO.getTaskId();
String key = dataPre.getDataId();
try {
String dataContent = dataPre.getDataContent();
ExternalUserDTO pojo = JSON.parseObject(dataContent, ExternalUserDTO.class);
StaffDTO staff = staffApiService.selectByUserIdAndEnterpriseId(wxUserId, wxEnterpriseId);
if(staff == null){
preDealService.updateStatusByDataId(taskId, key, PreDealStatusEnum.exception.getVal(), "成员不存在");
checkDepartmentTask(taskId);
return;
}
ClerkMainStoreRelatedDTO mainStore = clerkMainStoreRelatedApiService.getWxEnterpriseIdAndStaffId(wxEnterpriseId, staff.getStaffId());
if(mainStore == null){
preDealService.updateStatusByDataId(taskId, key, PreDealStatusEnum.exception.getVal(), "主门店不存在");
checkDepartmentTask(taskId);
return;
}
StaffClerkRelationDTO staffClerkRelationDTO = staffClerkRelationService.getOneBindByStoreId(staff.getStaffId(),mainStore.getStoreId());
if(staffClerkRelationDTO == null){
preDealService.updateStatusByDataId(taskId, key, PreDealStatusEnum.exception.getVal(), "未绑定导购");
checkDepartmentTask(taskId);
return;
}
if(pojo == null){
dealException(taskId, key, null, "好友不存在");
checkDepartmentTask(taskId);
return;
}
pojo.setWxEnterpriseId(wxEnterpriseId);
pojo.setEnterpriseId(staffClerkRelationDTO.getEnterpriseId());
pojo.setStoreId(mainStore.getStoreId());
pojo.setClerkId(staffClerkRelationDTO.getClerkId());
pojo.setWxUserId(wxUserId);
pojo.setStaffId(staffClerkRelationDTO.getStaffId());
String externalUserId = pojo.getExternalUserId();
ExternalUserDTO p = memberUnionidRelatedApiService.getExternalUseridInfo(wxEnterpriseId, wxUserId, externalUserId);
if(p == null){
dealException(taskId, key, null, "好友不存在");
checkDepartmentTask(taskId);
return;
}
pojo.setAvatar(p.getAvatar());
//新增导购和外部联系人关系
String clerkCode = staffClerkRelationDTO.getClerkCode();
ClerkDTO clerk = clerkService.getClerkByClerkCode(staffClerkRelationDTO.getEnterpriseId(), clerkCode);
if(clerk == null){
preDealService.updateStatusByDataId(taskId, key, PreDealStatusEnum.exception.getVal(), "导购不存在");
checkDepartmentTask(taskId);
return;
}
String qrcodeParam = clerk.getQrcodeParam();
if(StringUtils.isBlank(qrcodeParam)){
powerService.saveClerkQrCode(clerk.getClerkId());
clerk = clerkService.getClerkByClerkCode(staffClerkRelationDTO.getEnterpriseId(), clerkCode);
qrcodeParam = clerk.getQrcodeParam();
}
if(StringUtils.isBlank(qrcodeParam)){
preDealService.updateStatusByDataId(taskId, key, PreDealStatusEnum.exception.getVal(), "导购码不存在");
checkDepartmentTask(taskId);
return;
}
MemberDTO member = null;
if(clerk != null && StringUtils.isNotBlank(qrcodeParam)&&StringUtils.isNotBlank(pojo.getUnionId())){
member = memberOpenCardBusinessService.getMemberByQywxChannelParam(staffClerkRelationDTO.getEnterpriseId(),pojo.getUnionId(),"",pojo.getName(),pojo.getAvatar(),qrcodeParam);
}
if(member == null){
preDealService.updateStatusByDataId(taskId, key, PreDealStatusEnum.exception.getVal(), "会员不存在");
checkDepartmentTask(taskId);
return;
}
pojo.setMemberId(member.getMemberId());
String res = memberUnionidRelatedApiService.addExternal(pojo);
if(StringUtils.isBlank(res)){
dealSuccess(dealParamMqDTO.getTaskId(), dataPre.getDataId(), null, null);
......
......@@ -59,38 +59,17 @@ public class FriendSyncOperation implements BaseSyncOperation {
String wxUserId = dataPre.getpDataId();
String taskId = dealParamMqDTO.getTaskId();
String externalUserId = dataPre.getDataId();
StaffDTO staff = staffApiService.selectByUserIdAndEnterpriseId(wxUserId, wxEnterpriseId);
if(staff == null){
preDealService.updateStatusByDataId(taskId, externalUserId, PreDealStatusEnum.exception.getVal(), "成员不存在");
checkStaffTask(taskId, wxUserId);
return;
}
ClerkMainStoreRelatedDTO mainStore = clerkMainStoreRelatedApiService.getWxEnterpriseIdAndStaffId(wxEnterpriseId, staff.getStaffId());
if(mainStore == null){
preDealService.updateStatusByDataId(taskId, externalUserId, PreDealStatusEnum.exception.getVal(), "主门店不存在");
checkStaffTask(taskId, wxUserId);
return;
}
StaffClerkRelationDTO staffClerkRelationDTO = staffClerkRelationService.getOneBindByStoreId(staff.getStaffId(),mainStore.getStoreId());
if(staffClerkRelationDTO == null){
preDealService.updateStatusByDataId(taskId, externalUserId, PreDealStatusEnum.exception.getVal(), "未绑定导购");
checkStaffTask(taskId, wxUserId);
return;
}
ExternalUserDTO pojo = memberUnionidRelatedApiService.getExternalUseridInfo(wxEnterpriseId, wxUserId, externalUserId);
if(pojo == null){
preDealService.updateStatusByDataId(taskId, externalUserId, PreDealStatusEnum.exception.getVal(), "好友不存在");
checkStaffTask(taskId, wxUserId);
return;
}
pojo.setEnterpriseId(staffClerkRelationDTO.getEnterpriseId());
pojo.setStoreId(mainStore.getStoreId());
pojo.setClerkId(staffClerkRelationDTO.getClerkId());
pojo.setWxUserId(wxUserId);
pojo.setStaffId(staffClerkRelationDTO.getStaffId());
if(pojo != null){
JSONObject json = new JSONObject();
json.put("name", pojo.getName());
json.put("externalUserId", pojo.getExternalUserId());
json.put("addCreateTime", pojo.getAddCreateTime());
dealSuccess(taskId, externalUserId,JSON.toJSONString(pojo),wxEnterpriseId);
}
try {
checkStaffTask(taskId, wxUserId);
} catch (Exception e) {
......@@ -133,20 +112,12 @@ public class FriendSyncOperation implements BaseSyncOperation {
String name = json.getName();
String key = addCreateTime + name;
String unionId = json.getUnionId();
String clerkId = json.getClerkId();
String enterpriseId = json.getEnterpriseId();
String memberId = json.getMemberId();
String storeId = json.getStoreId();
String wxEnterpriseId = json.getWxEnterpriseId();
ExternalUserDTO dto = map.get(key);
if(dto != null){
if(tabHaobanPreDealLog.getDataType() == PreDealTypeEnum.self_friend.getVal()){
dto.setUnionId(unionId);
dto.setClerkId(clerkId);
dto.setEnterpriseId(enterpriseId);
dto.setMemberId(memberId);
dto.setStoreId(storeId);
}else if(tabHaobanPreDealLog.getDataType() == PreDealTypeEnum.friend.getVal()){
dto.setExternalUserId(tabHaobanPreDealLog.getDataId());
}
......
......@@ -70,67 +70,18 @@ public class SelfFriendSyncOperation implements BaseSyncOperation{
String wxUserId = dataPre.getpDataId();
String taskId = dealParamMqDTO.getTaskId();
String externalUserId = dataPre.getDataId();
StaffDTO staff = staffApiService.selectByUserIdAndEnterpriseId(wxUserId, wxEnterpriseId);
if(staff == null){
preDealService.updateStatusByDataId(taskId, externalUserId, PreDealStatusEnum.exception.getVal(), "成员不存在");
checkStaffTask(taskId, wxUserId);
return;
}
ClerkMainStoreRelatedDTO mainStore = clerkMainStoreRelatedApiService.getWxEnterpriseIdAndStaffId(wxEnterpriseId, staff.getStaffId());
if(mainStore == null){
preDealService.updateStatusByDataId(taskId, externalUserId, PreDealStatusEnum.exception.getVal(), "主门店不存在");
checkStaffTask(taskId, wxUserId);
return;
}
StaffClerkRelationDTO staffClerkRelationDTO = staffClerkRelationService.getOneBindByStoreId(staff.getStaffId(),mainStore.getStoreId());
if(staffClerkRelationDTO == null){
preDealService.updateStatusByDataId(taskId, externalUserId, PreDealStatusEnum.exception.getVal(), "未绑定导购");
checkStaffTask(taskId, wxUserId);
return;
}
ExternalUserDTO pojo = memberUnionidRelatedApiService.getCorpSelfExternalUseridInfo(wxEnterpriseId,wxUserId, externalUserId);
if(pojo == null){
dealException(taskId, externalUserId, null, "好友不存在");
checkStaffTask(taskId, wxUserId);
return;
}
pojo.setEnterpriseId(staffClerkRelationDTO.getEnterpriseId());
pojo.setStoreId(mainStore.getStoreId());
pojo.setClerkId(staffClerkRelationDTO.getClerkId());
pojo.setWxUserId(wxUserId);
pojo.setStaffId(staffClerkRelationDTO.getStaffId());
//新增导购和外部联系人关系
String clerkCode = staffClerkRelationDTO.getClerkCode();
ClerkDTO clerk = clerkService.getClerkByClerkCode(staffClerkRelationDTO.getEnterpriseId(), clerkCode);
if(clerk == null){
preDealService.updateStatusByDataId(taskId, externalUserId, PreDealStatusEnum.exception.getVal(), "导购不存在");
checkStaffTask(taskId, wxUserId);
return;
}
String qrcodeParam = clerk.getQrcodeParam();
if(StringUtils.isBlank(qrcodeParam)){
powerService.saveClerkQrCode(clerk.getClerkId());
clerk = clerkService.getClerkByClerkCode(staffClerkRelationDTO.getEnterpriseId(), clerkCode);
qrcodeParam = clerk.getQrcodeParam();
}
if(StringUtils.isBlank(qrcodeParam)){
preDealService.updateStatusByDataId(taskId, externalUserId, PreDealStatusEnum.exception.getVal(), "导购码不存在");
checkStaffTask(taskId, wxUserId);
return;
}
MemberDTO member = null;
if(clerk != null && StringUtils.isNotBlank(qrcodeParam)&&StringUtils.isNotBlank(pojo.getUnionId())){
member = memberOpenCardBusinessService.getMemberByQywxChannelParam(staffClerkRelationDTO.getEnterpriseId(),pojo.getUnionId(),"",pojo.getName(),pojo.getAvatar(),qrcodeParam);
}
if(member == null){
preDealService.updateStatusByDataId(taskId, externalUserId, PreDealStatusEnum.exception.getVal(), "会员不存在");
checkStaffTask(taskId, wxUserId);
return;
}
JSONObject json = new JSONObject();
json.put("name", pojo.getName());
json.put("unionId", pojo.getUnionId());
json.put("addCreateTime", pojo.getAddCreateTime());
try {
pojo.setMemberId(member.getMemberId());
dealSuccess(taskId, externalUserId,JSON.toJSONString(pojo),wxEnterpriseId);
dealSuccess(taskId, externalUserId,json.toJSONString(),wxEnterpriseId);
checkStaffTask(taskId, wxUserId);
} catch (Exception e) {
e.printStackTrace();
......
......@@ -61,14 +61,15 @@ public class DealSyncTest {
@Test
public void test() {
ConcurrencyTester tester = ThreadUtil.concurrencyTest(10, () -> {
List<String> res = memberUnionidRelatedApiService.listSelfExterialList("ca66a01b79474c40b3e7c7f93daf1a3b", "QiuWenMin");
System.out.println(JSON.toJSONString(res));
});
ExecutorService pool = Executors. newCachedThreadPool();
List<String> res = memberUnionidRelatedApiService.listSelfExterialList("ca66a01b79474c40b3e7c7f93daf1a3b", "QiuWenMin");
System.out.println(JSON.toJSONString(res));
dealSyncOperationApiService.test("ca66a01b79474c40b3e7c7f93daf1a3b", "49da12164c584fe8aabbb1094b25cfa5");
// ConcurrencyTester tester = ThreadUtil.concurrencyTest(10, () -> {
// List<String> res = memberUnionidRelatedApiService.listSelfExterialList("ca66a01b79474c40b3e7c7f93daf1a3b", "QiuWenMin");
// System.out.println(JSON.toJSONString(res));
// });
//
// ExecutorService pool = Executors. newCachedThreadPool();
// List<String> res = memberUnionidRelatedApiService.listSelfExterialList("ca66a01b79474c40b3e7c7f93daf1a3b", "QiuWenMin");
// System.out.println(JSON.toJSONString(res));
// 初始化计数器为1
// CountDownLatch countDownLatch = new CountDownLatch(1);
// new Thread(new CountDownLatchTest(memberUnionidRelatedApiService,"12", countDownLatch)).start();
......
......@@ -536,25 +536,25 @@ public class WxEnterpriseController extends WebBaseController{
if(StringUtils.isEmpty(taskId)){
return resultResponse(HaoBanErrCode.ERR_100021);
}
// QuartzTaskDTO taskDTO = buildQuartzTaskDTO("haoban-enterprise-fresh-wx-friend");
// JSONObject json = new JSONObject();
// json.put("taskId", taskId);
// json.put("wxEnterpriseId", wxEnterpriseId);
// taskDTO.setTaskParam(json.toJSONString());
// taskDTO.setTaskStatus(1);
// Date now = new Date();
// Date exeDate = DateUtil.addDay(now, 1);
// Calendar ca = Calendar.getInstance();
// ca.setTime(now);
// int day = ca.get(Calendar.DAY_OF_MONTH);//第几天
// int month = ca.get(Calendar.MONTH);//第几个月
// int year = ca.get(Calendar.YEAR);//年份数值
// int hour = ca.get(Calendar.HOUR);//
// int minute = ca.get(Calendar.MINUTE);//
// int second = ca.get(Calendar.SECOND);//
// String con = second + " " + minute + " " + hour + " " + day + " " + month +" " + year;
// taskDTO.setTaskTimeInfo(con);
// quartzService.addOrUpdateQuartzTask(taskDTO);
QuartzTaskDTO taskDTO = buildQuartzTaskDTO("haoban-enterprise-fresh-wx-friend");
JSONObject json = new JSONObject();
json.put("taskId", taskId);
json.put("wxEnterpriseId", wxEnterpriseId);
taskDTO.setTaskParam(json.toJSONString());
taskDTO.setTaskStatus(1);
Date now = new Date();
Date exeDate = DateUtil.addDay(now, 1);
Calendar ca = Calendar.getInstance();
ca.setTime(now);
int day = ca.get(Calendar.DAY_OF_MONTH);//第几天
int month = ca.get(Calendar.MONTH);//第几个月
int year = ca.get(Calendar.YEAR);//年份数值
int hour = 4;//
int minute = ca.get(Calendar.MINUTE);//
int second = ca.get(Calendar.SECOND);//
String con = second + " " + minute + " " + hour + " " + day + " " + month +" " + year;
taskDTO.setTaskTimeInfo(con);
quartzService.addOrUpdateQuartzTask(taskDTO);
dealSyncOperationApiService.dealWxFriendClerk(taskId, wxEnterpriseId);
RedisUtil.setCache(dayKey, dayCount+1);
RedisUtil.setCache(monthKey, monthCount+1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment