7 Commit-ok e0143c816c ... 4ff996c2ce

Szerző SHA1 Üzenet Dátum
  zhijiezhao 4ff996c2ce 服务商任务bugfix 3 hete
  zhijiezhao d7dd649b50 服务商任务 3 hete
  zhijiezhao b94beef8fc 服务商任务 3 hete
  zhijiezhao abbb733970 服务商任务 3 hete
  zhijiezhao 17dd3e587e 协销服务商合并 1 hónapja
  zhijiezhao cbc1e85af7 Merge remote-tracking branch 'origin/developer' into developerA 1 hónapja
  zhijiezhao 7b97a96827 协销服务商合并 1 hónapja
26 módosított fájl, 1103 hozzáadás és 787 törlés
  1. 5 7
      src/main/java/com/caimei365/user/controller/ProvidersController.java
  2. 90 16
      src/main/java/com/caimei365/user/controller/SellerApi.java
  3. 39 25
      src/main/java/com/caimei365/user/controller/ShopApi.java
  4. 5 55
      src/main/java/com/caimei365/user/mapper/CmProvidersMapper.java
  5. 20 0
      src/main/java/com/caimei365/user/mapper/SellerMapper.java
  6. 2 0
      src/main/java/com/caimei365/user/mapper/ShopMapper.java
  7. 20 0
      src/main/java/com/caimei365/user/model/dto/TaskPushDto.java
  8. 0 82
      src/main/java/com/caimei365/user/model/po/CmProviders.java
  9. 26 13
      src/main/java/com/caimei365/user/model/po/CmRelatedImage.java
  10. 124 0
      src/main/java/com/caimei365/user/model/po/ServiceProviderModel.java
  11. 0 24
      src/main/java/com/caimei365/user/model/po/ServiceProviderPo.java
  12. 0 61
      src/main/java/com/caimei365/user/model/vo/CmProvidersVO.java
  13. 81 0
      src/main/java/com/caimei365/user/model/vo/ProviderTaskVo.java
  14. 33 0
      src/main/java/com/caimei365/user/model/vo/ShopTaskVo.java
  15. 3 4
      src/main/java/com/caimei365/user/service/CmProvidersService.java
  16. 36 10
      src/main/java/com/caimei365/user/service/SellerService.java
  17. 1 1
      src/main/java/com/caimei365/user/service/ShopService.java
  18. 27 0
      src/main/java/com/caimei365/user/service/impl/AsyncService.java
  19. 7 9
      src/main/java/com/caimei365/user/service/impl/CmProvidersServiceImpl.java
  20. 59 0
      src/main/java/com/caimei365/user/service/impl/SellerServiceImpl.java
  21. 68 34
      src/main/java/com/caimei365/user/service/impl/ShopServiceImpl.java
  22. 4 4
      src/main/resources/mapper/ClubMapper.xml
  23. 86 207
      src/main/resources/mapper/CmProvidersMapper.xml
  24. 1 1
      src/main/resources/mapper/LoginMapper.xml
  25. 361 234
      src/main/resources/mapper/SellerMapper.xml
  26. 5 0
      src/main/resources/mapper/ShopMapper.xml

+ 5 - 7
src/main/java/com/caimei365/user/controller/ProvidersController.java

@@ -1,8 +1,7 @@
 package com.caimei365.user.controller;
 
 import com.caimei365.user.model.ResponseJson;
-import com.caimei365.user.model.po.CmProviders;
-import com.caimei365.user.model.vo.CmProvidersVO;
+import com.caimei365.user.model.po.ServiceProviderModel;
 import com.caimei365.user.service.CmProvidersService;
 import com.caimei365.user.utils.BeanUtil;
 import com.github.pagehelper.PageHelper;
@@ -32,12 +31,11 @@ public class ProvidersController {
      * 服务商入驻信息查询
      */
     @GetMapping("/from")
-    public ResponseJson getProvidersFrom(String providersId,String providersName,
+    public ResponseJson getProvidersFrom(Integer serviceProviderId, String providersName,
                                          @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
-                                         @RequestParam(value = "pageSize", defaultValue = "20") int pageSize
-                                         ) {
+                                         @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
-        List<CmProviders> cmProviders = cmProvidersService.getByCmProviders(new CmProviders().setId(providersId).setName(providersName).setStatus(90));
-        return ResponseJson.success(new PageInfo<>(BeanUtil.setValues(cmProviders, CmProvidersVO.class)));
+        List<ServiceProviderModel> cmProviders = cmProvidersService.getByCmProviders(new ServiceProviderModel().setServiceProviderId(serviceProviderId).setName(providersName).setStatus(90));
+        return ResponseJson.success(new PageInfo<>(BeanUtil.setValues(cmProviders, ServiceProviderModel.class)));
     }
 }

+ 90 - 16
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;
@@ -15,6 +16,7 @@ import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 
@@ -42,7 +44,6 @@ public class SellerApi {
             @ApiImplicitParam(name = "pageNum", required = true, value = "第几页"),
             @ApiImplicitParam(name = "pageSize", required = true, value = "一页多少条")
     })
-
     @GetMapping("/temporary/club")
     public ResponseJson<PageInfo<ClubTemporaryVo>> temporaryClub(Integer userId, String searchName,
                                                                  @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
@@ -114,7 +115,7 @@ public class SellerApi {
     @ApiOperation("机构看板")
     @GetMapping("/club/livelyClub")
     public ResponseJson<Map<String, Object>> getLivelyClub(Integer spId) {
-        if (null == spId ) {
+        if (null == spId) {
             return ResponseJson.error("spId  参数不全!", null);
         }
         return sellerService.getLivelyClub(spId);
@@ -124,33 +125,33 @@ public class SellerApi {
      * 机构活跃分析
      * 原spi的 /seller/club/list
      *
-     * @param spId           协销Id
-     * @param status         机构状态
-     * @param type           1.我的机构2.组员机构3.待分配机构 4 活跃机构 5 不活跃机构
-     * @param name           机构名字关键字(搜索用)
+     * @param spId   协销Id
+     * @param status 机构状态
+     * @param type   1.我的机构2.组员机构3.待分配机构 4 活跃机构 5 不活跃机构
+     * @param name   机构名字关键字(搜索用)
      */
     @ApiOperation("机构活跃分析列表")
     @GetMapping("/club/livelyClubList")
     public ResponseJson<PaginationVo<ClubVo>> getLivelyClubList(Integer spId,
-                                                                         Integer status,
-                                                                         Integer type,
-                                                                         String name,
-                                                                         Integer userIdentity,
-                                                                         @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
-                                                                         @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+                                                                Integer status,
+                                                                Integer type,
+                                                                String name,
+                                                                Integer userIdentity,
+                                                                @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
         if (null == spId || null == type) {
             return ResponseJson.error("spId 或 type 参数不全!", null);
         }
-        if (4 != type && 5 != type ) {
+        if (4 != type && 5 != type) {
             return ResponseJson.error("type 参数错误!", null);
         }
-
         return sellerService.getLivelyClubList(spId, status, type, name, userIdentity, pageNum, pageSize);
     }
 
 
     /**
      * 获取相关咨询记录机构信息
+     *
      * @param spId
      * @param type
      * @param pageNum
@@ -172,6 +173,7 @@ public class SellerApi {
 
     /**
      * 机构所有咨询记录
+     *
      * @param clubId
      * @param pageNum
      * @param pageSize
@@ -257,6 +259,7 @@ public class SellerApi {
 
     /**
      * 机构重点访问页面
+     *
      * @param clubId
      * @return
      */
@@ -264,8 +267,8 @@ public class SellerApi {
     @ApiImplicitParam(required = true, name = "clubId", value = "机构Id")
     @GetMapping("/getClubKeynoteRecord")
     public ResponseJson<PageInfo<RetuenDataVo>> getClubKeynoteRecord(Integer clubId,
-                                                              @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
-                                                              @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+                                                                     @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                     @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
 
         if (null == clubId) {
             return ResponseJson.error(-1, "机构id不能为空", null);
@@ -275,6 +278,7 @@ public class SellerApi {
 
     /**
      * 协销不活跃机构
+     *
      * @param serviceProviderId
      * @param pageNum
      * @param pageSize
@@ -292,4 +296,74 @@ public class SellerApi {
         return sellerService.getUnActiveClubList(serviceProviderId, pageNum, pageSize);
     }
 
+
+    @ApiOperation("服务商任务列表")
+    @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, 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("服务商任务详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", required = false, value = "userId"),
+            @ApiImplicitParam(name = "serviceProviderId", required = true, value = "分享协销Id"),
+            @ApiImplicitParam(name = "taskId", required = true, value = "任务Id")
+    })
+    @GetMapping("/taskDetail")
+    public ResponseJson<ProviderTaskVo> getTaskDetail(HttpServletRequest request, Integer taskId, Integer serviceProviderId, Integer userId) {
+        if (null == taskId) {
+            return ResponseJson.error(-1, "Id不能为空", null);
+        }
+        return sellerService.getTaskDetail(request, taskId, serviceProviderId, userId);
+    }
+
+    @GetMapping("/provider/taskDetail")
+    public ResponseJson<ProviderTaskVo> getProviderTaskDetail(Integer taskId, Integer serviceProviderId) {
+        if (null == taskId || null == serviceProviderId) {
+            return ResponseJson.error(-1, "Id不能为空", null);
+        }
+        return sellerService.getProviderTaskDetail(taskId, serviceProviderId);
+    }
+
+    @PostMapping("/pushTask")
+    public ResponseJson taskAudit(TaskPushDto dto) {
+        if (null == dto.getServiceProviderId()) {
+            return ResponseJson.error(-1, "Id不能为空", null);
+        }
+        return sellerService.taskAudit(dto);
+    }
+
+    @ApiOperation("领取任务")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销Id"),
+            @ApiImplicitParam(required = true, name = "taskId", value = "任务Id")
+    })
+    @GetMapping("/receiveTask")
+    public ResponseJson receiveTask(Integer serviceProviderId, Integer taskId) {
+        if (null == serviceProviderId || null == taskId) {
+            return ResponseJson.error(-1, "参数有误", null);
+        }
+        return sellerService.receiveTask(serviceProviderId, taskId);
+    }
 }

+ 39 - 25
src/main/java/com/caimei365/user/controller/ShopApi.java

@@ -45,6 +45,7 @@ public class ShopApi {
 //        }
 //        return shopService.shortcutLogin(userId);
 //    }
+
     /**
      * 根据用户Id查询供应商资料
      * <p>
@@ -113,21 +114,23 @@ public class ShopApi {
 
     /**
      * 供应商首页数据
+     *
      * @param shopId 供应商Id
      */
     @ApiOperation("供应商首页数据(旧:/supplier/home/detail(supplierId))")
     @ApiImplicitParam(required = true, name = "shopId", value = "供应商Id")
     @GetMapping("/home/data")
-    @IpSave(saveName = "供应商首页数据",saveParams = true)
-    public ResponseJson<ShopHomeVo> getShopHomeData(Integer shopId) {
+    @IpSave(saveName = "供应商首页数据", saveParams = true)
+    public ResponseJson<ShopHomeVo> getShopHomeData(Integer shopId, Integer userId, Integer userIdentity) {
         if (null == shopId) {
             return ResponseJson.error("参数异常:供应商Id不能为空!", null);
         }
-        return shopService.getShopHomeData(shopId);
+        return shopService.getShopHomeData(shopId, userId, userIdentity);
     }
 
     /**
      * 供应商主页列表配置列表
+     *
      * @param shopId
      * @param category
      * @param pageNum
@@ -147,6 +150,7 @@ public class ShopApi {
 
     /**
      * 一键排序
+     *
      * @param id
      * @param sort
      * @return
@@ -165,6 +169,7 @@ public class ShopApi {
 
     /**
      * 供应商商品类别回显
+     *
      * @param id
      * @return
      */
@@ -179,6 +184,7 @@ public class ShopApi {
 
     /**
      * 选择商品
+     *
      * @param shopId
      * @param categoryId
      * @param name
@@ -192,13 +198,14 @@ public class ShopApi {
                                                                         @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                                         @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
         if (null == shopId) {
-            return  ResponseJson.error(-1, "供应商Id不能为空", null);
+            return ResponseJson.error(-1, "供应商Id不能为空", null);
         }
-         return shopService.getShopProductList(shopId, categoryId, name, pageNum, pageSize);
+        return shopService.getShopProductList(shopId, categoryId, name, pageNum, pageSize);
     }
 
     /**
      * 保存供应商类别
+     *
      * @param jsonParamsDto
      * @return
      */
@@ -216,6 +223,7 @@ public class ShopApi {
 
     /**
      * 删除供应商商品类别
+     *
      * @param id
      * @return
      */
@@ -230,6 +238,7 @@ public class ShopApi {
 
     /**
      * 供应商首页-轮播图片
+     *
      * @param shopId 供应商Id
      */
     @ApiOperation("供应商首页-轮播图片(旧:/supplier/home/images(supplierId))")
@@ -245,6 +254,7 @@ public class ShopApi {
 
     /**
      * 供应商banner 排序
+     *
      * @param id
      * @param sort
      * @return
@@ -263,6 +273,7 @@ public class ShopApi {
 
     /**
      * 供应商-更新轮播图片
+     *
      * @param shopBannerDto {
      *                      id      图片id
      *                      shopId  供应商Id
@@ -270,7 +281,7 @@ public class ShopApi {
      *                      title   名称
      *                      link    链接
      *                      info    描述
-     * }
+     *                      }
      */
     @ApiOperation("供应商-更新轮播图片(旧:/supplier/saveShopBanner)")
     @PostMapping("/home/images/update")
@@ -280,6 +291,7 @@ public class ShopApi {
 
     /**
      * 供应商-删除轮播图片
+     *
      * @param shopBannerDto { id  图片id}
      */
     @ApiOperation("供应商-删除轮播图片(旧:/supplier/deleteShopBanner)")
@@ -293,6 +305,7 @@ public class ShopApi {
 
     /**
      * 供应商个人中心数据
+     *
      * @param userId 用户Id
      */
     @ApiOperation("供应商个人中心数据(旧:/supplier/homePageData)")
@@ -309,9 +322,9 @@ public class ShopApi {
     }
 
     @ApiOperation("供应商文章表单")
-    @ApiImplicitParam(required = true, name = "articleId",value = "文章id")
+    @ApiImplicitParam(required = true, name = "articleId", value = "文章id")
     @GetMapping("/article/form")
-    public ResponseJson<Map<String,Object>> shopArticleForm(Integer articleId) {
+    public ResponseJson<Map<String, Object>> shopArticleForm(Integer articleId) {
         return shopService.getShopArticleById(articleId);
     }
 
@@ -337,18 +350,18 @@ public class ShopApi {
 
     @ApiOperation("文章分类列表")
     @GetMapping("/article/type/list")
-    public ResponseJson<List<ArticleTypeVo>> getArticleTypeList(){
+    public ResponseJson<List<ArticleTypeVo>> getArticleTypeList() {
         return shopService.getArticleTypeList();
     }
 
     @ApiOperation("删除文章")
     @PostMapping("/article/delete")
-    public ResponseJson<Void> deleteArticle(Integer articleId){
+    public ResponseJson<Void> deleteArticle(Integer articleId) {
         return shopService.deleteArticle(articleId);
     }
 
     @ApiOperation("供应商百科商品表单")
-    @ApiImplicitParam(required = true, name = "productId",value = "百科商品id")
+    @ApiImplicitParam(required = true, name = "productId", value = "百科商品id")
     @GetMapping("/baike/product/form")
     public ResponseJson<BaikeProductFormVo> baikeProductForm(Integer productId) {
         return shopService.getBaikeProductById(productId);
@@ -363,8 +376,8 @@ public class ShopApi {
     @ApiOperation("供应商百科商品列表")
     @GetMapping("/baike/product/list")
     public ResponseJson<PageInfo<BaikeProductListVo>> getBaikeProductList(BaikeProductDto baikeProductDto,
-                                                                      @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
-                                                                      @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+                                                                          @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                          @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
         return shopService.getBaikeProductList(baikeProductDto, pageNum, pageSize);
     }
 
@@ -375,23 +388,23 @@ public class ShopApi {
     }
 
     @ApiOperation("百科商品分类列表")
-    @ApiImplicitParam(required = true, name = "commodityType",value = "百科分类:1产品,2仪器")
+    @ApiImplicitParam(required = true, name = "commodityType", value = "百科分类:1产品,2仪器")
     @GetMapping("/baike/product/type/list")
-    public ResponseJson<List<BaikeProductTypeVo>> getBaikeProductTypeList(Integer commodityType){
+    public ResponseJson<List<BaikeProductTypeVo>> getBaikeProductTypeList(Integer commodityType) {
         return shopService.getBaikeProductTypeList(commodityType);
     }
 
     @ApiOperation("删除百科商品")
-    @ApiImplicitParam(required = true, name = "productId",value = "百科商品id")
+    @ApiImplicitParam(required = true, name = "productId", value = "百科商品id")
     @PostMapping("/baike/product/delete")
-    public ResponseJson<Void> deleteBaikeProduct(Integer productId){
+    public ResponseJson<Void> deleteBaikeProduct(Integer productId) {
         return shopService.deleteBaikeProduct(productId);
     }
 
     @ApiOperation("查询敏感词")
     @ApiImplicitParam(required = true, name = "checkPoint", value = "检查位置:1供应商端文章,2供应商端百科,3管理员端文章,4管理员端百科")
     @GetMapping("/sensitive/words")
-    public ResponseJson<String> getSensitiveWords(Integer checkPoint){
+    public ResponseJson<String> getSensitiveWords(Integer checkPoint) {
         if (null == checkPoint) {
             return ResponseJson.error("参数异常", null);
         }
@@ -401,7 +414,7 @@ public class ShopApi {
     @ApiOperation("百科相关推荐表单")
     @ApiImplicitParam(required = true, name = "productId", value = "百科产品id")
     @GetMapping("/baike/recommend/form")
-    public ResponseJson<Map<String,Object>> baikeRecommendForm(Integer productId){
+    public ResponseJson<Map<String, Object>> baikeRecommendForm(Integer productId) {
         return shopService.getBaikeRecommendForm(productId);
     }
 
@@ -415,8 +428,8 @@ public class ShopApi {
     })
     @GetMapping("/baike/recommend/add/list")
     public ResponseJson<PageInfo<BaikeProductListVo>> addRecommendList(Integer productId, Integer typeId, String name,
-                                                                     @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
-                                                                     @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+                                                                       @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                       @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
         if (null == productId) {
             return ResponseJson.error("百科产品id不能为空", null);
         }
@@ -428,7 +441,7 @@ public class ShopApi {
 
     @ApiOperation("百科相关推荐添加产品")
     @PostMapping("/baike/recommend/add")
-    public ResponseJson<Void> addBaikeRecommend(BaikeProductDto baikeProduct){
+    public ResponseJson<Void> addBaikeRecommend(BaikeProductDto baikeProduct) {
         if (null == baikeProduct.getProductId()) {
             return ResponseJson.error("商品id不能为空", null);
         }
@@ -438,7 +451,7 @@ public class ShopApi {
     @ApiOperation("百科相关推荐删除产品")
     @ApiImplicitParam(required = true, name = "recommendId", value = "相关推荐id")
     @PostMapping("/baike/recommend/delete")
-    public ResponseJson<Void> deleteBaikeRecommend(Integer recommendId){
+    public ResponseJson<Void> deleteBaikeRecommend(Integer recommendId) {
         if (null == recommendId) {
             return ResponseJson.error("相关推荐id不能为空", null);
         }
@@ -447,7 +460,7 @@ public class ShopApi {
 
     @ApiOperation("百科相关推荐更改排序")
     @PostMapping("/baike/recommend/sort/save")
-    public ResponseJson<Void> saveRecommendSort(BaikeRecommendVo baikeRecommend){
+    public ResponseJson<Void> saveRecommendSort(BaikeRecommendVo baikeRecommend) {
         if (null == baikeRecommend.getRecommendId()) {
             return ResponseJson.error("相关推荐id不能为空", null);
         }
@@ -459,7 +472,7 @@ public class ShopApi {
 
     @ApiOperation("百科相关推荐更改推荐方式")
     @PostMapping("/baike/recommend/type/save")
-    public ResponseJson<Void> saveRecommendType(BaikeProductDto baikeProduct){
+    public ResponseJson<Void> saveRecommendType(BaikeProductDto baikeProduct) {
         if (null == baikeProduct.getProductId()) {
             return ResponseJson.error("商品id不能为空", null);
         }
@@ -471,6 +484,7 @@ public class ShopApi {
 
     /**
      * 供应商营销数据看板
+     *
      * @param type
      * @param marketReportId
      * @param shopId

+ 5 - 55
src/main/java/com/caimei365/user/mapper/CmProvidersMapper.java

@@ -1,6 +1,6 @@
 package com.caimei365.user.mapper;
 
-import com.caimei365.user.model.po.CmProviders;
+import com.caimei365.user.model.po.ServiceProviderModel;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -12,15 +12,14 @@ import java.util.List;
  * @date 2023-12-14
  */
 @Mapper
-public interface CmProvidersMapper
-{
+public interface CmProvidersMapper {
     /**
      * 通过对象查询列表
      *
      * @param cmProviders
      * @return 集合
      */
-    List<CmProviders> getCmProvidersList(CmProviders cmProviders);
+    List<ServiceProviderModel> getCmProvidersList(ServiceProviderModel cmProviders);
 
     /**
      * 通过Id查询对象
@@ -28,7 +27,7 @@ public interface CmProvidersMapper
      * @param id 主键
      * @return
      */
-    CmProviders getCmProvidersById(String id);
+    ServiceProviderModel getCmProvidersById(String id);
 
     /**
      * 通过对象查询对象
@@ -36,55 +35,6 @@ public interface CmProvidersMapper
      * @param cmProviders
      * @return
      */
-    CmProviders getByCmProviders(CmProviders cmProviders);
-
-    /**
-     * 通过对象查询Id
-     *
-     * @param cmProviders
-     * @return String
-     */
-    String getById(CmProviders cmProviders);
-
-
-    /**
-     * 通过对象查询记录总数
-     *
-     * @param cmProviders
-     * @return Integer
-     */
-    int getCount(CmProviders cmProviders);
-
-    /**
-     * 新增
-     *
-     * @param cmProviders
-     * @return 结果
-     */
-    int addCmProviders(CmProviders cmProviders);
-
-    /**
-     * 修改
-     *
-     * @param cmProviders
-     * @return 结果
-     */
-    int updateCmProviders(CmProviders cmProviders);
-
-    /**
-     * 删除
-     *
-     * @param id 主键
-     * @return 结果
-     */
-    int delCmProvidersById(String id);
-
-    /**
-     * 批量删除
-     *
-     * @param ids 需要删除的数据主键集合
-     * @return 结果
-     */
-    int delCmProviders(CmProviders cmProviders);
+    ServiceProviderModel getByCmProviders(ServiceProviderModel cmProviders);
 
 }

+ 20 - 0
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,4 +178,23 @@ public interface SellerMapper {
      */
     List<ClubVo> getUnActiveClub(@Param("serviceProviderId") 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);
+
+    ProviderTaskVo getProviderTaskDetail(@Param("taskId") Integer taskId, @Param("serviceProviderId") Integer serviceProviderId);
+
+    void deleteTaskImages(TaskPushDto dto);
 }

+ 2 - 0
src/main/java/com/caimei365/user/mapper/ShopMapper.java

@@ -363,4 +363,6 @@ public interface ShopMapper {
      * @return
      */
     List<String> getMarketReportDataList(@Param("shopId") Integer shopId);
+
+    Integer findSpId(Integer userId);
 }

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

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

+ 0 - 82
src/main/java/com/caimei365/user/model/po/CmProviders.java

@@ -1,82 +0,0 @@
-package com.caimei365.user.model.po;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import lombok.experimental.Accessors;
-import org.apache.ibatis.type.Alias;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 对象 cm_providers
- *
- * @author Kaick
- * @date 2023-12-14
- */
-@Accessors(chain  = true )
-@Data
-@Alias("CmProviders")
-public class CmProviders implements Serializable
-{
-    private static final long serialVersionUID = 1L;
-
-    /** id */
-    private String id;
-
-    /** 用户id */
-    private Integer userId;
-
-    /** 服务商名称 */
-    private String name;
-
-    /** 服务商级别为:1级,2级,3级 */
-    private Integer serviceLevel;
-
-    /** 服务商类型: 1个人,1企业 */
-    private Integer serviceCategory;
-
-    /** 服务商地址 */
-    private String address;
-
-    /** 联系人 */
-    private String linkMan;
-
-    /** 联系电话 */
-    private String mobile;
-
-    /** 状态:90上线,91下线 */
-    private Integer status;
-
-    /** 简介 */
-    private String text;
-
-    /** 服务商二维码 */
-    private String qrCodeImage;
-
-    /** 资格证书图片 */
-    private String qualificationImage;
-
-    /** 资格证书编号 */
-    private String qualificationId;
-
-    /** 创建人 */
-    private String createBy;
-
-    /** 修改时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date updateTime;
-
-    /** 添加时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date createTime;
-
-    /**
-     * 相关简介图集合
-     */
-    private List<String> textRelateds;
-}
-
-
-

+ 26 - 13
src/main/java/com/caimei365/user/model/po/CmRelatedImage.java

@@ -14,36 +14,49 @@ import java.util.Date;
  * @author Kaick
  * @date 2023-12-14
  */
-@Accessors(chain  = true )
+@Accessors(chain = true)
 @Data
 @Alias("CmRelatedImage")
-public class CmRelatedImage implements Serializable
-{
+public class CmRelatedImage implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    /** id */
+    /**
+     * id
+     */
     private String id;
 
-    /** 分类:1分销报备凭证图片(cm_reporting_member)
-     ,2 (cm_providers)服务商相关简介图
-     ,3 (cm_providers)服务商相关资料文件
-     ,4 (cm_providers_contract)服务商相关合同文件 */
+    /**
+     * 分类:1分销报备凭证图片(cm_reporting_member)
+     * ,2 (serviceprovider)服务商相关简介图
+     * ,3 (serviceprovider)服务商相关资料文件
+     * ,4 (cm_providers_contract)服务商相关合同文件
+     */
     private String type;
 
-    /** 归属者Id(type字段表Id) */
+    /**
+     * 归属者Id(type字段表Id)
+     */
     private String authorId;
 
-    /** 图片 */
+    /**
+     * 图片
+     */
     private String image;
 
-    /** 删除状态 0正常,其他删除 */
+    /**
+     * 删除状态 0正常,其他删除
+     */
     private Integer delFlag;
 
-    /** 修改时间 */
+    /**
+     * 修改时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
 
-    /** 添加时间 */
+    /**
+     * 添加时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
 

+ 124 - 0
src/main/java/com/caimei365/user/model/po/ServiceProviderModel.java

@@ -0,0 +1,124 @@
+package com.caimei365.user.model.po;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.util.List;
+
+@Accessors(chain = true)
+@Data
+public class ServiceProviderModel {
+
+    private Integer insiderFlag;
+
+    private Integer leaderId;
+
+    private String linkMan;
+
+    private String mobile;
+
+    private String password;
+    /**
+     * 协销Id
+     */
+    private Integer serviceProviderId;
+    /**
+     * 协销名称
+     */
+    private String name;
+    /**
+     * 协销用户Id
+     */
+    private Integer userId;
+    /**
+     * 协销组长名称
+     */
+    private String mainName;
+    /**
+     * 已注册客户数
+     */
+    private Integer registeredNumber;
+    /**
+     * 未注册客户数
+     */
+    private Integer unregisteredNumber;
+    /**
+     * 服务商级别为:1级,2级,3级,4 特约服务商,5品牌指定服务商
+     */
+    private Integer serviceLevel;
+    /**
+     * 特约品牌名称
+     */
+    private String brandName;
+    /**
+     * 服务商类型: 1个人,2企业
+     */
+    private Integer serviceCategory;
+    /**
+     * 状态:90上线,91下线
+     */
+    private Integer status;
+    /**
+     * 服务商地址
+     */
+    private String address;
+    /**
+     * 简介
+     */
+    private String text;
+
+    /**
+     * 服务商二维码
+     */
+    private String qrCodeImage;
+    /**
+     * 资格证书图片
+     */
+    private String qualificationImage;
+    /**
+     * 资格证书编号
+     */
+    private String qualificationId;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 添加时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date addTime;
+
+    /**
+     * 相关简介图集合
+     */
+    private List<String> textRelateds;
+
+    /**
+     * 相关资料文件集合
+     */
+    private List<CmRelatedImage> infoRelateds;
+
+
+    //服务商合同
+    /**
+     * 合同起始日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date contractStartDate;
+
+    /**
+     * 合同截止日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date contractEndDate;
+
+    /**
+     * 服务商分帐号
+     */
+    private String splitCode;
+}

+ 0 - 24
src/main/java/com/caimei365/user/model/po/ServiceProviderPo.java

@@ -66,25 +66,6 @@ public class ServiceProviderPo implements Serializable {
      * 联系人职务
      */
     private String duty;
-    /**
-     * 审核状态
-     */
-    private String auditStatus;
-
-    /**
-     * 审核时间
-     */
-    private String auditTime;
-
-    /**
-     * 审核信息
-     */
-    private String auditNote;
-    /**
-     * 是否可用 1可用
-     */
-    private String validFlag;
-
     /**
      * 头像
      */
@@ -99,9 +80,4 @@ public class ServiceProviderPo implements Serializable {
      * 创建时间
      */
     private String addTime;
-    /**
-     * 创客经理Id
-     */
-    private Integer mainServiceProviderId;
-
 }

+ 0 - 61
src/main/java/com/caimei365/user/model/vo/CmProvidersVO.java

@@ -1,61 +0,0 @@
-package com.caimei365.user.model.vo;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * 对象 cm_providers VO对象
- *
- * @author Kaick
- * @date 2023-12-14
- */
-@Accessors(chain  = true )
-@Data
-public class CmProvidersVO implements Serializable
-{
-    private static final long serialVersionUID = 1L;
-    /** id */
-    private String id;
-
-    /** 用户id */
-    private Integer userId;
-
-    /** 服务商名称 */
-    private String name;
-
-    /** 服务商级别为:1级,2级,3级 */
-    private Integer serviceLevel;
-
-    /** 服务商类型: 1个人,1企业 */
-    private Integer serviceCategory;
-
-    /** 服务商地址 */
-    private String address;
-
-    /** 联系人 */
-    private String linkMan;
-
-    /** 联系电话 */
-    private String mobile;
-
-    /** 简介 */
-    private String text;
-
-    /** 服务商二维码 */
-    private String qrCodeImage;
-
-    /** 资格证书图片 */
-    private String qualificationImage;
-
-    /** 资格证书编号 */
-    private String qualificationId;
-
-    /**
-     * 相关简介图集合
-     */
-    private List<String> textRelateds;
-
-}

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

@@ -0,0 +1,81 @@
+package com.caimei365.user.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.util.List;
+
+@Accessors(chain = true)
+@Data
+public class ProviderTaskVo {
+
+    /**
+     * 提交审核备注
+     */
+    private String taskDesc;
+    /**
+     * 提交审核图片
+     */
+    private List<String> images;
+
+    private Integer taskId;
+    /**
+     * 任务领取标记 0未领取 1已领取
+     */
+    private Integer receiveFlag;
+    /**
+     * 任务提交审核状态 0未审核 1审核通过 2审核不通过
+     */
+    private Integer auditStatus;
+    /**
+     * 任务商品Id
+     */
+    private Integer productId;
+
+    private String productName;
+
+    private String mainImage;
+    /**
+     * 赏金
+     */
+    private String reward;
+    /**
+     * 富文本内容
+     */
+    private String content;
+    /**
+     * 供应商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;
+
+    /**
+     * 领取时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date receiveTime;
+
+    private String shopName;
+    /**
+     * 转发封面
+     */
+    private String topPic;
+    /**
+     * 任务状态 1未开始 2任务中 3任务过期
+     */
+    private Integer status;
+}

+ 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;
+}

+ 3 - 4
src/main/java/com/caimei365/user/service/CmProvidersService.java

@@ -1,6 +1,6 @@
 package com.caimei365.user.service;
 
-import com.caimei365.user.model.po.CmProviders;
+import com.caimei365.user.model.po.ServiceProviderModel;
 
 import java.util.List;
 
@@ -10,8 +10,7 @@ import java.util.List;
  * @author Kaick
  * @date 2023-12-14
  */
-public interface CmProvidersService
-{
+public interface CmProvidersService {
 
 
     /**
@@ -20,5 +19,5 @@ public interface CmProvidersService
      * @param cmProviders
      * @return
      */
-    List<CmProviders> getByCmProviders(CmProviders cmProviders);
+    List<ServiceProviderModel> getByCmProviders(ServiceProviderModel cmProviders);
 }

+ 36 - 10
src/main/java/com/caimei365/user/service/SellerService.java

@@ -3,10 +3,12 @@ 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;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 
@@ -30,8 +32,7 @@ public interface SellerService {
 
     /**
      * 功能描述: 机构活跃分析
-     * @auther: Kaick
-     * @date: 2023/8/30 16:54
+     *
      * @param serviceProviderId
      * @param status
      * @param type
@@ -40,11 +41,14 @@ public interface SellerService {
      * @param pageNum
      * @param pageSize
      * @return [serviceProviderId, status, type, name, userIdentity, pageNum, pageSize]
+     * @auther: Kaick
+     * @date: 2023/8/30 16:54
      */
     ResponseJson<PaginationVo<ClubVo>> getLivelyClubList(Integer serviceProviderId, Integer status, Integer type, String name, Integer userIdentity, Integer pageNum, Integer pageSize);
 
     /**
      * 获取相关咨询记录机构信息
+     *
      * @param spId
      * @param type
      * @param pageNum
@@ -55,19 +59,23 @@ public interface SellerService {
 
     /**
      * 机构所有的咨询记录
+     *
      * @param clubId
      * @return
      */
     ResponseJson<PaginationVo<RemarksVo>> getClubAllRemark(Integer clubId, String search, Integer pageNum, Integer pageSize);
+
     /**
      * 功能描述: 机构活跃分析比例
-     * @auther: Kaick
-     * @date: 2023/9/4 9:48
+     *
      * @param
      * @return []
+     * @auther: Kaick
+     * @date: 2023/9/4 9:48
      */
 
     ResponseJson<Map<String, Object>> getLivelyClub(Integer serviceProviderId);
+
     /**
      * 协销登录(手机号,密码)
      *
@@ -76,14 +84,16 @@ public interface SellerService {
      * @param unionId  微信unionId
      * @return UserLoginVo
      */
-    ResponseJson<UserLoginVo> passwordLogin(String mobile, String password, String unionId,Integer isUnion);
+    ResponseJson<UserLoginVo> passwordLogin(String mobile, String password, String unionId, Integer isUnion);
 
     /**
      * 采购员验证码登录 --组织
+     *
      * @param loginCodeDto
      * @return
      */
     ResponseJson<UserLoginVo> organizeCodeLogin(LoginCodeDto loginCodeDto);
+
     /**
      * 待注册机构列表
      *
@@ -124,23 +134,27 @@ public interface SellerService {
      * @param userId 协销用户id
      */
     ResponseJson<ServiceProviderPo> getSellerHome(Integer userId);
+
     /**
      * 功能描述: 更新协销信息
-     * @auther: Kaick
-     * @date: 2023/9/4 10:02
+     *
      * @param serviceProviderPo
      * @return [serviceProviderPo]
+     * @auther: Kaick
+     * @date: 2023/9/4 10:02
      */
 
     ResponseJson setSellerHome(ServiceProviderPo serviceProviderPo);
 
-    ResponseJson<List<CmBehaviorRecordVo>> getBehaviorRecordClub(Integer type,Integer spId,String accessTime);
-    ResponseJson<List<CmBehaviorRecordVo>> getBehaviorRecordClubFrom(Integer type,Integer spId, Integer clubId, String accessTime);
+    ResponseJson<List<CmBehaviorRecordVo>> getBehaviorRecordClub(Integer type, Integer spId, String accessTime);
+
+    ResponseJson<List<CmBehaviorRecordVo>> getBehaviorRecordClubFrom(Integer type, Integer spId, Integer clubId, String accessTime);
 
-    ResponseJson<List<ServiceProviderVo>> getServiceTeam(Integer spId,Integer status);
+    ResponseJson<List<ServiceProviderVo>> getServiceTeam(Integer spId, Integer status);
 
     /**
      * 机构重点访问页面
+     *
      * @param clubId
      * @return
      */
@@ -148,6 +162,7 @@ public interface SellerService {
 
     /**
      * 协销不活跃机构列表
+     *
      * @param serviceProviderId
      * @param pageNum
      * @param pageSize
@@ -155,4 +170,15 @@ public interface SellerService {
      */
     ResponseJson<PageInfo<ClubVo>> getUnActiveClubList(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);
+
+    ResponseJson<ProviderTaskVo> getProviderTaskDetail(Integer taskId, Integer serviceProviderId);
 }

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

@@ -76,7 +76,7 @@ public interface ShopService {
      * 供应商首页数据
      * @param shopId 供应商Id
      */
-    ResponseJson<ShopHomeVo> getShopHomeData(Integer shopId);
+    ResponseJson<ShopHomeVo> getShopHomeData(Integer shopId,Integer userId,Integer userIdentity);
 
     /**
      * 供应商主页列表配置列表

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

@@ -6,10 +6,12 @@ import com.caimei365.user.model.po.UserBeansHistoryPo;
 import com.caimei365.user.model.vo.ClubVo;
 import com.caimei365.user.model.vo.UserVo;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
@@ -37,6 +39,30 @@ public class AsyncService {
     private BaseMapper baseMapper;
     @Resource
     private WeChatService weChatService;
+    @Resource
+    private SellerMapper sellerMapper;
+
+    @Async("taskExecutor")
+    public void serviceTask(HttpServletRequest request, Integer serviceProviderId, Integer taskId, Integer userId) {
+        String ip = "";
+        String unknown = "unknown";
+        ip = request.getHeader("x-forwarded-for");
+        if (StringUtils.isBlank(ip)) {
+            ip = request.getHeader("X-Real-IP");
+        }
+        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
+            ip = request.getHeader("Proxy-Client-IP");
+        }
+
+        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
+            ip = request.getHeader("WL-Proxy-Client-IP");
+        }
+
+        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
+            ip = request.getRemoteAddr();
+        }
+        sellerMapper.insertClick(serviceProviderId, userId, taskId, ip);
+    }
 
     @Async("taskExecutor")
     public void loginUpdateBeans(Integer userId, Integer identity) {
@@ -111,6 +137,7 @@ public class AsyncService {
             weChatService.sendChoseServiceMessage(title, keyWord1, keyWord2, keyWord3, keyWord4, remark, path, openId, templateId);
         }
     }
+
     @Async("taskExecutor")
     public void updateTourist(Integer userId, String touristId) {
         loginMapper.updateTourist(userId, touristId);

+ 7 - 9
src/main/java/com/caimei365/user/service/impl/CmProvidersServiceImpl.java

@@ -2,8 +2,8 @@ package com.caimei365.user.service.impl;
 
 import com.caimei365.user.mapper.BaseMapper;
 import com.caimei365.user.mapper.CmProvidersMapper;
-import com.caimei365.user.model.po.CmProviders;
 import com.caimei365.user.model.po.CmRelatedImage;
+import com.caimei365.user.model.po.ServiceProviderModel;
 import com.caimei365.user.service.CmProvidersService;
 import org.springframework.stereotype.Service;
 
@@ -17,8 +17,7 @@ import java.util.List;
  * @date 2023-12-14
  */
 @Service
-public class CmProvidersServiceImpl implements CmProvidersService
-{
+public class CmProvidersServiceImpl implements CmProvidersService {
     @Resource
     private CmProvidersMapper cmProvidersMapper;
     @Resource
@@ -31,12 +30,11 @@ public class CmProvidersServiceImpl implements CmProvidersService
      * @return
      */
     @Override
-    public List<CmProviders> getByCmProviders(CmProviders cmProviders)
-    {
-        List<CmProviders> byCmProviders = cmProvidersMapper.getCmProvidersList(cmProviders);
-        if(null!=byCmProviders){
-            byCmProviders.forEach(s->{
-                s.setTextRelateds(baseMapper.getRelatedImageList(new CmRelatedImage().setType("2").setAuthorId(s.getId())));
+    public List<ServiceProviderModel> getByCmProviders(ServiceProviderModel cmProviders) {
+        List<ServiceProviderModel> byCmProviders = cmProvidersMapper.getCmProvidersList(cmProviders);
+        if (null != byCmProviders) {
+            byCmProviders.forEach(s -> {
+                s.setTextRelateds(baseMapper.getRelatedImageList(new CmRelatedImage().setType("2").setAuthorId(s.getServiceProviderId().toString())));
             });
         }
         return byCmProviders;

+ 59 - 0
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.*;
@@ -21,8 +22,10 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -57,6 +60,8 @@ public class SellerServiceImpl implements SellerService {
     private LoginMapper loginMapper;
     @Resource
     private ClubMapper clubMapper;
+    @Resource
+    private AsyncService asyncService;
 
     /**
      * 协销机构列表
@@ -676,6 +681,60 @@ public class SellerServiceImpl implements SellerService {
         return ResponseJson.success(page);
     }
 
+    @Override
+    public ResponseJson<PageInfo<ProviderTaskVo>> getTaskList(Integer serviceProviderId, Integer taskType, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<ProviderTaskVo> tasks = sellerMapper.getTaskList(serviceProviderId, taskType);
+        PageInfo<ProviderTaskVo> page = new PageInfo<>(tasks);
+        return ResponseJson.success(page);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ResponseJson receiveTask(Integer serviceProviderId, Integer taskId) {
+        sellerMapper.receiveTask(serviceProviderId, taskId);
+        return ResponseJson.success();
+    }
+
+    @Override
+    public ResponseJson<ProviderTaskVo> getTaskDetail(HttpServletRequest request, Integer taskId, Integer serviceProviderId, Integer userId) {
+        asyncService.serviceTask(request, serviceProviderId, taskId, userId);
+        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.deleteTaskImages(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);
+    }
+
+    @Override
+    public ResponseJson<ProviderTaskVo> getProviderTaskDetail(Integer taskId, Integer serviceProviderId) {
+        ProviderTaskVo taskDetail = sellerMapper.getProviderTaskDetail(taskId, serviceProviderId);
+        return ResponseJson.success(taskDetail);
+    }
+
     /**
      * 机构编号
      *

+ 68 - 34
src/main/java/com/caimei365/user/service/impl/ShopServiceImpl.java

@@ -99,7 +99,7 @@ public class ShopServiceImpl implements ShopService {
                 // 供应商商品上架平台信息
                 List<String> shopProductList = loginMapper.getShopProductGroudMall(userLoginVo.getShopId());
                 if (null != shopProductList) {
-                    for(String product : shopProductList ) {
+                    for (String product : shopProductList) {
                         if (StringUtils.isNotBlank(product)) {
                             // 商品上架平台是否在联合丽格上架
                             if (product.contains("4")) {
@@ -304,7 +304,32 @@ public class ShopServiceImpl implements ShopService {
      * @param shopId 供应商Id
      */
     @Override
-    public ResponseJson<ShopHomeVo> getShopHomeData(Integer shopId) {
+    public ResponseJson<ShopHomeVo> getShopHomeData(Integer shopId, Integer userId, Integer userIdentity) {
+        /** 薇旖美特殊需求,非福建服务商名下的机构无法查看其主页
+         *  1.供应商自己可以看
+         *  2.薇旖美服务商+名下协销和机构
+         */
+//        if (shopId == 10131) {
+//            boolean b = true;
+//            // 协销
+//            if (1 == userIdentity) {
+//
+//            }
+//            // 供应商
+//            else if (3 == userIdentity) {
+//                b = 22965 != userId;
+//            }
+//            // 机构
+//            else if (2 == userIdentity || 4 == userIdentity) {
+//                // 根据服务商(协销组长userId)查询名下小组内协销匹配机构
+//                Integer spId = shopMapper.findSpId(userId);
+//                spId = null == spId ? 0 : spId;
+//
+//            }
+//            if(b){
+//                return ResponseJson.error(-2, "无权限");
+//            }
+//        }
         ShopHomeVo supplier = shopMapper.getShopHomeData(shopId);
         if (supplier != null && supplier.getBusinessScope() != null) {
             String[] businessScope = supplier.getBusinessScope().split("/");
@@ -375,7 +400,7 @@ public class ShopServiceImpl implements ShopService {
         CmShopCategoryVo shopCategoryById = shopMapper.getShopCategoryById(id);
         List<ProductItemVo> categoryProductList = shopMapper.getCategoryProductById(id);
         categoryProductList.forEach(product -> {
-            product.setImage(ImageUtils.getImageURL("product", product.getImage(), 0 , wwwDomain));
+            product.setImage(ImageUtils.getImageURL("product", product.getImage(), 0, wwwDomain));
         });
         shopCategoryById.setProducts(categoryProductList);
         return ResponseJson.success(shopCategoryById);
@@ -396,12 +421,12 @@ public class ShopServiceImpl implements ShopService {
         PageHelper.startPage(pageNum, pageSize);
         List<ProductItemVo> shopProductList = shopMapper.getShopProductList(shopId, name);
         // 供应商已选择商品, 同类别不可重复选择
-        List<Integer> categoryProductIdList =  new ArrayList<>();
+        List<Integer> categoryProductIdList = new ArrayList<>();
         if (null != categoryId) {
             categoryProductIdList = shopMapper.getCategoryProductIdList(shopId, categoryId);
         }
         for (ProductItemVo product : shopProductList) {
-            product.setImage(ImageUtils.getImageURL("product", product.getImage(), 0 , wwwDomain));
+            product.setImage(ImageUtils.getImageURL("product", product.getImage(), 0, wwwDomain));
             if (null != categoryProductIdList && categoryProductIdList.contains(product.getProductId())) {
                 product.setFlag(false);
             } else {
@@ -446,7 +471,7 @@ public class ShopServiceImpl implements ShopService {
             cmShopCategoryVo.setCategory(category);
             cmShopCategoryVo.setSort(sort);
             cmShopCategoryVo.setProductIds(productIds);
-            if(null == id) {
+            if (null == id) {
                 // 新增
                 shopMapper.insertCategory(cmShopCategoryVo);
             } else {
@@ -477,7 +502,7 @@ public class ShopServiceImpl implements ShopService {
                     }
                 }
                 // 排除不在该商品类别的商品
-                if(productIdList.size() > 0) {
+                if (productIdList.size() > 0) {
                     shopMapper.updateCategoryProduct(categoryId, productIdList);
                 }
             }
@@ -503,7 +528,7 @@ public class ShopServiceImpl implements ShopService {
      * 供应商首页-轮播图片
      *
      * @param shopId 供应商Id
-     * @param title 标题
+     * @param title  标题
      */
     @Override
     public ResponseJson<PaginationVo<ShopBannerVo>> getShopHomeImages(Integer shopId, String title, int pageNum, int pageSize) {
@@ -813,15 +838,17 @@ public class ShopServiceImpl implements ShopService {
         infoTypes(articleTypeList);
         return ResponseJson.success(articleTypeList);
     }
-    public void infoTypes(List<ArticleTypeVo> articleTypes ) {
-        articleTypes.forEach(type->{
+
+    public void infoTypes(List<ArticleTypeVo> articleTypes) {
+        articleTypes.forEach(type -> {
             List<ArticleTypeVo> articleTypes1 = articleMapper.getArticleTypeList(type.getTypeId().toString());
-            if(articleTypes1.size()>0){
+            if (articleTypes1.size() > 0) {
                 type.setArticleTypes(articleTypes1);
                 infoTypes(articleTypes1);
             }
         });
     }
+
     @Override
     public ResponseJson<Void> deleteArticle(Integer articleId) {
         articleMapper.deleteArticle(articleId);
@@ -1087,7 +1114,7 @@ public class ShopServiceImpl implements ShopService {
         // 获取报表对应供应商数据
         CmMarketShopVo shopInfo = shopMapper.getShopInfoById(shopId, type, marketReportId);
         List<Integer> marketReportIds = shopMapper.getMarketReportIds(shopInfo.getId(), type, marketReportId, startTime, endTime);
-        log.info("marketReportIds===="+marketReportIds);
+        log.info("marketReportIds====" + marketReportIds);
         // 获取阶段描述
         List<StageVo> summarize = new ArrayList<>();
         List<StageVo> summarize1 = new ArrayList<>();
@@ -1131,11 +1158,11 @@ public class ShopServiceImpl implements ShopService {
             }
             try {
                 if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
-                    shopInfo.setChartTitle("("+startTime.replaceAll("-", "/") + "-" + endTime.replaceAll("-", "/")+")");
+                    shopInfo.setChartTitle("(" + startTime.replaceAll("-", "/") + "-" + endTime.replaceAll("-", "/") + ")");
                 } else if (1 == type && null != marketReportId) {
-                    shopInfo.setChartTitle("("+dateFormat.format(dateFormat.parse(shopInfo.getReportDate())).replaceAll("-", "/")+")");
+                    shopInfo.setChartTitle("(" + dateFormat.format(dateFormat.parse(shopInfo.getReportDate())).replaceAll("-", "/") + ")");
                 } else {
-                    shopInfo.setChartTitle("("+ (StringUtils.isNotBlank(shopInfo.getEndDate()) ? dateFormat.format(dateFormat.parse(shopInfo.getEndDate())).replaceAll("-", "/") : "") + ")");
+                    shopInfo.setChartTitle("(" + (StringUtils.isNotBlank(shopInfo.getEndDate()) ? dateFormat.format(dateFormat.parse(shopInfo.getEndDate())).replaceAll("-", "/") : "") + ")");
                 }
             } catch (ParseException e) {
                 e.printStackTrace();
@@ -1220,7 +1247,11 @@ public class ShopServiceImpl implements ShopService {
         // 获取点击量数据
         name = new ArrayList<>();
         value = new ArrayList<>();
-        generalNumber = 0; microBlog = 0; redBookNumber = 0; otherNumber = 0;pointSingNumber = 0;
+        generalNumber = 0;
+        microBlog = 0;
+        redBookNumber = 0;
+        otherNumber = 0;
+        pointSingNumber = 0;
         if (null != marketReportIds && marketReportIds.size() > 0) {
             List<ReadVolumeVo> marketReadVolume = shopMapper.getMarketReadVolume(marketReportIds);
             if (null != marketReadVolume && marketReadVolume.size() > 0) {
@@ -1395,22 +1426,22 @@ public class ShopServiceImpl implements ShopService {
             if (StringUtils.isBlank(startTime)) {
                 startTime = monthFirstDay(shopInfo.getReportDate());
             }
-            if(StringUtils.isBlank(endTime)) {
+            if (StringUtils.isBlank(endTime)) {
                 endTime = monthLastDay(shopInfo.getReportDate());
             }
-        } else{
+        } else {
             // 供应商主页进入
             if (StringUtils.isBlank(startTime)) {
                 startTime = shopInfo.getStartDate();
             }
-            if(StringUtils.isBlank(endTime)) {
+            if (StringUtils.isBlank(endTime)) {
                 endTime = shopInfo.getEndDate();
             }
 
         }
-        log.info("startTime===="+startTime);
-        log.info("endTime===="+endTime);
-        log.info("shopKeyword===="+shopKeyword);
+        log.info("startTime====" + startTime);
+        log.info("endTime====" + endTime);
+        log.info("shopKeyword====" + shopKeyword);
         if (null != shopKeyword && shopKeyword.size() > 0) {
             // 访问供应商用户对于所在地区
             List<String> region = shopMapper.getRegion(startTime, endTime, shopKeyword);
@@ -1432,7 +1463,7 @@ public class ShopServiceImpl implements ShopService {
             set = new HashSet<>();
             List<ReturnEntityVo> userIdentity1 = shopMapper.getUserIdentity(startTime, endTime, shopKeyword);
             if (null != userIdentity1 && userIdentity1.size() > 0) {
-                userIdentity1.removeIf( user -> StringUtils.isBlank(user.getName()));
+                userIdentity1.removeIf(user -> StringUtils.isBlank(user.getName()));
                 // 所有值之和
                 AtomicInteger maxUserValue = new AtomicInteger(0);
                 for (ReturnEntityVo returnEntityVo : userIdentity1) {
@@ -1446,19 +1477,19 @@ public class ShopServiceImpl implements ShopService {
                         }
                     }
                 }
-                userIdentity.forEach( user -> maxUserValue.set(MathUtil.add(Integer.parseInt(user.getValue()), maxUserValue.get()).intValue()));
+                userIdentity.forEach(user -> maxUserValue.set(MathUtil.add(Integer.parseInt(user.getValue()), maxUserValue.get()).intValue()));
                 userIdentity.forEach(returnUserIdentity -> {
-                    log.info("returnUserIdentity.getValue()==="+returnUserIdentity.getValue());
-                    log.info("maxUserValue.get()==="+maxUserValue.get());
+                    log.info("returnUserIdentity.getValue()===" + returnUserIdentity.getValue());
+                    log.info("maxUserValue.get()===" + maxUserValue.get());
                     String values = MathUtil.mul(MathUtil.div(returnUserIdentity.getValue(), maxUserValue.get(), 2), 100).toString();
-                    log.info("values==="+values);
+                    log.info("values===" + values);
                     returnUserIdentity.setValue(values);
                 });
             }
             set = new HashSet<>();
             List<ReturnEntityVo> clubType1 = shopMapper.getClubType(startTime, endTime, shopKeyword);
             if (null != clubType1 && clubType1.size() > 0) {
-                clubType1.removeIf( club -> StringUtils.isBlank(club.getName()));
+                clubType1.removeIf(club -> StringUtils.isBlank(club.getName()));
                 // 所有值之和
                 AtomicInteger maxClubTypeValue = new AtomicInteger(0);
                 for (ReturnEntityVo returnEntityVo : clubType1) {
@@ -1472,12 +1503,12 @@ public class ShopServiceImpl implements ShopService {
                         }
                     }
                 }
-                clubType.forEach( club -> maxClubTypeValue.set(MathUtil.add(Integer.parseInt(club.getValue()), maxClubTypeValue.get()).intValue()));
+                clubType.forEach(club -> maxClubTypeValue.set(MathUtil.add(Integer.parseInt(club.getValue()), maxClubTypeValue.get()).intValue()));
                 clubType.forEach(returnUserIdentity -> {
-                    log.info("returnUserIdentity.getValue()==="+returnUserIdentity.getValue());
-                    log.info("maxClubTypeValue.get()==="+maxClubTypeValue.get());
+                    log.info("returnUserIdentity.getValue()===" + returnUserIdentity.getValue());
+                    log.info("maxClubTypeValue.get()===" + maxClubTypeValue.get());
                     String values = MathUtil.mul(MathUtil.div(returnUserIdentity.getValue(), maxClubTypeValue.get(), 2), 100).toString();
-                    log.info("values==="+values);
+                    log.info("values===" + values);
                     returnUserIdentity.setValue(values);
                 });
             }
@@ -1506,7 +1537,8 @@ public class ShopServiceImpl implements ShopService {
 
     /**
      * 获取该月份首日日期
-     * @param reportDate    2023-12
+     *
+     * @param reportDate 2023-12
      * @return
      */
     public String monthFirstDay(String reportDate) {
@@ -1520,7 +1552,8 @@ public class ShopServiceImpl implements ShopService {
 
     /**
      * 获取该月份最后一天日期
-     * @param reportDate    2023-12
+     *
+     * @param reportDate 2023-12
      * @return
      */
     public String monthLastDay(String reportDate) {
@@ -1536,6 +1569,7 @@ public class ShopServiceImpl implements ShopService {
     /**
      * 不包含的月份
      * todo 暂定5年
+     *
      * @param marketReportDataList
      * @return
      */

+ 4 - 4
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">
@@ -971,7 +971,7 @@
         ORDER BY ccr.addtime DESC
     </select>
     <select id="findLeaderId" resultType="java.lang.Integer">
-        SELECT leaderId
+        SELECT csr.leaderId
         FROM cm_serviceteam_role csr
                  LEFT JOIN serviceprovider s ON s.serviceProviderId = csr.leaderId
         WHERE s.serviceProviderID = #{serviceProviderId}

+ 86 - 207
src/main/resources/mapper/CmProvidersMapper.xml

@@ -4,223 +4,102 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei365.user.mapper.CmProvidersMapper">
 
-    <resultMap type="CmProviders" id="CmProvidersResult">
-        <result property="id"    column="id"    />
-        <result property="userId"    column="userId"    />
-        <result property="name"    column="name"    />
-        <result property="serviceLevel"    column="serviceLevel"    />
-        <result property="serviceCategory"    column="serviceCategory"    />
-        <result property="address"    column="address"    />
-        <result property="linkMan"    column="linkMan"    />
-        <result property="mobile"    column="mobile"    />
-        <result property="status"    column="status"    />
-        <result property="text"    column="text"    />
-        <result property="qrCodeImage"    column="qrCodeImage"    />
-        <result property="qualificationImage"    column="qualificationImage"    />
-        <result property="qualificationId"    column="qualificationId"    />
-        <result property="createBy"    column="createBy"    />
-        <result property="updateTime"    column="updateTime"    />
-        <result property="createTime"    column="createTime"    />
-    </resultMap>
-
-    <sql id="selectCmProvidersVo">
+    <select id="getByCmProviders" parameterType="com.caimei365.user.model.po.ServiceProviderModel" resultType="com.caimei365.user.model.po.ServiceProviderModel">
         select
-            cm_providers.id,
-            cm_providers.userId,
-            cm_providers.name,
-            cm_providers.serviceLevel,
-            cm_providers.serviceCategory,
-            cm_providers.address,
-            cm_providers.linkMan,
-            cm_providers.mobile,
-            cm_providers.status,
-            cm_providers.text,
-            cm_providers.qrCodeImage,
-            cm_providers.qualificationImage,
-            cm_providers.qualificationId,
-            cm_providers.createBy,
-            cm_providers.updateTime,
-            cm_providers.createTime
-    </sql>
-
-    <select id="getByCmProviders" parameterType="CmProviders" resultMap="CmProvidersResult">
-        <include refid="selectCmProvidersVo"/>
-        from cm_providers AS cm_providers
+        serviceProviderId,
+        name,
+        serviceLevel,
+        serviceCategory,
+        status,
+        userId,
+        address,
+        linkMan,
+        contractMobile as mobile,
+        text,
+        brandName,
+        qrCodeImage,
+        qualificationImage,
+        qualificationId,
+        createBy,
+        addTime,
+        splitCode
+        from serviceprovider
         <where>
-            <if test="id != null  and id != ''"> and cm_providers.id = #{id}</if>
-            <if test="userId != null "> and cm_providers.userId = #{userId}</if>
-            <if test="name != null  and name != ''"> and cm_providers.name like concat('%', #{name}, '%')</if>
-            <if test="serviceLevel != null "> and cm_providers.serviceLevel = #{serviceLevel}</if>
-            <if test="serviceCategory != null "> and cm_providers.serviceCategory = #{serviceCategory}</if>
-            <if test="address != null  and address != ''"> and cm_providers.address = #{address}</if>
-            <if test="linkMan != null  and linkMan != ''"> and cm_providers.linkMan = #{linkMan}</if>
-            <if test="mobile != null  and mobile != ''"> and cm_providers.mobile = #{mobile}</if>
-            <if test="status != null "> and cm_providers.status = #{status}</if>
-            <if test="text != null  and text != ''"> and cm_providers.text = #{text}</if>
-            <if test="qrCodeImage != null  and qrCodeImage != ''"> and cm_providers.qrCodeImage = #{qrCodeImage}</if>
-            <if test="qualificationImage != null  and qualificationImage != ''"> and cm_providers.qualificationImage = #{qualificationImage}</if>
-            <if test="qualificationId != null  and qualificationId != ''"> and cm_providers.qualificationId = #{qualificationId}</if>
+            <if test="serviceProviderId != null and serviceProviderId != ''">
+                and serviceProviderId = #{serviceProviderId}
+            </if>
+            <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>
+            <if test="serviceLevel != null ">and serviceLevel = #{serviceLevel}</if>
+            <if test="serviceCategory != null ">and cserviceCategory = #{serviceCategory}</if>
+            <if test="status != null ">and status = #{status}</if>
+            <if test="userId != null ">and userId = #{userId}</if>
+            <if test="address != null  and address != ''">and address = #{address}</if>
+            <if test="linkMan != null  and linkMan != ''">andlinkMan = #{linkMan}</if>
+            <if test="mobile != null  and mobile != ''">and contractMobile = #{mobile}</if>
         </where>
-        group by cm_providers.id
+        group by serviceProviderId
+        order by addTime desc
         limit 0,1
     </select>
 
-    <select id="getCmProvidersList" parameterType="CmProviders" resultMap="CmProvidersResult">
-        <include refid="selectCmProvidersVo"/>
-        from cm_providers AS cm_providers
-        <where>
-            <if test="id != null  and id != ''"> and cm_providers.id = #{id}</if>
-            <if test="userId != null "> and cm_providers.userId = #{userId}</if>
-            <if test="name != null  and name != ''"> and cm_providers.name like concat('%', #{name}, '%')</if>
-            <if test="serviceLevel != null "> and cm_providers.serviceLevel = #{serviceLevel}</if>
-            <if test="serviceCategory != null "> and cm_providers.serviceCategory = #{serviceCategory}</if>
-            <if test="address != null  and address != ''"> and cm_providers.address = #{address}</if>
-            <if test="linkMan != null  and linkMan != ''"> and cm_providers.linkMan = #{linkMan}</if>
-            <if test="mobile != null  and mobile != ''"> and cm_providers.mobile = #{mobile}</if>
-            <if test="status != null "> and cm_providers.status = #{status}</if>
-            <if test="text != null  and text != ''"> and cm_providers.text = #{text}</if>
-            <if test="qrCodeImage != null  and qrCodeImage != ''"> and cm_providers.qrCodeImage = #{qrCodeImage}</if>
-            <if test="qualificationImage != null  and qualificationImage != ''"> and cm_providers.qualificationImage = #{qualificationImage}</if>
-            <if test="qualificationId != null  and qualificationId != ''"> and cm_providers.qualificationId = #{qualificationId}</if>
-        </where>
-        group by cm_providers.id
-        order by cm_providers.createTime desc
-    </select>
-
-    <select id="getCount" parameterType="CmProviders" resultType="int">
-        select count(1)
-        from cm_providers AS cm_providers
+    <select id="getCmProvidersList" parameterType="com.caimei365.user.model.po.ServiceProviderModel" resultType="com.caimei365.user.model.po.ServiceProviderModel">
+        select
+        serviceProviderId,
+        name,
+        serviceLevel,
+        serviceCategory,
+        status,
+        userId,
+        address,
+        linkMan,
+        contractMobile as mobile,
+        text,
+        brandName,
+        qrCodeImage,
+        qualificationImage,
+        qualificationId,
+        createBy,
+        addTime,
+        splitCode
+        from serviceprovider
         <where>
-            <if test="id != null  and id != ''"> and cm_providers.id = #{id}</if>
-            <if test="userId != null "> and cm_providers.userId = #{userId}</if>
-            <if test="name != null  and name != ''"> and cm_providers.name like concat('%', #{name}, '%')</if>
-            <if test="serviceLevel != null "> and cm_providers.serviceLevel = #{serviceLevel}</if>
-            <if test="serviceCategory != null "> and cm_providers.serviceCategory = #{serviceCategory}</if>
-            <if test="address != null  and address != ''"> and cm_providers.address = #{address}</if>
-            <if test="linkMan != null  and linkMan != ''"> and cm_providers.linkMan = #{linkMan}</if>
-            <if test="mobile != null  and mobile != ''"> and cm_providers.mobile = #{mobile}</if>
-            <if test="status != null "> and cm_providers.status = #{status}</if>
-            <if test="text != null  and text != ''"> and cm_providers.text = #{text}</if>
-            <if test="qrCodeImage != null  and qrCodeImage != ''"> and cm_providers.qrCodeImage = #{qrCodeImage}</if>
-            <if test="qualificationImage != null  and qualificationImage != ''"> and cm_providers.qualificationImage = #{qualificationImage}</if>
-            <if test="qualificationId != null  and qualificationId != ''"> and cm_providers.qualificationId = #{qualificationId}</if>
+            <if test="serviceProviderId != null and serviceProviderId != ''">
+                and serviceProviderId = #{serviceProviderId}
+            </if>
+            <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>
+            <if test="serviceLevel != null ">and serviceLevel = #{serviceLevel}</if>
+            <if test="serviceCategory != null ">and cserviceCategory = #{serviceCategory}</if>
+            <if test="status != null ">and status = #{status}</if>
+            <if test="userId != null ">and userId = #{userId}</if>
+            <if test="address != null  and address != ''">and address = #{address}</if>
+            <if test="linkMan != null  and linkMan != ''">andlinkMan = #{linkMan}</if>
+            <if test="mobile != null  and mobile != ''">and contractMobile = #{mobile}</if>
         </where>
+        group by serviceProviderId
+        order by addTime desc
     </select>
 
-    <select id="getCmProvidersById" parameterType="String" resultMap="CmProvidersResult">
-        <include refid="selectCmProvidersVo"/>
-        from cm_providers AS cm_providers
-        where  cm_providers.id = #{id}
-    </select>
-
-
-    <select id="getById" parameterType="CmProviders" resultType="String">
-        select id
-        from cm_providers AS cm_providers
-        <where>
-            <if test="id != null  and id != ''"> and cm_providers.id = #{id}</if>
-            <if test="userId != null "> and cm_providers.userId = #{userId}</if>
-            <if test="name != null  and name != ''"> and cm_providers.name like concat('%', #{name}, '%')</if>
-            <if test="serviceLevel != null "> and cm_providers.serviceLevel = #{serviceLevel}</if>
-            <if test="serviceCategory != null "> and cm_providers.serviceCategory = #{serviceCategory}</if>
-            <if test="address != null  and address != ''"> and cm_providers.address = #{address}</if>
-            <if test="linkMan != null  and linkMan != ''"> and cm_providers.linkMan = #{linkMan}</if>
-            <if test="mobile != null  and mobile != ''"> and cm_providers.mobile = #{mobile}</if>
-            <if test="status != null "> and cm_providers.status = #{status}</if>
-            <if test="text != null  and text != ''"> and cm_providers.text = #{text}</if>
-            <if test="qrCodeImage != null  and qrCodeImage != ''"> and cm_providers.qrCodeImage = #{qrCodeImage}</if>
-            <if test="qualificationImage != null  and qualificationImage != ''"> and cm_providers.qualificationImage = #{qualificationImage}</if>
-            <if test="qualificationId != null  and qualificationId != ''"> and cm_providers.qualificationId = #{qualificationId}</if>
-        </where>
-        group by cm_providers.id
-        limit 0,1
+    <select id="getCmProvidersById" parameterType="String" resultType="com.caimei365.user.model.po.ServiceProviderModel">
+        select
+            serviceProviderId,
+            name,
+            serviceLevel,
+            serviceCategory,
+            status,
+            userId,
+            address,
+            linkMan,
+            contractMobile as mobile,
+            text,
+            brandName,
+            qrCodeImage,
+            qualificationImage,
+            qualificationId,
+            createBy,
+            addTime,
+            splitCode
+        from serviceprovider
+        where  serviceProviderId = #{id}
     </select>
 
-    <insert id="addCmProviders" parameterType="CmProviders" useGeneratedKeys="true" keyProperty="id">
-        insert into cm_providers
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="id != null and id != ''">id,</if>
-            <if test="userId != null">userId,</if>
-            <if test="name != null and name != ''">name,</if>
-            <if test="serviceLevel != null">serviceLevel,</if>
-            <if test="serviceCategory != null">serviceCategory,</if>
-            <if test="address != null and address != ''">address,</if>
-            <if test="linkMan != null and linkMan != ''">linkMan,</if>
-            <if test="mobile != null and mobile != ''">mobile,</if>
-            <if test="status != null">status,</if>
-            <if test="text != null and text != ''">text,</if>
-            <if test="qrCodeImage != null and qrCodeImage != ''">qrCodeImage,</if>
-            <if test="qualificationImage != null and qualificationImage != ''">qualificationImage,</if>
-            <if test="qualificationId != null and qualificationId != ''">qualificationId,</if>
-            <if test="createBy != null and createBy != ''">createBy,</if>
-            <if test="updateTime != null">updateTime,</if>
-            <if test="createTime != null">createTime,</if>
-        </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="id != null and id != ''">#{id},</if>
-            <if test="userId != null">#{userId},</if>
-            <if test="name != null and name != ''">#{name},</if>
-            <if test="serviceLevel != null">#{serviceLevel},</if>
-            <if test="serviceCategory != null">#{serviceCategory},</if>
-            <if test="address != null and address != ''">#{address},</if>
-            <if test="linkMan != null and linkMan != ''">#{linkMan},</if>
-            <if test="mobile != null and mobile != ''">#{mobile},</if>
-            <if test="status != null">#{status},</if>
-            <if test="text != null and text != ''">#{text},</if>
-            <if test="qrCodeImage != null and qrCodeImage != ''">#{qrCodeImage},</if>
-            <if test="qualificationImage != null and qualificationImage != ''">#{qualificationImage},</if>
-            <if test="qualificationId != null and qualificationId != ''">#{qualificationId},</if>
-            <if test="createBy != null and createBy != ''">#{createBy},</if>
-            <if test="updateTime != null">#{updateTime},</if>
-            <if test="createTime != null">#{createTime},</if>
-        </trim>
-    </insert>
-
-    <update id="updateCmProviders" parameterType="CmProviders">
-        update cm_providers
-        <trim prefix="SET" suffixOverrides=",">
-            <if test="userId != null">userId = #{userId},</if>
-            <if test="name != null and name != ''">name = #{name},</if>
-            <if test="serviceLevel != null">serviceLevel = #{serviceLevel},</if>
-            <if test="serviceCategory != null">serviceCategory = #{serviceCategory},</if>
-            <if test="address != null and address != ''">address = #{address},</if>
-            <if test="linkMan != null and linkMan != ''">linkMan = #{linkMan},</if>
-            <if test="mobile != null and mobile != ''">mobile = #{mobile},</if>
-            <if test="status != null">status = #{status},</if>
-            <if test="text != null and text != ''">text = #{text},</if>
-            <if test="qrCodeImage != null and qrCodeImage != ''">qrCodeImage = #{qrCodeImage},</if>
-            <if test="qualificationImage != null and qualificationImage != ''">qualificationImage = #{qualificationImage},</if>
-            <if test="qualificationId != null and qualificationId != ''">qualificationId = #{qualificationId},</if>
-            <if test="createBy != null and createBy != ''">createBy = #{createBy},</if>
-            <if test="updateTime != null">updateTime = #{updateTime},</if>
-            <if test="createTime != null">createTime = #{createTime},</if>
-        </trim>
-        where id = #{id}
-    </update>
-
-    <delete id="delCmProvidersById" parameterType="String">
-        delete
-        from cm_providers where id = #{id}
-    </delete>
-
-    <delete id="delCmProviders" parameterType="CmProviders">
-        delete
-        from cm_providers AS cm_providers
-        <where>
-            <if test="id != null  and id != ''"> and cm_providers.id = #{id}</if>
-            <if test="userId != null "> and cm_providers.userId = #{userId}</if>
-            <if test="name != null  and name != ''"> and cm_providers.name like concat('%', #{name}, '%')</if>
-            <if test="serviceLevel != null "> and cm_providers.serviceLevel = #{serviceLevel}</if>
-            <if test="serviceCategory != null "> and cm_providers.serviceCategory = #{serviceCategory}</if>
-            <if test="address != null  and address != ''"> and cm_providers.address = #{address}</if>
-            <if test="linkMan != null  and linkMan != ''"> and cm_providers.linkMan = #{linkMan}</if>
-            <if test="mobile != null  and mobile != ''"> and cm_providers.mobile = #{mobile}</if>
-            <if test="status != null "> and cm_providers.status = #{status}</if>
-            <if test="text != null  and text != ''"> and cm_providers.text = #{text}</if>
-            <if test="qrCodeImage != null  and qrCodeImage != ''"> and cm_providers.qrCodeImage = #{qrCodeImage}</if>
-            <if test="qualificationImage != null  and qualificationImage != ''"> and cm_providers.qualificationImage = #{qualificationImage}</if>
-            <if test="qualificationId != null  and qualificationId != ''"> and cm_providers.qualificationId = #{qualificationId}</if>
-        </where>
-    </delete>
-
 </mapper>

+ 1 - 1
src/main/resources/mapper/LoginMapper.xml

@@ -184,7 +184,7 @@
                  left join user u on s.userID = u.userID
         where s.openid = #{openId}
           and s.organizeId = #{organizeId}
-          and u.validFlag = 1
+          and s.status = 90
         limit 1
     </select>
     <update id="updateUserInfo">

+ 361 - 234
src/main/resources/mapper/SellerMapper.xml

@@ -1,20 +1,38 @@
 <?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.caimei365.user.mapper.SellerMapper">
+    <insert id="insertClick">
+        insert into provider_task_click(serviceProviderId, taskId, clickTime, userId, ip)
+            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,
-               u.shopID         as shopId,
-               u.userName       as userName,
-               u.name           as name,
-               u.mobile         as mobile,
-               u.bindMobile     as bindMobile,
-               u.email          as email,
-               u.guideFlag      as guideFlag,
-               u.userIdentity   as userIdentity,
-               u.serviceProviderID as serviceProviderId,
+        select u.userID                as userId,
+               u.clubID                as clubId,
+               u.shopID                as shopId,
+               u.userName              as userName,
+               u.name                  as name,
+               u.mobile                as mobile,
+               u.bindMobile            as bindMobile,
+               u.email                 as email,
+               u.guideFlag             as guideFlag,
+               u.userIdentity          as userIdentity,
+               u.serviceProviderID     as serviceProviderId,
                u.serviceProviderStatus as serviceStatus,
-               u.password       as password
+               u.password              as password
         from user u
         where u.mobile = #{mobile}
           and u.userIdentity = 1
@@ -32,7 +50,7 @@
         </trim>
         where userID = #{userId}
     </update>
-    <update id="setSellerUserHome" >
+    <update id="setSellerUserHome">
         update user
         <trim prefix="SET" suffixOverrides=",">
             <if test="image != null and image != ''">image = #{image},</if>
@@ -97,12 +115,33 @@
         WHERE `id` = #{id}
     </update>
 
+    <update id="receiveTask">
+        update provider_task_role
+        set receiveFlag = 1,
+            receiveTime = now()
+        where serviceProviderId = #{serviceProviderId}
+          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`
         WHERE `id` = #{id}
     </delete>
 
+    <delete id="deleteTaskImages">
+        DELETE
+        FROM provider_task_audit_image
+        WHERE auditId IN (SELECT id FROM provider_task_audit WHERE taskId = #{taskId} AND serviceProviderId = #{serviceProviderId})
+    </delete>
+
     <select id="findOrderNum" resultType="integer">
         SELECT
         COUNT(*)
@@ -117,7 +156,7 @@
     </select>
 
     <select id="findClubs" resultType="com.caimei365.user.model.vo.ClubVo">
-        select  c.clubID as clubId, c.userID as userId, c.name, c.sname as shortName, c.contractMobile,
+        select c.clubID as clubId, c.userID as userId, c.name, c.sname as shortName, c.contractMobile,
         c.contractEmail as contractEmail,
         c.contractPhone, c.linkMan, c.provinceID as proviceId, c.cityID as cityId, c.townID as townId,
         c.address, c.headpic as shopPhoto, c.businessLicenseImage as businessLicense, c.socialCreditCode,
@@ -132,11 +171,14 @@
         from club c
         left join user u on c.userID = u.userID
         LEFT JOIN record_link r ON r.`clubId`=c.`clubID`
-        LEFT JOIN (SELECT userId, activeStatus, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) coas ON coas.userId = c.userId
-        LEFT JOIN (SELECT userId, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) covs ON covs.userID = c.userID
+        LEFT JOIN (SELECT userId, activeStatus, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1)
+        coas ON coas.userId = c.userId
+        LEFT JOIN (SELECT userId, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) covs ON
+        covs.userID = c.userID
         LEFT JOIN serviceprovider sp ON c.spID = sp.serviceProviderID
         LEFT JOIN cm_provider_record cpr ON cpr.spID = sp.serviceProviderID and cpr.clubId = c.clubId
-        LEFT JOIN (SELECT DISTINCT clubID, checkTime FROM clubchangesprecord WHERE checkStatus = 1 GROUP BY clubID ORDER BY clubChangeSpRecordID DESC )ccs ON ccs.clubId = c.clubId
+        LEFT JOIN (SELECT DISTINCT clubID, checkTime FROM clubchangesprecord WHERE checkStatus = 1 GROUP BY clubID ORDER
+        BY clubChangeSpRecordID DESC )ccs ON ccs.clubId = c.clubId
         where
         <if test="1 == type">
             c.spID = #{serviceProviderId}
@@ -164,18 +206,19 @@
             AND c.newDeal =1
         </if>
         <if test="name != null and name != ''">
-            AND (c.name LIKE CONCAT('%',#{name},'%') OR c.linkMan LIKE CONCAT('%',#{name},'%') OR c.contractMobile LIKE CONCAT('%',#{name},'%'))
+            AND (c.name LIKE CONCAT('%',#{name},'%') OR c.linkMan LIKE CONCAT('%',#{name},'%') OR c.contractMobile LIKE
+            CONCAT('%',#{name},'%'))
         </if>
         <if test="userIdentity != null">
             AND u.userIdentity = #{userIdentity}
         </if>
         <if test="startTime != null and startTime != ''">
             AND (ccs.checkTime <![CDATA[ >= ]]> #{startTime}
-                OR cpr.createTime <![CDATA[ >= ]]> #{startTime})
+            OR cpr.createTime <![CDATA[ >= ]]> #{startTime})
         </if>
         <if test="endTime != null and endTime != ''">
             AND (ccs.checkTime <![CDATA[ <= ]]> #{endTime}
-                OR cpr.createTime <![CDATA[ <= ]]> #{endTime})
+            OR cpr.createTime <![CDATA[ <= ]]> #{endTime})
         </if>
         <if test="activeState != null and activeState != ''">
             AND coas.activeState like concat('%', #{userIdentity}, '%')
@@ -217,29 +260,32 @@
         covs.customerValue AS customerValue,
         b.num,
         (
-            SELECT ADDTIME FROM
-            (
-                SELECT
-                ADDTIME
-                FROM cm_club_remarks
-                WHERE  clubId = c.clubId
-                UNION
-                SELECT
-                ADDTIME
-                FROM cm_visitor_remarks
-                WHERE
-                clubId IS NOT NULL AND clubId != ''
-                AND clubId = c.clubId
-            ) b ORDER BY ADDTIME DESC LIMIT 1
+        SELECT ADDTIME FROM
+        (
+        SELECT
+        ADDTIME
+        FROM cm_club_remarks
+        WHERE clubId = c.clubId
+        UNION
+        SELECT
+        ADDTIME
+        FROM cm_visitor_remarks
+        WHERE
+        clubId IS NOT NULL AND clubId != ''
+        AND clubId = c.clubId
+        ) b ORDER BY ADDTIME DESC LIMIT 1
         ) AS ADDTIME
         FROM club c
         LEFT JOIN USER u ON c.userID = u.userID
         LEFT JOIN serviceprovider sp ON c.spID = sp.serviceProviderID
-        LEFT JOIN (SELECT userId, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) coas ON coas.userId = c.userId
-        LEFT JOIN (SELECT userId, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) covs ON covs.userID = c.userID
-        LEFT JOIN (SELECT clubId, COUNT(id) AS num  FROM cm_club_remarks GROUP BY clubId
-                UNION
-                SELECT clubId, COUNT(id) AS num FROM cm_visitor_remarks WHERE clubId IS NOT NULL AND clubId != '' GROUP BY clubId ) AS b  ON c.clubId = b.clubId
+        LEFT JOIN (SELECT userId, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) coas ON
+        coas.userId = c.userId
+        LEFT JOIN (SELECT userId, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) covs ON
+        covs.userID = c.userID
+        LEFT JOIN (SELECT clubId, COUNT(id) AS num FROM cm_club_remarks GROUP BY clubId
+        UNION
+        SELECT clubId, COUNT(id) AS num FROM cm_visitor_remarks WHERE clubId IS NOT NULL AND clubId != '' GROUP BY
+        clubId ) AS b ON c.clubId = b.clubId
         where c.spId = #{spId}
         <if test="type != null">
             <if test="type == 1">
@@ -255,130 +301,128 @@
         select * from
         (
         SELECT DISTINCT ccr.id AS remarksId,
-                ccr.remarks,
-                ccr.addTime,
-                ccr.questionMan,
-                ccr.serviceProviderId AS serviceProviderId,
-                ccr.createServiceProviderId AS createServiceProviderId,
-                csr.leaderId AS leaderId,
-                IFNULL(ccr.consultType,'') AS consult,
-                c.Name AS clubName,
-                ccr.clubType AS clubType,
-                ccr.pinceSensitve AS pinceSensitve,
-                ccr.satisfied AS satisfied,
-                ccr.followup AS followup,
-                ccr.extra AS extra,
-                ccr.communicationSituation,
-                ccr.communicationMethods,
-                ccr.customerSource,
-                ccr.customerGender,
-                ccr.groupAddition,
-                ccr.customerAge,
-                ifnull(ccr.trendsKeyword, "") as trendsKeyword,
-                ifnull(ccr.stateKeyword, "") as stateKeyword,
-                (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID= csr.leaderId) AS leaderName,
-                (SELECT linkMan FROM serviceprovider s WHERE s.serviceProviderID = ccr.createServiceProviderId) AS recordName,
-                cmc.status AS STATUS
+        ccr.remarks,
+        ccr.addTime,
+        ccr.questionMan,
+        ccr.serviceProviderId AS serviceProviderId,
+        ccr.createServiceProviderId AS createServiceProviderId,
+        csr.leaderId AS leaderId,
+        IFNULL(ccr.consultType,'') AS consult,
+        c.Name AS clubName,
+        ccr.clubType AS clubType,
+        ccr.pinceSensitve AS pinceSensitve,
+        ccr.satisfied AS satisfied,
+        ccr.followup AS followup,
+        ccr.extra AS extra,
+        ccr.communicationSituation,
+        ccr.communicationMethods,
+        ccr.customerSource,
+        ccr.customerGender,
+        ccr.groupAddition,
+        ccr.customerAge,
+        ifnull(ccr.trendsKeyword, "") as trendsKeyword,
+        ifnull(ccr.stateKeyword, "") as stateKeyword,
+        (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID= csr.leaderId) AS leaderName,
+        (SELECT linkMan FROM serviceprovider s WHERE s.serviceProviderID = ccr.createServiceProviderId) AS recordName,
+        cmc.status AS STATUS
         FROM cm_club_remarks ccr
-                 LEFT JOIN serviceprovider s ON ccr.serviceProviderId = s.serviceProviderID
-                 LEFT JOIN club c ON c.clubId=ccr.clubId
-                 LEFT JOIN cm_serviceTeam_group csg ON ccr.createServiceProviderId = csg.serviceId
-                 LEFT JOIN cm_serviceTeam_role csr ON csr.id = csg.teamId
-                 LEFT JOIN cm_club_report cmc ON cmc.clubId = ccr.clubId
+        LEFT JOIN serviceprovider s ON ccr.serviceProviderId = s.serviceProviderID
+        LEFT JOIN club c ON c.clubId=ccr.clubId
+        LEFT JOIN cm_serviceTeam_group csg ON ccr.createServiceProviderId = csg.serviceId
+        LEFT JOIN cm_serviceTeam_role csr ON csr.id = csg.teamId
+        LEFT JOIN cm_club_report cmc ON cmc.clubId = ccr.clubId
         <where>
             ccr.clubId = #{clubId}
             <if test="search != null and search != ''">
                 and (
-                    ccr.remarks like concat('%',#{search},'%')
-                     or ccr.questionMan like concat('%',#{search},'%')
-                     or c.name like concat('%',#{search},'%')
-                     or c.contractMobile like concat('%',#{search},'%')
+                ccr.remarks like concat('%',#{search},'%')
+                or ccr.questionMan like concat('%',#{search},'%')
+                or c.name like concat('%',#{search},'%')
+                or c.contractMobile like concat('%',#{search},'%')
                 )
             </if>
         </where>
         UNION
         SELECT DISTINCT ccr.id AS remarksId,
-                ccr.remarks,
-                ccr.addTime AS ADDDATE,
-                ccr.questionMan,
-                ccr.serviceProviderId,
-                ccr.createServiceProviderId AS createServiceProviderId,
-                csr.leaderId AS leaderId,
-                IFNULL(ccr.consultType,'') AS consult,
-                c.Name AS clubName,
-                ccr.clubType AS clubType,
-                ccr.pinceSensitve AS pinceSensitve,
-                ccr.satisfied AS satisfied,
-                ccr.followup AS followup,
-                ccr.extra AS extra,
-                ccr.communicationSituation,
-                ccr.communicationMethods,
-                ccr.customerSource,
-                ccr.customerGender,
-                ccr.groupAddition,
-                ccr.customerAge,
-                ifnull(ccr.trendsKeyword, "") as trendsKeyword,
-                ifnull(ccr.stateKeyword, "") as stateKeyword,
-                (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID = csr.leaderId) AS leaderName,
-                (SELECT linkMan FROM serviceprovider s WHERE s.serviceProviderID = ccr.serviceProviderId) AS recordName,
-                cmc.status AS STATUS
+        ccr.remarks,
+        ccr.addTime AS ADDDATE,
+        ccr.questionMan,
+        ccr.serviceProviderId,
+        ccr.createServiceProviderId AS createServiceProviderId,
+        csr.leaderId AS leaderId,
+        IFNULL(ccr.consultType,'') AS consult,
+        c.Name AS clubName,
+        ccr.clubType AS clubType,
+        ccr.pinceSensitve AS pinceSensitve,
+        ccr.satisfied AS satisfied,
+        ccr.followup AS followup,
+        ccr.extra AS extra,
+        ccr.communicationSituation,
+        ccr.communicationMethods,
+        ccr.customerSource,
+        ccr.customerGender,
+        ccr.groupAddition,
+        ccr.customerAge,
+        ifnull(ccr.trendsKeyword, "") as trendsKeyword,
+        ifnull(ccr.stateKeyword, "") as stateKeyword,
+        (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID = csr.leaderId) AS leaderName,
+        (SELECT linkMan FROM serviceprovider s WHERE s.serviceProviderID = ccr.serviceProviderId) AS recordName,
+        cmc.status AS STATUS
         FROM cm_visitor_remarks ccr
-                 LEFT JOIN club c ON c.clubId=ccr.clubId
-                 LEFT JOIN serviceprovider s ON ccr.serviceProviderId = s.serviceProviderID
-                 LEFT JOIN cm_serviceTeam_group csg ON ccr.serviceProviderId = csg.serviceId
-                 LEFT JOIN cm_serviceTeam_role csr ON csr.id = csg.teamId
-                 LEFT JOIN cm_club_report cmc ON cmc.Id = ccr.reportID
+        LEFT JOIN club c ON c.clubId=ccr.clubId
+        LEFT JOIN serviceprovider s ON ccr.serviceProviderId = s.serviceProviderID
+        LEFT JOIN cm_serviceTeam_group csg ON ccr.serviceProviderId = csg.serviceId
+        LEFT JOIN cm_serviceTeam_role csr ON csr.id = csg.teamId
+        LEFT JOIN cm_club_report cmc ON cmc.Id = ccr.reportID
         <where>
             ccr.remarks IS NOT NULL
             AND ccr.clubId is NOT null AND ccr.clubId != '' AND ccr.clubId = #{clubId}
             <if test="search != null and search != ''">
                 and (
-                    ccr.remarks like concat('%',#{search},'%')
-                    or ccr.questionMan like concat('%',#{search},'%')
-                    or c.name like concat('%',#{search},'%')
-                    or c.contractMobile like concat('%',#{search},'%')
+                ccr.remarks like concat('%',#{search},'%')
+                or ccr.questionMan like concat('%',#{search},'%')
+                or c.name like concat('%',#{search},'%')
+                or c.contractMobile like concat('%',#{search},'%')
                 )
             </if>
         </where>
-            ) b
+        ) b
         ORDER BY b.addTime DESC
     </select>
 
 
     <select id="findSpUserLoginSum" resultType="java.util.HashMap">
-        SELECT
-            (CASE coas.activeStatus
-                 WHEN 0 THEN 'active'
-                 WHEN 1 THEN 'unActive'
-                END) AS activeStatus,
-            COUNT(coas.activeStatus) AS number
+        SELECT (CASE coas.activeStatus
+                    WHEN 0 THEN 'active'
+                    WHEN 1 THEN 'unActive'
+            END)                        AS activeStatus,
+               COUNT(coas.activeStatus) AS number
         FROM cm_organ_active_system coas
                  LEFT JOIN club c ON coas.userId = c.userId
                  LEFT JOIN serviceprovider s ON s.serviceProviderId = c.spId
-        WHERE  s.serviceProviderId = #{spId} AND coas.stage = 0 AND delType = 1
+        WHERE s.serviceProviderId = #{spId}
+          AND coas.stage = 0
+          AND delType = 1
         GROUP BY coas.activeStatus
     </select>
 
     <select id="getRemarkClub" resultType="java.util.Map">
-        SELECT
-            COUNT(clubId) AS isHaveClub,
-            (SELECT COUNT(clubId) FROM club c LEFT JOIN serviceprovider s ON s.serviceProviderId = c.spId WHERE s.serviceProviderId = #{spId})AS allclub
-        FROM
-            (
-                SELECT
-                    clubid AS clubID
-                FROM cm_club_remarks
-                WHERE  createServiceProviderId = #{spId}
-                GROUP BY clubId
-                UNION
-                SELECT
-                    clubId AS clubID
-                FROM cm_visitor_remarks
-                WHERE
-                    clubId IS NOT NULL AND clubId != ''
-                  AND createServiceProviderId = #{spId}
-                GROUP BY clubId
-            ) b
+        SELECT COUNT(clubId)                         AS isHaveClub,
+               (SELECT COUNT(clubId)
+                FROM club c
+                         LEFT JOIN serviceprovider s ON s.serviceProviderId = c.spId
+                WHERE s.serviceProviderId = #{spId}) AS allclub
+        FROM (SELECT clubid AS clubID
+              FROM cm_club_remarks
+              WHERE createServiceProviderId = #{spId}
+              GROUP BY clubId
+              UNION
+              SELECT clubId AS clubID
+              FROM cm_visitor_remarks
+              WHERE clubId IS NOT NULL
+                AND clubId != ''
+                AND createServiceProviderId = #{spId}
+              GROUP BY clubId) b
     </select>
     <select id="getAllClubList" resultType="com.caimei365.user.model.vo.ClubVo">
         SELECT DISTINCT c.clubID as clubId, c.userID as userId, c.name, c.sname as shortName, c.contractMobile,
@@ -401,26 +445,20 @@
         </if>
     </select>
     <select id="getSellerByUserId" resultType="com.caimei365.user.model.po.ServiceProviderPo">
-        select s.serviceProviderID     AS serviceProviderId,
+        select s.serviceProviderID AS serviceProviderId,
                s.status,
-               s.userID                AS userId,
+               s.userID            AS userId,
                s.openid,
                s.unionId,
                s.name,
                s.contractMobile,
                s.linkMan,
                s.duty,
-               s.contractEmail,
-               s.auditStatus,
-               s.auditTime,
-               s.auditNote,
-               s.validFlag,
                s.addTime,
                s.qrCode,
-               u.image,
-               s.mainServiceProviderID AS mainServiceProviderId
+               u.image
         from serviceprovider s
-        LEFT JOIN USER u ON s.userId = u.userId
+                 LEFT JOIN USER u ON s.userId = u.userId
         where s.userID = #{userId}
     </select>
     <select id="findManager" resultType="java.lang.Integer">
@@ -438,7 +476,7 @@
         WHERE s.userID = #{userId}
     </select>
     <select id="findLeaderId" resultType="java.lang.Integer">
-        SELECT leaderId
+        SELECT csr.leaderId
         FROM cm_serviceteam_role csr
                  LEFT JOIN serviceprovider s ON s.serviceProviderId = csr.leaderId
         WHERE s.userId = #{userId}
@@ -466,7 +504,7 @@
         WHERE csg.serviceId != #{serviceProviderId}
     </select>
     <select id="findServices" resultType="com.caimei365.user.model.vo.ServiceProviderVo">
-        SELECT csg.serviceId as serviceProviderId,s.linkMan as name
+        SELECT csg.serviceId as serviceProviderId,s.name as name
         FROM cm_serviceteam_group csg
         LEFT JOIN cm_serviceteam_role csr ON csr.id=csg.teamId
         left join serviceprovider s on csg.serviceId=s.serviceProviderID
@@ -476,7 +514,7 @@
         </if>
     </select>
     <select id="findAllServices" resultType="com.caimei365.user.model.vo.ServiceProviderVo">
-        SELECT csg.serviceId AS serviceProviderId,s.linkMan AS NAME
+        SELECT csg.serviceId AS serviceProviderId,s.name AS NAME
         FROM cm_serviceteam_group csg
         LEFT JOIN serviceprovider s ON csg.serviceId=s.serviceProviderID
         <where>
@@ -497,7 +535,7 @@
             AND c.clubId =#{clubId}
         </if>
         and b.pageType in(6,8,11)
-        and  DATE(b.accessTime) = DATE(DATE_SUB(#{accessTime}, INTERVAL 1 day))
+        and DATE(b.accessTime) = DATE(DATE_SUB(#{accessTime}, INTERVAL 1 day))
         GROUP BY b.pageLabel LIMIT 10) as a
     </select>
     <select id="getBehaviorRecordMinutePageLabel" resultType="string">
@@ -506,66 +544,69 @@
         FROM cm_behavior_record b
         LEFT JOIN club c ON b.userID = c.userID
         LEFT JOIN serviceprovider sp ON b.headUserId = sp.userID
-        WHERE  sp.status=90 and sp.serviceProviderID=#{spId}
+        WHERE sp.status=90 and sp.serviceProviderID=#{spId}
         and b.pageType in (69,70,71)
-        and b.accessTime between DATE_SUB(#{accessTime}, INTERVAL 5 Minute) and  #{accessTime}
+        and b.accessTime between DATE_SUB(#{accessTime}, INTERVAL 5 Minute) and #{accessTime}
         <if test="clubId != null">
             AND c.clubId =#{clubId}
         </if>
         GROUP BY b.pageLabel LIMIT 10) as a
     </select>
     <select id="getBehaviorRecordYesterdayClubFrom" resultType="com.caimei365.user.model.vo.CmBehaviorRecordVo">
-        SELECT
-            b.recordID,
-            b.userID,
-            b.pagePath,
-            b.pageType,
-            b.pageLabel,
-            b.productID,
-            b.accessTime,
-            b.accessDuration,
-            b.accessDate,
-            b.referer,
-            b.accessClient,
-            b.isReckon,
-            b.region,
-            c.name,c.linkMan,c.contractMobile,c.clubId,u.image
+        SELECT b.recordID,
+               b.userID,
+               b.pagePath,
+               b.pageType,
+               b.pageLabel,
+               b.productID,
+               b.accessTime,
+               b.accessDuration,
+               b.accessDate,
+               b.referer,
+               b.accessClient,
+               b.isReckon,
+               b.region,
+               c.name,
+               c.linkMan,
+               c.contractMobile,
+               c.clubId,
+               u.image
         FROM cm_behavior_record b
-        LEFT JOIN club c ON b.userID = c.userID
-        LEFT JOIN user u ON u.userID = c.userID
-        WHERE b.userId !=0
-        and c.spId=#{spId}
-        and c.clubId=#{clubId}
-        and b.pageType in(6,11)
-        and  DATE(b.accessTime) = DATE(DATE_SUB(#{accessTime}, INTERVAL 1 day))
+                 LEFT JOIN club c ON b.userID = c.userID
+                 LEFT JOIN user u ON u.userID = c.userID
+        WHERE b.userId != 0
+          and c.spId = #{spId}
+          and c.clubId = #{clubId}
+          and b.pageType in (6, 11)
+          and DATE(b.accessTime) = DATE(DATE_SUB(#{accessTime}, INTERVAL 1 day))
     </select>
     <select id="getBehaviorRecordMinuteClubFrom" resultType="com.caimei365.user.model.vo.CmBehaviorRecordVo">
         SELECT
-            b.recordID,
-            b.userID,
-            b.pagePath,
-            b.pageType,
-            b.pageLabel,
-            b.productID,
-            b.accessTime,
-            b.accessDuration,
-            b.accessDate,
-            b.referer,
-            b.accessClient,
-            b.isReckon,
-            b.region,
-            (select cpaf.fileName from cm_product_archive_content cpac
-            left join cm_product_archive_file cpaf on cpaf.archiveContentId=cpac.id
-            where cpac.id=b.productArchiveId limit 1)as title,
-            ifnull(c.name,b.IP),
-            c.linkMan,c.contractMobile,c.clubId,u.image
+        b.recordID,
+        b.userID,
+        b.pagePath,
+        b.pageType,
+        b.pageLabel,
+        b.productID,
+        b.accessTime,
+        b.accessDuration,
+        b.accessDate,
+        b.referer,
+        b.accessClient,
+        b.isReckon,
+        b.region,
+        (select cpaf.fileName from cm_product_archive_content cpac
+        left join cm_product_archive_file cpaf on cpaf.archiveContentId=cpac.id
+        where cpac.id=b.productArchiveId limit 1)as title,
+        ifnull(c.name,b.IP),
+        c.linkMan,c.contractMobile,c.clubId,u.image
         FROM cm_behavior_record b
         LEFT JOIN club c ON b.userID = c.userID
         LEFT JOIN user u ON u.userID = c.userID
         LEFT JOIN serviceprovider sp ON b.headUserId = sp.userID
-        WHERE  sp.status=90 and sp.serviceProviderID=#{spId}
-          and b.pageType in (69,70,71)
-          and b.accessTime between DATE_SUB(#{accessTime}, INTERVAL 5 Minute) and  #{accessTime}
+        WHERE sp.status=90 and sp.serviceProviderID=#{spId}
+        and b.pageType in (69,70,71)
+        and b.accessTime between DATE_SUB(#{accessTime}, INTERVAL 5 Minute) and #{accessTime}
         <if test="clubId != null">
             AND c.clubId =#{clubId}
         </if>
@@ -584,14 +625,18 @@
                b.accessClient,
                b.isReckon,
                b.region,
-               c.name,c.linkMan,c.contractMobile,c.clubId,u.image
+               c.name,
+               c.linkMan,
+               c.contractMobile,
+               c.clubId,
+               u.image
         FROM cm_behavior_record b
                  LEFT JOIN club c ON b.userID = c.userID
                  LEFT JOIN user u ON u.userID = c.userID
-        WHERE b.userId !=0
-        and c.spId=#{spId}
-          and b.pageType in(6,8,11)
-          and  DATE(b.accessTime) = DATE(DATE_SUB(#{accessTime}, INTERVAL 1 day))
+        WHERE b.userId != 0
+          and c.spId = #{spId}
+          and b.pageType in (6, 8, 11)
+          and DATE(b.accessTime) = DATE(DATE_SUB(#{accessTime}, INTERVAL 1 day))
         GROUP BY c.clubId
     </select>
     <select id="getBehaviorRecordMinuteClub" resultType="com.caimei365.user.model.vo.CmBehaviorRecordVo">
@@ -608,23 +653,30 @@
                b.accessClient,
                b.isReckon,
                b.region,
-               ifnull(c.name,b.region)
-               ,c.linkMan,c.contractMobile,c.clubId,u.image
+               ifnull(c.name, b.region)
+                ,
+               c.linkMan,
+               c.contractMobile,
+               c.clubId,
+               u.image
         FROM cm_behavior_record b
                  LEFT JOIN club c ON b.userID = c.userID
                  LEFT JOIN user u ON u.userID = c.userID
                  LEFT JOIN serviceprovider sp ON b.headUserId = sp.userID
-        WHERE  sp.status=90 and sp.serviceProviderID=#{spId}
-          and b.pageType in (69,70,71)
-          and b.accessTime between DATE_SUB(#{accessTime}, INTERVAL 5 Minute) and  #{accessTime}
+        WHERE sp.status = 90
+          and sp.serviceProviderID = #{spId}
+          and b.pageType in (69, 70, 71)
+          and b.accessTime between DATE_SUB(#{accessTime}, INTERVAL 5 Minute) and #{accessTime}
         GROUP BY b.region
     </select>
 
     <select id="getClubAccessDate" resultType="com.caimei365.user.model.vo.RetuenDataVo">
         select cbr.accessDate
         from cm_behavior_record cbr
-        LEFT JOIN club c ON cbr.userID = c.userID
-        where c.clubID = #{clubId} group by cbr.accessDate order by cbr.accessDate desc
+                 LEFT JOIN club c ON cbr.userID = c.userID
+        where c.clubID = #{clubId}
+        group by cbr.accessDate
+        order by cbr.accessDate desc
     </select>
     <select id="getClubKeynoteRecord" resultType="com.caimei365.user.model.vo.BehaviorRecodeVo">
         SELECT
@@ -641,63 +693,138 @@
         b.accessClient,
         b.isReckon,
         b.region,
-        p.name      AS productName,
+        p.name AS productName,
         p.mainImage AS productImage
         FROM cm_behavior_record b
         LEFT JOIN club c ON b.userID = c.userID
         LEFT JOIN product p ON b.productID = p.productID
         LEFT JOIN cm_page_type pt ON b.pageType = pt.id
         WHERE c.clubID = #{clubId}
-            and b.pageType IN (6,11)
-            <if test="accessDateList.size()>0">
-                and
-                <foreach collection="accessDateList" item="accessDate" open="(" separator="or" close=")">
-                    b.accessTime like concat('%', #{accessDate}, '%')
-                </foreach>
-            </if>
+        and b.pageType IN (6,11)
+        <if test="accessDateList.size()>0">
+            and
+            <foreach collection="accessDateList" item="accessDate" open="(" separator="or" close=")">
+                b.accessTime like concat('%', #{accessDate}, '%')
+            </foreach>
+        </if>
         order by b.accessTime desc
     </select>
 
     <select id="getUnActiveClub" resultType="com.caimei365.user.model.vo.ClubVo">
-        SELECT c.clubID as clubId,
-               c.userID as userId,
+        SELECT c.clubID                    as clubId,
+               c.userID                    as userId,
                c.name,
-               c.sname as shortName,
+               c.sname                     as shortName,
                c.contractMobile,
-               c.contractEmail as contractEmail,
+               c.contractEmail             as contractEmail,
                c.contractPhone,
                c.linkMan,
-               c.provinceID as proviceId,
-               c.cityID as cityId,
-               c.townID as townId,
+               c.provinceID                as proviceId,
+               c.cityID                    as cityId,
+               c.townID                    as townId,
                c.address,
-               c.headpic as shopPhoto,
-               c.businessLicenseImage as businessLicense,
+               c.headpic                   as shopPhoto,
+               c.businessLicenseImage      as businessLicense,
                c.socialCreditCode,
                c.firstClubType,
                c.secondClubType,
                c.department,
                c.medicalPracticeLicenseImg as medicalPracticeLicense,
-               c.mainpro as mainProduct,
+               c.mainpro                   as mainProduct,
                c.fax,
-               c.info as profile,
-               c.spID as serviceProviderId,
-               c.addTime, c.status,
+               c.info                      as profile,
+               c.spID                      as serviceProviderId,
+               c.addTime,
+               c.status,
                c.lastCheckOrderDate,
                u.userIdentity,
-               c.newDeal as newDeal,IF(r.id IS NOT NULL,1,0) AS recordCount,
-               sp.name AS serviceName,
-               coas.activeState AS activeState,
-               covs.customerValue AS customerValue
-            from club c
-            left join user u on c.userID = u.userID
-            LEFT JOIN record_link r ON r.`clubId`=c.`clubID`
-            LEFT JOIN (SELECT userId, activeState, activeStatus FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) AS coas ON coas.userId = c.userId
-            LEFT JOIN (SELECT userId, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) AS covs ON covs.userId = c.userId
-            LEFT JOIN serviceprovider sp ON c.spID = sp.serviceProviderID
+               c.newDeal                   as newDeal,
+               IF(r.id IS NOT NULL, 1, 0)  AS recordCount,
+               sp.name                     AS serviceName,
+               coas.activeState            AS activeState,
+               covs.customerValue          AS customerValue
+        from club c
+                 left join user u on c.userID = u.userID
+                 LEFT JOIN record_link r ON r.`clubId` = c.`clubID`
+                 LEFT JOIN (SELECT userId, activeState, activeStatus
+                            FROM cm_organ_active_system
+                            WHERE stage = 0
+                              AND delType = 1) AS coas ON coas.userId = c.userId
+                 LEFT JOIN (SELECT userId, customerValue
+                            FROM cm_organ_value_system
+                            WHERE stage = 0
+                              AND delType = 1) AS covs ON covs.userId = c.userId
+                 LEFT JOIN serviceprovider sp ON c.spID = sp.serviceProviderID
         WHERE coas.activeStatus = 1
           AND sp.serviceProviderID = #{serviceProviderId}
         GROUP BY covs.userID
     </select>
 
+    <select id="getTaskList" resultType="com.caimei365.user.model.vo.ProviderTaskVo">
+        SELECT ptr.taskId,
+               ptr.receiveFlag,
+               ptr.auditStatus,
+               ptr.receiveTime,
+               cpt.shopId,
+               cpt.title,
+               cpt.content,
+               cpt.reward,
+               cpt.productId,
+               cpt.addTime,
+               cpt.startTime,
+               cpt.endTime,
+               cpt.topPic
+        FROM provider_task_role ptr
+                 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 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}
+        GROUP BY cpt.id
+    </select>
+
+    <resultMap id="providerTasks" type="com.caimei365.user.model.vo.ProviderTaskVo">
+        <result property="receiveFlag" column="receiveFlag"/>
+        <result property="auditStatus" column="auditStatus"/>
+        <result property="taskDesc" column="taskDesc"/>
+        <collection property="images" ofType="java.lang.String">
+            <result column="image"/>
+        </collection>
+    </resultMap>
+
+    <select id="getProviderTaskDetail" resultMap="providerTasks">
+        select ptr.receiveFlag, ptr.auditStatus, pta.taskDesc, ptai.image
+        from provider_task_role ptr
+                 left join provider_task_audit pta on ptr.taskId = pta.taskId
+                 left join provider_task_audit_image ptai on pta.id = ptai.auditId
+        where ptr.taskId = #{taskId}
+          and ptr.serviceProviderId = #{serviceProviderId}
+    </select>
+
 </mapper>

+ 5 - 0
src/main/resources/mapper/ShopMapper.xml

@@ -699,4 +699,9 @@
         left join cm_shop_statistics css on css.id = cmr.marketId
         where cmr.delFlag = 0 and cmr.visible = 1 and css.shopId = #{shopId}
     </select>
+    <select id="findSpId" resultType="java.lang.Integer">
+        select ifnull(spId,1342)
+        from club
+        where userId = #{userId}
+    </select>
 </mapper>