diff --git a/fw-dalaran-common/src/main/java/cn/fw/dalaran/common/constants/DalaranConstants.java b/fw-dalaran-common/src/main/java/cn/fw/dalaran/common/constants/Constants.java index e746fbf..cf56a32 100644 --- a/fw-dalaran-common/src/main/java/cn/fw/dalaran/common/constants/DalaranConstants.java +++ b/fw-dalaran-common/src/main/java/cn/fw/dalaran/common/constants/Constants.java @@ -6,7 +6,7 @@ package cn.fw.dalaran.common.constants; * @date 2022/4/13 16:40 * @Description Dalaran系统常量 */ -public interface DalaranConstants { +public interface Constants { /** * 系统名 */ @@ -35,4 +35,14 @@ public interface DalaranConstants { * 直播审计角色码 */ String ZBSJ_ROLE_CODE = "ZMT-ZBSJ"; + + /** + * 薪酬绩效相关常量 + */ + interface Performance { + /** + * 综合得分目标达成率 + */ + String SCORE_RATE = "6574EA0766114615"; + } } diff --git a/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/db/ConfigGroup.java b/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/db/ConfigGroup.java index 52473f7..a9f485d 100644 --- a/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/db/ConfigGroup.java +++ b/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/db/ConfigGroup.java @@ -54,7 +54,7 @@ public class ConfigGroup { */ private String configIds; /** - * 全部门店(-1:授权范围内, 0:否, 1:是) + * 全部门店(-2:初始化, -1:授权范围内, 0:否, 1:是) */ private Integer allShop; /** diff --git a/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/db/GlobalConfig.java b/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/db/GlobalConfig.java index 3e3674a..c9d78ff 100644 --- a/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/db/GlobalConfig.java +++ b/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/db/GlobalConfig.java @@ -30,7 +30,7 @@ public class GlobalConfig implements Serializable { */ private Long configGroupId; /** - * 配置项类型(1:封面, 2:话题) + * 配置项类型(1:封面, 2:话题, 3:综合得分标准分) */ private Integer type; /** diff --git a/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/enums/ConfigEnum.java b/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/enums/ConfigEnum.java index f9d9afb..e8387f3 100644 --- a/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/enums/ConfigEnum.java +++ b/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/enums/ConfigEnum.java @@ -20,6 +20,10 @@ public enum ConfigEnum implements IEnum { * 话题相似度 */ TOPIC_SIMILARITY(2, "话题相似度"), + /** + * 综合得分集团标准分 + */ + STANDARD_SCORE(3,"综合得分集团标准分") ; /** diff --git a/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/vo/ConfigGroupVo.java b/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/vo/ConfigGroupVo.java index e38f113..420f454 100644 --- a/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/vo/ConfigGroupVo.java +++ b/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/vo/ConfigGroupVo.java @@ -33,6 +33,10 @@ public class ConfigGroupVo { */ private String userName; /** + * 能否编辑 + */ + private boolean canAlter; + /** * 集团id */ private Long groupId; diff --git a/fw-dalaran-rpc/pom.xml b/fw-dalaran-rpc/pom.xml index c69d88c..25b3c0c 100644 --- a/fw-dalaran-rpc/pom.xml +++ b/fw-dalaran-rpc/pom.xml @@ -39,6 +39,11 @@ cn.fw fw-attendance-sdk + + + cn.fw + fw-morax-sdk + javax.validation diff --git a/fw-dalaran-rpc/src/main/java/cn/fw/dalaran/rpc/erp/ErpTaskRpc.java b/fw-dalaran-rpc/src/main/java/cn/fw/dalaran/rpc/erp/ErpTaskRpc.java index a211288..1081abf 100644 --- a/fw-dalaran-rpc/src/main/java/cn/fw/dalaran/rpc/erp/ErpTaskRpc.java +++ b/fw-dalaran-rpc/src/main/java/cn/fw/dalaran/rpc/erp/ErpTaskRpc.java @@ -1,7 +1,7 @@ package cn.fw.dalaran.rpc.erp; import cn.fw.common.exception.BusinessException; -import cn.fw.dalaran.common.constants.DalaranConstants; +import cn.fw.dalaran.common.constants.Constants; import cn.fw.dalaran.rpc.erp.dto.TaskSetReq; import cn.fw.data.base.domain.common.Message; import cn.fw.erp.sdk.api.TaskApi; @@ -29,7 +29,7 @@ public class ErpTaskRpc { try { TaskAddReq addReq = new TaskAddReq<>(); BeanUtils.copyProperties(req, addReq); - addReq.setSystem(DalaranConstants.APPLICATION_NAME); + addReq.setSystem(Constants.APPLICATION_NAME); final Message msg = taskApi.addTask(addReq); log.info("调用ERP系统添加定时任务结果[{}]", JSON.toJSONString(msg)); } catch (Exception e) { diff --git a/fw-dalaran-rpc/src/main/java/cn/fw/dalaran/rpc/morax/SalaryRpc.java b/fw-dalaran-rpc/src/main/java/cn/fw/dalaran/rpc/morax/SalaryRpc.java new file mode 100644 index 0000000..e0d64d4 --- /dev/null +++ b/fw-dalaran-rpc/src/main/java/cn/fw/dalaran/rpc/morax/SalaryRpc.java @@ -0,0 +1,59 @@ +package cn.fw.dalaran.rpc.morax; + +import cn.fw.dalaran.common.utils.PublicUtil; +import cn.fw.data.base.domain.common.Message; +import cn.fw.morax.sdk.api.IKpiReportService; +import cn.fw.morax.sdk.api.ISalaryReportService; +import cn.fw.morax.sdk.dto.CustomList; +import cn.fw.morax.sdk.dto.kpi.KpiGroupUserQuery; +import cn.fw.morax.sdk.dto.kpi.KpiGroupUserResult; +import cn.fw.morax.sdk.dto.kpi.UserIndicatorReq; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Collections; +import java.util.List; + + +/** + * @author wmy3969 + * @version 1.0 + * @date 2022/10/9 14:05 + * @Description 绩效薪酬rpc + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class SalaryRpc { + + private final IKpiReportService kpiApi;// 绩效api + private final ISalaryReportService salaryApi;// 薪酬api + + /** + * 查询绩效组人员 + */ + public List queryGroupUsers(KpiGroupUserQuery kpiGroupUserQuery) { + try { + Message> groupUser = kpiApi.queryKpiGroupUser(kpiGroupUserQuery); + PublicUtil.assertTrue(groupUser.isSuccess(), "查询绩效组人员失败!"); + return groupUser.getData(); + } catch (Exception e) { + log.error("查询绩效组人员发生错误, 错误信息为: {}", e.getMessage()); + return Collections.emptyList(); + } + } + + /** + * 上报人员绩效数据 + */ + public void reportKpi(CustomList userIndicatorList) { + try { + Message msg = kpiApi.indicatorReport(userIndicatorList); + PublicUtil.assertTrue(msg.isSuccess(), "上报人员绩效数据失败!"); + } catch (Exception e) { + log.error("上报人员绩效数据发生错误, 错误信息为: {}", e.getMessage()); + } + } + +} diff --git a/fw-dalaran-server/pom.xml b/fw-dalaran-server/pom.xml index 5b45c49..e167dde 100644 --- a/fw-dalaran-server/pom.xml +++ b/fw-dalaran-server/pom.xml @@ -26,6 +26,11 @@ cn.fw fw-notice-sdk + + + cn.fw + fw-morax-sdk + cn.fw fw-attendance-sdk @@ -153,6 +158,7 @@ **/*.yml **/*.properties **/*.xml + **/banner.txt diff --git a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/Application.java b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/Application.java index 725bf87..6168213 100644 --- a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/Application.java +++ b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/Application.java @@ -9,6 +9,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.data.redis.repository.configuration.EnableRedisRepositories; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; @@ -17,7 +18,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; /** * 启动类 * - *@author kurisu + * @author kurisu */ @EnableAsync @SpringBootApplication @@ -31,6 +32,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @MapperScan("cn.fw.**.dao") @ComponentScan({"cn.fw.dalaran.*"}) @EnableFeignClients({"cn.fw.**.sdk"}) +@EnableAspectJAutoProxy(exposeProxy = true) public class Application { public static void main(final String[] args) { SpringApplication.run(Application.class, args); diff --git a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/web/ConfigGroupController.java b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/web/ConfigGroupController.java index fdeb1fc..d6cf2fb 100644 --- a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/web/ConfigGroupController.java +++ b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/web/ConfigGroupController.java @@ -1,6 +1,5 @@ package cn.fw.dalaran.server.controller.web; -import cn.fw.common.web.annotation.ControllerMethod; import cn.fw.common.web.auth.LoginAuthBean; import cn.fw.common.web.auth.annotation.CurrentUser; import cn.fw.dalaran.domain.vo.ConfigGroupVo; @@ -42,7 +41,6 @@ public class ConfigGroupController { * @return 操作结果 */ @GetMapping("/init") - @ControllerMethod("初始化配置组") public Message init(@CurrentUser LoginAuthBean user) { return success(configGroupService.init(user.getUserId(), user.getGroupId())); } @@ -66,7 +64,6 @@ public class ConfigGroupController { * @return 符合条件的配置列表 */ @GetMapping("/list") - @ControllerMethod("查询配置列表") public Message> list(@CurrentUser LoginAuthBean user) { return success(configGroupService.queryList(user.getUserId(), user.getGroupId())); } diff --git a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/web/TestBizService.java b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/web/TestBizService.java new file mode 100644 index 0000000..1f7106b --- /dev/null +++ b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/web/TestBizService.java @@ -0,0 +1,79 @@ +package cn.fw.dalaran.server.controller.web; + +import cn.fw.dalaran.domain.db.Account; +import cn.fw.dalaran.domain.enums.PlatformEnum; +import cn.fw.dalaran.service.data.AccountService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.aop.framework.AopContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * @author wmy3969 + * @version 1.0 + * @date 2022/10/12 0:23 + * @Description + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class TestBizService { + + /* + * A(不+事务注解)中调用B(+事务注解): + * A无事务, B无事务 + * + * A(+事务注解)中调用B(+事务注解): + * A有事务, B无事务 + * + * 解决方案: + * 1: bean中自己注入自己, 让A中调用B方法使用注入的自己去调用B方法(testBizService.methodB(), 而不是this.methodB()) + * 2: 配置类上声明@EnableAspectJAutoProxy(exposeProxy = true), 然后业务方法((TestBizService) AopContext.currentProxy()).methodB() + * AopContext.currentProxy()其实就是获取的代理对象, bean中注入的自己也是代理对象 + */ + + private TestBizService testBizService; + + @Autowired + public void inject(TestBizService testBizService) { + this.testBizService = testBizService; + } + + private final AccountService accountService; + + @Transactional(rollbackFor = Exception.class) + public void methodA() { + Account account = new Account(); + account.setAccount("methodA"); + account.setYn(Boolean.FALSE); + account.setGroupId(2L); + account.setType(PlatformEnum.DY); + account.setUserId(1545L); + account.setShopId(11L); + accountService.save(account); + try { + //this.methodB(); + //testBizService.methodB(); + //testBizService1.methodB(); + ((TestBizService) AopContext.currentProxy()).methodB(); + } catch (Exception e) { + e.printStackTrace(); + } + //int i = 1 / 0; + } + + @Transactional(rollbackFor = Exception.class/*, propagation = Propagation.REQUIRES_NEW*/) + public void methodB() { + Account account = new Account(); + account.setAccount("methodB"); + account.setYn(Boolean.FALSE); + account.setGroupId(2L); + account.setType(PlatformEnum.DY); + account.setUserId(1545L); + account.setShopId(11L); + accountService.save(account); + int i = 1 / 0; + } +} diff --git a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/web/TestController.java b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/web/TestController.java new file mode 100644 index 0000000..98c1304 --- /dev/null +++ b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/web/TestController.java @@ -0,0 +1,35 @@ +package cn.fw.dalaran.server.controller.web; + +import cn.fw.security.auth.client.annotation.Authorization; +import cn.fw.security.auth.client.annotation.IgnoreAuth; +import cn.fw.security.auth.client.enums.AuthType; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author wmy3969 + * @version 1.0 + * @date 2022/10/12 0:23 + * @Description + */ +@Slf4j +@Validated +@RestController +@RequiredArgsConstructor +@Authorization(AuthType.ERP) +@RequestMapping("/web/test") +@IgnoreAuth +public class TestController { + + private final TestBizService testBizService; + + @GetMapping("/methodA") + public void methodA() { + testBizService.methodA(); + } + +} diff --git a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/rocketMQ/InitStaffWorkStatusConsumer.java b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/rocketMQ/InitStaffWorkStatusConsumer.java index a19b07e..ee3bc8e 100644 --- a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/rocketMQ/InitStaffWorkStatusConsumer.java +++ b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/rocketMQ/InitStaffWorkStatusConsumer.java @@ -1,6 +1,6 @@ package cn.fw.dalaran.server.rocketMQ; -import cn.fw.dalaran.common.constants.DalaranConstants; +import cn.fw.dalaran.common.constants.Constants; import cn.fw.dalaran.domain.db.Account; import cn.fw.dalaran.domain.db.ActivityTheme; import cn.fw.dalaran.service.data.AccountService; @@ -25,9 +25,9 @@ import java.util.stream.Collectors; @Component @RequiredArgsConstructor @RocketMQMessageListener( - topic = "task-" + DalaranConstants.APPLICATION_NAME, - consumerGroup = DalaranConstants.APPLICATION_NAME + "-task-" + DalaranConstants.INIT_ACCOUNT_STATUS, - selectorExpression = DalaranConstants.INIT_ACCOUNT_STATUS) + topic = "task-" + Constants.APPLICATION_NAME, + consumerGroup = Constants.APPLICATION_NAME + "-task-" + Constants.INIT_ACCOUNT_STATUS, + selectorExpression = Constants.INIT_ACCOUNT_STATUS) public class InitStaffWorkStatusConsumer implements RocketMQListener { private final AccountService accountService; @@ -35,7 +35,7 @@ public class InitStaffWorkStatusConsumer implements RocketMQListener { @Override public void onMessage(Long themeId) { - log.info("收到topic为: task-{}, tag为: {}的消息, 消息内容(themeId): {}", DalaranConstants.APPLICATION_NAME, DalaranConstants.INIT_ACCOUNT_STATUS, themeId); + log.info("收到topic为: task-{}, tag为: {}的消息, 消息内容(themeId): {}", Constants.APPLICATION_NAME, Constants.INIT_ACCOUNT_STATUS, themeId); ActivityTheme theme; if (Objects.nonNull(theme = activityThemeService.getById(themeId))) { if (Objects.equals(theme.getAllShop(), 0)) { diff --git a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/rocketMQ/SalaryEventConsumer.java b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/rocketMQ/SalaryEventConsumer.java new file mode 100644 index 0000000..9de59ef --- /dev/null +++ b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/rocketMQ/SalaryEventConsumer.java @@ -0,0 +1,86 @@ +package cn.fw.dalaran.server.rocketMQ; + +import cn.fw.dalaran.common.constants.Constants; +import cn.fw.dalaran.common.utils.PublicUtil; +import cn.fw.dalaran.rpc.morax.SalaryRpc; +import cn.fw.dalaran.service.data.ActivityThemeService; +import cn.fw.morax.sdk.dto.CustomList; +import cn.fw.morax.sdk.dto.kpi.KpiGroupUserQuery; +import cn.fw.morax.sdk.dto.kpi.KpiGroupUserResult; +import cn.fw.morax.sdk.dto.kpi.KpiReportNoticeMQ; +import cn.fw.morax.sdk.dto.kpi.UserIndicatorReq; +import cn.fw.starter.redis.redis.RedisUtil; +import com.alibaba.fastjson.JSON; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; +import org.apache.rocketmq.spring.core.RocketMQListener; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Objects; + +/** + * @author wmy3969 + * @version 1.0 + * @date 2022/10/09 10:51 + * @Description 薪酬绩效MQ + */ +@Slf4j +@Component +@RequiredArgsConstructor +@RocketMQMessageListener( + topic = KpiReportNoticeMQ.TOPIC, + consumerGroup = Constants.APPLICATION_NAME + "-" + KpiReportNoticeMQ.TOPIC) +public class SalaryEventConsumer implements RocketMQListener { + + private final RedisUtil redisUtil;// redis操作工具 + private final SalaryRpc salaryRpc;// 薪酬绩效rpc + private final ActivityThemeService activityThemeService;// 活动主题业务 + + /** + * 处理'上报薪酬绩效'消息 + * + * @param kpiReport + */ + @Override + public void onMessage(KpiReportNoticeMQ kpiReport) { + String indicatorCode = kpiReport.getIndicatorCode(); + if (Objects.equals(Constants.Performance.SCORE_RATE, indicatorCode)) + return; + log.info("收到上报薪酬绩效消息 message:{}", JSON.toJSONString(kpiReport)); + String redisKey = "SalaryEventConsumer:onMessage"; + if (redisUtil.getLock(redisKey)) { + try { + KpiGroupUserQuery param = new KpiGroupUserQuery(); + param.setGroupId(kpiReport.getGroupId()); + param.setDataDate(kpiReport.getUploadDate().getTime()); + param.setPostId(kpiReport.getPostId()); + param.setIndicatorCode(indicatorCode); + List users = salaryRpc.queryGroupUsers(param); + CustomList indicates = new CustomList<>(); + users.forEach(item -> {// 遍历每个组 + /*BigDecimal targetValue = item.getTargetValue();// 目标值 + TargetTypeEnum targetType = item.getTargetType();// 获取目标类型*/ + List userIdList = item.getUserIdList(); + userIdList.forEach(item1 -> {// 每个组下的不同人 + UserIndicatorReq userIndicator = PublicUtil.copy(item1, UserIndicatorReq.class); + userIndicator.setIndicatorCode(indicatorCode); + userIndicator.setDataDate(kpiReport.getUploadDate()); + userIndicator.setUid(kpiReport.getUid()); + //userIndicator.setValue(); + indicates.add(userIndicator); + }); + }); + salaryRpc.reportKpi(indicates); + } catch (Exception e) { + log.error("处理上报薪酬绩效消息发生异常 message:{}", JSON.toJSONString(kpiReport), e); + } finally { + redisUtil.unlock(redisKey); + } + } else { + log.info("执行cn.fw.dalaran.server.rocketMQ.SalaryEventConsumer.onMessage()方法获取锁失败, 不消费消息"); + } + } + +} diff --git a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/rocketMQ/StaffLeaveEventConsumer.java b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/rocketMQ/StaffLeaveEventConsumer.java index 33d182f..6e78eb3 100644 --- a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/rocketMQ/StaffLeaveEventConsumer.java +++ b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/rocketMQ/StaffLeaveEventConsumer.java @@ -1,6 +1,6 @@ package cn.fw.dalaran.server.rocketMQ; -import cn.fw.dalaran.common.constants.DalaranConstants; +import cn.fw.dalaran.common.constants.Constants; import cn.fw.dalaran.domain.db.Account; import cn.fw.dalaran.service.data.AccountService; import cn.fw.ehr.sdk.api.mq.StaffLeaveEvent; @@ -24,7 +24,7 @@ import java.util.Date; @RequiredArgsConstructor @RocketMQMessageListener( topic = StaffLeaveEvent.TOPIC, - consumerGroup = DalaranConstants.APPLICATION_NAME + "-" + StaffLeaveEvent.TOPIC) + consumerGroup = Constants.APPLICATION_NAME + "-" + StaffLeaveEvent.TOPIC) public class StaffLeaveEventConsumer implements RocketMQListener { private final AccountService accountService; diff --git a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/task/TodoTask.java b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/task/TodoTask.java index ff33072..210e474 100644 --- a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/task/TodoTask.java +++ b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/task/TodoTask.java @@ -1,6 +1,6 @@ package cn.fw.dalaran.server.task; -import cn.fw.dalaran.common.constants.DalaranConstants; +import cn.fw.dalaran.common.constants.Constants; import cn.fw.dalaran.domain.db.Account; import cn.fw.dalaran.domain.db.ActivityTheme; import cn.fw.dalaran.domain.db.LivePool; @@ -60,10 +60,10 @@ public class TodoTask { final Map> todoMap = list.stream() .collect(Collectors.groupingBy(TodoHistory::getTodoCode));// 根据待办编码分组 final List loginAccount = Optional - .ofNullable(todoMap.get(DalaranConstants.ACCOUNT_INVALID)) + .ofNullable(todoMap.get(Constants.ACCOUNT_INVALID)) .orElse(new ArrayList<>()); final List checkLive = Optional - .ofNullable(todoMap.get(DalaranConstants.CHECK_LIVE)) + .ofNullable(todoMap.get(Constants.CHECK_LIVE)) .orElse(new ArrayList<>()); for (TodoHistory history : loginAccount) {// 处理账号登录待办 Account account = accountService.getById(history.getDataId()); @@ -116,7 +116,7 @@ public class TodoTask { return; } for (TodoHistory history : list) { - if (Objects.equals(history.getTodoCode(), DalaranConstants.ACCOUNT_INVALID)) {// 账号失效待办 + if (Objects.equals(history.getTodoCode(), Constants.ACCOUNT_INVALID)) {// 账号失效待办 Account account = accountService.getById(history.getDataId()); if (Objects.isNull(account)) { continue; @@ -176,7 +176,7 @@ public class TodoTask { if (CollectionUtils.isEmpty(themeVos)) return; List hasSaveTodo = todoHistoryService.lambdaQuery() - .eq(TodoHistory::getTodoCode, DalaranConstants.CHECK_LIVE) + .eq(TodoHistory::getTodoCode, Constants.CHECK_LIVE) .in(TodoHistory::getDataId, themeVos.stream() .map(ActivityThemeVo::getId) .collect(Collectors.toList()) @@ -186,12 +186,12 @@ public class TodoTask { .stream() .map(item -> {// 遍历每个门店 TodoHistory todo = new TodoHistory(); - List users = userRoleRpcService.getUsers(item, DalaranConstants.ZBSJ_ROLE_CODE);// 获取门店拥有'直播审计'角色的人 + List users = userRoleRpcService.getUsers(item, Constants.ZBSJ_ROLE_CODE);// 获取门店拥有'直播审计'角色的人 if (users.size() > 0) { todo.setSend(false); todo.setDone(false); todo.setTodoDone(false); - todo.setTodoCode(DalaranConstants.CHECK_LIVE); + todo.setTodoCode(Constants.CHECK_LIVE); todo.setDataId(themeVos.stream() .filter(item1 -> item1.getShopIds().contains(item)) .collect(Collectors.toList()) diff --git a/fw-dalaran-server/src/main/resources/application-local.yml b/fw-dalaran-server/src/main/resources/application-local.yml index 07a2061..968e57f 100644 --- a/fw-dalaran-server/src/main/resources/application-local.yml +++ b/fw-dalaran-server/src/main/resources/application-local.yml @@ -12,8 +12,10 @@ nacos: spring: application: name: fw-dalaran-local + banner: + location: "classpath:banner.txt" rocketmq: -# name-server: 192.168.0.230:9876 + # name-server: 192.168.0.230:9876 name-server: 172.26.154.169:9876 producer: group: ${spring.application.name} diff --git a/fw-dalaran-server/src/main/resources/application.yml b/fw-dalaran-server/src/main/resources/application.yml index 23d5bf3..ac75b11 100644 --- a/fw-dalaran-server/src/main/resources/application.yml +++ b/fw-dalaran-server/src/main/resources/application.yml @@ -1,4 +1,6 @@ spring: + banner: + charset: US-ASCII application: name: fw-dalaran attachment: diff --git a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/biz/AccountBizService.java b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/biz/AccountBizService.java index 425df6f..43c887f 100644 --- a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/biz/AccountBizService.java +++ b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/biz/AccountBizService.java @@ -2,7 +2,7 @@ package cn.fw.dalaran.service.biz; import cn.fw.common.page.AppPage; import cn.fw.common.web.annotation.DisLock; -import cn.fw.dalaran.common.constants.DalaranConstants; +import cn.fw.dalaran.common.constants.Constants; import cn.fw.dalaran.common.exception.BusinessException; import cn.fw.dalaran.common.utils.DateUtil; import cn.fw.dalaran.domain.db.Account; @@ -10,6 +10,7 @@ import cn.fw.dalaran.domain.db.TodoHistory; import cn.fw.dalaran.domain.dto.AccountDTO; import cn.fw.dalaran.domain.dto.AccountQueryDTO; import cn.fw.dalaran.domain.dto.UpdateAccountParam; +import cn.fw.dalaran.domain.enums.AccountStatusEnum; import cn.fw.dalaran.domain.enums.PlatformEnum; import cn.fw.dalaran.domain.vo.AccountStatusVo; import cn.fw.dalaran.domain.vo.AccountVO; @@ -112,9 +113,9 @@ public class AccountBizService { history.setDataId(account1.getId()); history.setShopId(account1.getShopId()); history.setUserId(account1.getUserId()); - history.setTodoCode(DalaranConstants.ACCOUNT_INVALID); + history.setTodoCode(Constants.ACCOUNT_INVALID); todos.add(history); - List users = userRoleRpcService.getUsers(account1.getShopId(), DalaranConstants.ZHSZ_ROLE_CODE); + List users = userRoleRpcService.getUsers(account1.getShopId(), Constants.ZHSZ_ROLE_CODE); if (!CollectionUtils.isEmpty(users)) { Long managerId = users.get(0).getUserId(); TodoHistory manageTodo = new TodoHistory(); @@ -128,7 +129,7 @@ public class AccountBizService { .map(Account::getId) .collect(Collectors.toList());// 失败账号id List todayHasSendList = todoHistoryService.lambdaQuery() - .eq(TodoHistory::getTodoCode, DalaranConstants.ACCOUNT_INVALID) + .eq(TodoHistory::getTodoCode, Constants.ACCOUNT_INVALID) .in(!CollectionUtils.isEmpty(waitSendIds), TodoHistory::getDataId, waitSendIds) .last(" and DATEDIFF(create_time, NOW()) = 0") .list(); @@ -256,8 +257,8 @@ public class AccountBizService { .eq(Account::getAffirm, Boolean.TRUE) .eq(Account::getValid, Boolean.TRUE) .eq(Account::getType, platformEnum) - .ne(Account::getAccountStatus, -1) - //.eq(Account::getAccountStatus, 1) + .ne(Account::getAccountStatus, AccountStatusEnum.HAS_LEAVE.getValue()) + //.eq(Account::getAccountStatus, AccountStatusEnum.IN_WORK.getValue()) .eq(Account::getYn, Boolean.TRUE) ); if (CollectionUtils.isEmpty(list)) { diff --git a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/biz/OtherBizService.java b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/biz/OtherBizService.java index 229c3db..da0d5fe 100644 --- a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/biz/OtherBizService.java +++ b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/biz/OtherBizService.java @@ -1,6 +1,6 @@ package cn.fw.dalaran.service.biz; -import cn.fw.dalaran.common.constants.DalaranConstants; +import cn.fw.dalaran.common.constants.Constants; import cn.fw.dalaran.common.exception.BusinessException; import cn.fw.dalaran.common.utils.PublicUtil; import cn.fw.dalaran.common.utils.StringUtils; @@ -58,10 +58,10 @@ public class OtherBizService { * @param themeId 主题id * @return 审计视图 */ - @Transactional + @Transactional(rollbackFor = Exception.class) public LiveCheckVo getLiveCheck(Long userId, Long themeId) { LiveCheckVo vo = new LiveCheckVo(); - final List userRoleRange = userRoleRpcService.getUserRoleRange(userId, DalaranConstants.ZBSJ_ROLE_CODE);// 查询用户角色授权范围 + final List userRoleRange = userRoleRpcService.getUserRoleRange(userId, Constants.ZBSJ_ROLE_CODE);// 查询用户角色授权范围 List waitCheckLives = new ArrayList<>(); List list = liveCheckResultService.lambdaQuery() .eq(LiveCheckResult::getThemeId, themeId) @@ -123,7 +123,7 @@ public class OtherBizService { * @param param 审核结果 * @return 操作结果 */ - @Transactional + @Transactional(rollbackFor = Exception.class) public boolean saveCheckResult(Long userId, LiveCheckParams param) { final Integer type = param.getType(); final Long dataId = param.getDataId(); @@ -180,7 +180,7 @@ public class OtherBizService { .set(TodoHistory::getDone, true) .eq(TodoHistory::getUserId, userId) .eq(TodoHistory::getDataId, dataId) - .eq(TodoHistory::getTodoCode, DalaranConstants.CHECK_LIVE) + .eq(TodoHistory::getTodoCode, Constants.CHECK_LIVE) .update()) throw new BusinessException("完成待办失败"); final List invalidLiveIds = summaries.stream() diff --git a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/ActivityThemeServiceImpl.java b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/ActivityThemeServiceImpl.java index 8f9b1aa..730d59d 100644 --- a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/ActivityThemeServiceImpl.java +++ b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/ActivityThemeServiceImpl.java @@ -2,7 +2,7 @@ package cn.fw.dalaran.service.data.impl; import cn.fw.common.page.AppPage; import cn.fw.common.web.auth.LoginAuthBean; -import cn.fw.dalaran.common.constants.DalaranConstants; +import cn.fw.dalaran.common.constants.Constants; import cn.fw.dalaran.common.exception.BusinessException; import cn.fw.dalaran.common.utils.DateUtil; import cn.fw.dalaran.common.utils.ImageUtils; @@ -125,7 +125,7 @@ public class ActivityThemeServiceImpl extends ServiceImplbuilder() .executeTime(new Date(activityTheme.getStartTime().getTime() + 24 * 3600 * 1000L)) - .system(DalaranConstants.APPLICATION_NAME) + .system(Constants.APPLICATION_NAME) .param(activityTheme.getId()) - .tag(DalaranConstants.INIT_ACCOUNT_STATUS) + .tag(Constants.INIT_ACCOUNT_STATUS) .build() ); this.saveFiles(activityTheme.getId(), themeVo.getAllFileDesc()); @@ -189,7 +189,7 @@ public class ActivityThemeServiceImpl extends ServiceImpl fileList = params.getCovers() @@ -379,20 +379,18 @@ public class ActivityThemeServiceImpl extends ServiceImpl { try { File downloadFile = ImageUtils.convertFileByUrl("https://gate.feewee.cn/file/show?fid=" + item, item); diff --git a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/ConfigGroupServiceImpl.java b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/ConfigGroupServiceImpl.java index 9b2255b..408b3f7 100644 --- a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/ConfigGroupServiceImpl.java +++ b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/ConfigGroupServiceImpl.java @@ -1,6 +1,6 @@ package cn.fw.dalaran.service.data.impl; -import cn.fw.dalaran.common.constants.DalaranConstants; +import cn.fw.dalaran.common.constants.Constants; import cn.fw.dalaran.common.exception.BusinessException; import cn.fw.dalaran.dao.ConfigGroupDao; import cn.fw.dalaran.domain.db.ActivityTheme; @@ -66,14 +66,15 @@ public class ConfigGroupServiceImpl extends ServiceImpl 0) - throw new BusinessException("该用户存在一个已初始化但未赋值修改的配置组"); + .list() + .isEmpty() + ) throw new BusinessException("该用户存在一个已初始化但未赋值修改的配置组"); ConfigGroup configGroup = new ConfigGroup(); configGroup.setUserId(userId); configGroup.setGroupId(groupId); @@ -94,7 +95,7 @@ public class ConfigGroupServiceImpl extends ServiceImpl 0) throw new BusinessException("该集团已存在门店配置, 新配置不能设置为[全部门店]"); + if (!list.isEmpty()) throw new BusinessException("该集团已存在门店配置, 新配置不能设置为[全部门店]"); } else if (list.stream().anyMatch(item -> Objects.equals(item.getAllShop(), 1))) {// 已存在的配置组是否有全部门店的 throw new BusinessException("该集团已存在[全部门店]配置, 新配置不能生效"); } else { List shopIds = param.getShopIds();// 本次配置指定生效门店 List shopNames = param.getShopNames();// 本次配置指定生效门店 if (Objects.equals(allShop, -1)) {// 指定为授权门店 - List userRoleRange = userRoleRpcService.getUserRoleRange(param.getUserId(), DalaranConstants.ZBSZ_ROLE_CODE);// 查询用户角色授权范围 + List userRoleRange = userRoleRpcService.getUserRoleRange(param.getUserId(), Constants.ZBSZ_ROLE_CODE);// 查询用户角色授权范围 shopIds.clear(); shopNames.clear(); for (ShopMsg shopMsg : userRoleRange) { @@ -201,20 +202,20 @@ public class ConfigGroupServiceImpl extends ServiceImpl queryList(Long userId, Long groupId) { - List collect = this.lambdaQuery() + Map> collectMap = this.lambdaQuery() .eq(ConfigGroup::getGroupId, groupId) .list() .stream() .map(item -> this.processVo(item, true)) - .collect(Collectors.toList()); - Map> collectMap = collect.stream() .collect(Collectors.groupingBy(ConfigGroupVo::getUserId)); List vos = new ArrayList<>(Optional .ofNullable(collectMap.get(userId)) .orElse(new ArrayList<>()) );// 尝试获取属于登录用户的配置组 + /* 下面两步操作, 为了让属于自己的配置组能展示在最前面 */ collectMap.remove(userId);// 将属于该用户的配置从map中移除 collectMap.forEach((k, v) -> vos.addAll(v));// 将其他人的配置组加入vo + vos.forEach(item -> item.setCanAlter(Objects.equals(item.getUserId(), userId)));// 标记是否是自己的配置组 return vos; } diff --git a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/GlobalConfigServiceImpl.java b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/GlobalConfigServiceImpl.java index 2fcb1e1..a648965 100644 --- a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/GlobalConfigServiceImpl.java +++ b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/GlobalConfigServiceImpl.java @@ -6,6 +6,7 @@ import cn.fw.dalaran.domain.db.GlobalConfig; import cn.fw.dalaran.domain.enums.ConfigEnum; import cn.fw.dalaran.service.data.GlobalConfigService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -25,6 +26,13 @@ import java.util.stream.Collectors; @Service("globalConfigService") public class GlobalConfigServiceImpl extends ServiceImpl implements GlobalConfigService { + private GlobalConfigServiceImpl globalConfigService; + + @Autowired + public void inject(GlobalConfigServiceImpl globalConfigService) { + this.globalConfigService = globalConfigService; + } + /** * 获取列表 * @@ -39,6 +47,7 @@ public class GlobalConfigServiceImpl extends ServiceImpl globalConfigs) { - PublicUtil.assertFalse(globalConfigs.stream().anyMatch(item -> item.getRate().compareTo(BigDecimal.ZERO) < 0), "占比必须 > 0%"); - PublicUtil.assertFalse(globalConfigs.stream().anyMatch(item -> item.getRate().compareTo(BigDecimal.valueOf(100)) > 0), "占比必须 < 100%"); + PublicUtil.assertFalse(globalConfigs.stream() + .anyMatch(item -> item.getRate().compareTo(BigDecimal.ZERO) < 0), "占比必须 > 0%"); + PublicUtil.assertFalse(globalConfigs.stream() + .anyMatch(item -> item.getRate().compareTo(BigDecimal.valueOf(100)) > 0), "占比必须 < 100%"); this.saveOrUpdateBatch(PublicUtil.copyList(globalConfigs, GlobalConfig.class)); } @@ -62,7 +73,7 @@ public class GlobalConfigServiceImpl extends ServiceImpl initConfigList(Long configGroupId) { final List list = this.lambdaQuery() .eq(GlobalConfig::getConfigGroupId, configGroupId) @@ -76,13 +87,15 @@ public class GlobalConfigServiceImpl extends ServiceImpl collect1 = list.stream() .filter(item1 -> Objects.equals(item.getValue(), item1.getType())) .collect(Collectors.toList()); - if (collect1.size() > 0) { + if (!collect1.isEmpty()) { rate = collect1.get(0).getRate(); } return new GlobalConfig(configGroupId, item.getValue(), rate); }) .collect(Collectors.toList()); this.saveBatch(collect); + //int i = 1 / 0; return collect; } + } diff --git a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/LivePoolServiceImpl.java b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/LivePoolServiceImpl.java index 35e8bba..e6ebf47 100644 --- a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/LivePoolServiceImpl.java +++ b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/LivePoolServiceImpl.java @@ -87,7 +87,7 @@ public class LivePoolServiceImpl extends ServiceImpl impl * @return */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public boolean markBestLive(Long liveId) { final LivePool live = this.getById(liveId); final Long themeId = live.getThemeId();// 获取主题id diff --git a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/ValidConfigNewServiceImpl.java b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/ValidConfigNewServiceImpl.java index 2a37c5c..00b3fed 100644 --- a/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/ValidConfigNewServiceImpl.java +++ b/fw-dalaran-service/src/main/java/cn/fw/dalaran/service/data/impl/ValidConfigNewServiceImpl.java @@ -38,7 +38,7 @@ public class ValidConfigNewServiceImpl extends ServiceImpl details) { details.forEach(item -> this.updateById(ValidConfigNewVo.toDB(item))); publisher.publishEvent("validConfigAlertEvent#" + details.get(0).getConfigGroupId()); @@ -84,7 +84,7 @@ public class ValidConfigNewServiceImpl extends ServiceImpl initVideoConfigList(Long configGroupId) { final List list = this.lambdaQuery() .eq(ValidConfigNew::getConfigGroupId, configGroupId) @@ -115,7 +115,7 @@ public class ValidConfigNewServiceImpl extends ServiceImpl initLiveConfigList(Long configGroupId) { final List list = this.lambdaQuery() .eq(ValidConfigNew::getConfigGroupId, configGroupId) diff --git a/pom.xml b/pom.xml index 09f1036..608bd9d 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,7 @@ 1.0.0 1.0.0 1.0 + 1.0.0 1.2.78 3.0.0 1.0.1 @@ -147,6 +148,12 @@ fw-backlog-sdk ${fw.backlog.sdk} + + + cn.fw + fw-morax-sdk + ${fw.morax.sdk.version} + cn.fw fw-erp-sdk