Commit 3525dd806d9df587ae3965e9c0e6acf90e684411
1 parent
a9a68a32
Squashed commit of the following:
commit 80bc9c6d Author: Kurisu <makise_kurisuu@outlook.jp> Date: Thu Jan 28 10:47:06 2021 +0800 对接erp人员离职调岗生成保有客分配待办 commit 24d960a4 Author: Kurisu <makise_kurisuu@outlook.jp> Date: Thu Jan 28 09:05:22 2021 +0800 test commit 7f324872 Author: Kurisu <makise_kurisuu@outlook.jp> Date: Wed Jan 27 18:25:15 2021 +0800 test
Showing
4 changed files
with
170 additions
and
1 deletions
fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/task/CallReportDealTask.java
fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/task/RoleChangeTask.java
0 → 100644
1 | +package cn.fw.valhalla.controller.task; | |
2 | + | |
3 | +import cn.fw.valhalla.common.utils.StringUtils; | |
4 | +import cn.fw.valhalla.domain.db.LeaveNeedDo; | |
5 | +import cn.fw.valhalla.service.bus.LeaveNeedDoBizService; | |
6 | +import com.alibaba.fastjson.JSONObject; | |
7 | +import lombok.Getter; | |
8 | +import lombok.extern.slf4j.Slf4j; | |
9 | +import org.springframework.beans.factory.annotation.Autowired; | |
10 | +import org.springframework.beans.factory.annotation.Value; | |
11 | +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; | |
12 | +import org.springframework.data.redis.core.StringRedisTemplate; | |
13 | +import org.springframework.scheduling.annotation.Scheduled; | |
14 | +import org.springframework.stereotype.Component; | |
15 | + | |
16 | +import java.util.ArrayList; | |
17 | +import java.util.List; | |
18 | +import java.util.Objects; | |
19 | + | |
20 | +/** | |
21 | + * @author : kurisu | |
22 | + * @className : CallReportDealTask | |
23 | + * @description : 通话记录处理任务 | |
24 | + * @date: 2021-01-19 16:02 | |
25 | + */ | |
26 | +@Slf4j | |
27 | +@Component | |
28 | +@ConditionalOnProperty(prefix = "task", name = "switch", havingValue = "on") | |
29 | +public class RoleChangeTask { | |
30 | + private final LeaveNeedDoBizService leaveNeedDoBizService; | |
31 | + private final StringRedisTemplate redisTemplate; | |
32 | + | |
33 | + @Value("${spring.cache.custom.global-prefix}:mq:role:change") | |
34 | + @Getter | |
35 | + private String roleChangeKey; | |
36 | + | |
37 | + @Autowired | |
38 | + public RoleChangeTask(final LeaveNeedDoBizService leaveNeedDoBizService, | |
39 | + final StringRedisTemplate redisTemplate) { | |
40 | + this.leaveNeedDoBizService = leaveNeedDoBizService; | |
41 | + this.redisTemplate = redisTemplate; | |
42 | + } | |
43 | + | |
44 | + | |
45 | + /** | |
46 | + * 处理员工角色变动 | |
47 | + */ | |
48 | + @Scheduled(initialDelay = 1000 * 30, fixedRate = 1000 * 60 * 60) | |
49 | + public void dealData() { | |
50 | + List<String> failList = new ArrayList<>(); | |
51 | + String jsonStr; | |
52 | + while ((jsonStr = redisTemplate.opsForList().leftPop(getRoleChangeKey())) != null) { | |
53 | + LeaveNeedDo leaveNeedDo = JSONObject.parseObject(jsonStr, LeaveNeedDo.class); | |
54 | + if (Objects.isNull(leaveNeedDo)) { | |
55 | + continue; | |
56 | + } | |
57 | + try { | |
58 | + leaveNeedDoBizService.add(leaveNeedDo); | |
59 | + } catch (Exception e) { | |
60 | + if (StringUtils.isValid(jsonStr)) { | |
61 | + failList.add(jsonStr); | |
62 | + } | |
63 | + log.error("处理员工角色变动失败", e); | |
64 | + } | |
65 | + } | |
66 | + redisTemplate.opsForList().rightPushAll(getRoleChangeKey(), failList); | |
67 | + } | |
68 | +} | ... | ... |
fw-valhalla-service/src/main/java/cn/fw/valhalla/component/RoleChangeConsumer.java
0 → 100644
1 | +package cn.fw.valhalla.component; | |
2 | + | |
3 | +import cn.fw.erp.sdk.api.enums.OperateTypeEnum; | |
4 | +import cn.fw.erp.sdk.api.mq.RoleChangeEvent; | |
5 | +import cn.fw.valhalla.common.constant.RoleCode; | |
6 | +import cn.fw.valhalla.domain.db.LeaveNeedDo; | |
7 | +import cn.fw.valhalla.domain.enums.LeaveReasonEnum; | |
8 | +import cn.fw.valhalla.domain.enums.LeaveTodoTypeEnum; | |
9 | +import com.alibaba.fastjson.JSON; | |
10 | +import com.alibaba.fastjson.JSONObject; | |
11 | +import lombok.Getter; | |
12 | +import lombok.extern.slf4j.Slf4j; | |
13 | +import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; | |
14 | +import org.apache.rocketmq.spring.core.RocketMQListener; | |
15 | +import org.springframework.beans.factory.annotation.Autowired; | |
16 | +import org.springframework.beans.factory.annotation.Value; | |
17 | +import org.springframework.data.redis.core.StringRedisTemplate; | |
18 | +import org.springframework.stereotype.Component; | |
19 | + | |
20 | +import java.util.Date; | |
21 | +import java.util.Objects; | |
22 | + | |
23 | +/** | |
24 | + * @author : kurisu | |
25 | + * @className : RoleChangeConsumer | |
26 | + * @description : 角色变动mq | |
27 | + * @date: 2021-01-28 09:49 | |
28 | + */ | |
29 | +@Slf4j | |
30 | +@Component | |
31 | +@RocketMQMessageListener(topic = RoleChangeEvent.TOPIC, consumerGroup = "${spring.application.name}-" + RoleChangeEvent.TOPIC) | |
32 | +public class RoleChangeConsumer implements RocketMQListener<RoleChangeEvent> { | |
33 | + private final StringRedisTemplate redisTemplate; | |
34 | + | |
35 | + @Value("${spring.cache.custom.global-prefix}:mq:role:change") | |
36 | + @Getter | |
37 | + private String roleChangeKey; | |
38 | + | |
39 | + @Autowired | |
40 | + public RoleChangeConsumer(final StringRedisTemplate redisTemplate) { | |
41 | + this.redisTemplate = redisTemplate; | |
42 | + } | |
43 | + | |
44 | + @Override | |
45 | + public void onMessage(RoleChangeEvent t) { | |
46 | + log.info("监听角色变动mq: RoleChangeEvent=[{}]", t); | |
47 | + try { | |
48 | + if (Objects.isNull(t)) { | |
49 | + return; | |
50 | + } | |
51 | + if (OperateTypeEnum.REMOVE.getValue().equals(t.getType()) && RoleCode.FWGW.equalsIgnoreCase(t.getRoleCode())) { | |
52 | + Long shopId = t.getRangeValue(); | |
53 | + Long userId = t.getUserId(); | |
54 | + String userName = t.getUserName(); | |
55 | + LeaveNeedDo leaveNeedDo = createDb(userId, shopId, userName); | |
56 | + redisTemplate.boundListOps(getRoleChangeKey()).rightPush(JSONObject.toJSONString(leaveNeedDo)); | |
57 | + } | |
58 | + } catch (Exception ex) { | |
59 | + log.error("消费角色变动mq失败,原因:{}", JSON.toJSONString(ex)); | |
60 | + } | |
61 | + } | |
62 | + | |
63 | + private LeaveNeedDo createDb(Long userId, Long shopId, String userName) { | |
64 | + LeaveNeedDo leaveNeedDo = new LeaveNeedDo(); | |
65 | + leaveNeedDo.setDone(Boolean.FALSE); | |
66 | + leaveNeedDo.setEffectiveTime(new Date()); | |
67 | + leaveNeedDo.setReason(LeaveReasonEnum.CHANGE); | |
68 | + leaveNeedDo.setType(LeaveTodoTypeEnum.CUSTOMER); | |
69 | + leaveNeedDo.setShopId(shopId); | |
70 | + leaveNeedDo.setUserId(userId); | |
71 | + leaveNeedDo.setUserName(userName); | |
72 | + leaveNeedDo.setCreateTime(new Date()); | |
73 | + return leaveNeedDo; | |
74 | + } | |
75 | +} | ... | ... |
fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/LeaveNeedDoBizService.java
... | ... | @@ -104,6 +104,32 @@ public class LeaveNeedDoBizService { |
104 | 104 | } |
105 | 105 | } |
106 | 106 | |
107 | + @Transactional(rollbackFor = Exception.class) | |
108 | + public void add(LeaveNeedDo leaveNeedDo) { | |
109 | + Long userId = leaveNeedDo.getUserId(); | |
110 | + Long shopId = leaveNeedDo.getShopId(); | |
111 | + List<PostUserDTO> postUserDTOS = userService.getUserByRole(shopId, RoleCode.BYKFP); | |
112 | + BV.isFalse(CollectionUtils.isEmpty(postUserDTOS), () -> "该门店没有配置保有客分配人员"); | |
113 | + boolean bool = leaveNeedDoService.count(Wrappers.<LeaveNeedDo>lambdaQuery() | |
114 | + .eq(LeaveNeedDo::getUserId, userId) | |
115 | + .eq(LeaveNeedDo::getShopId, shopId) | |
116 | + .eq(LeaveNeedDo::getDone, Boolean.FALSE) | |
117 | + ) > 0; | |
118 | + if (bool) { | |
119 | + return; | |
120 | + } | |
121 | + bool = customerService.count(Wrappers.<Customer>lambdaQuery() | |
122 | + .eq(Customer::getAdviserId, userId) | |
123 | + .eq(Customer::getShopId, shopId) | |
124 | + .eq(Customer::getYn, Boolean.TRUE) | |
125 | + ) <= 0; | |
126 | + if (bool) { | |
127 | + return; | |
128 | + } | |
129 | + leaveNeedDoService.save(leaveNeedDo); | |
130 | + push2Todo(leaveNeedDo.getId(), postUserDTOS.get(0).getUserId(), shopId); | |
131 | + } | |
132 | + | |
107 | 133 | public AppPage<LeaveNeedDoVO> getList(LoginAuthBean currentUser, LeaveQueryVO queryVO) { |
108 | 134 | List<UserRoleDataRangeDTO> dataRange = userService.getUserRoleDataRange(currentUser.getUserId(), RoleCode.BYKFP); |
109 | 135 | List<Long> shopIds = dataRange.stream().map(UserRoleDataRangeDTO::getRangeValue).collect(Collectors.toList()); | ... | ... |