浏览代码

服务商任务

zhijiezhao 3 周之前
父节点
当前提交
b94beef8fc

+ 25 - 2
src/main/java/com/caimei365/user/controller/SellerApi.java

@@ -3,6 +3,7 @@ package com.caimei365.user.controller;
 import com.caimei365.user.model.ResponseJson;
 import com.caimei365.user.model.dto.ClubTemporaryDto;
 import com.caimei365.user.model.dto.OnlineDto;
+import com.caimei365.user.model.dto.TaskPushDto;
 import com.caimei365.user.model.po.ServiceProviderPo;
 import com.caimei365.user.model.vo.*;
 import com.caimei365.user.service.SellerService;
@@ -300,13 +301,27 @@ public class SellerApi {
     @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销Id")
     @GetMapping("/taskList")
     public ResponseJson<PageInfo<ProviderTaskVo>> getTaskList(Integer serviceProviderId,
+                                                              @RequestParam(value = "taskType", defaultValue = "0") Integer taskType,
                                                               @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                               @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
 
         if (null == serviceProviderId) {
             return ResponseJson.error(-1, "协销Id不能为空", null);
         }
-        return sellerService.getTaskList(serviceProviderId, pageNum, pageSize);
+        return sellerService.getTaskList(serviceProviderId, taskType, pageNum, pageSize);
+    }
+
+    @ApiOperation("供应商后台任务列表")
+    @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销Id")
+    @GetMapping("/shop/taskList")
+    public ResponseJson<PageInfo<ShopTaskVo>> getShopTaskList(Integer shopId,
+                                                              @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                              @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+
+        if (null == shopId) {
+            return ResponseJson.error(-1, "Id不能为空", null);
+        }
+        return sellerService.getShopTaskList(shopId, pageNum, pageSize);
     }
 
     @ApiOperation("服务商任务详情")
@@ -320,7 +335,15 @@ public class SellerApi {
         if (null == taskId) {
             return ResponseJson.error(-1, "Id不能为空", null);
         }
-        return sellerService.getTaskDetail(request,taskId, serviceProviderId, userId);
+        return sellerService.getTaskDetail(request, taskId, serviceProviderId, userId);
+    }
+
+    @PostMapping("/pushTask")
+    public ResponseJson taskAudit(TaskPushDto dto) {
+        if (null == dto.getServiceProviderId()) {
+            return ResponseJson.error(-1, "Id不能为空", null);
+        }
+        return sellerService.taskAudit(dto);
     }
 
     @ApiOperation("领取任务")

+ 10 - 1
src/main/java/com/caimei365/user/mapper/SellerMapper.java

@@ -1,6 +1,7 @@
 package com.caimei365.user.mapper;
 
 import com.caimei365.user.model.dto.ClubTemporaryDto;
+import com.caimei365.user.model.dto.TaskPushDto;
 import com.caimei365.user.model.po.ServiceProviderPo;
 import com.caimei365.user.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
@@ -177,11 +178,19 @@ public interface SellerMapper {
      */
     List<ClubVo> getUnActiveClub(@Param("serviceProviderId") Integer serviceProviderId);
 
-    List<ProviderTaskVo> getTaskList(Integer serviceProviderId);
+    List<ProviderTaskVo> getTaskList(@Param("serviceProviderId") Integer serviceProviderId, @Param("taskType") Integer taskType);
 
     void receiveTask(@Param("serviceProviderId") Integer serviceProviderId, @Param("taskId") Integer taskId);
 
     ProviderTaskVo getTaskDetail(Integer taskId);
 
     void insertClick(@Param("serviceProviderId") Integer serviceProviderId, @Param("userId") Integer userId, @Param("taskId") Integer taskId, @Param("ip") String ip);
+
+    void insertTaskAudit(TaskPushDto dto);
+
+    void insertTaskImages(TaskPushDto dto);
+
+    void updateTaskAudit(TaskPushDto dto);
+
+    List<ShopTaskVo> getShopTaskList(Integer shopId);
 }

+ 18 - 0
src/main/java/com/caimei365/user/model/dto/TaskPushDto.java

@@ -0,0 +1,18 @@
+package com.caimei365.user.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@ApiModel("服务商任务提交")
+@Data
+public class TaskPushDto  implements Serializable {
+
+    private Integer id;
+    private Integer taskId;
+    private Integer serviceProviderId;
+    private List<String> images;
+    private String taskDesc;
+}

+ 4 - 0
src/main/java/com/caimei365/user/model/vo/ProviderTaskVo.java

@@ -23,6 +23,10 @@ public class ProviderTaskVo {
      * 任务商品Id
      */
     private Integer productId;
+
+    private String productName;
+
+    private String mainImage;
     /**
      * 赏金
      */

+ 33 - 0
src/main/java/com/caimei365/user/model/vo/ShopTaskVo.java

@@ -0,0 +1,33 @@
+package com.caimei365.user.model.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Accessors(chain = true)
+@Data
+public class ShopTaskVo {
+
+    private Integer countNum;
+
+    private Integer taskId;
+    /**
+     * 任务商品Id
+     */
+    private Integer productId;
+
+    private String productName;
+
+    private String mainImage;
+    /**
+     * 赏金
+     */
+    private String reward;
+    /**
+     * 供应商Id
+     */
+    private Integer shopId;
+    /**
+     * 标题
+     */
+    private String title;
+}

+ 6 - 1
src/main/java/com/caimei365/user/service/SellerService.java

@@ -3,6 +3,7 @@ package com.caimei365.user.service;
 import com.caimei365.user.model.ResponseJson;
 import com.caimei365.user.model.dto.ClubTemporaryDto;
 import com.caimei365.user.model.dto.LoginCodeDto;
+import com.caimei365.user.model.dto.TaskPushDto;
 import com.caimei365.user.model.po.ServiceProviderPo;
 import com.caimei365.user.model.vo.*;
 import com.github.pagehelper.PageInfo;
@@ -169,9 +170,13 @@ public interface SellerService {
      */
     ResponseJson<PageInfo<ClubVo>> getUnActiveClubList(Integer serviceProviderId, int pageNum, int pageSize);
 
-    ResponseJson<PageInfo<ProviderTaskVo>> getTaskList(Integer serviceProviderId, int pageNum, int pageSize);
+    ResponseJson<PageInfo<ProviderTaskVo>> getTaskList(Integer serviceProviderId, Integer taskType, int pageNum, int pageSize);
 
     ResponseJson receiveTask(Integer serviceProviderId, Integer taskId);
 
     ResponseJson<ProviderTaskVo> getTaskDetail(HttpServletRequest request, Integer taskId, Integer serviceProviderId, Integer userId);
+
+    ResponseJson taskAudit(TaskPushDto dto);
+
+    ResponseJson<PageInfo<ShopTaskVo>> getShopTaskList(Integer shopId, int pageNum, int pageSize);
 }

+ 1 - 1
src/main/java/com/caimei365/user/service/impl/AsyncService.java

@@ -43,7 +43,7 @@ public class AsyncService {
     private SellerMapper sellerMapper;
 
     @Async("taskExecutor")
-    public void serviceTask(HttpServletRequest request, Integer serviceProviderId, Integer userId, Integer taskId) {
+    public void serviceTask(HttpServletRequest request, Integer serviceProviderId, Integer taskId, Integer userId) {
         String ip = "";
         String unknown = "unknown";
         ip = request.getHeader("x-forwarded-for");

+ 27 - 3
src/main/java/com/caimei365/user/service/impl/SellerServiceImpl.java

@@ -6,6 +6,7 @@ import com.caimei365.user.mapper.*;
 import com.caimei365.user.model.ResponseJson;
 import com.caimei365.user.model.dto.ClubTemporaryDto;
 import com.caimei365.user.model.dto.LoginCodeDto;
+import com.caimei365.user.model.dto.TaskPushDto;
 import com.caimei365.user.model.po.ServiceProviderPo;
 import com.caimei365.user.model.po.SuperVipPo;
 import com.caimei365.user.model.vo.*;
@@ -681,9 +682,9 @@ public class SellerServiceImpl implements SellerService {
     }
 
     @Override
-    public ResponseJson<PageInfo<ProviderTaskVo>> getTaskList(Integer serviceProviderId, int pageNum, int pageSize) {
+    public ResponseJson<PageInfo<ProviderTaskVo>> getTaskList(Integer serviceProviderId, Integer taskType, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
-        List<ProviderTaskVo> tasks = sellerMapper.getTaskList(serviceProviderId);
+        List<ProviderTaskVo> tasks = sellerMapper.getTaskList(serviceProviderId, taskType);
         PageInfo<ProviderTaskVo> page = new PageInfo<>(tasks);
         return ResponseJson.success(page);
     }
@@ -698,7 +699,30 @@ public class SellerServiceImpl implements SellerService {
     @Override
     public ResponseJson<ProviderTaskVo> getTaskDetail(HttpServletRequest request, Integer taskId, Integer serviceProviderId, Integer userId) {
         asyncService.serviceTask(request, serviceProviderId, taskId, userId);
-        return ResponseJson.success(sellerMapper.getTaskDetail(taskId));
+        ProviderTaskVo taskDetail = sellerMapper.getTaskDetail(taskId);
+        String image = ImageUtils.getImageURL("product", taskDetail.getMainImage(), 0, wwwDomain);
+        taskDetail.setMainImage(image);
+        return ResponseJson.success(taskDetail);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ResponseJson taskAudit(TaskPushDto dto) {
+        sellerMapper.insertTaskAudit(dto);
+        sellerMapper.insertTaskImages(dto);
+        sellerMapper.updateTaskAudit(dto);
+        return ResponseJson.success();
+    }
+
+    @Override
+    public ResponseJson<PageInfo<ShopTaskVo>> getShopTaskList(Integer shopId, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<ShopTaskVo> tasks = sellerMapper.getShopTaskList(shopId);
+        tasks.forEach(t -> {
+            t.setMainImage(ImageUtils.getImageURL("product", t.getMainImage(), 0, wwwDomain));
+        });
+        PageInfo<ShopTaskVo> page = new PageInfo<>(tasks);
+        return ResponseJson.success(page);
     }
 
     /**

+ 3 - 3
src/main/resources/mapper/ClubMapper.xml

@@ -839,10 +839,10 @@
         where csr.delflag = 0
     </select>
     <select id="findGroups" resultType="com.caimei365.user.model.vo.TeamGroupVo">
-        select serviceProviderId as groupId, name as groupName
+        select serviceProviderId as groupId, csr.name as groupName
         from serviceprovider s
-                 left join cm_serviceteam_group csg on s.serviceProviderID = csg.serviceId
-                 left join cm_serviceteam_role csr on csr.id = csg.teamId
+        left join cm_serviceteam_group csg on s.serviceProviderID = csg.serviceId
+        left join cm_serviceteam_role csr on csr.id = csg.teamId
         where csr.leaderId = #{leaderId}
     </select>
     <select id="findConsultById" resultType="com.caimei365.user.model.vo.ConsultVo">

+ 43 - 12
src/main/resources/mapper/SellerMapper.xml

@@ -6,6 +6,19 @@
             value (#{serviceProviderId}, #{taskId}, now(), #{userId}, #{ip})
     </insert>
 
+    <insert id="insertTaskAudit" keyColumn="id" keyProperty="id" useGeneratedKeys="true">
+        insert into provider_task_audit(taskId, serviceProviderId, taskDesc)
+        values (#{taskId}, #{serviceProviderId}, #{taskDesc})
+    </insert>
+
+    <insert id="insertTaskImages">
+        insert into provider_task_audit_image
+        values
+        <foreach collection="images" item="item" index="index" separator=",">
+            (#{id},#{item})
+        </foreach>
+    </insert>
+
     <select id="getLoginSellerByMobile" resultType="com.caimei365.user.model.vo.UserLoginVo">
         select u.userID                as userId,
                u.clubID                as clubId,
@@ -110,6 +123,12 @@
           and taskId = #{taskId}
     </update>
 
+    <update id="updateTaskAudit">
+        update provider_task_role set auditStatus = 1
+        where taskId = #{taskId}
+        and serviceProviderId = #{serviceProviderId}
+    </update>
+
     <delete id="deleteTemporaryClub">
         DELETE
         FROM `club_temporary`
@@ -750,25 +769,37 @@
                cpt.endTime,
                cpt.topPic
         FROM provider_task_role ptr
-                 LEFT JOIN cm_provider_task cpt ON ptr.taskId = cpt.id
+        LEFT JOIN cm_provider_task cpt ON ptr.taskId = cpt.id
         WHERE cpt.delflag = 0
           AND ptr.serviceProviderId = #{serviceProviderId}
+          AND ptr.receiveFlag = #{taskType}
         order by cpt.addTime desc
     </select>
 
     <select id="getTaskDetail" resultType="com.caimei365.user.model.vo.ProviderTaskVo">
-        select id as taskId,
-               shopId,
-               productId,
-               title,
-               topPic,
-               content,
-               reward,
-               addTime,
-               startTime,
-               endTime
-        from cm_provider_task
+        select cpt.id as taskId,
+               cpt.shopId,
+               cpt.productId,
+               cpt.title,
+               cpt.topPic,
+               cpt.content,
+               cpt.reward,
+               cpt.addTime,
+               cpt.startTime,
+               cpt.endTime,
+               p.name as productName,
+               p.mainImage
+        from cm_provider_task cpt
+        left join product p on cpt.productId = p.productId
         where id = #{taskId}
     </select>
 
+    <select id="getShopTaskList" resultType="com.caimei365.user.model.vo.ShopTaskVo">
+        select cpt.productId,p.name as productName,p.mainImage,COUNT(ptc.taskId) AS countNum
+        from cm_provider_task cpt
+        LEFT JOIN provider_task_click ptc ON cpt.id = ptc.taskId
+        left join product p on cpt.productId = p.productId
+        where cpt.shopId = #{shopId}
+    </select>
+
 </mapper>