浏览代码

协销小组迁移

zhijiezhao 1 月之前
父节点
当前提交
0b3787004c

+ 116 - 5
src/main/java/com/caimei365/manager/controller/caimei/providers/ProvidersApi.java

@@ -1,10 +1,11 @@
 package com.caimei365.manager.controller.caimei.providers;
 
-import com.caimei365.manager.FastDFS.FastDFSClient;
 import com.caimei365.manager.entity.PaginationVo;
 import com.caimei365.manager.entity.ResponseJson;
-import com.caimei365.manager.entity.caimei.CmRelatedImage;
+import com.caimei365.manager.entity.caimei.cmUser.CmClub;
+import com.caimei365.manager.entity.caimei.cmUser.ServiceProviderModel;
 import com.caimei365.manager.entity.caimei.product.Product;
+import com.caimei365.manager.entity.caimei.providers.CmProviderTeam;
 import com.caimei365.manager.entity.caimei.providers.CmProviders;
 import com.caimei365.manager.entity.caimei.providers.CmProvidersContract;
 import com.caimei365.manager.service.caimei.providers.CmProvidersContractService;
@@ -17,8 +18,6 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.util.Date;
 import java.util.List;
@@ -38,6 +37,118 @@ public class ProvidersApi {
     @Resource
     private CmProvidersContractService cmProvidersContractService;
 
+
+    /**
+     * 修改服务商密码(协销功能合并)
+     *
+     * @param userId
+     * @param password
+     * @return
+     */
+    @GetMapping("/update/pass")
+    public ResponseJson updatePassWord(Integer userId, String password) {
+        return cmProvidersService.updatePassWord(userId, password);
+    }
+
+    /**
+     * 编辑小组
+     *
+     * @param
+     * @return
+     */
+    @PostMapping("/add/team")
+    public ResponseJson addTeam(@RequestBody CmProviderTeam team) {
+        return cmProvidersService.addTeam(team);
+    }
+
+    /**
+     * 修改组长
+     * @param team
+     * @return
+     */
+    @PostMapping("/update/leader")
+    public ResponseJson updateLeader(@RequestBody CmProviderTeam team) {
+        return cmProvidersService.updateLeader(team);
+    }
+
+    @GetMapping("/del/team")
+    public ResponseJson delTeam(Integer id) {
+        return cmProvidersService.delTeam(id);
+    }
+
+    /**
+     * 小组成员列表
+     *
+     * @param id
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @GetMapping("/groupList")
+    public ResponseJson<PaginationVo<ServiceProviderModel>> groupList(Integer id,
+                                                                      @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                      @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        return cmProvidersService.groupList(id, pageNum, pageSize);
+    }
+
+    /**
+     * 添加成员列表
+     *
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @GetMapping("/addGroups")
+    public ResponseJson<PaginationVo<ServiceProviderModel>> addGroups(String mobile, String name,
+                                                                      @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                      @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        return cmProvidersService.addGroups(mobile, name, pageNum, pageSize);
+    }
+
+    @GetMapping("/del/group")
+    public ResponseJson delGroup(Integer teamId, Integer spId) {
+        return cmProvidersService.delGroup(teamId, spId);
+    }
+
+    @GetMapping("/add/group")
+    public ResponseJson addGroup(Integer teamId, String spId) {
+        return cmProvidersService.addGroup(teamId, spId);
+    }
+
+    /**
+     * 服务商小组列表
+     *
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @GetMapping("/teamList")
+    public ResponseJson<PaginationVo<CmProviderTeam>> providerTeam(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                   @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        return cmProvidersService.providerTeam(pageNum, pageSize);
+    }
+
+    /**
+     * 协销机构列表
+     *
+     * @param spId
+     * @param clubId
+     * @param name
+     * @param linkMan
+     * @param bindMobile
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @GetMapping("/clubList")
+    public ResponseJson<PaginationVo<CmClub>> clubList(@NotNull(message = "协销Id不能为空") Integer spId,
+                                                       Integer clubId, String name, String linkMan, String bindMobile,
+                                                       @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                       @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        return cmProvidersService.clubList(spId, clubId, name, linkMan, bindMobile, pageNum, pageSize);
+    }
+
+
     /**
      * 添加商品列表
      *
@@ -57,7 +168,7 @@ public class ProvidersApi {
                                                                     Integer shopId,
                                                                     @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                                     @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
-        return cmProvidersService.getProviderProducts(providerId,shopName, productName, productId, shopId, pageNum, pageSize);
+        return cmProvidersService.getProviderProducts(providerId, shopName, productName, productId, shopId, pageNum, pageSize);
     }
 
     /**

+ 28 - 1
src/main/java/com/caimei365/manager/dao/providers/CmProvidersMapper.java

@@ -2,7 +2,10 @@ package com.caimei365.manager.dao.providers;
 
 import java.util.List;
 
+import com.caimei365.manager.entity.caimei.cmUser.CmClub;
+import com.caimei365.manager.entity.caimei.cmUser.ServiceProviderModel;
 import com.caimei365.manager.entity.caimei.product.Product;
+import com.caimei365.manager.entity.caimei.providers.CmProviderTeam;
 import com.caimei365.manager.entity.caimei.providers.CmProviders;
 import com.caimei365.manager.entity.po.UploadFilePo;
 import org.apache.ibatis.annotations.Mapper;
@@ -84,7 +87,7 @@ public interface CmProvidersMapper {
     /**
      * 批量删除
      *
-     * @param ids 需要删除的数据主键集合
+     * @param  需要删除的数据主键集合
      * @return 结果
      */
     int delCmProviders(CmProviders cmProviders);
@@ -105,4 +108,28 @@ public interface CmProvidersMapper {
     List<Product> getProviderProductList(@Param("providerId") Integer providerId, @Param("productName") String productName, @Param("productId") Integer productId);
 
     void delProviderProduct(@Param("providerId") Integer providerId, @Param("productId") Integer productId);
+
+    void updatePass(@Param("userId") Integer userId, @Param("password") String password);
+
+    List<CmProviderTeam> getProviderTeam();
+
+    List<CmClub> findClub(CmClub club);
+
+    void addTeam(CmProviderTeam team);
+
+    void delTeam(Integer id);
+
+    void delTeamGroup(Integer id);
+
+    List<ServiceProviderModel> groupList(Integer id);
+
+    void delGroup(@Param("teamId") Integer teamId, @Param("spId") Integer spId);
+
+    void addGroup(@Param("teamId") Integer teamId, @Param("spId") List<String> spId);
+
+    void updateTeam(CmProviderTeam team);
+
+    List<ServiceProviderModel> addGroups(@Param("mobile") String mobile, @Param("name") String name);
+
+    void updateLeader(CmProviderTeam team);
 }

+ 77 - 0
src/main/java/com/caimei365/manager/entity/caimei/cmUser/CmClub.java

@@ -0,0 +1,77 @@
+package com.caimei365.manager.entity.caimei.cmUser;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+@Accessors(chain = true)
+@Data
+public class CmClub {
+
+    private static final long serialVersionUID = 1L;
+
+    private String checkMan;        //审核人
+    private Integer clubId;        // 会所ID
+    private Integer userId;        // 用户ID
+    private Integer userOrganizeId;//用户组织ID
+    private String name;        // 会所名称
+    private String sname;        // 简称
+    private String contractEmail;
+    private String logo;        // logo
+    private String legalPerson;        // 法人
+    private Integer provinceId;        // 省
+    private Integer cityId;        // 市
+    private Integer townId;        // 地址ID
+    private String flag;        // 拉会所上线的用户的cmBindId,以逗号结尾
+
+    private Integer spId;        // 协销Id
+    private String scanTime;        // 扫描时间
+    private String address;        // 详细地址
+    private String linkMan;        // 联系人
+    private Integer linkManIdentity;    //联系人身份:1老板,2采购,3运营
+    private String contractPhone;        // 联系电话
+    private String contractMobile;        // 联系手机
+    private String fax;        // 传真
+    private String info;        // 公司简介
+    private String addTime;        // 注册时间
+    private String auditTime;        // 审核时间
+    private String auditNote;        // 审核备注
+    private Integer status;        // 状态
+    private String businessLicenseImage;        // 营业执照
+
+    private String mainpro;        // 主打项目
+    private String scanFlag;        // 扫描状态 0待扫描 1 已扫描 2已上线
+    private String headpic;        // 门头照
+    private Date lastModify;        // 最后更新时间
+    private String firstClubType; // 一级分类为医美=1和生美=2
+    private String secondClubType; // 医美的二级分类为诊所=1、门诊=2、医院=3。  生美没有二级分类
+    private String department; // 若为医美分类下的门诊和医院则需要填写科室。
+    private String medicalPracticeLicenseImg; // 医美分类必须上传医疗执业许可证
+    private String socialCreditCode;//统一社会编码
+
+    /**
+     * 非持久化字段
+     */
+    private String source; //注册来源: 0网站 1小程序
+    private String spName; //创客名称
+    private String account;//企业会所用户账号
+    private String mobile;
+    private String userName;  //联系人
+    private String bindMobile;  //企业绑定手机号
+    private String email;       //邮箱
+    private Date registerTime;
+    private String registerIP;// IP
+    private String town; // 区
+    private String city; // 市
+    private String province; //省
+    private String startTime;     //注册时间开始 查询条件
+    private String endTime;        //注册时间结束  查询条件
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date providerTime;     //分配协销时间 查询条件
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date loginTime;     //上次登录时间 查询条件
+    private String userIdentity;  //用户身份
+    private Integer svipUserFlag;   //超级会员用户标识,1是,2不是
+}

+ 4 - 4
src/main/java/com/caimei365/manager/entity/caimei/cmUser/ServiceProviderModel.java

@@ -10,6 +10,10 @@ import lombok.Data;
  */
 @Data
 public class ServiceProviderModel {
+
+    private Integer leaderId;
+
+    private String mobile;
     /**
      * 协销Id
      */
@@ -42,8 +46,4 @@ public class ServiceProviderModel {
      * 未注册客户数
      */
     private Integer unregisteredNumber;
-    /**
-     * 协销小组编辑页面回显标记,后台取数据的时候给1
-     */
-    private Integer teamFlag;
 }

+ 26 - 0
src/main/java/com/caimei365/manager/entity/caimei/providers/CmProviderTeam.java

@@ -0,0 +1,26 @@
+package com.caimei365.manager.entity.caimei.providers;
+
+import com.caimei365.manager.entity.caimei.cmUser.ServiceProviderModel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class CmProviderTeam {
+    private Integer teamId;
+    // 组长协销id
+    private Integer leaderId;
+    //组长姓名
+    private String leaderName;
+    // 小组名称
+    private String name;
+    // 组员数量
+    private Integer groupCount;
+    //组员
+    private List<ServiceProviderModel> group;
+    // 创建时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createdTime;
+}

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

@@ -2,7 +2,11 @@ package com.caimei365.manager.service.caimei.providers;
 
 import com.caimei365.manager.entity.PaginationVo;
 import com.caimei365.manager.entity.ResponseJson;
+import com.caimei365.manager.entity.caimei.cmUser.CmClub;
+import com.caimei365.manager.entity.caimei.cmUser.ServiceProviderModel;
+import com.caimei365.manager.entity.caimei.cmUser.User;
 import com.caimei365.manager.entity.caimei.product.Product;
+import com.caimei365.manager.entity.caimei.providers.CmProviderTeam;
 import com.caimei365.manager.entity.caimei.providers.CmProviders;
 
 import javax.servlet.http.HttpServletRequest;
@@ -63,13 +67,33 @@ public interface CmProvidersService {
     void downloadImage(String ids, Integer type, HttpServletRequest request, HttpServletResponse response) throws Exception;
 
 
-    ResponseJson<PaginationVo<Product>> getProviderProducts(Integer providerId,String shopName, String productName, Integer productId, Integer shopId, int pageNum, int pageSize);
+    ResponseJson<PaginationVo<Product>> getProviderProducts(Integer providerId, String shopName, String productName, Integer productId, Integer shopId, int pageNum, int pageSize);
 
     ResponseJson addProvidersProducts(Integer providerId, String productIds);
 
     ResponseJson<PaginationVo<Product>> getProviderProductList(Integer providerId, String productName, Integer productId, int pageNum, int pageSize);
 
     ResponseJson delProvidersProducts(Integer providerId, Integer productId);
+
+    ResponseJson updatePassWord(Integer userId, String password);
+
+    ResponseJson<PaginationVo<CmProviderTeam>> providerTeam(int pageNum, int pageSize);
+
+    ResponseJson<PaginationVo<CmClub>> clubList(Integer spId, Integer clubId, String name, String linkMan, String bindMobile, int pageNum, int pageSize);
+
+    ResponseJson addTeam(CmProviderTeam team);
+
+    ResponseJson delTeam(Integer id);
+
+    ResponseJson<PaginationVo<ServiceProviderModel>> groupList(Integer id, int pageNum, int pageSize);
+
+    ResponseJson delGroup(Integer teamId, Integer spId);
+
+    ResponseJson addGroup(Integer teamId, String spId);
+
+    ResponseJson<PaginationVo<ServiceProviderModel>> addGroups(String mobile, String name, int pageNum, int pageSize);
+
+    ResponseJson updateLeader(CmProviderTeam team);
 }
 
 

+ 91 - 4
src/main/java/com/caimei365/manager/service/caimei/providers/impl/CmProvidersServiceImpl.java

@@ -7,6 +7,7 @@ import java.util.Date;
 import java.util.List;
 
 import com.caimei.utils.AppUtils;
+import com.caimei.utils.MD5Util;
 import com.caimei.utils.StringUtil;
 import com.caimei365.manager.FastDFS.FastDFSClient;
 import com.caimei365.manager.config.utils.DateUtil;
@@ -17,14 +18,18 @@ import com.caimei365.manager.dao.user.UserMapper;
 import com.caimei365.manager.entity.PaginationVo;
 import com.caimei365.manager.entity.ResponseJson;
 import com.caimei365.manager.entity.caimei.CmRelatedImage;
+import com.caimei365.manager.entity.caimei.cmUser.CmClub;
+import com.caimei365.manager.entity.caimei.cmUser.ServiceProviderModel;
 import com.caimei365.manager.entity.caimei.cmUser.User;
 import com.caimei365.manager.entity.caimei.product.Product;
+import com.caimei365.manager.entity.caimei.providers.CmProviderTeam;
 import com.caimei365.manager.entity.caimei.providers.CmProviders;
 import com.caimei365.manager.entity.caimei.providers.CmProvidersContract;
 import com.caimei365.manager.entity.po.UploadFilePo;
 import com.caimei365.manager.service.caimei.providers.CmProvidersContractService;
 import com.caimei365.manager.service.caimei.providers.CmProvidersService;
 import com.caimei365.manager.utils.ImageUtils;
+import com.caimei365.manager.utils.StringSplitUtils;
 import com.github.pagehelper.PageHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -179,10 +184,7 @@ public class CmProvidersServiceImpl implements CmProvidersService {
     @Override
     public int updateCmProviders(CmProviders cmProviders) {
         if (null != cmProviders.getStatus()) {
-            userMapper.updateUser(new User()
-                    .setUserID(String.valueOf(cmProviders.getUserId()))
-                    .setValidFlag(cmProviders.getStatus() == 90 ? "1" : "0")
-            );
+            userMapper.updateUser(new User().setUserID(String.valueOf(cmProviders.getUserId())).setValidFlag(cmProviders.getStatus() == 90 ? "1" : "0"));
         }
         cmProviders.setUpdateTime(new Date());
         return cmProvidersMapper.updateCmProviders(cmProviders);
@@ -203,6 +205,7 @@ public class CmProvidersServiceImpl implements CmProvidersService {
         log.info("【图片压缩包】,删除图片压缩包文件夹:" + ImageUtils.deleteFile(new File(tempPath)));
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public ResponseJson<PaginationVo<Product>> getProviderProducts(Integer providerId, String shopName, String productName, Integer productId, Integer shopId, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
@@ -244,12 +247,96 @@ public class CmProvidersServiceImpl implements CmProvidersService {
         return ResponseJson.success(page);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public ResponseJson delProvidersProducts(Integer providerId, Integer productId) {
         cmProvidersMapper.delProviderProduct(providerId, productId);
         return ResponseJson.success();
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ResponseJson updatePassWord(Integer userId, String password) {
+        password = MD5Util.md5ToHex(password);
+        cmProvidersMapper.updatePass(userId, password);
+        return ResponseJson.success();
+    }
+
+    @Override
+    public ResponseJson<PaginationVo<CmProviderTeam>> providerTeam(int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<CmProviderTeam> teams = cmProvidersMapper.getProviderTeam();
+        PaginationVo<CmProviderTeam> page = new PaginationVo<>(teams);
+        return ResponseJson.success(page);
+    }
+
+    @Override
+    public ResponseJson<PaginationVo<CmClub>> clubList(Integer spId, Integer clubId, String name, String linkMan, String bindMobile, int pageNum, int pageSize) {
+        CmClub club = new CmClub();
+        club.setSpId(spId).setClubId(clubId).setName(name).setLinkMan(linkMan).setBindMobile(bindMobile);
+        PageHelper.startPage(pageNum, pageSize);
+        List<CmClub> clubs = cmProvidersMapper.findClub(club);
+        PaginationVo<CmClub> page = new PaginationVo<>(clubs);
+        return ResponseJson.success(page);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ResponseJson addTeam(CmProviderTeam team) {
+        if (null == team.getTeamId()) {
+            cmProvidersMapper.addTeam(team);
+            cmProvidersMapper.addGroup(team.getTeamId(), StringSplitUtils.strToList(team.getLeaderId().toString()));
+        } else {
+            cmProvidersMapper.updateTeam(team);
+        }
+        return ResponseJson.success();
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ResponseJson delTeam(Integer id) {
+        cmProvidersMapper.delTeam(id);
+        cmProvidersMapper.delTeamGroup(id);
+        return ResponseJson.success();
+    }
+
+    @Override
+    public ResponseJson<PaginationVo<ServiceProviderModel>> groupList(Integer id, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<ServiceProviderModel> group = cmProvidersMapper.groupList(id);
+        PaginationVo<ServiceProviderModel> page = new PaginationVo<>(group);
+        return ResponseJson.success(page);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ResponseJson delGroup(Integer teamId, Integer spId) {
+        cmProvidersMapper.delGroup(teamId, spId);
+        return ResponseJson.success();
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ResponseJson addGroup(Integer teamId, String spId) {
+        cmProvidersMapper.addGroup(teamId, StringSplitUtils.strToList(spId));
+        return ResponseJson.success();
+    }
+
+    @Override
+    public ResponseJson<PaginationVo<ServiceProviderModel>> addGroups(String mobile, String name, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<ServiceProviderModel> group = cmProvidersMapper.addGroups(mobile, name);
+        PaginationVo<ServiceProviderModel> page = new PaginationVo<>(group);
+        return ResponseJson.success(page);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ResponseJson updateLeader(CmProviderTeam team) {
+        cmProvidersMapper.updateLeader(team);
+        return ResponseJson.success();
+    }
+
 }
 
 

+ 16 - 0
src/main/java/com/caimei365/manager/utils/StringSplitUtils.java

@@ -0,0 +1,16 @@
+package com.caimei365.manager.utils;
+
+import cn.hutool.core.lang.Assert;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Arrays;
+import java.util.List;
+
+@Slf4j
+public class StringSplitUtils {
+
+    public static List<String> strToList(String str) {
+        Assert.notBlank(str);
+        return Arrays.asList(str.split(","));
+    }
+}

+ 197 - 2
src/main/resources/mapper/providers/CmProvidersMapper.xml

@@ -234,6 +234,136 @@
         </where>
     </select>
 
+    <select id="getProviderTeam" resultType="com.caimei365.manager.entity.caimei.providers.CmProviderTeam">
+        SELECT DISTINCT csr.leaderId,
+                        csr.createdTime,
+                        s.linkMan                                                              as leaderName,
+                        csr.id                                                                 as teamId,
+                        csr.name,
+                        (SELECT COUNT(teamId) FROM cm_serviceteam_group WHERE teamId = csr.id) AS groupCount
+        FROM cm_serviceteam_role csr
+                 LEFT JOIN serviceprovider s ON csr.leaderId = s.serviceProviderID
+        order by csr.createdTime desc
+    </select>
+
+    <select id="findClub" resultType="com.caimei365.manager.entity.caimei.cmUser.CmClub">
+        SELECT
+        a.checkMan as "checkMan",
+        a.clubID AS "clubId",
+        a.userID AS "userId",
+        u.name AS "name",
+        a.sname AS "sname",
+        a.logo AS "logo",
+        a.legalPerson AS "legalPerson",
+        a.provinceID AS "provinceId",
+        a.cityID AS "cityId",
+        a.townID AS "townId",
+        a.flag AS "flag",
+        a.spID AS "spId",
+        a.mainServiceProviderID AS "mainServiceProviderId",
+        a.address AS "address",
+        a.linkMan AS "linkMan",
+        a.linkManIdentity AS "linkManIdentity",
+        a.contractPhone AS "contractPhone",
+        a.contractMobile AS "contractMobile",
+        a.fax AS "fax",
+        a.info AS "info",
+        a.addTime AS "addTime",
+        a.auditTime AS "auditTime",
+        a.auditNote AS "auditNote",
+        a.status AS "status",
+        a.businessLicenseImage AS "businessLicenseImage",
+        a.mainpro AS "mainpro",
+        a.scanFlag AS "scanFlag",
+        a.headpic AS "headpic",
+        a.socialCreditCode AS "socialCreditCode",
+        a.lastModify AS "lastModify",
+        a.firstClubType AS "firstClubType",
+        a.secondClubType AS "secondClubType",
+        a.department AS "department",
+        a.medicalPracticeLicenseImg AS "medicalPracticeLicenseImg",
+        a.newDeal as "newDeal",
+        case sp.status when 91 then '采美默认协销经理(官方账号)' else sp.linkMan end AS "spName",
+        d.name AS "province",
+        c.name AS "city",
+        b.name AS "town",
+        u.account AS "account",
+        u.registerTime AS "registerTime",
+        u.registerIP AS "registerIP",
+        u.userName AS "userName",
+        u.bindMobile AS "bindMobile",
+        u.email AS "email",
+        u.userOrganizeID AS "userOrganizeId",
+        u.userIdentity AS "userIdentity",
+        if(csu.delFlag = '0' and now() <![CDATA[ < ]]> csu.endTime,1,0) as svipUserFlag,
+        u.source,
+        u.loginTime
+        FROM club a
+        LEFT JOIN user u ON u.userID = a.userID
+        LEFT JOIN cm_svip_user csu ON csu.userId = u.userID
+        LEFT JOIN serviceprovider sp ON sp.serviceProviderID = a.spID
+        LEFT JOIN town b ON b.townID=a.townID
+        LEFT JOIN city c ON c.cityID=a.cityID
+        LEFT JOIN province d ON d.provinceID=a.provinceID
+        <where>
+            (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4 AND u.userIdentity != 8
+            <if test="clubId != null and clubId != ''">
+                AND a.clubID = #{clubId}
+            </if>
+            <if test="clubId == 0">
+                AND a.clubID = #{clubId}
+            </if>
+            <if test="userId != null and userId != ''">
+                AND a.userID = #{userId}
+            </if>
+            <if test="account != null and account != ''">
+                AND u.account = #{account}
+            </if>
+            <if test="name != null and name != ''">
+                AND u.name LIKE concat('%',#{name},'%')
+            </if>
+            <if test="userName != null and userName != ''">
+                AND u.userName LIKE concat('%',#{userName},'%')
+            </if>
+            <if test="townId != null and townId != ''">
+                AND d.provinceID = #{provinceId}
+            </if>
+            <if test="cityId != null and cityId != ''">
+                AND c.cityID = #{cityId}
+            </if>
+            <if test="townId != null and townId != ''">
+                AND b.townID = #{townId}
+            </if>
+            <if test="status != null and status != ''">
+                AND a.status = #{status}
+            </if>
+            <if test="bindMobile != null and bindMobile != ''">
+                AND u.bindMobile LIKE concat('%',#{bindMobile},'%')
+            </if>
+            <if test="linkMan != null and linkMan != ''">
+                AND a.linkMan LIKE concat('%',#{linkMan},'%')
+            </if>
+            <if test="startTime != null and startTime != ''">
+                AND u.registerTime <![CDATA[ >= ]]> #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND u.registerTime <![CDATA[ <= ]]> #{endTime}
+            </if>
+            <if test="spId != null and spId != ''">
+                AND sp.serviceProviderID = #{spId}
+            </if>
+        </where>
+        ORDER BY case when a.status = 91 then 0 else 1 end desc, a.addTime DESC
+    </select>
+
+    <select id="groupList" resultType="com.caimei365.manager.entity.caimei.cmUser.ServiceProviderModel">
+        SELECT csg.serviceId AS serviceProviderId, s.linkMan as name, s.contractMobile as mobile,csr.leaderId as leaderId
+        FROM cm_serviceTeam_group csg
+        LEFT JOIN serviceprovider s ON csg.serviceId = s.serviceProviderID
+        LEFT JOIN cm_serviceteam_role csr ON csg.teamId = csr.id
+        WHERE csg.teamId = #{id}
+    </select>
+
 
     <insert id="addCmProviders" parameterType="CmProviders" useGeneratedKeys="true" keyProperty="id">
         insert into cm_providers
@@ -278,6 +408,7 @@
             <if test="splitCode != null and splitCode != ''">#{splitCode},</if>
         </trim>
     </insert>
+
     <insert id="addProviderProduct">
         INSERT INTO cm_provider_product (providerId, productId)
         VALUES
@@ -286,6 +417,32 @@
         </foreach>
     </insert>
 
+    <insert id="addTeam" useGeneratedKeys="true" keyProperty="teamId">
+        INSERT INTO cm_serviceteam_role (name, leaderId, createdTime)
+        VALUES (#{name}, #{leaderId}, now())
+    </insert>
+
+    <insert id="addGroup">
+        INSERT INTO cm_serviceteam_group(teamId, serviceId)
+        values
+        <foreach collection="spId" item="item" separator=",">
+            (#{teamId}, #{item})
+        </foreach>
+    </insert>
+
+    <select id="addGroups" resultType="com.caimei365.manager.entity.caimei.cmUser.ServiceProviderModel">
+        SELECT s.serviceProviderID AS serviceProviderId, s.linkMan as name, s.contractMobile as mobile
+        FROM serviceprovider s
+        LEFT JOIN cm_serviceTeam_group csg ON csg.serviceId = s.serviceProviderID
+        WHERE csg.serviceId is null
+        <if test="name !=null and name !=''">
+            and s.name like concat('%', #{name}, '%')
+        </if>
+        <if test="mobile !=null and mobile !=''">
+            and s.contractMobile = #{mobile}
+        </if>
+    </select>
+
     <update id="updateCmProviders" parameterType="CmProviders">
         update cm_providers
         <trim prefix="SET" suffixOverrides=",">
@@ -313,6 +470,24 @@
         <if test="userId != null">or userId = #{userId}</if>
     </update>
 
+    <update id="updatePass">
+        update user
+        set passWord = #{password}
+        where userId = #{userId}
+    </update>
+
+    <update id="updateTeam">
+        update cm_serviceteam_role
+        set name = #{name}
+        where id = #{teamId}
+    </update>
+
+    <update id="updateLeader">
+        update cm_serviceteam_role
+        set leaderId = #{leaderId}
+        where id = ${teamId}
+    </update>
+
     <delete id="delCmProvidersById" parameterType="String">
         delete
         from cm_providers
@@ -344,9 +519,29 @@
     </delete>
 
     <delete id="delProviderProduct">
-        delete from cm_provider_product
+        delete
+        from cm_provider_product
         where productId = #{productId}
-        and providerId = #{providerId}
+          and providerId = #{providerId}
+    </delete>
+
+    <delete id="delTeam">
+        delete
+        from cm_serviceteam_role
+        where id = #{id}
+    </delete>
+
+    <delete id="delTeamGroup">
+        delete
+        from cm_serviceteam_group
+        where teamId = #{id}
+    </delete>
+
+    <delete id="delGroup">
+        delete
+        from cm_serviceteam_group
+        where teamId = #{teamId}
+          and serviceId = #{spId}
     </delete>
 
 </mapper>