zhijiezhao пре 3 недеља
родитељ
комит
4ad378fcf5

+ 79 - 0
src/main/java/com/caimei365/manager/controller/caimei/providers/ProvidersApi.java

@@ -3,6 +3,7 @@ package com.caimei365.manager.controller.caimei.providers;
 import com.caimei365.manager.entity.PaginationVo;
 import com.caimei365.manager.entity.ResponseJson;
 import com.caimei365.manager.entity.caimei.cmUser.CmClub;
+import com.caimei365.manager.entity.caimei.providers.ProviderTask;
 import com.caimei365.manager.entity.caimei.providers.ServiceProviderModel;
 import com.caimei365.manager.entity.caimei.product.Product;
 import com.caimei365.manager.entity.caimei.providers.CmProviderTeam;
@@ -33,6 +34,84 @@ public class ProvidersApi {
     @Resource
     private CmProvidersContractService cmProvidersContractService;
 
+    /**
+     * 编辑服务商任务
+     *
+     * @param task
+     * @return
+     */
+    @PostMapping("/add/task")
+    public ResponseJson addTask(@RequestBody ProviderTask task) {
+        return cmProvidersService.addTask(task);
+    }
+
+    /**
+     * 任务下发服务商
+     *
+     * @param id
+     * @param serviceProviderIds
+     * @return
+     */
+    @GetMapping("/assign/task")
+    public ResponseJson assignTask(Integer id, String serviceProviderIds) {
+        return cmProvidersService.assignTask(id, serviceProviderIds);
+    }
+
+    /**
+     * 任务列表
+     *
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @GetMapping("/task/list")
+    public ResponseJson<PaginationVo<ProviderTask>> taskList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                             @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        return cmProvidersService.taskList(pageNum, pageSize);
+    }
+
+    /**
+     * 任务选择服务商列表
+     *
+     * @param taskId
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @GetMapping("/receive/list")
+    public ResponseJson<PaginationVo<ServiceProviderModel>> providerReceiveList(Integer taskId, String name, String mobile,
+                                                                                @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                                @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        return cmProvidersService.providerReceiveList(taskId, name, mobile, pageNum, pageSize);
+    }
+
+    /**
+     * 任务分配列表删除服务商
+     *
+     * @param taskId
+     * @param serviceProviderId
+     * @return
+     */
+    @GetMapping("/taskProvider/del")
+    public ResponseJson taskProviderDel(Integer taskId, Integer serviceProviderId) {
+        return cmProvidersService.taskProviderDel(taskId, serviceProviderId);
+    }
+
+
+    /**
+     * 任务详情服务商列表
+     *
+     * @param taskId
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @GetMapping("/taskProvider/list")
+    public ResponseJson<PaginationVo<ServiceProviderModel>> taskProviderList(Integer taskId, String name, String mobile,
+                                                                             @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                             @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        return cmProvidersService.taskProviderList(taskId, name, mobile, pageNum, pageSize);
+    }
 
     /**
      * 修改服务商密码(协销功能合并)

+ 15 - 0
src/main/java/com/caimei365/manager/dao/providers/CmProvidersMapper.java

@@ -3,6 +3,7 @@ package com.caimei365.manager.dao.providers;
 import java.util.List;
 
 import com.caimei365.manager.entity.caimei.cmUser.CmClub;
+import com.caimei365.manager.entity.caimei.providers.ProviderTask;
 import com.caimei365.manager.entity.caimei.providers.ServiceProviderModel;
 import com.caimei365.manager.entity.caimei.product.Product;
 import com.caimei365.manager.entity.caimei.providers.CmProviderTeam;
@@ -114,4 +115,18 @@ public interface CmProvidersMapper {
     List<ServiceProviderModel> addGroups(@Param("mobile") String mobile, @Param("name") String name);
 
     void updateLeader(CmProviderTeam team);
+
+    void addTask(ProviderTask task);
+
+    void updateTask(ProviderTask task);
+
+    void assignTask(@Param("id") Integer id, @Param("strToList") List<String> strToList);
+
+    List<ProviderTask> taskList();
+
+    List<ServiceProviderModel> taskProviderList(@Param("taskId") Integer taskId, @Param("name") String name, @Param("mobile") String mobile);
+
+    List<ServiceProviderModel> providerReceiveList(@Param("taskId") Integer taskId, @Param("name") String name, @Param("mobile") String mobile);
+
+    void taskProviderDel(@Param("taskId") Integer taskId, @Param("serviceProviderId") Integer serviceProviderId);
 }

+ 45 - 0
src/main/java/com/caimei365/manager/entity/caimei/providers/ProviderTask.java

@@ -0,0 +1,45 @@
+package com.caimei365.manager.entity.caimei.providers;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+@Accessors(chain = true)
+@Data
+public class ProviderTask {
+
+    private Integer id;
+    /**
+     * 内容库id
+     */
+    private Integer archiveId;
+    /**
+     * 供应商Id
+     */
+    private Integer shopId;
+    /**
+     * 标题
+     */
+    private String title;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date addTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    private String shopName;
+    /**
+     * 转发封面
+     */
+    private String topPic;
+    /**
+     * 任务状态 1未开始 2任务中 3任务过期
+     */
+    private Integer status;
+}

+ 24 - 7
src/main/java/com/caimei365/manager/entity/caimei/providers/ServiceProviderModel.java

@@ -1,7 +1,6 @@
 package com.caimei365.manager.entity.caimei.providers;
 
 import com.caimei365.manager.entity.caimei.CmRelatedImage;
-import com.caimei365.manager.entity.caimei.providers.CmProvidersContract;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.experimental.Accessors;
@@ -9,22 +8,40 @@ import lombok.experimental.Accessors;
 import java.util.Date;
 import java.util.List;
 
-/**
- * Description
- *
- * @author : Charles
- * @date : 2023/9/7
- */
 @Accessors(chain = true)
 @Data
 public class ServiceProviderModel {
 
+    /**
+     * 任务提交审核状态 0未审核 1审核通过 2审核不通过
+     */
+    private Integer auditStatus;
+    /**
+     * 服务商任务领取标记
+     */
+    private Integer receiveFlag;
+    /**
+     * 服务商任务领取时间
+     */
+    private Date receiveTime;
+    /**
+     * 内外部协销标记
+     */
     private Integer insiderFlag;
 
+    /**
+     * 组长Id
+     */
     private Integer leaderId;
 
+    /**
+     * 联系人
+     */
     private String linkMan;
 
+    /**
+     * 手机号
+     */
     private String mobile;
 
     private String password;

+ 4 - 7
src/main/java/com/caimei365/manager/service/caimei/productArchive/impl/CmProductArchiveServiceImpl.java

@@ -19,8 +19,7 @@ import javax.annotation.Resource;
  * @date 2023-12-22
  */
 @Service
-public class CmProductArchiveServiceImpl implements CmProductArchiveService
-{
+public class CmProductArchiveServiceImpl implements CmProductArchiveService {
     @Resource
     private CmProductArchiveMapper cmProductArchiveMapper;
 
@@ -31,10 +30,10 @@ public class CmProductArchiveServiceImpl implements CmProductArchiveService
      * @return 商品资料库
      */
     @Override
-    public List<CmProductArchive> getCmProductArchiveList(CmProductArchive cmProductArchive)
-    {
+    public List<CmProductArchive> getCmProductArchiveList(CmProductArchive cmProductArchive) {
         return cmProductArchiveMapper.getCmProductArchiveList(cmProductArchive);
     }
+
     /**
      * 通过对象查询商品资料库
      *
@@ -42,8 +41,7 @@ public class CmProductArchiveServiceImpl implements CmProductArchiveService
      * @return 商品资料库
      */
     @Override
-    public CmProductArchive getCmProductArchive(CmProductArchive cmProductArchive)
-    {
+    public CmProductArchive getCmProductArchive(CmProductArchive cmProductArchive) {
         return cmProductArchiveMapper.getByCmProductArchive(cmProductArchive);
     }
 
@@ -65,7 +63,6 @@ public class CmProductArchiveServiceImpl implements CmProductArchiveService
     }
 
 
-
 }
 
 

+ 14 - 1
src/main/java/com/caimei365/manager/service/caimei/providers/CmProvidersService.java

@@ -3,6 +3,7 @@ package com.caimei365.manager.service.caimei.providers;
 import com.caimei365.manager.entity.PaginationVo;
 import com.caimei365.manager.entity.ResponseJson;
 import com.caimei365.manager.entity.caimei.cmUser.CmClub;
+import com.caimei365.manager.entity.caimei.providers.ProviderTask;
 import com.caimei365.manager.entity.caimei.providers.ServiceProviderModel;
 import com.caimei365.manager.entity.caimei.product.Product;
 import com.caimei365.manager.entity.caimei.providers.CmProviderTeam;
@@ -57,7 +58,7 @@ public interface CmProvidersService {
      * @param cmProviders
      * @return 结果
      */
-    int updateCmProviders(ServiceProviderModel cmProviders);
+    void updateCmProviders(ServiceProviderModel cmProviders);
 
     /**
      * 下載圖片
@@ -92,6 +93,18 @@ public interface CmProvidersService {
     ResponseJson<PaginationVo<ServiceProviderModel>> addGroups(String mobile, String name, int pageNum, int pageSize);
 
     ResponseJson updateLeader(CmProviderTeam team);
+
+    ResponseJson addTask(ProviderTask task);
+
+    ResponseJson assignTask(Integer id, String serviceProviderIds);
+
+    ResponseJson<PaginationVo<ProviderTask>> taskList(int pageNum, int pageSize);
+
+    ResponseJson<PaginationVo<ServiceProviderModel>> taskProviderList(Integer taskId, String name, String mobile, int pageNum, int pageSize);
+
+    ResponseJson<PaginationVo<ServiceProviderModel>> providerReceiveList(Integer taskId, String name, String mobile, int pageNum, int pageSize);
+
+    ResponseJson taskProviderDel(Integer taskId, Integer serviceProviderId);
 }
 
 

+ 52 - 2
src/main/java/com/caimei365/manager/service/caimei/providers/impl/CmProvidersServiceImpl.java

@@ -17,6 +17,7 @@ import com.caimei365.manager.entity.PaginationVo;
 import com.caimei365.manager.entity.ResponseJson;
 import com.caimei365.manager.entity.caimei.CmRelatedImage;
 import com.caimei365.manager.entity.caimei.cmUser.CmClub;
+import com.caimei365.manager.entity.caimei.providers.ProviderTask;
 import com.caimei365.manager.entity.caimei.providers.ServiceProviderModel;
 import com.caimei365.manager.entity.caimei.cmUser.User;
 import com.caimei365.manager.entity.caimei.product.Product;
@@ -173,11 +174,11 @@ public class CmProvidersServiceImpl implements CmProvidersService {
      * @return 结果
      */
     @Override
-    public int updateCmProviders(ServiceProviderModel cmProviders) {
+    public void updateCmProviders(ServiceProviderModel cmProviders) {
         if (null != cmProviders.getStatus()) {
             userMapper.updateCmproviderStatus(cmProviders);
         }
-        return cmProvidersMapper.updateCmProviders(cmProviders);
+        cmProvidersMapper.updateCmProviders(cmProviders);
     }
 
 
@@ -327,6 +328,55 @@ public class CmProvidersServiceImpl implements CmProvidersService {
         return ResponseJson.success();
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ResponseJson addTask(ProviderTask task) {
+        if (null == task.getId()) {
+            cmProvidersMapper.addTask(task);
+        } else {
+            cmProvidersMapper.updateTask(task);
+        }
+        return ResponseJson.success();
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ResponseJson assignTask(Integer id, String serviceProviderIds) {
+        cmProvidersMapper.assignTask(id, StringSplitUtils.strToList(serviceProviderIds));
+        return ResponseJson.success();
+    }
+
+    @Override
+    public ResponseJson<PaginationVo<ProviderTask>> taskList(int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<ProviderTask> tasks = cmProvidersMapper.taskList();
+        PaginationVo<ProviderTask> page = new PaginationVo<>(tasks);
+        return ResponseJson.success(page);
+    }
+
+    @Override
+    public ResponseJson<PaginationVo<ServiceProviderModel>> taskProviderList(Integer taskId, String name, String mobile, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<ServiceProviderModel> providers = cmProvidersMapper.taskProviderList(taskId, name, mobile);
+        PaginationVo<ServiceProviderModel> page = new PaginationVo<>(providers);
+        return ResponseJson.success(page);
+    }
+
+    @Override
+    public ResponseJson<PaginationVo<ServiceProviderModel>> providerReceiveList(Integer taskId, String name, String mobile, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<ServiceProviderModel> providers = cmProvidersMapper.providerReceiveList(taskId, name, mobile);
+        PaginationVo<ServiceProviderModel> page = new PaginationVo<>(providers);
+        return ResponseJson.success(page);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ResponseJson taskProviderDel(Integer taskId, Integer serviceProviderId) {
+        cmProvidersMapper.taskProviderDel(taskId, serviceProviderId);
+        return ResponseJson.success();
+    }
+
 }
 
 

+ 75 - 5
src/main/resources/mapper/providers/CmProvidersMapper.xml

@@ -214,12 +214,12 @@
     <select id="getProviderTeam" resultType="com.caimei365.manager.entity.caimei.providers.CmProviderTeam">
         SELECT DISTINCT csr.leaderId,
                         csr.createdTime,
-                        s.name                                                              as leaderName,
+                        s.name                                                                 as leaderName,
                         csr.id                                                                 as teamId,
                         csr.name,
                         (SELECT COUNT(teamId) FROM cm_serviceteam_group WHERE teamId = csr.id) AS groupCount
         FROM cm_serviceteam_role csr
-        LEFT JOIN serviceprovider s ON csr.leaderId = s.serviceProviderID
+                 LEFT JOIN serviceprovider s ON csr.leaderId = s.serviceProviderID
         order by csr.createdTime desc
     </select>
 
@@ -334,12 +334,12 @@
 
     <select id="groupList" resultType="com.caimei365.manager.entity.caimei.providers.ServiceProviderModel">
         SELECT csg.serviceId    AS serviceProviderId,
-               s.name        as name,
+               s.name           as name,
                s.contractMobile as mobile,
                csr.leaderId     as leaderId
         FROM cm_serviceTeam_group csg
-        LEFT JOIN serviceprovider s ON csg.serviceId = s.serviceProviderID
-        LEFT JOIN cm_serviceteam_role csr ON csg.teamId = csr.id
+                 LEFT JOIN serviceprovider s ON csg.serviceId = s.serviceProviderID
+                 LEFT JOIN cm_serviceteam_role csr ON csg.teamId = csr.id
         WHERE csg.teamId = #{id}
     </select>
 
@@ -410,6 +410,19 @@
         </foreach>
     </insert>
 
+    <insert id="addTask">
+        insert into cm_provider_task(archiveId, shopId, title, topPic, addTime, startTime, endTime)
+        values (#{archiveId}, #{shopId}, #{title}, #{topPic}, now(), #{startTime}, #{endTime});
+    </insert>
+
+    <insert id="assignTask">
+        INSERT INTO provider_task_role(taskId, serviceProviderId)
+        values
+        <foreach collection="strToList" item="item" separator=",">
+            (#{id}, #{item})
+        </foreach>
+    </insert>
+
     <select id="addGroups" resultType="com.caimei365.manager.entity.caimei.providers.ServiceProviderModel">
         SELECT s.serviceProviderID AS serviceProviderId, s.linkMan as name, s.contractMobile as mobile
         FROM serviceprovider s
@@ -423,6 +436,43 @@
         </if>
     </select>
 
+    <select id="taskList" resultType="com.caimei365.manager.entity.caimei.providers.ProviderTask">
+        select spt.id,
+               spt.archiveId,
+               spt.shopId,
+               spt.title,
+               spt.addTime,
+               spt.startTime,
+               spt.endTime,
+               s.name as shopName,
+               (CASE WHEN startTime > NOW() THEN '1'
+                     WHEN NOW() BETWEEN startTime AND endTime THEN '2'
+                     WHEN NOW() > endTime THEN '3' END )AS status
+        from cm_provider_task spt
+        left join shop s on spt.shopId = s.shopId
+        order by addTime desc
+    </select>
+
+    <select id="taskProviderList"
+            resultType="com.caimei365.manager.entity.caimei.providers.ServiceProviderModel">
+        select sp.serviceProviderId, name, linkMan, userId, contractMobile as mobile, ptr.receiveFlag, ptr.auditStatus
+        from serviceprovider sp
+        left join provider_task_role ptr on sp.serviceProviderId = ptr.serviceProviderId
+        where ptr.taskId = #{taskId}
+        <if test="mobile != null and mobile != ''">and sp.contractMobile = #{mobile}</if>
+        <if test="name != null and name != ''">and sp.name like concat('%', #{name}, '%')</if>
+    </select>
+
+    <select id="providerReceiveList"
+            resultType="com.caimei365.manager.entity.caimei.providers.ServiceProviderModel">
+        select sp.serviceProviderId, name, linkMan, userId, contractMobile as mobile, ptr.receiveFlag
+        from serviceprovider sp
+        left join provider_task_role ptr on sp.serviceProviderId = ptr.serviceProviderId AND ptr.taskId = #{taskId}
+        WHERE ptr.serviceProviderId IS NULL
+        <if test="mobile != null and mobile != ''">and sp.contractMobile = #{mobile}</if>
+        <if test="name != null and name != ''">and sp.name like concat('%', #{name}, '%')</if>
+    </select>
+
     <update id="updateCmProviders" parameterType="com.caimei365.manager.entity.caimei.providers.ServiceProviderModel">
         update serviceprovider
         <trim prefix="SET" suffixOverrides=",">
@@ -467,6 +517,19 @@
         where id = ${teamId}
     </update>
 
+    <update id="updateTask">
+        update cm_provider_task
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="archiveId != null and archiveId != ''">archiveId = #{archiveId},</if>
+            <if test="shopId != null and shopId != ''">shopId = #{shopId},</if>
+            <if test="title != null and title != ''">title = #{title},</if>
+            <if test="topPic != null and topPic != ''">topPic = #{topPic},</if>
+            <if test="startTime != null">startTime = STR_TO_DATE(#{startTime}, '%Y-%m-%d%H:%i:%s'),</if>
+            <if test="endTime != null">endTime = STR_TO_DATE(#{endTime}, '%Y-%m-%d %H:%i:%s'),</if>
+        </trim>
+        where id = #{id}
+    </update>
+
     <delete id="delCmProvidersById" parameterType="String">
         delete
         from serviceprovider
@@ -499,4 +562,11 @@
           and serviceId = #{spId}
     </delete>
 
+    <delete id="taskProviderDel">
+        delete
+        from provider_task_role
+        where serviceProviderId = #{serviceProviderId}
+          and taskId = #{taskId}
+    </delete>
+
 </mapper>