wucl 2 лет назад
Родитель
Сommit
4e0705121d
45 измененных файлов с 797 добавлено и 146 удалено
  1. 2 2
      biz-base.iml
  2. 11 0
      biz-base/src/main/java/com/dayou/controller/BusinessOpportunityController.java
  3. 9 0
      biz-base/src/main/java/com/dayou/controller/CustomerController.java
  4. 14 0
      biz-base/src/main/java/com/dayou/controller/ItemController.java
  5. 95 0
      biz-base/src/main/java/com/dayou/controller/ResourceTransferController.java
  6. 12 0
      biz-base/src/main/java/com/dayou/controller/UserController.java
  7. 91 91
      biz-base/src/test/java/BrokerageTest.java
  8. 2 2
      common.iml
  9. 14 0
      common/pom.xml
  10. 1 1
      common/src/main/java/com/dayou/exception/ErrorCode.java
  11. 2 2
      dao.iml
  12. 23 0
      dao/src/main/java/com/dayou/mapper/ResourceTransferMapper.java
  13. 2 0
      dao/src/main/java/com/dayou/mapper/UserMapper.java
  14. 5 4
      dao/src/main/resources/mapper/ItemBrokerageGeneralMapper.xml
  15. 7 7
      dao/src/main/resources/mapper/ItemMapper.xml
  16. 1 1
      dao/src/main/resources/mapper/PaymentCollectionMapper.xml
  17. 57 0
      dao/src/main/resources/mapper/ResourceTransferMapper.xml
  18. 12 0
      dao/src/main/resources/mapper/UserMapper.xml
  19. 2 2
      domain.iml
  20. 20 0
      domain/src/main/java/com/dayou/annotation/Transfer.java
  21. 17 0
      domain/src/main/java/com/dayou/dto/BusinessOpportunityDTO.java
  22. 3 0
      domain/src/main/java/com/dayou/dto/CustomerDTO.java
  23. 4 0
      domain/src/main/java/com/dayou/dto/ItemDTO.java
  24. 52 0
      domain/src/main/java/com/dayou/entity/ResourceTransfer.java
  25. 38 0
      domain/src/main/java/com/dayou/enums/BusinessResourceEnum.java
  26. 2 1
      domain/src/main/java/com/dayou/enums/OperationTypeEnum.java
  27. 23 0
      domain/src/main/java/com/dayou/vo/ResourceTransferVO.java
  28. 2 2
      gen.iml
  29. 2 2
      service.iml
  30. 61 0
      service/src/main/java/com/dayou/aspect/ResourceTransferAop.java
  31. 7 0
      service/src/main/java/com/dayou/brokerage/interceptor/BrokerageInterceptor.java
  32. 2 0
      service/src/main/java/com/dayou/service/IBusinessOpportunityService.java
  33. 2 0
      service/src/main/java/com/dayou/service/ICustomerService.java
  34. 2 0
      service/src/main/java/com/dayou/service/IItemBrokerageGeneralService.java
  35. 1 0
      service/src/main/java/com/dayou/service/IItemService.java
  36. 33 0
      service/src/main/java/com/dayou/service/IResourceTransferService.java
  37. 3 0
      service/src/main/java/com/dayou/service/IUserService.java
  38. 7 0
      service/src/main/java/com/dayou/service/impl/BusinessOpportunityServiceImpl.java
  39. 6 0
      service/src/main/java/com/dayou/service/impl/CustomerServiceImpl.java
  40. 8 4
      service/src/main/java/com/dayou/service/impl/GisUserServiceImpl.java
  41. 9 0
      service/src/main/java/com/dayou/service/impl/ItemBrokerageGeneralServiceImpl.java
  42. 13 8
      service/src/main/java/com/dayou/service/impl/ItemServiceImpl.java
  43. 111 0
      service/src/main/java/com/dayou/service/impl/ResourceTransferServiceImpl.java
  44. 6 0
      service/src/main/java/com/dayou/service/impl/UserServiceImpl.java
  45. 1 17
      service/src/main/java/com/dayou/service/impl/VisitServiceImpl.java

+ 2 - 2
biz-base.iml

@@ -7,10 +7,10 @@
           <map>
             <entry key="com.zeroturnaround.jrebel.FormatVersion" value="7.0.0" />
             <entry key="jrebelEnabled" value="true" />
-            <entry key="lastExternalPluginCheckTime" value="1678063381765" />
+            <entry key="lastExternalPluginCheckTime" value="1684802691839" />
           </map>
         </option>
-        <option name="version" value="5" />
+        <option name="version" value="6" />
       </configuration>
     </facet>
   </component>

+ 11 - 0
biz-base/src/main/java/com/dayou/controller/BusinessOpportunityController.java

@@ -2,6 +2,10 @@ package com.dayou.controller;
 
 import com.dayou.annotation.DataPermission;
 import com.dayou.annotation.OperLog;
+import com.dayou.annotation.Transfer;
+import com.dayou.dto.BusinessOpportunityDTO;
+import com.dayou.dto.CustomerDTO;
+import com.dayou.enums.BusinessResourceEnum;
 import com.dayou.vo.BusinessOpportunityVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import lombok.extern.slf4j.Slf4j;
@@ -88,6 +92,13 @@ public class BusinessOpportunityController extends BaseController {
         return RestResponse.data(ret);
     }
 
+    @Transfer(resourceEnum = BusinessResourceEnum.BUSINESS_OPPORTUNITY)
+    @OperLog(title = "更新客户经理")
+    @PutMapping("/changeManager")
+    public RestResponse<Boolean> changeManager(@RequestBody BusinessOpportunityDTO opportunity){
+        Boolean result = businessOpportunityService.changeManager(opportunity);
+        return RestResponse.data(result);
+    }
 
 }
 

+ 9 - 0
biz-base/src/main/java/com/dayou/controller/CustomerController.java

@@ -3,7 +3,9 @@ package com.dayou.controller;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.dayou.annotation.DataPermission;
 import com.dayou.annotation.OperLog;
+import com.dayou.annotation.Transfer;
 import com.dayou.dto.CustomerDTO;
+import com.dayou.enums.BusinessResourceEnum;
 import com.dayou.enums.OperationTypeEnum;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import lombok.extern.slf4j.Slf4j;
@@ -148,5 +150,12 @@ public class CustomerController extends BaseController {
         List<CustomerDTO> list = customerService.getList(customer);
         exportPlus(response,"客户列表",list,CustomerDTO.class);
     }
+    @Transfer(resourceEnum = BusinessResourceEnum.CUSTOMER)
+    @OperLog(title = "更新客户经理")
+    @PutMapping("/changeManager")
+    public RestResponse<Boolean> changeManager(@RequestBody CustomerDTO customer){
+        Boolean result = customerService.changeManager(customer);
+        return RestResponse.data(result);
+    }
 }
 

+ 14 - 0
biz-base/src/main/java/com/dayou/controller/ItemController.java

@@ -2,8 +2,10 @@ package com.dayou.controller;
 
 import com.dayou.annotation.DataPermission;
 import com.dayou.annotation.OperLog;
+import com.dayou.annotation.Transfer;
 import com.dayou.brokerage.annotation.DoBrokerage;
 import com.dayou.dto.ItemDTO;
+import com.dayou.enums.BusinessResourceEnum;
 import com.dayou.utils.LoginContext;
 import com.dayou.vo.DepartmentStatVO;
 import com.dayou.vo.ItemStatVO;
@@ -166,6 +168,18 @@ public class ItemController extends BaseController {
         return RestResponse.data(bo);
     }
 
+    /**
+     * 项目转交
+     * @param itemDTO
+     * @return
+     */
+    @Transfer(resourceEnum = BusinessResourceEnum.ITEM)
+    @OperLog(title = "更新客户经理")
+    @PutMapping("/changeManager")
+    public RestResponse<Boolean> changManager(@RequestBody ItemDTO itemDTO){
+        Boolean result = itemService.changManager(itemDTO);
+        return  RestResponse.data(result);
+    }
 
 
 }

+ 95 - 0
biz-base/src/main/java/com/dayou/controller/ResourceTransferController.java

@@ -0,0 +1,95 @@
+package com.dayou.controller;
+
+import com.dayou.vo.ResourceTransferVO;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.web.bind.annotation.RestController;
+import com.dayou.controller.BaseController;
+import com.dayou.service.IResourceTransferService;
+import com.dayou.entity.ResourceTransfer;
+import com.dayou.common.RestResponse;
+import org.springframework.web.bind.annotation.*;
+import com.dayou.utils.ConvertUtil;
+import com.dayou.utils.HttpKit;
+import com.dayou.exception.ErrorCode;
+import java.util.Date;
+import java.util.List;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.http.MediaType;
+import org.springframework.web.multipart.MultipartFile;
+/**
+ * 业务资源转移表
+ *
+ * @author wucl
+ * @since 2023-05-31
+ */
+@RestController
+@RequestMapping("resourceTransfer")
+@Slf4j
+public class ResourceTransferController extends BaseController {
+    @Autowired
+    private IResourceTransferService resourceTransferService;
+
+    /**
+    * 业务资源转移表列表
+    */
+    @GetMapping("")
+    public RestResponse<Page<ResourceTransfer>> page(ResourceTransfer resourceTransfer, Page page){
+        Page<ResourceTransfer> pages=resourceTransferService.selectPage(page,resourceTransfer);
+        return RestResponse.data(pages);
+    }
+
+    /**
+     * 业务资源转移表详情
+     */
+    @GetMapping("/{id}")
+    public RestResponse<ResourceTransferVO> detail(@PathVariable Long id){
+        ResourceTransferVO xResourceTransfer =resourceTransferService.detail(id);
+        return RestResponse.data(xResourceTransfer);
+    }
+
+    /**
+     * 业务资源转移表新增
+     */
+    @PostMapping("")
+    public RestResponse<Boolean> save(@RequestBody ResourceTransfer resourceTransfer) {
+        Boolean ret = resourceTransferService.add(resourceTransfer);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 业务资源转移表更新
+     */
+    @PutMapping("")
+    public RestResponse<Boolean> update(@RequestBody ResourceTransfer resourceTransfer) {
+        Boolean ret = resourceTransferService.update(resourceTransfer);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 业务资源转移表删除
+     */
+    @DeleteMapping("/{id}")
+    public RestResponse<Boolean> delete(@PathVariable Long id) {
+        Boolean ret = resourceTransferService.delete(id);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 业务资源转移历史
+     * @param resourceType
+     * @param resourceId
+     * @return
+     */
+    @GetMapping("/history")
+    public RestResponse<List<ResourceTransferVO>> transferHistory(String resourceType,Long resourceId){
+        List<ResourceTransferVO> list = resourceTransferService.transferHistory(resourceType,resourceId);
+        return RestResponse.data(list);
+    }
+
+}
+

+ 12 - 0
biz-base/src/main/java/com/dayou/controller/UserController.java

@@ -7,6 +7,7 @@ import com.dayou.dto.LoginDTO;
 import com.dayou.dto.UpdatePasswordDTO;
 import com.dayou.dto.UserBaseDetailDTO;
 import com.dayou.enums.OperationTypeEnum;
+import com.dayou.vo.IdNameVO;
 import com.dayou.vo.UserVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import lombok.extern.slf4j.Slf4j;
@@ -232,5 +233,16 @@ public class UserController extends BaseController {
         List<UserVO> list = userService.listPostName(postName);
         return RestResponse.data(list);
     }
+
+    /**
+     * 根据部门名称获取部门员工列表
+     * @param departmentName
+     * @return
+     */
+    @GetMapping("/departmentName/{departmentName}")
+    public RestResponse<List<IdNameVO>> usersByDepartment(@PathVariable("departmentName") String departmentName){
+        List<IdNameVO> list = userService.usersByDepartment(departmentName);
+        return RestResponse.data(list);
+    }
 }
 

+ 91 - 91
biz-base/src/test/java/BrokerageTest.java

@@ -1,95 +1,95 @@
-import cn.hutool.core.lang.Assert;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.dayou.BaseApplication;
-import com.dayou.bo.LeaderRatioBO;
-import com.dayou.configuration.AsyncManager;
-import com.dayou.controller.ItemController;
-import com.dayou.dto.ItemDTO;
-import com.dayou.entity.BrokerageMarketerRatio;
-import com.dayou.entity.Customer;
-import com.dayou.entity.ItemBrokerageGeneral;
-import com.dayou.entity.UserTarget;
-import com.dayou.service.*;
-import com.dayou.service.impl.ItemBrokerageSequenceServiceImpl;
-import com.dayou.utils.Md5Utils;
-import com.dayou.vo.ItemStageVO;
-import com.dayou.vo.ItemStatVO;
-import com.google.common.cache.Cache;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.Lists;
-import com.zaxxer.hikari.HikariDataSource;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.RandomUtils;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.ApplicationContext;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.concurrent.ExecutionException;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.function.ToDoubleFunction;
-import java.util.stream.Collectors;
-
-/**
- * 类说明:
- *
- * @author: wucl
- * @since: 2023/3/6
- * created with IntelliJ IDEA.
- */
-@Slf4j
-@SpringBootTest(classes = BaseApplication.class)
-@RunWith(SpringJUnit4ClassRunner.class)
-public class BrokerageTest {
-
-    @Autowired
-    private ITeamMemberService teamMemberService;
-
-    @Autowired
-    private IItemBrokerageGeneralService iItemBrokerageGeneralService;
-
-    @Autowired
-    private IItemStageService itemStageService;
-
-    @Autowired
-    private IItemBrokerageSequenceService itemBrokerageSequenceService;
-
-
-
-//    @Test
-//    public void generalBatchBrokerage() throws ExecutionException {
-//        ArrayList<Long> itemIds = Lists.newArrayList(
-//              320L
-//        );
+//import cn.hutool.core.lang.Assert;
+//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+//import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+//import com.dayou.BaseApplication;
+//import com.dayou.bo.LeaderRatioBO;
+//import com.dayou.configuration.AsyncManager;
+//import com.dayou.controller.ItemController;
+//import com.dayou.dto.ItemDTO;
+//import com.dayou.entity.BrokerageMarketerRatio;
+//import com.dayou.entity.Customer;
+//import com.dayou.entity.ItemBrokerageGeneral;
+//import com.dayou.entity.UserTarget;
+//import com.dayou.service.*;
+//import com.dayou.service.impl.ItemBrokerageSequenceServiceImpl;
+//import com.dayou.utils.Md5Utils;
+//import com.dayou.vo.ItemStageVO;
+//import com.dayou.vo.ItemStatVO;
+//import com.google.common.cache.Cache;
+//import com.google.common.cache.LoadingCache;
+//import com.google.common.collect.Lists;
+//import com.zaxxer.hikari.HikariDataSource;
+//import lombok.extern.slf4j.Slf4j;
+//import org.apache.commons.lang3.RandomUtils;
+//import org.junit.Test;
+//import org.junit.runner.RunWith;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.boot.test.context.SpringBootTest;
+//import org.springframework.context.ApplicationContext;
+//import org.springframework.jdbc.core.JdbcTemplate;
+//import org.springframework.scheduling.annotation.Scheduled;
+//import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 //
-//        for (Long itemId : itemIds){
-//            iItemBrokerageGeneralService.addMarketerBrokerage(itemId);
-//            List<ItemStageVO> itemStageVOS = itemStageService.listByItemId(itemId);
-//            if (CollectionUtils.isNotEmpty(itemStageVOS)){
-//                for (ItemStageVO itemStageVO :itemStageVOS){
-//                    if (itemStageVO!=null && itemStageVO.getId()!=null){
+//import java.math.BigDecimal;
+//import java.util.*;
+//import java.util.concurrent.ExecutionException;
+//import java.util.function.Consumer;
+//import java.util.function.Function;
+//import java.util.function.Predicate;
+//import java.util.function.ToDoubleFunction;
+//import java.util.stream.Collectors;
 //
-//                        iItemBrokerageGeneralService.addParticipatorBrokerage(itemStageVO,itemStageVO.getId());
-//                    }
-//                }
-//            }
-//        }
-//    }
+///**
+// * 类说明:
+// *
+// * @author: wucl
+// * @since: 2023/3/6
+// * created with IntelliJ IDEA.
+// */
+//@Slf4j
+//@SpringBootTest(classes = BaseApplication.class)
+//@RunWith(SpringJUnit4ClassRunner.class)
+//public class BrokerageTest {
 //
+//    @Autowired
+//    private ITeamMemberService teamMemberService;
 //
-//    @Test
-//    public void settle(){
-//        Boolean result = itemBrokerageSequenceService.doAbleItemBrokerageSettle();
-//        //Boolean nonResult = itemBrokerageSequenceService.doNonMarketerAheadSettle();
-//        Assert.isTrue(result);
-//    }
-}
+//    @Autowired
+//    private IItemBrokerageGeneralService iItemBrokerageGeneralService;
+//
+//    @Autowired
+//    private IItemStageService itemStageService;
+//
+//    @Autowired
+//    private IItemBrokerageSequenceService itemBrokerageSequenceService;
+//
+//
+//
+////    @Test
+////    public void generalBatchBrokerage() throws ExecutionException {
+////        ArrayList<Long> itemIds = Lists.newArrayList(
+////              320L
+////        );
+////
+////        for (Long itemId : itemIds){
+////            iItemBrokerageGeneralService.addMarketerBrokerage(itemId);
+////            List<ItemStageVO> itemStageVOS = itemStageService.listByItemId(itemId);
+////            if (CollectionUtils.isNotEmpty(itemStageVOS)){
+////                for (ItemStageVO itemStageVO :itemStageVOS){
+////                    if (itemStageVO!=null && itemStageVO.getId()!=null){
+////
+////                        iItemBrokerageGeneralService.addParticipatorBrokerage(itemStageVO,itemStageVO.getId());
+////                    }
+////                }
+////            }
+////        }
+////    }
+////
+////
+////    @Test
+////    public void settle(){
+////        Boolean result = itemBrokerageSequenceService.doAbleItemBrokerageSettle();
+////        //Boolean nonResult = itemBrokerageSequenceService.doNonMarketerAheadSettle();
+////        Assert.isTrue(result);
+////    }
+//}

+ 2 - 2
common.iml

@@ -7,10 +7,10 @@
           <map>
             <entry key="com.zeroturnaround.jrebel.FormatVersion" value="7.0.0" />
             <entry key="jrebelEnabled" value="true" />
-            <entry key="lastExternalPluginCheckTime" value="1678063381765" />
+            <entry key="lastExternalPluginCheckTime" value="1684802691841" />
           </map>
         </option>
-        <option name="version" value="5" />
+        <option name="version" value="6" />
       </configuration>
     </facet>
   </component>

+ 14 - 0
common/pom.xml

@@ -281,6 +281,20 @@
                     <artifactId>maven-project-info-reports-plugin</artifactId>
                     <version>3.0.0</version>
                 </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>3.1</version>
+                    <configuration>
+                        <source>${java.version}</source>
+                        <target>${java.version}</target>
+                        <encoding>UTF-8</encoding>
+                        <compilerArguments>
+                            <verbose/>
+                            <bootclasspath>${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar</bootclasspath>
+                        </compilerArguments>
+                    </configuration>
+                </plugin>
             </plugins>
         </pluginManagement>
     </build>

+ 1 - 1
common/src/main/java/com/dayou/exception/ErrorCode.java

@@ -22,7 +22,7 @@ public class ErrorCode {
     public static final ErrorCode DEFAULTERROR = ErrorCode("10006", "系统繁忙");
     public static final ErrorCode PARAM_ERROR = ErrorCode("10007", "参数错误");
 
-    public static final ErrorCode INVALID_TOKEN = ErrorCode("10008", "非法token");
+    public static final ErrorCode INVALID_TOKEN = ErrorCode("10008", "请登录");
     public static final ErrorCode DATA_EXIST = ErrorCode("10009", "数据已存在");
 
     public static final ErrorCode CUSTOM_ERROR = ErrorCode("10010", "{0}");

+ 2 - 2
dao.iml

@@ -7,10 +7,10 @@
           <map>
             <entry key="com.zeroturnaround.jrebel.FormatVersion" value="7.0.0" />
             <entry key="jrebelEnabled" value="true" />
-            <entry key="lastExternalPluginCheckTime" value="1678063381765" />
+            <entry key="lastExternalPluginCheckTime" value="1684802691842" />
           </map>
         </option>
-        <option name="version" value="5" />
+        <option name="version" value="6" />
       </configuration>
     </facet>
   </component>

+ 23 - 0
dao/src/main/java/com/dayou/mapper/ResourceTransferMapper.java

@@ -0,0 +1,23 @@
+package com.dayou.mapper;
+
+import com.dayou.entity.ResourceTransfer;
+import com.dayou.dao.CustomBaseMapper;
+import com.dayou.vo.ResourceTransferVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 业务资源转移表 Mapper 接口
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-05-31
+ */
+public interface ResourceTransferMapper extends CustomBaseMapper<ResourceTransfer> {
+
+    ResourceTransferVO getDetailById(@Param("id") Long id);
+
+    List<ResourceTransferVO> transferHistory(@Param("resourceType") String resourceType, @Param("resourceId") Long resourceId);
+}

+ 2 - 0
dao/src/main/java/com/dayou/mapper/UserMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.bo.LeaderRatioBO;
 import com.dayou.entity.User;
 import com.dayou.dao.CustomBaseMapper;
+import com.dayou.vo.IdNameVO;
 import com.dayou.vo.UserVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -34,4 +35,5 @@ public interface UserMapper extends CustomBaseMapper<User> {
     List<UserVO> listPostName(@Param("postName") String postName);
 
 
+    List<IdNameVO> usersByDepartment(@Param("departmentName")String departmentName);
 }

+ 5 - 4
dao/src/main/resources/mapper/ItemBrokerageGeneralMapper.xml

@@ -54,13 +54,14 @@
             i.name,
             i.client_unit,
             i.client_name,
-            i.client_manager,
+            u.name as client_manager,
             i.amount
         FROM
             item_brokerage_general ibg
                 LEFT JOIN item i ON i.id = ibg.item_id
                 LEFT JOIN dict_data dd1 ON i.cate = dd1.id
                 LEFT JOIN dict_data dd2 ON i.business_source = dd2.id
+                LEFT JOIN user u on u.id = i.user_id
         WHERE
            i.deleted = 0
           AND ibg.deleted = 0
@@ -79,7 +80,7 @@
             and i.business_no like concat ('%',#{itemBrokerageGeneral.businessNo},'%')
         </if>
         <if test="itemBrokerageGeneral!=null and itemBrokerageGeneral.clientManager!=null and itemBrokerageGeneral.clientManager!='' ">
-            and i.client_manager like concat ('%',#{itemBrokerageGeneral.clientManager},'%')
+            and u.name like concat ('%',#{itemBrokerageGeneral.clientManager},'%')
         </if>
         <if test="itemBrokerageGeneral!=null and itemBrokerageGeneral.participantStatus!=null and itemBrokerageGeneral.participantStatus!='' ">
             and ibg.participant_status = #{itemBrokerageGeneral.participantStatus}
@@ -123,7 +124,7 @@
         i.name,
         i.client_unit,
         i.client_name,
-        i.client_manager,
+        u.name as client_manager,
         i.amount
         FROM
         item_brokerage_general ibg
@@ -148,7 +149,7 @@
             and i.business_no like concat ('%',#{itemBrokerageGeneral.businessNo},'%')
         </if>
         <if test="itemBrokerageGeneral!=null and itemBrokerageGeneral.clientManager!=null and itemBrokerageGeneral.clientManager!='' ">
-            and i.client_manager like concat ('%',#{itemBrokerageGeneral.clientManager},'%')
+            and u.name like concat ('%',#{itemBrokerageGeneral.clientManager},'%')
         </if>
         <if test="itemBrokerageGeneral!=null and itemBrokerageGeneral.participantStatus!=null and itemBrokerageGeneral.participantStatus!='' ">
             and ibg.participant_status = #{itemBrokerageGeneral.participantStatus}

+ 7 - 7
dao/src/main/resources/mapper/ItemMapper.xml

@@ -37,7 +37,7 @@
         i.created,
         i.modified,
         i.business_no, i.oa_no, i.name,i.cate, i.business_source,i.belong_to,i.client_unit,
-        i.client_name, i.mobile, i.client_manager, i.skiller, i.sign_date, i.payment_method, i.amount, i.state,i.department_id,i.contract_url,i.user_id,i.customer_id
+        i.client_name, i.mobile, u.name as client_manager, i.skiller, i.sign_date, i.payment_method, i.amount, i.state,i.department_id,i.contract_url,i.user_id,i.customer_id
     </sql>
 
     <sql id="Common_query_item">
@@ -95,7 +95,7 @@
         ) AS itemStatus
         FROM
         item i left join department d on i.department_id = d.id  left join dict_data dd1 on i.cate = dd1.id
-        left join dict_data dd2 on i.business_source = dd2.id
+        left join dict_data dd2 on i.business_source = dd2.id left join user u on u.id = i.user_id
         where i.deleted = 0 and dd1.deleted =0 and dd2.deleted = 0
     </sql>
 
@@ -111,7 +111,7 @@
     </select>
 
     <select id="xDetail" parameterType="java.lang.Long" resultMap="BaseResultMap">
-        select <include refid="Base_Column_List"/>, d.name as departmentName from item i left join department d on d.id = i.department_id where i.deleted = 0  and i.id =#{id}
+        select <include refid="Base_Column_List"/>, d.name as departmentName from item i left join department d on d.id = i.department_id left join user u on u.id = i.user_id where i.deleted = 0  and i.id =#{id}
     </select>
 
     <select id="selectItemUserId" parameterType="java.lang.Long" resultType="java.lang.Long">
@@ -134,7 +134,7 @@
             AND i.sign_date &lt;= concat( YEAR ( now()), '-12-22' )
         </if>
         <if test="item!=null and item.clientManager!=null and item.clientManager!='' ">
-            and i.client_manager like concat ('%',#{item.clientManager},'%')
+            and u.name like concat ('%',#{item.clientManager},'%')
         </if>
         <if test="item!=null and item.userIds!=null and item.userIds.size!=0">
             and i.user_id in
@@ -166,7 +166,7 @@
             and i.business_no like concat (#{item.businessNo},'%')
         </if>
         <if test="item!=null and item.clientManager!=null and item.clientManager!='' ">
-            and i.client_manager like concat ('%',#{item.clientManager},'%')
+            and u.name like concat ('%',#{item.clientManager},'%')
         </if>
         <if test="item!=null and item.userIds!=null and item.userIds.size!=0 and item!=null and item.departmentIds!=null and item.departmentIds.size==0">
             <if test="item!=null and item.userIds!=null and item.userIds.size!=0">
@@ -291,7 +291,7 @@
             and i.business_no like concat (#{item.businessNo},'%')
         </if>
         <if test="item!=null and item.clientManager!=null and item.clientManager!='' ">
-            and i.client_manager like concat ('%',#{item.clientManager},'%')
+            and u.name like concat ('%',#{item.clientManager},'%')
         </if>
         <if test="item!=null and item.userIds!=null and item.userIds.size!=0 and item!=null and item.departmentIds!=null and item.departmentIds.size==0">
             <if test="item!=null and item.userIds!=null and item.userIds.size!=0">
@@ -350,7 +350,7 @@
             AND i.sign_date &lt;= concat( YEAR ( now()), '-12-22' )
         </if>
         <if test="item!=null and item.clientManager!=null and item.clientManager!='' ">
-            and i.client_manager like concat ('%',#{item.clientManager},'%')
+            and u.name like concat ('%',#{item.clientManager},'%')
         </if>
         <if test="item!=null and item.userIds!=null and item.userIds.size!=0">
             and i.user_id in

+ 1 - 1
dao/src/main/resources/mapper/PaymentCollectionMapper.xml

@@ -65,7 +65,7 @@
             i.oa_no,
             i.NAME,
             i.client_unit,
-            i.client_manager,
+            u.name as client_manager,
             i.sign_date,
             i.amount,
             ifnull(( SELECT sum( amount ) FROM payment_collection WHERE item_id = i.id AND deleted = 0 ), 0 ) AS payedAmount,

+ 57 - 0
dao/src/main/resources/mapper/ResourceTransferMapper.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dayou.mapper.ResourceTransferMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.dayou.entity.ResourceTransfer">
+        <result column="id" property="id" />
+        <result column="deleted" property="deleted" />
+        <result column="created" property="created" />
+        <result column="modified" property="modified" />
+        <result column="resource_id" property="resourceId" />
+        <result column="resource_type" property="resourceType" />
+        <result column="original_user_id" property="originalUserId" />
+        <result column="current_user_id" property="currentUserId" />
+        <result column="operator_id" property="operatorId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id,
+        deleted,
+        created,
+        modified,
+        resource_id, resource_type, original_user_id, current_user_id, operator_id
+    </sql>
+
+    <select id="getDetailById" parameterType="java.lang.Long" resultType="com.dayou.vo.ResourceTransferVO">
+        SELECT
+            rt.*,
+            u1.NAME AS originalUserName,
+            u2.NAME AS currentUserName,
+            u3.NAME AS operatorName
+        FROM
+            resource_transfer rt
+                LEFT JOIN user u1 ON u1.id = rt.original_user_id
+                LEFT JOIN user u2 ON u2.id = rt.current_user_id
+                LEFT JOIN user u3 ON u3.id = rt.operator_id
+
+        where rt.deleted = 0 and rt.id = #{id}
+    </select>
+
+    <select id="transferHistory" resultType="com.dayou.vo.ResourceTransferVO">
+        SELECT
+            rt.*,
+            u1.NAME AS originalUserName,
+            u2.NAME AS currentUserName,
+            u3.NAME AS operatorName
+        FROM
+            resource_transfer rt
+                LEFT JOIN user u1 ON u1.id = rt.original_user_id
+                LEFT JOIN user u2 ON u2.id = rt.current_user_id
+                LEFT JOIN user u3 ON u3.id = rt.operator_id
+
+        where rt.deleted = 0 and rt.resource_id = #{resourceId} and rt.resource_type = #{resourceType}
+        order by rt.created DESC
+    </select>
+</mapper>

+ 12 - 0
dao/src/main/resources/mapper/UserMapper.xml

@@ -144,5 +144,17 @@
                 )
     </select>
 
+    <select id="usersByDepartment" parameterType="java.lang.String" resultType="com.dayou.vo.IdNameVO">
+        SELECT DISTINCT
+            u.id,
+            u.name
+        FROM
+            user_post up
+                INNER JOIN ( SELECT id FROM post WHERE department_id =( SELECT id FROM department WHERE NAME = '市场部' AND deleted = 0 ) AND deleted = 0 ) p ON up.post_id = p.id
+                LEFT JOIN user u ON u.id = up.user_id
+        WHERE
+            up.deleted = 0
+          AND u.deleted = 0
+    </select>
 
 </mapper>

+ 2 - 2
domain.iml

@@ -7,10 +7,10 @@
           <map>
             <entry key="com.zeroturnaround.jrebel.FormatVersion" value="7.0.0" />
             <entry key="jrebelEnabled" value="true" />
-            <entry key="lastExternalPluginCheckTime" value="1678063381765" />
+            <entry key="lastExternalPluginCheckTime" value="1684802691842" />
           </map>
         </option>
-        <option name="version" value="5" />
+        <option name="version" value="6" />
       </configuration>
     </facet>
   </component>

+ 20 - 0
domain/src/main/java/com/dayou/annotation/Transfer.java

@@ -0,0 +1,20 @@
+package com.dayou.annotation;
+
+import com.dayou.enums.BusinessResourceEnum;
+
+import java.lang.annotation.*;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/6/1
+ * created with IntelliJ IDEA.
+ */
+@Target({ElementType.PARAMETER, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface Transfer {
+
+    public BusinessResourceEnum resourceEnum();
+}

+ 17 - 0
domain/src/main/java/com/dayou/dto/BusinessOpportunityDTO.java

@@ -0,0 +1,17 @@
+package com.dayou.dto;
+
+import com.dayou.entity.BusinessOpportunity;
+import lombok.Data;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/6/1
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class BusinessOpportunityDTO extends BusinessOpportunity {
+
+    private Long originalUserId;
+}

+ 3 - 0
domain/src/main/java/com/dayou/dto/CustomerDTO.java

@@ -42,4 +42,7 @@ public class CustomerDTO extends Customer {
      */
     @Excel(name = "客户经理")
     private String userName;
+
+
+    private Long originalUserId;
 }

+ 4 - 0
domain/src/main/java/com/dayou/dto/ItemDTO.java

@@ -40,8 +40,12 @@ public class ItemDTO extends Item implements MergeKeyInterface {
      */
     private BigDecimal ratio;
 
+    private Long originalUserId;
+
     @Override
     public String mergeKey() {
         return super.getCate() +MERGE_SYMBOL+ super.getBusinessSource();
     }
+
+
 }

+ 52 - 0
domain/src/main/java/com/dayou/entity/ResourceTransfer.java

@@ -0,0 +1,52 @@
+package com.dayou.entity;
+import com.dayou.common.BaseEntity;
+import com.dayou.enums.BusinessResourceEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.dayou.annotation.ExcelSheet;
+import com.dayou.annotation.ExportCell;
+import com.dayou.annotation.ImportCell;
+/**
+ * <p>
+ * 业务资源转移表
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-05-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ExcelSheet(sheetName = "业务资源转移表")
+public class ResourceTransfer extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 资源id
+     */
+    private Long resourceId;
+
+    /**
+     * 资源类型
+     */
+    @ImportCell
+    @ExportCell(columnName = "资源类型")
+    private BusinessResourceEnum resourceType;
+
+    /**
+     * 原所属人id
+     */
+    private Long originalUserId;
+
+    /**
+     * 当前所属人id
+     */
+    private Long currentUserId;
+
+    /**
+     * 操作人id
+     */
+    private Long operatorId;
+
+
+}

+ 38 - 0
domain/src/main/java/com/dayou/enums/BusinessResourceEnum.java

@@ -0,0 +1,38 @@
+package com.dayou.enums;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/5/31
+ * created with IntelliJ IDEA.
+ */
+public enum BusinessResourceEnum implements CodeMsgEnumInterface<String,String>{
+
+    ITEM("ITEM","项目"),
+
+    CUSTOMER("CUSTOMER","客户"),
+
+    BUSINESS_OPPORTUNITY("BUSINESS_OPPORTUNITY","商机")
+
+    ;
+
+    BusinessResourceEnum(String code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+
+    private String code;
+
+    private String name;
+
+    @Override
+    public String getCode() {
+        return code;
+    }
+
+    @Override
+    public String getMsg() {
+        return name;
+    }
+}

+ 2 - 1
domain/src/main/java/com/dayou/enums/OperationTypeEnum.java

@@ -13,8 +13,9 @@ public enum OperationTypeEnum implements CodeMsgEnumInterface<String,String> {
     SET("设置",null),
     GENERATE("生成",null),
     RESET("重置",null),
+    SETTLE("结算",null),
 
-    SETTLE("结算",null)
+    CHANGE("变更",null)
     ;
 
     OperationTypeEnum(String code, String msg) {

+ 23 - 0
domain/src/main/java/com/dayou/vo/ResourceTransferVO.java

@@ -0,0 +1,23 @@
+package com.dayou.vo;
+
+import com.dayou.entity.ResourceTransfer;
+import lombok.Data;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/5/31
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class ResourceTransferVO<T> extends ResourceTransfer {
+
+    private String originalUserName;
+
+    private String currentUserName;
+
+    private String operatorName;
+
+    private T resource;
+}

+ 2 - 2
gen.iml

@@ -7,10 +7,10 @@
           <map>
             <entry key="com.zeroturnaround.jrebel.FormatVersion" value="7.0.0" />
             <entry key="jrebelEnabled" value="true" />
-            <entry key="lastExternalPluginCheckTime" value="1678063381765" />
+            <entry key="lastExternalPluginCheckTime" value="1684802691843" />
           </map>
         </option>
-        <option name="version" value="5" />
+        <option name="version" value="6" />
       </configuration>
     </facet>
   </component>

+ 2 - 2
service.iml

@@ -7,10 +7,10 @@
           <map>
             <entry key="com.zeroturnaround.jrebel.FormatVersion" value="7.0.0" />
             <entry key="jrebelEnabled" value="true" />
-            <entry key="lastExternalPluginCheckTime" value="1678063381765" />
+            <entry key="lastExternalPluginCheckTime" value="1684802691842" />
           </map>
         </option>
-        <option name="version" value="5" />
+        <option name="version" value="6" />
       </configuration>
     </facet>
   </component>

+ 61 - 0
service/src/main/java/com/dayou/aspect/ResourceTransferAop.java

@@ -0,0 +1,61 @@
+package com.dayou.aspect;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.dayou.annotation.DataPermission;
+import com.dayou.annotation.Transfer;
+import com.dayou.entity.ResourceTransfer;
+import com.dayou.enums.BusinessResourceEnum;
+import com.dayou.service.IResourceTransferService;
+import com.dayou.utils.LoginContext;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.ServletResponse;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/6/1
+ * created with IntelliJ IDEA.
+ */
+@Slf4j
+@Component
+@Aspect
+public class ResourceTransferAop {
+
+    @Autowired
+    private IResourceTransferService resourceTransferService;
+
+
+    @AfterReturning("@annotation(transfer)")
+    public void afterResourceTransfer(JoinPoint joinPoint, Transfer transfer) throws Throwable {
+        BusinessResourceEnum businessResourceEnum = transfer.resourceEnum();
+        Object[] args = joinPoint.getArgs();
+        List<?> param = new ArrayList<>(Arrays.asList(args)).stream().filter(p -> !(p instanceof ServletResponse))
+                .filter(e -> !(e instanceof MultipartFile))
+                .collect(Collectors.toList());
+        String params = JSON.toJSONString(param, true);
+        JSONObject jsonObject = JSON.parseArray(params).getJSONObject(0);
+        ResourceTransfer rt = new ResourceTransfer();
+        rt.setCurrentUserId(Long.valueOf(jsonObject.get("userId")+""));
+        rt.setOriginalUserId(Long.valueOf(jsonObject.get("originalUserId")+""));
+        rt.setResourceType(businessResourceEnum);
+        rt.setResourceId(Long.valueOf(jsonObject.get("id")+""));
+        rt.setOperatorId(LoginContext.getCurrentUserId());
+        resourceTransferService.save(rt);
+    }
+}

+ 7 - 0
service/src/main/java/com/dayou/brokerage/interceptor/BrokerageInterceptor.java

@@ -82,6 +82,13 @@ public class BrokerageInterceptor implements MethodInterceptor {
             iItemBrokerageGeneralService.editMarketerBrokerage(itemDTO);
             log.info("updated general and marketer detail,itemId[{}]", itemDTO.getId());
         }
+
+        if (doBrokerageAnnotation!=null && doBrokerageAnnotation.rule() == LAND_MARKETER_RULE && doBrokerageAnnotation.operation() == CHANGE){
+            ItemDTO itemDTO = (ItemDTO) methodInvocation.getArguments()[0];
+            iItemBrokerageGeneralService.changeManagerBrokerage(itemDTO);
+            log.info("updated general and marketer detail,itemId[{}]", itemDTO.getId());
+        }
+
         if (doBrokerageAnnotation!=null && doBrokerageAnnotation.rule() == LAND_MARKETER_RULE && doBrokerageAnnotation.operation() == DELETE){
             Long itemId = (Long) methodInvocation.getArguments()[0];
             iItemBrokerageGeneralService.removeMarketerBrokerage(itemId);

+ 2 - 0
service/src/main/java/com/dayou/service/IBusinessOpportunityService.java

@@ -1,4 +1,5 @@
 package com.dayou.service;
+import com.dayou.dto.BusinessOpportunityDTO;
 import com.dayou.entity.BusinessOpportunity;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -26,4 +27,5 @@ public interface IBusinessOpportunityService extends IService<BusinessOpportunit
 
         Boolean delete(Long id);
 
+    Boolean changeManager(BusinessOpportunityDTO opportunity);
 }

+ 2 - 0
service/src/main/java/com/dayou/service/ICustomerService.java

@@ -34,4 +34,6 @@ public interface ICustomerService extends IService<Customer> {
         void importExcel(MultipartFile file);
 
     List<CustomerDTO> getList(CustomerDTO customer);
+
+    Boolean changeManager(CustomerDTO customer);
 }

+ 2 - 0
service/src/main/java/com/dayou/service/IItemBrokerageGeneralService.java

@@ -39,6 +39,8 @@ public interface IItemBrokerageGeneralService extends IService<ItemBrokerageGene
 
     void editMarketerBrokerage(ItemDTO itemDTO);
 
+    void changeManagerBrokerage(ItemDTO itemDTO);
+
     void removeMarketerBrokerage(Long itemId);
 
     void addParticipatorBrokerage(ItemStageVO itemStageVO,Long brokerageStageId);

+ 1 - 0
service/src/main/java/com/dayou/service/IItemService.java

@@ -39,4 +39,5 @@ public interface IItemService extends IService<Item> {
         List<ItemVO> xMineList(ItemDTO item);
 
 
+    Boolean changManager(ItemDTO itemDTO);
 }

+ 33 - 0
service/src/main/java/com/dayou/service/IResourceTransferService.java

@@ -0,0 +1,33 @@
+package com.dayou.service;
+import com.dayou.entity.ResourceTransfer;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dayou.vo.ResourceTransferVO;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 业务资源转移表 服务类
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-05-31
+ */
+public interface IResourceTransferService extends IService<ResourceTransfer> {
+
+        Page<ResourceTransfer> selectPage(Page page,ResourceTransfer resourceTransfer);
+
+        ResourceTransferVO detail(Long id);
+
+        Boolean add(ResourceTransfer resourceTransfer);
+
+        Boolean update(ResourceTransfer resourceTransfer);
+
+        Boolean delete(Long id);
+
+        List<ResourceTransferVO> transferHistory(String resourceType, Long resourceId);
+}

+ 3 - 0
service/src/main/java/com/dayou/service/IUserService.java

@@ -10,6 +10,7 @@ import com.dayou.entity.User;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dayou.vo.IdNameVO;
 import com.dayou.vo.UserVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
@@ -78,4 +79,6 @@ public interface IUserService extends IService<User> {
     Set<LeaderRatioBO> getLeaderRatioBO(Set<Long> leaderIds);
 
     Set<LeaderRatioBO> marketManagerRatioBO();
+
+    List<IdNameVO> usersByDepartment(String departmentName);
 }

+ 7 - 0
service/src/main/java/com/dayou/service/impl/BusinessOpportunityServiceImpl.java

@@ -1,5 +1,7 @@
 package com.dayou.service.impl;
 
+import com.dayou.common.BaseEntity;
+import com.dayou.dto.BusinessOpportunityDTO;
 import com.dayou.entity.BusinessOpportunity;
 import com.dayou.mapper.BusinessOpportunityMapper;
 import com.dayou.service.IBusinessOpportunityService;
@@ -70,4 +72,9 @@ public class BusinessOpportunityServiceImpl extends ServiceImpl<BusinessOpportun
         //逻辑删除
         return this.removeById(id);
     }
+
+    @Override
+    public Boolean changeManager(BusinessOpportunityDTO opportunity) {
+        return this.update(new LambdaUpdateWrapper<BusinessOpportunity>().set(BusinessOpportunity::getUserId,opportunity.getUserId()).eq(BaseEntity::getId,opportunity.getId()));
+    }
 }

+ 6 - 0
service/src/main/java/com/dayou/service/impl/CustomerServiceImpl.java

@@ -2,6 +2,7 @@ package com.dayou.service.impl;
 
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.dayou.common.BaseEntity;
 import com.dayou.dto.CustomerDTO;
 import com.dayou.entity.Customer;
 import com.dayou.entity.Districts;
@@ -173,6 +174,11 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
         return list;
     }
 
+    @Override
+    public Boolean changeManager(CustomerDTO customer) {
+        return this.update(new LambdaUpdateWrapper<Customer>().eq(BaseEntity::getId,customer.getId()).set(Customer::getUserId,customer.getUserId()));
+    }
+
 
     private void createExcelTitle(XSSFWorkbook wb) {
         Sheet sheet = wb.createSheet("客户信息导入模板");

+ 8 - 4
service/src/main/java/com/dayou/service/impl/GisUserServiceImpl.java

@@ -149,11 +149,15 @@ public class GisUserServiceImpl extends ServiceImpl<GisUserMapper, GisUser> impl
     @Override
     public Boolean isAlive(String token) {
         Claims claimFromToken = JwtTokenUtil.getClaimFromToken(token, JwtConstants.SECRET);
-        final Date current = new Date();
-        claimFromToken.setExpiration(new Date((current.getTime() + JwtConstants.GIS_EXPIRATION * 1000)));
         String subject = claimFromToken.getSubject();
-        loginCache.put(subject,loginCache.getIfPresent(subject));
-        return Boolean.TRUE;
+        if (subject.startsWith(GIS_USER)){
+            final Date current = new Date();
+            claimFromToken.setExpiration(new Date((current.getTime() + JwtConstants.GIS_EXPIRATION * 1000)));
+            loginCache.put(subject,loginCache.getIfPresent(subject));
+            return Boolean.TRUE;
+        }
+        ErrorCode.throwBusinessException(ErrorCode.INVALID_TOKEN);
+        return Boolean.FALSE;
     }
 
     @Override

+ 9 - 0
service/src/main/java/com/dayou/service/impl/ItemBrokerageGeneralServiceImpl.java

@@ -264,6 +264,15 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
         this.update(general);
     }
 
+    @Override
+    public void changeManagerBrokerage(ItemDTO itemDTO) {
+        ItemBrokerageGeneral general = brokerageGeneralMapper.getByItemId(itemDTO.getId());
+        iItemBrokerageDetailService.update(new LambdaUpdateWrapper<ItemBrokerageDetail>()
+                .eq(ItemBrokerageDetail::getGeneralId, general.getId())
+                .eq(ItemBrokerageDetail::getBrokerageMode,BrokerageMode.PERSONAL.getCode())
+                .set(ItemBrokerageDetail::getUserId,itemDTO.getUserId()));
+    }
+
     @Transactional
     @Override
     public void removeMarketerBrokerage(Long itemId) {

+ 13 - 8
service/src/main/java/com/dayou/service/impl/ItemServiceImpl.java

@@ -1,23 +1,18 @@
 package com.dayou.service.impl;
 
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.util.StrUtil;
-import com.dayou.bo.BrokerageDetailBO;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.dayou.brokerage.annotation.DoBrokerage;
 import com.dayou.brokerage.constants.BrokerageRule;
+import com.dayou.common.BaseEntity;
 import com.dayou.dto.ItemDTO;
 import com.dayou.entity.Item;
-import com.dayou.entity.ItemBrokerageGeneral;
 import com.dayou.entity.ItemUser;
 import com.dayou.enums.ItemStateEnum;
 import com.dayou.enums.UnitEnum;
 import com.dayou.exception.ErrorCode;
 import com.dayou.mapper.ItemMapper;
-import com.dayou.service.IItemBrokerageGeneralService;
-import com.dayou.service.IItemService;
+import com.dayou.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.dayou.service.IItemStageService;
-import com.dayou.service.IItemUserService;
 import com.dayou.utils.DateUtils;
 import com.dayou.utils.LoginContext;
 import com.dayou.vo.ItemStageVO;
@@ -58,6 +53,9 @@ public class ItemServiceImpl extends ServiceImpl<ItemMapper, Item> implements II
     @Autowired
     private IItemStageService itemStageService;
 
+    @Autowired
+    private IResourceTransferService resourceTransferService;
+
     @Override
     @SuppressWarnings("unchecked")
     public Page<ItemVO> selectPage(Page page, ItemDTO item){
@@ -152,6 +150,13 @@ public class ItemServiceImpl extends ServiceImpl<ItemMapper, Item> implements II
         return list;
     }
 
+    @Transactional
+    @DoBrokerage(operation = CHANGE,rule = BrokerageRule.LAND_MARKETER_RULE)
+    @Override
+    public Boolean changManager(ItemDTO itemDTO) {
+        return this.update(new LambdaUpdateWrapper<Item>().set(Item::getUserId,itemDTO.getUserId()).eq(BaseEntity::getId,itemDTO.getId()));
+    }
+
 
     /**
      * 获取项目状态

+ 111 - 0
service/src/main/java/com/dayou/service/impl/ResourceTransferServiceImpl.java

@@ -0,0 +1,111 @@
+package com.dayou.service.impl;
+
+import com.dayou.dto.CustomerDTO;
+import com.dayou.entity.BusinessOpportunity;
+import com.dayou.entity.ResourceTransfer;
+import com.dayou.enums.BusinessResourceEnum;
+import com.dayou.mapper.ResourceTransferMapper;
+import com.dayou.service.IBusinessOpportunityService;
+import com.dayou.service.ICustomerService;
+import com.dayou.service.IItemService;
+import com.dayou.service.IResourceTransferService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayou.vo.ItemVO;
+import com.dayou.vo.ResourceTransferVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.dayou.utils.ExcelUtil;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
+import java.util.List;
+import java.util.ArrayList;
+import org.springframework.transaction.annotation.Transactional;
+import com.dayou.enums.BatchTaskTypeEnum;
+
+/**
+ * <p>
+ * 业务资源转移表 服务实现类
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-05-31
+ */
+@Service
+public class ResourceTransferServiceImpl extends ServiceImpl<ResourceTransferMapper, ResourceTransfer> implements IResourceTransferService {
+
+    @Autowired
+    private ResourceTransferMapper resourceTransferMapper;
+
+    @Autowired
+    private IItemService iItemService;
+
+    @Autowired
+    private ICustomerService customerService;
+
+    @Autowired
+    private IBusinessOpportunityService businessOpportunityService;
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public Page<ResourceTransfer> selectPage(Page page,ResourceTransfer resourceTransfer){
+        return this.page(page, new QueryWrapper<ResourceTransfer>(resourceTransfer));
+    }
+
+
+    @Override
+    public ResourceTransferVO detail(Long id){
+        ResourceTransferVO resourceTransfer = resourceTransferMapper.getDetailById(id);
+        Long resourceId = resourceTransfer.getResourceId();
+        BusinessResourceEnum resourceType = resourceTransfer.getResourceType();
+
+        switch (resourceType){
+            case ITEM:
+                ItemVO itemVO = iItemService.detail(resourceId);
+                resourceTransfer.setResource(itemVO);
+                return resourceTransfer;
+            case CUSTOMER:
+                CustomerDTO customerDTO = customerService.detail(resourceId);
+                resourceTransfer.setResource(customerDTO);
+                return resourceTransfer;
+            case BUSINESS_OPPORTUNITY:
+                BusinessOpportunity opportunity = businessOpportunityService.detail(resourceId);
+                resourceTransfer.setResource(opportunity);
+                return resourceTransfer;
+            default:
+                return resourceTransfer;
+        }
+    }
+
+    @Override
+    public Boolean add(ResourceTransfer resourceTransfer){
+        return  this.save(resourceTransfer);
+    }
+
+    @Override
+    public Boolean update(ResourceTransfer resourceTransfer){
+        return  this.updateById(resourceTransfer);
+    }
+
+    @Override
+    public Boolean delete(Long id){
+        //逻辑删除
+        return this.removeById(id);
+    }
+
+    @Override
+    public List<ResourceTransferVO> transferHistory(String resourceType, Long resourceId) {
+        List<ResourceTransferVO> list = resourceTransferMapper.transferHistory(resourceType,resourceId);
+        return list;
+    }
+}

+ 6 - 0
service/src/main/java/com/dayou/service/impl/UserServiceImpl.java

@@ -487,6 +487,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return set;
     }
 
+    @Override
+    public List<IdNameVO> usersByDepartment(String departmentName) {
+        List<IdNameVO> list = userMapper.usersByDepartment(departmentName);
+        return list;
+    }
+
     /**
      * 递归查询下级岗位
      * @param postIds

+ 1 - 17
service/src/main/java/com/dayou/service/impl/VisitServiceImpl.java

@@ -7,24 +7,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.vo.VisitVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.dayou.utils.ExcelUtil;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.CellStyle;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.springframework.web.multipart.MultipartFile;
-import java.util.List;
-import java.util.ArrayList;
-import org.springframework.transaction.annotation.Transactional;
-import com.dayou.enums.BatchTaskTypeEnum;
+
 
 /**
  * <p>