Browse Source

区域主管修改时也同时修改project_user表中的项目对应的区域主管信息

wanghaicheng 5 years ago
parent
commit
4b56d9281b

+ 1 - 12
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/region/controller/RegionController.java

@@ -72,18 +72,7 @@ public class RegionController {
      */
     @PostMapping("/update")
     public RestResponse update(@RequestBody Region region) {
-        Region byId = regionService.getById(region);
-        //如果区域主管更改了,发推送消息
-        if (!byId.getUserId().equals(region.getUserId())) {
-            String oldUser = regionMapper.selectNameByUserId(byId.getUserId());
-            String newUser = regionMapper.selectNameByUserId(region.getUserId());
-            String areaName = byId.getAreaName();
-            regionService.push(areaName, oldUser, newUser, byId, region);
-        }
-        if (regionService.updateById(region)) {
-            return RestResponse.success(null, "成功");
-        }
-        return RestResponse.fail();
+        return regionService.updateByRegionId(region);
     }
 
     @PostMapping("/delete")

+ 7 - 0
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/region/dao/mapper/RegionMapper.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
 
 import java.util.List;
 import java.util.Map;
@@ -46,6 +47,12 @@ public interface RegionMapper extends BaseMapper<Region> {
     @Select("select id,area_name areaName from region where mt_company_id=#{mtCompanyId} and area_name like #{areaName}")
     List<RegionBO> selectIdAndNameLikeName(Long mtCompanyId, String areaName);
 
+    @Select("select project_id from project_user where user_id = #{userId} and mt_company_id = #{mtCompanyId} and user_role = 'REGION_DIRECTOR'")
+    List<Long> selectProjectIdByRegionDirectorId(Long userId, Long mtCompanyId);
+
+    @Update(SqlConstants.UPDATE_REGION_DIRECTOR)
+    void updateRegionDirector(List<Long> projectIds, Long userId, Long mtCompanyId);
+
     @Select(SqlConstants.QUERY_REGIONS)
     IPage<RegionResponse> regions(IPage<RegionResponse> page, Long mtCompanyId, String name);
 }

+ 2 - 0
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/region/service/RegionService.java

@@ -29,4 +29,6 @@ public interface RegionService extends IService<Region> {
     List<Map<String, Object>> areas(String cityCode);
 
     void push(String areaName, String oldUser, String newUser, Region byId, Region region);
+
+    RestResponse updateByRegionId(Region region);
 }

+ 22 - 0
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/region/service/impl/RegionServiceImpl.java

@@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springframework.jms.core.JmsMessagingTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -170,4 +171,25 @@ public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> impleme
                 .workReplaceRegionCharger(areaName, oldUser, newUser)
                 .sendTokenOnPlatform(jmsMessagingTemplate, userInfos);
     }
+
+    /**
+     * 修改区域时,检测新老区域主管,有修改时发送推送消息,修改project_user表内的区域主管信息
+     *
+     * @param region 区域信息
+     * @return 操作结果
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public RestResponse<?> updateByRegionId(Region region) {
+        Region byId = this.getById(region);
+        //如果区域主管更改了,发推送消息,修改project_user表内的区域主管信息
+        if (!byId.getUserId().equals(region.getUserId())) {
+            List<Long> projects = baseMapper.selectProjectIdByRegionDirectorId(byId.getUserId(), byId.getMtCompanyId());
+            baseMapper.updateRegionDirector(projects, region.getUserId(), byId.getMtCompanyId());
+            String oldUser = baseMapper.selectNameByUserId(byId.getUserId());
+            String newUser = baseMapper.selectNameByUserId(region.getUserId());
+            String areaName = byId.getAreaName();
+            this.push(areaName, oldUser, newUser, byId, region);
+        }
+        return RestResponse.success(this.updateById(region));
+    }
 }